#============================================================================== # ■ RGSS3 同一装備候補除外 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 指定した装備タイプ、もしくは武器・防具タイプ、もしくは指定した装備品について # 一人のアクターにつき同じ装備品を2つ以上装備できなくします。 # 正確には装備候補の一覧の表示の中で装備不可の扱いとなります。 # # つまり装備画面以外でイベントコマンド等を使用して装備を変更した場合は # このスクリプトの効果は基本的に受けません。 #============================================================================== # 装備品のメモ欄に記述 #------------------------------------------------------------------------------ # <同一装備候補除外判定強制無効> # # この装備品を装備している時、EquipType・WeaponType・ArmorTypeの設定で # この装備品が条件に適合している場合であっても # この装備品は装備可能な状態で表示されます。 #------------------------------------------------------------------------------ # <同一装備候補除外判定強制有効> # # この装備品を装備している時、EquipType・WeaponType・ArmorTypeの設定で # この装備品が条件に適合していない場合であっても # この装備品は装備不可な状態で表示されます。 #============================================================================== module IdentityEquipExclusion #同一装備禁止が適用される装備タイプを指定。 #デフォルトでは0が武器、1が盾、2が頭、3が身体、4が装飾品です。 #例. #EquipType = [0,4] #この場合、同じ武器や同じ装飾品を #一人のアクターが複数装備する事が出来なくなります。 #以下の武器タイプや防具タイプの物も設定方法は同じような物です。 EquipType = [] #同一装備禁止が適用される武器タイプを指定。 WeaponType = [] #同一装備禁止が適用される防具タイプを指定。 ArmorType = [] #同一装備候補除外判定強制無効の設定用キーワードを指定。 Word1 = "同一装備候補除外判定強制無効" #同一装備候補除外判定強制有効の設定用キーワードを指定。 Word2 = "同一装備候補除外判定強制有効" end class Game_BattlerBase #-------------------------------------------------------------------------- # 装備可能判定 #-------------------------------------------------------------------------- alias equippable_identity_equip_exclusion? equippable? def equippable?(item) if equippable_identity_equip_exclusion?(item) if @optimize_flag_for_iee1 && item && item.identity_equip_exclusion? !@equips.any? {|equip| equip.object == item} else true end else false end end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # 同一装備除外判定 #-------------------------------------------------------------------------- def identity_equip_exclusion?(item,index = nil) return false unless item return false unless item.identity_equip_exclusion? @equips.each_with_index {|equip,i| next if index && i == index return true if equip.object == item} false end #-------------------------------------------------------------------------- # 最強装備 #-------------------------------------------------------------------------- alias optimize_equipments_identity_equip_exclusion optimize_equipments def optimize_equipments @optimize_flag_for_iee1 = true optimize_equipments_identity_equip_exclusion @optimize_flag_for_iee1 = nil end #-------------------------------------------------------------------------- # 装備できない装備品を外す #-------------------------------------------------------------------------- alias release_unequippable_items_identity_equip_exclusion release_unequippable_items def release_unequippable_items(item_gain = true) if @optimize_flag_for_iee1 @optimize_flag_for_iee1 = nil @optimize_flag_for_iee2 = true end release_unequippable_items_identity_equip_exclusion(item_gain) if @optimize_flag_for_iee2 @optimize_flag_for_iee2 = nil @optimize_flag_for_iee1 = true end end end class Window_EquipItem < Window_ItemList attr_accessor :slot_window_for_identity_equip_exclusion #-------------------------------------------------------------------------- # アイテムを許可状態で表示するかどうか #-------------------------------------------------------------------------- alias enable_identity_equip_exclusion? enable? def enable?(item) return false unless enable_identity_equip_exclusion?(item) w = slot_window_for_identity_equip_exclusion return true if !w or !@actor !@actor.identity_equip_exclusion?(item,w.index) end end class RPG::EquipItem < RPG::BaseItem #-------------------------------------------------------------------------- # 同一装備除外判定 #-------------------------------------------------------------------------- def identity_equip_exclusion? (@identity_equip_exclusion ||= create_identity_equip_exclusion) == 1 end #-------------------------------------------------------------------------- # 同一装備除外判定データ作成 #-------------------------------------------------------------------------- def create_identity_equip_exclusion if identity_equip_exclusion_by_type? /<#{IdentityEquipExclusion::Word1}>/ =~ note ? 0 : 1 else /<#{IdentityEquipExclusion::Word2}>/ =~ note ? 1 : 0 end end #-------------------------------------------------------------------------- # タイプに応じた同一装備除外判定 #-------------------------------------------------------------------------- def identity_equip_exclusion_by_type? IdentityEquipExclusion::EquipType.include?(etype_id) end end class Scene_Equip < Scene_MenuBase #-------------------------------------------------------------------------- # アイテムウィンドウの作成 #-------------------------------------------------------------------------- alias create_item_window_identity_equip_exclusion create_item_window def create_item_window create_item_window_identity_equip_exclusion @item_window.slot_window_for_identity_equip_exclusion = @slot_window @item_window.refresh end end class RPG::Weapon < RPG::EquipItem #-------------------------------------------------------------------------- # タイプに応じた同一装備除外判定 #-------------------------------------------------------------------------- def identity_equip_exclusion_by_type? super or IdentityEquipExclusion::WeaponType.include?(wtype_id) end end class RPG::Armor < RPG::EquipItem #-------------------------------------------------------------------------- # タイプに応じた同一装備除外判定 #-------------------------------------------------------------------------- def identity_equip_exclusion_by_type? super or IdentityEquipExclusion::ArmorType.include?(atype_id) end end