=begin
===============================================================================
物理伤害反弹
===============================================================================
【说明】
当满足条件时,角色原本应该发动的物理反击效果会变成物理反弹
物理反弹效果是指敌人无法攻击自己同时自己会用相同的技能进行反击
与物理反击不同,攻击方和防御方的各项能力仍然沿用原来的数据
即
用敌人的攻击力和自己的防御力计算敌人所受到的伤害
=end
$m5script = {} if $m5script.nil?
$m5script["M5Reflect"] = true
module M5Reflect
#==============================================================================
# 设定部分
#==============================================================================
HINT = "%s反弹了物理伤害!"
#这里设置物理反弹时的提示文字
# %s 表示对象的名字
STATE = [49]
#当角色处于上面数字对应ID的状态时,物理反击的效果变成物理反弹的效果
WEAPON = []
#当角色装备上面数字对应ID的武器时,物理反击的效果变成物理反弹的效果
ARMOR = []
#当角色装备上面数字对应ID的防具时,物理反击的效果变成物理反弹的效果
#==============================================================================
# 设定结束
#==============================================================================
end
class Window_BattleLog < Window_Selectable
def display_m5_reflection(target, item)
Sound.play_evasion
add_text(sprintf(M5Reflect::HINT , target.name))
wait
back_one
end
end
class Scene_Battle < Scene_Base
alias m5_20131123_invoke_counter_attack invoke_counter_attack
def invoke_counter_attack(target, item)
if (m5_state_include(target.states)) or (m5_equip_include(target))
@log_window.display_m5_reflection(target, item)
apply_item_effects(@subject, item)
else
m5_20131123_invoke_counter_attack(target, item)
end
end
def m5_state_include(state)
state = state.collect {|state| state.id }
(state | M5Reflect::STATE).size != state.size + M5Reflect::STATE.size
end
def m5_equip_include(actor)
weapon = actor.weapons.collect {|weapons| weapons.id }
armor = actor.armors.collect {|armors| armors.id }
(weapon | M5Reflect::WEAPON).size != weapon.size + M5Reflect::WEAPON.size or\
(armor | M5Reflect::ARMOR).size != armor.size + M5Reflect::ARMOR.size
end
end