Project1

标题: 鏖战的结果与大家分享 [打印本页]

作者: timiesea    时间: 2013-11-4 01:57
标题: 鏖战的结果与大家分享
十分感谢tan12345给我启示。晚上,我在他提供的代码的基础之上进行增加,做出了一个新的功能:伤害反噬(对敌人的伤害使得自己也受到伤害)

以下是代码:
RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.  
  3.   STATE_ID = 30   #能量逆流(状态ID,持有者的输出伤害变成治疗)
  4.   STATE_ID33 = 33   #反噬之炎(状态ID,持有者的伤害对自己同样有效)
  5.  
  6.   #--------------------------------------------------------------------------
  7.   # ● 计算伤害
  8.   #--------------------------------------------------------------------------
  9.   def make_damage_value(user, item)
  10.     value = item.damage.eval(user, self, $game_variables)
  11.     value *= item_element_rate(user, item)
  12.     value *= pdr if item.physical?
  13.     value *= mdr if item.magical?
  14.     value *= rec if item.damage.recover?
  15.     value = apply_critical(value) if @result.critical
  16.     value = apply_variance(value, item.damage.variance)
  17.     value = apply_guard(value)
  18.     if item.damage.to_hp? and user.state?(STATE_ID) and value > 0#如果伤害是体力值伤害而且伤害者拥有STATE_ID这种状态而且伤害量为正数
  19.       value = 0 - value#将输出伤害转为负数以实现治疗效果
  20.     end
  21.  
  22.  
  23.     if item.damage.to_hp? and user.state?(STATE_ID33) and value > 0 #如果伤害是体力值伤害而且伤害者拥有STATE_ID33这种状态而且伤害量为正数
  24.      user.hp -= value.to_i #直接扣除伤害者的生命值,达到反噬效果。注意,如果施展全屏魔法,则会受到多次反噬
  25.     end
  26.     @result.make_damage(value.to_i, item)
  27.   end
  28.  
  29. end


睡觉去吧!
作者: lc19801203    时间: 2013-11-4 13:21
能详细说说嘛?
作者: timiesea    时间: 2013-11-4 13:24
lc19801203 发表于 2013-11-4 13:21
能详细说说嘛?

行!晚上我下班后跟帖。
作者: lc19801203    时间: 2013-11-4 13:30
怎么设置这个 怎么使用啊。看起来很有用的样子。
作者: lc19801203    时间: 2013-11-4 13:37
timiesea 发表于 2013-11-4 13:24
行!晚上我下班后跟帖。

3Q.......
似乎意味着,
能建立一个拥有伤害反弹的血牛角色。
能建立一个拥有反噬的法师
作者: chd114    时间: 2013-11-4 14:54
伤害反噬和特性能力的反弹有什么区别···
作者: timiesea    时间: 2013-11-4 16:56
chd114 发表于 2013-11-4 14:54
伤害反噬和特性能力的反弹有什么区别···

呃。因为我还没有去深究那些特性能力的功能,所以没看出有什么区别。不过我要实现的功能是在进行伤害输出时自己也会受到伤害,反弹的效果如何呢?
作者: 66rpglover    时间: 2013-11-4 17:51
嗯,有这个可以实现 “刃甲”的效果啦~
作者: timiesea    时间: 2013-11-4 21:51
嗯。不知道现在会不会太晚。现在就我这个帖子的效果做一个详细说明。

本帖主要涉及2个效果:伤害转变治疗;伤害对自身同样有效。

现在开始吧。先从第一个效果开始:

能量逆流:魔法。诺亚向敌人的身体涌入大量魔法能量造成逆流效果,使其强制进行普通攻击且伤害变成治疗。持续3回合。

技能思想:给目标附加一个BUFF,拥有这个BUFF的单位在战斗时只能强制进行普通攻击,并且所造成的伤害会转变为治疗。
强制攻击的实现靠特殊标志:自动战斗。伤害转变为治疗的实现靠修改代码。

第一步:创建一个技能:


