之前写了个魔法盾的效果,是这样的
在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
这时的确在受到攻击时可以用魔法值抵消一定的伤害,不过在使用加血的药时,魔法值也会跟着回复,这个应该怎么解决呢?