#################### 防具やステートに弱点属性を付加する #################### # # # 通常、ダメージを半減する効果しかない防具やステートの「属性防御」を # # ダメージを倍増させる弱点属性を追加することができるようになります。 # # # # 例えば炎属性が弱点の防具を作りたい場合、 # # 「弱点属性:炎」という名前の属性を作成。 # # 防具の属性防御の所で「弱点属性:炎」にチェックを入れてください。 # # # # この「弱点属性:」の部分は設定で変更可能です。 # # # ############################################################################ # ここから設定 module Annex WEAKEN_ELEMENT_CODE = "弱点属性:" # この名前の後に追加された属性名が弱点になる end # ここまで設定 #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ◎ 追加 「指定したキーワード+属性ID」の形式の属性のIDを取得 # key : キーワード # id : 属性ID #-------------------------------------------------------------------------- def get_key_with_element_id(key, id) # 属性名取得 name = key + $data_system.elements[id] # それを名前としたIDを取得 target_id = $data_system.elements.index(name) if target_id != nil return target_id end return 0 end end #============================================================================== # ■ Game_Enemy #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ○ 属性補正値の取得 # element_id : 属性 ID #-------------------------------------------------------------------------- alias make_element_weaken_element_rate element_rate def element_rate(element_id) # 最初に呼び戻して補正値を取得 result = make_element_weaken_element_rate(element_id) # この属性を弱点とする属性名が設定されているなら以下を実行 weaken_id = get_key_with_element_id(Annex::WEAKEN_ELEMENT_CODE, element_id) if weaken_id > 0 # ステートでこの属性が「弱点」とされている場合は倍増 for i in @states if $data_states[i].guard_element_set.include?(weaken_id) result *= 2 end end end # 算出結果を返す return result end end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ○ 属性補正値の取得 # element_id : 属性 ID #-------------------------------------------------------------------------- alias make_element_weaken_element_rate element_rate def element_rate(element_id) # 最初に呼び戻して補正値を取得 result = make_element_weaken_element_rate(element_id) # この属性を弱点とする属性名が設定されているなら以下を実行 weaken_id = get_key_with_element_id(Annex::WEAKEN_ELEMENT_CODE, element_id) if weaken_id > 0 # 防具でこの属性が「弱点」とされている場合は倍増 for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id] armor = $data_armors[i] if armor != nil and armor.guard_element_set.include?(weaken_id) result *= 2 end end # ステートでこの属性が「弱点」とされている場合は倍増 for i in @states if $data_states[i].guard_element_set.include?(weaken_id) result *= 2 end end end # 算出結果を返す return result end end