试着写了一个,伤害确实能反,不过似乎没有效果的演示。
看看有没有人接着完善一下吧。
# 在状态备注中写<反伤 0.1>则拥有该状态时,反弹所受伤害的10%给使用者。 class RPG::State def reflect? self.reflect > 0.0 end def reflect tag = "(?:反伤|reflect)" int = "[ :=]*" cap = "([0-9.]+)" m = self.note.match(/<#{tag}#{int}#{cap}>/) m ? m[1].to_f : 0.0 end end class Game_Battler #-------------------------------------------------------------------------- # ● [别名修改]伤害效果 #-------------------------------------------------------------------------- alias execute_damage_for_reflect execute_damage def execute_damage(user) execute_damage_for_reflect(user) if self.states.any?{|s| s.reflect?} rt = self.states.map{|s| s.reflect}.max if @hp_damage > 0 user.hp -= (@hp_damage * rt).to_i end end end end
# 在状态备注中写<反伤 0.1>则拥有该状态时,反弹所受伤害的10%给使用者。
class RPG::State
def reflect?
self.reflect > 0.0
end
def reflect
tag = "(?:反伤|reflect)"
int = "[ :=]*"
cap = "([0-9.]+)"
m = self.note.match(/<#{tag}#{int}#{cap}>/)
m ? m[1].to_f : 0.0
end
end
class Game_Battler
#--------------------------------------------------------------------------
# ● [别名修改]伤害效果
#--------------------------------------------------------------------------
alias execute_damage_for_reflect execute_damage
def execute_damage(user)
execute_damage_for_reflect(user)
if self.states.any?{|s| s.reflect?}
rt = self.states.map{|s| s.reflect}.max
if @hp_damage > 0
user.hp -= (@hp_damage * rt).to_i
end
end
end
end
|