Project1

标题: 怎么做一件装备具有反射伤害? [打印本页]

作者: he11120    时间: 2012-3-24 13:40
标题: 怎么做一件装备具有反射伤害?
例如盾带有反射30%的伤害,衣服带20%这样,可以叠加的。(自身还是受到100%的伤害)


‘‘──he11120于2012-3-24 16:00补充以下内容

没人回我啊。。
’’dsu_plus_rewardpost_czw
作者: kangxi0109    时间: 2012-3-24 20:46
本帖最后由 kangxi0109 于 2012-3-25 16:32 编辑

可以在Game_Battler 3里面修改:
1.反射普通伤害的部分(attacker指攻击者,self指目标):

  1.       # 第二命中判定
  2.       eva = 8 * self.agi / attacker.dex + self.eva
  3.       hit = self.damage < 0 ? 100 : 100 - eva
  4.       hit = self.cant_evade? ? 100 : hit
  5.       hit_result = (rand(100) < hit)
  6.     end
  7.     # 命中的情况下
  8.     if hit_result == true
  9.       # 状态冲击解除
  10.       remove_states_shock
  11.       # HP 的伤害计算
  12. #===========================以下为修改的脚本
  13.    if attacker.is_a?(Game_Enemy)#攻击方为敌方的场合
  14.     if self.weapon_id == 1#装备的武器编号为1的场合
  15.       attacker.hp -= self.damage / 10 #反射10%伤害
  16.       self.damage  -= self.damage / 10 #减免10%伤害
  17.      end
  18.     if self.armor1_id == 1#装备的盾牌编号为1的场合
  19.       attacker.hp -= self.damage / 10 #反射10%伤害
  20.       self.damage  -= self.damage / 10 #减免10%伤害
  21.      end
  22.     if self.armor2_id == 2#装备的身体防具编号为2的场合
  23.       attacker.hp -= self.damage / 10 #反射10%伤害
  24.       self.damage  -= self.damage / 10 #减免10%伤害
  25.      end
  26.     if self.armor3_id == 3#装备的头部防具编号为3的场合
  27.       attacker.hp -= self.damage / 10 #反射10%伤害
  28.       self.damage  -= self.damage / 10 #减免10%伤害
  29.      end
  30.     if self.armor4_id == 4#装备的装饰品编号为4的场合
  31.       attacker.hp -= self.damage / 10 #反射10%伤害
  32.       self.damage  -= self.damage / 10 #减免10%伤害
  33.      end
  34.     end   
  35. #===========================以上为修改的脚本
  36.     self.hp -= self.damage
复制代码
2.技能反射部分(user指技能使用者,self指目标):


  1.     # 命中的情况下
  2.     if hit_result == true
  3.       # 威力 0 以外的物理攻击的情况下
  4.       if skill.power != 0 and skill.atk_f > 0
  5.         # 状态冲击解除
  6.         remove_states_shock
  7.         # 设置有效标志
  8.         effective = true
  9.       end
  10.       # HP 的伤害减法运算
  11.       last_hp = self.hp
  12.       #===========================以下为修改的脚本
  13.    if user.is_a?(Game_Enemy)#攻击方为敌方的场合
  14.     if self.weapon_id == 1#装备的武器编号为1的场合
  15.       user.hp -= self.damage / 10 #反射10%伤害
  16.       self.damage  -= self.damage / 10 #减免10%伤害
  17.      end
  18.     if self.armor1_id == 1#装备的盾牌编号为1的场合
  19.       user.hp -= self.damage / 10 #反射10%伤害
  20.       self.damage  -= self.damage / 10 #减免10%伤害
  21.      end
  22.     if self.armor2_id == 2#装备的身体防具编号为2的场合
  23.       user.hp -= self.damage / 10 #反射10%伤害
  24.       self.damage  -= self.damage / 10 #减免10%伤害
  25.      end
  26.     if self.armor3_id == 3#装备的头部防具编号为3的场合
  27.       user.hp -= self.damage / 10 #反射10%伤害
  28.       self.damage  -= self.damage / 10 #减免10%伤害
  29.      end
  30.     if self.armor4_id == 4#装备的装饰品编号为4的场合
  31.       user.hp -= self.damage / 10 #反射10%伤害
  32.       self.damage  -= self.damage / 10 #减免10%伤害
  33.      end
  34.     end   
  35. #===========================以上为修改的脚本
  36.     self.hp -= self.damage
复制代码
注意:这些脚本都是现打的,你试试看有没有效果。里面的装备编号、伤害减免率可以自己改,两段脚本可以分开使用。
self.damage就是伤害值,另外,删除
  1. self.damage  -= self.damage / 10 #减免10%伤害
复制代码
可以只反射伤害但不减免被攻击者的伤害。
还有,这里的伤害减免都是叠加的,如果希望不叠加,将除第一、二个if以外的所有if换为elsif,并且去除倒数第三到第六个end即可。


‘‘──kangxi0109于2012-3-25 16:30补充以下内容

反射伤害在目标受到伤害之前,能不能调到之后?

你注意到没有,增加的脚本都是在
  1. self.hp -= self.damage
复制代码
之前的?这段脚本就是目标伤害的脚本了,你可以掉个顺序试试...
当然,要把

  1. self.damage  -= self.damage / 10 #减免10%伤害
复制代码
这段去掉,因为这段脚本在目标伤害后面就无效了。
我想反射伤害统一计算的(10%+10%+10%),而不是先减去10%,再减去90%的10%

首先在我的脚本前面加一段变量定义:
  1. m = 0
复制代码
然后将以下这些段

  1.       attacker.hp -= self.damage / 10 #反射10%伤害
  2.     self.damage  -= self.damage / 10 #减免10%伤害
复制代码

  1.       user.hp -= self.damage / 10 #反射10%伤害
  2.     self.damage  -= self.damage / 10 #减免10%伤害
复制代码
换为
  1. m += 1
复制代码
再在我的脚本后面分别加上:

  1.       attacker.hp -= self.damage / 10 *m#反射m*10%伤害
  2.     self.damage  -= self.damage / 10  *m#减免m*10%伤害
复制代码

  1.       user.hp -= self.damage / 10 *m#反射m*10%伤害
  2.     self.damage  -= self.damage / 10  *m#减免m*10%伤害
复制代码


‘‘──kangxi0109于2012-3-25 16:36补充以下内容
能不能加个反弹伤害显示?(不要与其它伤害美化脚本有冲突的)。  

这个嘛,还在研究中,因为我做的那些诸如吸血之类技能现在都没能显示吸收的血量,还在纠结呢...
’’




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