#============================================================================== # ■ RGSS3 武器/防具タイプ封印 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 武器・防具タイプ別に装備不能にする効果を設定可能にします。 # 装備アイテム選択時、表示自体はします。(半透明状態で表示) #============================================================================== # 特徴を有する項目(武器/防具等)のメモ欄に表示 #------------------------------------------------------------------------------ # <武器タイプ封印:4,5> # # 武器タイプ4、5の武器が装備できなくなります。 #------------------------------------------------------------------------------ # <防具タイプ封印:6,7,8> # # 防具タイプ6、7、8の防具が装備できなくなります。 #============================================================================== module WATypeSeal #武器タイプ封印の設定用キーワードを指定。 Word1 = "武器タイプ封印" #防具タイプ封印の設定用キーワードを指定。 Word2 = "防具タイプ封印" end class Window_EquipItem < Window_ItemList #-------------------------------------------------------------------------- # アイテムを許可状態で表示するかどうか #-------------------------------------------------------------------------- alias enable_armor_type_seal? enable? def enable?(item) enable_armor_type_seal?(item) && @actor && !@actor.watype_seal?(item) end end class Game_BattlerBase #-------------------------------------------------------------------------- # 指定IDの防具タイプが封印されているか #-------------------------------------------------------------------------- def weapon_type_seal?(wtype_id) feature_objects.any? {|f| f.wtype_seal.include?(wtype_id)} end #-------------------------------------------------------------------------- # 指定IDの防具タイプが封印されているか #-------------------------------------------------------------------------- def armor_type_seal?(atype_id) feature_objects.any? {|f| f.atype_seal.include?(atype_id)} end #-------------------------------------------------------------------------- # 装備品の武器・防具タイプの装備が封印されていないか #-------------------------------------------------------------------------- def watype_seal?(item) if item.is_a?(RPG::Weapon) weapon_type_seal?(item.wtype_id) elsif item.is_a?(RPG::Armor) armor_type_seal?(item.atype_id) else false end end #-------------------------------------------------------------------------- # 武器装備可能の判定 #-------------------------------------------------------------------------- alias equip_wtype_ok_watype_seal_check? equip_wtype_ok? def equip_wtype_ok?(wtype_id) equip_wtype_ok_watype_seal_check?(wtype_id) && (@watype_seal_check ? !weapon_type_seal?(wtype_id) : true) end #-------------------------------------------------------------------------- # 防具装備可能の判定 #-------------------------------------------------------------------------- alias equip_atype_ok_watype_seal_check? equip_atype_ok? def equip_atype_ok?(atype_id) equip_atype_ok_watype_seal_check?(atype_id) && (@watype_seal_check ? !armor_type_seal?(atype_id) : true) end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # 装備できない装備品を外す #-------------------------------------------------------------------------- alias release_unequippable_items_watype_seal release_unequippable_items def release_unequippable_items(item_gain = true) @watype_seal_check = true release_unequippable_items_watype_seal(item_gain) @watype_seal_check = nil end end class RPG::BaseItem #-------------------------------------------------------------------------- # 武器タイプ封印の配列を取得 #-------------------------------------------------------------------------- def wtype_seal @wtype_seal ||= ( /<#{WATypeSeal::Word1}[::](\S+)>/ =~ note ? $1.to_s : "" ).split(/\s*,\s*/).inject([]) {|r,i| r.push(i.to_i)} end #-------------------------------------------------------------------------- # 防具タイプ封印の配列を取得 #-------------------------------------------------------------------------- def atype_seal @atype_seal ||= ( /<#{WATypeSeal::Word2}[::](\S+)>/ =~ note ? $1.to_s : "" ).split(/\s*,\s*/).inject([]) {|r,i| r.push(i.to_i)} end end