- =begin 
- =============================================================================== 
- 副手拓展脚本 by dukesward 
-   
- 使用方法:在武器状态哈希添加武器类型。 
-   
- SINGLE: 单手武器 
- DOUBLE: 双手武器 
- BOW: 弓 
- WAND: 魔法杖 
- GUN: 铳(火枪) 
-   
- 然后在防具状态哈希对应的数组中添加防具类型。 
-   
- 例如: 
- WEAPON_STATE中"SINGLE" => [1], 表示类型1的武器为单手武器。 
- ARMOR_STATE中"SINGLE" => [1], 表示类型1的防具必须在使用单手武器的同时装备。 
- =============================================================================== 
- =end 
-   
- #-------------------------------------------------------------------------- 
- # ● 武器状态哈希定义 
- #-------------------------------------------------------------------------- 
- WEAPON_STATE = { 
-   "SINGLE" => [1, 2, 4, 5, 7, 8], 
-   "DOUBLE" => [3, 11], 
-   "BOW"    => [6], 
-   "WAND"   => [9], 
-   "GUN"    => [10], 
-   } 
- #-------------------------------------------------------------------------- 
- # ● 防具状态哈希定义 
- #-------------------------------------------------------------------------- 
- ARMOR_STATE = { 
-   "SINGLE" => [5, 6], 
-   "DOUBLE" => [], 
-   "BOW"    => [8], 
-   "WAND"   => [7], 
-   "GUN"    => [9], 
-   } 
-   
- class RPG::Weapon < RPG::EquipItem 
-   #-------------------------------------------------------------------------- 
-   # ● 武器为单手武器? 
-   #-------------------------------------------------------------------------- 
-   def for_single 
-     return WEAPON_STATE["SINGLE"].include?(wtype_id) 
-   end 
- end 
-   
-   
- class Game_Actor < Game_Battler 
-   #-------------------------------------------------------------------------- 
-   # ● 武器装备状态 
-   #-------------------------------------------------------------------------- 
-   def equip_state 
-     WEAPON_STATE.keys.each do |key| 
-       return key if WEAPON_STATE[key].include?(weapons[0].wtype_id) 
-     end 
-     return "SINGLE" 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 判定是否可以更换装备 
-   #     slot_id : 装备栏 ID 
-   #-------------------------------------------------------------------------- 
-   def equip_change_ok?(slot_id) 
-     return false if equip_type_fixed?(equip_slots[slot_id]) 
-     return slot_id == 1 ? side_change_ok? : !equip_type_sealed?(equip_slots[slot_id]) 
-     return true 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 判定是否可以使用副手装备 
-   #     slot_id : 装备栏 ID 
-   #-------------------------------------------------------------------------- 
-   def side_change_ok? 
-     return self.weapons.empty? ? true :  
-     !WEAPON_STATE["DOUBLE"].include?(self.weapons[0].wtype_id) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 卸下无法装备的物品 
-   #     item_gain : 卸下的装备是否保留 
-   #-------------------------------------------------------------------------- 
-   def release_unequippable_items(item_gain = true) 
-     @equips.each_with_index do |item, i| 
-       if !equip_allowed?(item.object, i) || item.object.etype_id != equip_slots[i] 
-         trade_item_with_party(nil, item.object) if item_gain 
-         item.object = nil 
-       end 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 判定是否允许装备 
-   #-------------------------------------------------------------------------- 
-   def equip_allowed?(item, slot_id) 
-     return slot_id == 1 ? off_hand_equippable?(item) : equippable?(item) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 判断副手装备类型 
-   #-------------------------------------------------------------------------- 
-   def off_hand_equippable?(item) 
-     return false unless item.is_a?(RPG::EquipItem) 
-     if item.is_a?(RPG::Weapon) 
-       return false if weapons && !weapons[0].for_single 
-       return item.for_single ? true : false 
-     end 
-     if item.is_a?(RPG::Armor) && !weapons.empty? 
-       return false if !ARMOR_STATE[equip_state].include?(item.atype_id) 
-     end 
-     return equip_atype_ok?(item.atype_id) if item.is_a?(RPG::Armor) 
-     return false 
-   end 
- end 
-   
-   
- class Window_EquipItem < Window_ItemList 
-   #-------------------------------------------------------------------------- 
-   # ● 查询使用列表中是否含有此物品 
-   #-------------------------------------------------------------------------- 
-   def include?(item) 
-     return true if item == nil 
-     return false unless item.is_a?(RPG::EquipItem) 
-     return false if @slot_id < 0 
-     return false if item.etype_id != @actor.equip_slots[@slot_id] 
-     return @slot_id == 1 ? @actor.off_hand_equippable?(item) : @actor.equippable?(item) 
-   end 
- end