值得注意的是:
1.解除的那4种状态的原因是因为那4种状态会使得目标不能强制攻击,为了避免浪费,所以解除了。
2.附加的状态下文说明。
3.其他的设置随意。

第二步:创建一个状态:


值得注意的是:
1.特性中,一定要有“自动战斗”的标志,这是让目标强制普通攻击的关键。
2.其他的设置随意。

第三步:找到关于造成伤害的方法:make_damage_value(user, item)(创建_伤害_数值(施放者,方法))


第四步:修改:
代码逻辑:方法中的value变量就是输出伤害了,知道这一点后我们可以这么想:准备要进行伤害输出的单位,如果是要造成体力值伤害,并且拥有这个BUFF,还要满足伤害为正数。满足这些条件后,用0减去value,得到的就是负伤害,就是加血了。
以上所说的三个条件需要查阅帮助文档或者翻看Game_Battler类才知道语法。
当知道语法后就可以在以下位置写入了:
(定义状态ID,位置在定义类的下一句)

注:位置在@result.make_damage(value.to_i, item)上一句,value = apply_guard(value)的下一句。因为前者的功能是执行伤害,写在下一句的话没有意义;后者则是判断目标是否处于防御状态,还在进行伤害数值的修正,写在上一句的话有可能背道而驰。

第五步:测试:
准备工作:
注:
1.队伍中一定要有被附加状态的角色,本例中是诺亚。
2.在战斗中,确定角色有附加BUFF时才考虑以下文字。

发动攻击时,当屏幕上显示如下文字时表示这个技能制作成功了。


囧:测试时发现,特殊标识:“自动战斗”并不是强制普通攻击,而是真的自动战斗,会施法会发动特技。不过还是达到预期的效果了,这个技能的描述改成:能量逆流:魔法。诺亚向敌人的身体涌入大量魔法能量造成逆流效果,使其强制战斗且伤害变成治疗。持续3回合。

紧接着第二个效果:

反噬之炎:魔法。阿奈思特对敌人造成100%魔法伤害并且在对敌人造成伤害时自己也会受到伤害。持续3回合。

第一到三步同上。

值得注意的是:
1.技能的使用效果请选择附加状态,附加这个技能的状态。至于是不是100%附加就随意了。
2.这个技能的状态特性栏中什么都不选,其他的随意。

第四步:修改:
代码逻辑:方法中的value变量就是输出伤害了,知道这一点后我们可以这么想:准备要进行伤害输出的单位,如果是要造成伤害(可以不限于体力值伤害),并且拥有这个BUFF,还要满足伤害为正数。满足这些条件后,当前单位的生命值减去value,就造成反噬效果了。

以上所说的三个条件需要查阅帮助文档或者翻看Game_Battler类才知道语法。
当知道语法后就可以在以下位置写入了:
需要先定义状态ID,同上。

注意事项同上。

第五步:测试:
准备工作:

1.队伍中一定要有被附加状态的角色,本例中是阿奈思特。
2.在战斗中,确定角色有附加BUFF且攻击之前生命值已满时才考虑以下文字。

发动攻击时,如果发现角色的生命值不满,说明扣减了生命值,达到了反噬的效果(虽然游戏里没有文字提示):


以上是2个效果的实现方法。

另外:建议不要修改默认代码,将要修改的类的class语句和end语句还有要修改的函数整体复制到新建的代码页,也可以将一楼的代码复制到新建的代码页。然后对新建的代码页进行修改即可(一楼的代码可以直接使用)。

突然发现自己好啰嗦啊!终于讲完了。
作者: lc19801203    时间: 2013-11-4 23:45
阁下的意思就是,能量逆流等于把一个敌人变成自己的牧师。反噬就是,攻击者攻击目标的同时,攻击者自己也受伤害。
作者: timiesea    时间: 2013-11-5 02:03
lc19801203 发表于 2013-11-4 23:45
阁下的意思就是,能量逆流等于把一个敌人变成自己的牧师。反噬就是,攻击者攻击目标的同时,攻击者自己也受 ...

大概就是这个意思。如果把BOSS变成牧师的话相当于濒死复活,好IMBA!




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