#============================================================================== # ■ RGSS3 スキル・アイテムをアクター依存条件で表示 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 指定したスキル・アイテムをアクターに依存する条件で表示判定を行います。 # 本スクリプトによるアイテムの非表示は戦闘中にのみ有効です。 # # ※あくまで表示されないだけで、オート戦闘では使用される恐れがあります。 #============================================================================== # スキル・アイテムのメモ欄に記述。以下設定例 #============================================================================== # <条件付き表示:usable?(item)> # # このスキル・アイテムは使用出来る場合のみ表示される。 #------------------------------------------------------------------------------ # <条件付き表示:self.id==1> # # このスキル・アイテムはアクターID1のアクターのみ表示される。 #------------------------------------------------------------------------------ # <条件付き表示:tp==100> # # このスキル・アイテムはTP100の場合のみ表示される。 #------------------------------------------------------------------------------ # <条件付き表示:skill_wtype_ok?(item)> # # このスキルは使用武器タイプの条件を満たしている時のみ表示される。 # アイテムに設定すると異常扱いとなる為、スキル専用。 #============================================================================== module ISInvisibleCondition #設定用キーワードを指定。 Word = "条件付き表示" end class Window_SkillList < Window_Selectable #-------------------------------------------------------------------------- # スキルをリストに含めるかどうか #-------------------------------------------------------------------------- alias include_is_visible_condition? include? def include?(item) include_is_visible_condition?(item) && check_is_visible_condition?(item) end #-------------------------------------------------------------------------- # 条件付き表示の判定 #-------------------------------------------------------------------------- def check_is_visible_condition?(item) return false unless @actor @actor.check_is_visible_condition?(item) end end class Window_BattleItem < Window_ItemList #-------------------------------------------------------------------------- # アイテムをリストに含めるかどうか #-------------------------------------------------------------------------- alias include_is_visible_condition? include? def include?(item) include_is_visible_condition?(item) && check_is_visible_condition?(item) end #-------------------------------------------------------------------------- # 条件付き表示の判定 #-------------------------------------------------------------------------- def check_is_visible_condition?(item) return true unless $game_party.in_battle actor = BattleManager.actor return false unless actor actor.check_is_visible_condition?(item) end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # 条件付きスキル表示の判定 #-------------------------------------------------------------------------- def check_is_visible_condition?(item) return true unless item t = item.visible_condition return true if t.empty? begin eval(t) rescue if item.is_a?(RPG::Item) p sprintf("アイテムID%s「%s」の条件付き表示設定に異常があります", item.id.to_s,item.name) elsif item.is_a?(RPG::Skill) p sprintf("スキルID%s「%s」の条件付き表示設定に異常があります", item.id.to_s,item.name) else p sprintf("%sの何かを表示しようとしています",item.class.to_s) end false end end end class RPG::UsableItem < RPG::BaseItem #-------------------------------------------------------------------------- # 条件付き表示の判定式 #-------------------------------------------------------------------------- def visible_condition @visible_condition ||= /<#{ISInvisibleCondition::Word}[::](\S+)>/ =~ note ? $1.to_s : "" end end