Project1

标题: 魔法盾效果求解 [打印本页]

作者: a364774426    时间: 2012-4-3 13:54
标题: 魔法盾效果求解
本帖最后由 iisnow 于 2012-4-6 16:20 编辑

之前写了个魔法盾的效果,是这样的
在Gme  Battler里加入了两段
  1. def make_attack_damage_value(attacker)
  2.    damage = attacker.atk * 4 - self.def * 2        # 基本计算
  3.     damage = 0 if damage < 0
  4.         if self.state?(51)   #寒冰禁锢状态时
  5.     damage = 0
  6.         end
  7.       if self.state?(24)   #大地之盾时,伤害为1
  8.       damage = 1
  9.     end
  10.      if self.state?(54)   #魔法盾状态时
  11.       damage = ((attacker.atk * 4 - self.def * 2)*0.8).round
  12.         end
复制代码

  1. #--------------------------------------------------------------------------
  2.   # ● 反映伤害
  3.   #     user : 特技以及物品的使用者
  4.   #    调用前先设置 @hp_damage、@mp_damage、@absorbed。
  5.   #--------------------------------------------------------------------------
  6.   def execute_damage(user)
  7.     if @hp_damage > 0           # 伤害为正数
  8.       remove_states_shock       # 受到攻击解除的状态
  9.     end
  10.     self.hp -= @hp_damage
  11.    
  12.    
  13.    
  14.     self.mp -= @mp_damage
  15.     if @absorbed                # 吸收的情况
  16.       user.hp += @hp_damage
  17.       user.mp += @mp_damage
  18.     end
  19.      if self.state?(54)  #魔法盾状态时
  20.       self.mp -=(@hp_damage*0.25).round
  21.     end
  22.     if self.mp < (@hp_damage*0.25).round #魔法值不足时消除状态
  23.       self.remove_state(54)
  24.       end
  25.   end
复制代码
这时的确在受到攻击时可以用魔法值抵消一定的伤害,不过在使用加血的药时,魔法值也会跟着回复,这个应该怎么解决呢?dsu_plus_rewardpost_czw
作者: 怪蜀黍    时间: 2012-4-6 19:20
用以下脚本分别代替3个对应的地方试看看。
  1. if self.state?(54)   #魔法盾状态时
  2.   damage = ((attacker.atk * 4 - self.def * 2)*0.8).round if damage > 0
  3. end
复制代码
  1. if self.state?(54)  #魔法盾状态时
  2.   self.mp -=(@hp_damage*0.25).round if @hp_damage > 0
  3. end
复制代码
  1. if self.mp < (@hp_damage*0.25).round #魔法值不足时消除状态
  2.   self.remove_state(54)  if @hp_damage > 0
  3. end
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1