赞 | 8 |
VIP | 0 |
好人卡 | 0 |
积分 | 26 |
经验 | 0 |
最后登录 | 2024-10-29 |
在线时间 | 314 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 2608
- 在线时间
- 314 小时
- 注册时间
- 2022-3-24
- 帖子
- 115
|
又做了个状态,也比较简单:大概效果是拥有此状态的人,每受到一次攻击就会累加1层计数,当计数到5层时,下一次受到攻击后还会附加攻击者atk*2+mat*10的伤害。
原本应该是很简单的一个状态,但因为一个小问题卡了我一个小时真是头大。
需要用到状态核心
<Custom Apply Effect> //获得状态时生效
target._lei = target._lei || 0; //初始化计数变量并赋值
</Custom Apply Effect>
<Custom Respond Effect> //受到伤害时生效
if (value > 0 && this.isHpEffect() && target._lei >= 0 && target._lei <= 5) { //判断本次伤害是否大于0,且计数范围在0~5内
target._lei += 1; //计数+1
target.addStateCounter(188, 1); //计数+1
target.clampStateCounter(188, 0, 5); //限制计数范围在0~5之间
}
</Custom Respond Effect>
<Custom Deselect Effect> //这里就是我卡了一个小时的主要原因,原本这个时点下的指令我是放在了上面的时点里,按照我的理解,在造成伤害后判断计数值然后再造成额外伤害,逻辑上好像没问题,但实际上会出现奇妙的bug,具体我就不说了,总之实现不
了功能。必须要放在这个时点下(一切结算完毕后)才能正常生效,如果是初学者想做类似功能请务必注意这一点。
if(target._lei >= 6){ //如果计数达到或超过6
Hpdamage = Math.floor(a.atk * 2 + a.mat * 10); //定义额外伤害变量,取角色atk*2+mat*10,向下取整
target.gainHp(-Hpdamage); //给予伤害
target.startDamagePopup(); //弹出伤害数字
target._lei = 0; //将计数清零
target.setStateCounter(188, 0); //将计数清0
}
</Custom Deselect Effect>
<Custom Leave Effect> //当移除状态时
target._lei = 0; //计数清零
user.setStateCounter(188, 0); //计数清零
</Custom Leave Effect> |
|