### 特定の属性を持つスキルを使用不可能になるステートの作成(アイコン対応版) ### # # # 特定属性を含むスキルを使えなくなるステートの作成をします。 # # # # STATE_UNUSABLE_KEYを含むステートに掛かっている場合、 # # その後に続く属性名のスキルが使えなくなります。 # # たとえば「使用不可属性:物理」ならば # # 「属性:物理」の属性を持つスキルが使えなくなります。 # # # # このように、名前の設定を簡単に出来る代わりにステート名が特殊になるので # # アイコン表示には楽ですが、通常のステート名表示だと妙なことになります。 # # # ############################################################################## # ココから設定 module Annex STATE_UNUSABLE_KEY = "使用不可" # この文字列を含むステートはその後に続く属性を含むスキルが使えなくなる。 end #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ○ スキルの使用可能判定 # skill_id : スキル ID #-------------------------------------------------------------------------- alias state_restriction_skill_can_use? skill_can_use? def skill_can_use?(skill_id) # ステートによる制約を受けている場合はfalseを返す if skill_checked_by_state?(skill_id) return false end return state_restriction_skill_can_use?(skill_id) end #-------------------------------------------------------------------------- # ◎ 追加:ステートによる制約を受けているかの確認 # 制約を受けていればtrue、 受けていなければfalseを返す # skill_id : スキル ID #-------------------------------------------------------------------------- def skill_checked_by_state?(skill_id) unusable_elements = [] # 一部スキル使用不可ステートに掛かっているかの確認 for state in @states if $data_states[state].name =~ /#{STATE_UNUSABLE_KEY}(.+)/ # 使用不可能なスキルの属性を取得 unusable_elements.push($1) end end # unusable_elementsが空ならfalseを返す return false if unusable_elements == [] # element_setの取得 element_set = $data_skills[skill_id].element_set for i in unusable_elements # element_setに使用不可能なスキルの属性が含まれていればtrueを返す if element_set.include?($data_system.elements.index(i)) return true end end # false を返す return false end end