#=========================================================================== # ◆ A1 Scripts ◆ # 武器・防具タイプ複数設定(RGSS3) # # バージョン : 1.00 (2011/12/15) # 作者 : A1 # URL     : http://a1tktk.web.fc2.com/ #--------------------------------------------------------------------------- # 機能: # ・ひとつの武器・防具に複数の武器・防具タイプを設定できます #--------------------------------------------------------------------------- # 更新履歴   :2011/12/15 Ver1.00 リリース #--------------------------------------------------------------------------- # 設置場所 #  RGSS3用A1共通スクリプトより下 # 一部再定義メソッドがあるため、なるべく上の方 # # 必要スクリプト # RGSS3用A1共通スクリプト #--------------------------------------------------------------------------- # 使い方 # データベースの武器・防具のメモ欄に記述します # # 例: 「バスタードソード」片手剣としても両手剣としても扱えるように設定 # # <武器タイプ 片手剣> # <武器タイプ 両手剣> #============================================================================== $imported ||= {} $imported["A1_MultiWeaponArmorType"] = true if $imported["A1_Common_Script"] #============================================================================== # ■ RPG::Weapon #============================================================================== class RPG::Weapon < RPG::EquipItem #-------------------------------------------------------------------------- # ○ 拡張武器タイプの設定 #-------------------------------------------------------------------------- def set_ex_weapon_types types = [@wtype_id] ex_type = $a1_common.note_data(self.note, "武器タイプ") return types unless ex_type.is_a?(Array) for type in ex_type id = $data_system.weapon_types.index(type) next if types.include?(id) types.push(id) if id != nil end @ex_weapon_types = types end #-------------------------------------------------------------------------- # ○ 拡張武器タイプ #-------------------------------------------------------------------------- def ex_weapon_types @ex_weapon_types ||= set_ex_weapon_types return @ex_weapon_types end #-------------------------------------------------------------------------- # ○ 武器タイプの一致判定 #-------------------------------------------------------------------------- def chk_wtypes_id(wtype_id) return ex_weapon_types.any? {|type| wtype_id == type } end end #============================================================================== # ■ RPG::Armor #============================================================================== class RPG::Armor < RPG::EquipItem #-------------------------------------------------------------------------- # ○ 拡張防具タイプの設定 #-------------------------------------------------------------------------- def set_ex_armor_types types = [@atype_id] ex_type = $a1_common.note_data(self.note, "防具タイプ") return types unless ex_type.is_a?(Array) for type in ex_type id = $data_system.armor_types.index(type) next if types.include?(id) types.push(id) if id != nil end @ex_armor_types = types end #-------------------------------------------------------------------------- # ○ 拡張防具タイプ #-------------------------------------------------------------------------- def ex_armor_types @ex_armor_types ||= set_ex_armor_types return @ex_armor_types end end #============================================================================== # ■ Game_BattlerBase #------------------------------------------------------------------------------ #  バトラーを扱う基本のクラスです。主に能力値計算のメソッドを含んでいます。こ # のクラスは Game_Battler クラスのスーパークラスとして使用されます。 #============================================================================== class Game_BattlerBase #-------------------------------------------------------------------------- # ★ 装備可能判定 #-------------------------------------------------------------------------- def equippable?(item) return false unless item.is_a?(RPG::EquipItem) return false if equip_type_sealed?(item.etype_id) return item.ex_weapon_types.any? {|type| equip_wtype_ok?(type) } if item.is_a?(RPG::Weapon) return item.ex_armor_types.any? {|type| equip_atype_ok?(type) } if item.is_a?(RPG::Armor) return false end end #============================================================================== # ■ Game_Actor #------------------------------------------------------------------------------ #  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors) # の内部で使用され、Game_Party クラス($game_party)からも参照されます。 #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ★ 特定のタイプの武器を装備しているか #-------------------------------------------------------------------------- def wtype_equipped?(wtype_id) weapons.any? {|weapon| weapon.chk_wtypes_id(wtype_id) } end end end