之前写了个魔法盾的效果,是这样的
在Gme Battler里加入了两段def make_attack_damage_value(attacker)
damage = attacker.atk * 4 - self.def * 2 # 基本计算
damage = 0 if damage < 0
if self.state?(51) #寒冰禁锢状态时
damage = 0
end
if self.state?(24) #大地之盾时,伤害为1
damage = 1
end
if self.state?(54) #魔法盾状态时
damage = ((attacker.atk * 4 - self.def * 2)*0.8).round
end
def make_attack_damage_value(attacker)
damage = attacker.atk * 4 - self.def * 2 # 基本计算
damage = 0 if damage < 0
if self.state?(51) #寒冰禁锢状态时
damage = 0
end
if self.state?(24) #大地之盾时,伤害为1
damage = 1
end
if self.state?(54) #魔法盾状态时
damage = ((attacker.atk * 4 - self.def * 2)*0.8).round
end
#--------------------------------------------------------------------------
# ● 反映伤害
# user : 特技以及物品的使用者
# 调用前先设置 @hp_damage、@mp_damage、@absorbed。
#--------------------------------------------------------------------------
def execute_damage(user)
if @hp_damage > 0 # 伤害为正数
remove_states_shock # 受到攻击解除的状态
end
self.hp -= @hp_damage
self.mp -= @mp_damage
if @absorbed # 吸收的情况
user.hp += @hp_damage
user.mp += @mp_damage
end
if self.state?(54) #魔法盾状态时
self.mp -=(@hp_damage*0.25).round
end
if self.mp < (@hp_damage*0.25).round #魔法值不足时消除状态
self.remove_state(54)
end
end
#--------------------------------------------------------------------------
# ● 反映伤害
# user : 特技以及物品的使用者
# 调用前先设置 @hp_damage、@mp_damage、@absorbed。
#--------------------------------------------------------------------------
def execute_damage(user)
if @hp_damage > 0 # 伤害为正数
remove_states_shock # 受到攻击解除的状态
end
self.hp -= @hp_damage
self.mp -= @mp_damage
if @absorbed # 吸收的情况
user.hp += @hp_damage
user.mp += @mp_damage
end
if self.state?(54) #魔法盾状态时
self.mp -=(@hp_damage*0.25).round
end
if self.mp < (@hp_damage*0.25).round #魔法值不足时消除状态
self.remove_state(54)
end
end
这时的确在受到攻击时可以用魔法值抵消一定的伤害,不过在使用加血的药时,魔法值也会跟着回复,这个应该怎么解决呢?