本帖最后由 chinx 于 2019-11-11 17:37 编辑
反伤的脚本尽量使用Respond标签,和react标签的区别在于前者是一个通过最终计算确定的结果,后者则可能会在受到其他增伤状态影响之前返回一个不准确的反伤数值。
具体:
<Custom Respond Effect> 每次该状态持有者受到伤害后执行.value已经决定,无法更改
<Custom React Effect> 每次该状态持有者被攻击或技能后执行.value尚未决定,可以更改 无法改暴击回避等
而LZ用的<Custom Deselect Effect> 是每次该状态持有者受到攻击后(无论攻击是否成功)执行. 无value返回,不适合用作反伤
可以这样写:
<Custom respond Effect> if (this.isHpEffect() && value > 0) { var dmg = Math.floor(value * 0.05); //这里的公式是一个例子,value * 0.05 将最终伤害结果的5%作为反射数值。具体的你可以根据需要自己设置。 var rst = JsonEx.makeDeepCopy(user._result); user.startAnimation(ID); user.addState(ID); user.clearResult(); user.gainHp(-dmg); user.startDamagePopup(); user.clearResult(); user._result = rst; } </Custom respond Effect>
<Custom respond Effect>
if (this.isHpEffect() && value > 0) {
var dmg = Math.floor(value * 0.05); //这里的公式是一个例子,value * 0.05 将最终伤害结果的5%作为反射数值。具体的你可以根据需要自己设置。
var rst = JsonEx.makeDeepCopy(user._result);
user.startAnimation(ID);
user.addState(ID);
user.clearResult();
user.gainHp(-dmg);
user.startDamagePopup();
user.clearResult();
user._result = rst;
}
</Custom respond Effect>
至于这里为什么是user而不是target,关于对象,引用一下炎龙大佬的资料说明一下,user并不一定是状态持有者本身,而是产生结果的源。
【战斗者对象】
攻击方对象:user
防守方对象:target
状态来源对象:origin
这里说攻击方和防守方是为了便于理解,实际上还有对队友使用辅助技能比如加血等情况,总之user其实代表着行动者,而target代表着这个行动的目标,也就是被user锁定的对象。 |