# ▼▲▼ No32. 詳細設定、属性攻撃/倍率補正 ▼▲▼ # # # #============================================================================== # □ カスタマイズポイント #============================================================================== module XRXS32 # # 増減させる種別 # 1 : 使用したスキルの「威力」 # 2 : 与えたダメージそのもの # VARIATION_TYPE = 2 # # 攻撃属性として用いられる属性の数(Numeric) : IDは基本 1〜16で"炎"〜"対 天使" # ATTACK_ELEMENTS_NUMBER = 16 # # 「スキルの倍率の下限を 0% に設定する」(true/false) # MIN_LIMITATION = true # # 「◇全回復 で属性攻撃補正ステートを回復する」(true/false) # RECOVER_STATE = false end #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● スキルの効果適用 #-------------------------------------------------------------------------- alias xrxs32_skill_effect skill_effect def skill_effect(user, skill) # 初期化 last_hp = self.hp percentage = 100 # 威力の補正 処理------------------------------------------------------ # skillが属性を持つ場合 if skill.element_set.size > 0 and skill.element_set[0] <= XRXS32::ATTACK_ELEMENTS_NUMBER element_name = $data_system.elements[skill.element_set[0]] # userが持つ全てのステートを見る for state_id in user.states if $data_states[state_id] != nil if $data_states[state_id].name =~ /^#{element_name}属性攻撃([+-]?[0-9]+)(%|%)/ percentage += $1.to_i end end end # percentage が 100 から変化した場合のみ処理 if percentage != 100 # 「スキルの倍率の下限を 0% に設定する」 if XRXS32::MIN_LIMITATION percentage = [percentage, 0].max end if XRXS32::VARIATION_TYPE == 1 # スキルをdup、そしてそれを補正するという仕組み skill = skill.dup # スキルの「威力」を補正 skill.power = (skill.power * percentage) / 100 end end end # --------------------------------------------------------------------- # 呼び戻す bool = xrxs32_skill_effect(user, skill) # ダメージ補正 if XRXS32::VARIATION_TYPE == 2 and percentage != 100 and self.damage.is_a?(Numeric) damage = self.damage * percentage / 100 self.hp = last_hp - damage self.damage = damage end return bool end #-------------------------------------------------------------------------- # ● 全回復 #-------------------------------------------------------------------------- unless XRXS32::RECOVER_STATE alias xrxs32_recover_all recover_all def recover_all # 既にかかっている属性攻撃補正ステートを保存 element_revise_states = [] for state_id in @states if $data_states[state_id] != nil if $data_states[state_id].name =~ /^(.+)属性攻撃([+-]?[0-9]+)(%|%)/ element_revise_states.push(state_id) end end end # 呼び戻す xrxs32_recover_all # 復旧 for state_id in element_revise_states if $data_states[state_id] != nil add_state(state_id) end end end end # unless RECOVER_ALL_INCLUDE_ELEMENT_REVISE_STATE end