Project1

标题: 新人求救,如何通过攻击特定怪物来解除身上的状态 [打印本页]

作者: moonlee    时间: 2023-10-1 13:05
标题: 新人求救,如何通过攻击特定怪物来解除身上的状态
求教,我想实现的是这样的效果。
比如,这场战斗是一个boss再加上一个名叫火把的小怪,这个小怪不会打人。
boss在一定血下会给任意两个队员强行附加一个冻伤buff,这个buff三回合不解掉就会直接去世。
然后解法是让拥有冻伤buff的队员去攻击那个“火把”小怪,然后身上的冻伤就会被清除。
如果身上没有冻伤buff的队员去攻击火把小怪就会反弹扣血。

比如,1号队员攻击火把小怪时就根据1号队员身上有没有冻伤来对1号队员进行解除冻伤或者扣血操作。

怎么才能让系统判断几号队员攻击了小怪就来对几号队员执行对应操作呢?

战斗事件页里该怎么写呢?

刚开始用这个软件,还不太熟练,请多指教。
作者: shiroin    时间: 2023-10-1 14:19
原生系统好像做不到这么精细的判定,看有没有其他人回答吧,是我的话会直接考虑用YEP_BattleEngineCore + YEP_BuffsStatesCore插件去定制功能
比如你这个冻伤BUFF,把这段代码加进状态注释里就可以实现状态自然结束后即死的效果:

<Custom Leave Effect>
//让状态的持有者HP归零
user.setHp(0);
</Custom Leave Effect>

火把小怪的判定机制则要根据受击情况进行判定,把这段代码加进一个自定义的状态注释里:

<Custom React Effect>
//假设你冻伤buff的状态ID为19,按自己数据库的实际情况去修改数字
if (target.isStateAffected(19) && value > 0){
  //攻击火把小怪后,身上有冻伤BUFF的队友会解除冻伤
  target.removeState(19);
}else {
  //没有冻伤buff直接攻击将造成反伤,反伤默认为攻击方的基础伤害
  var damage = value;
  target.gainHp(-damage);
  target.startDamagePopup();
  target.clearResult();
}
</Custom React Effect>

如果你要再丰富一些演出效果,还可以在判定中追加动画反馈或者文字解说来提示玩家
作者: moonlee    时间: 2023-10-1 18:26
谢谢你的回答,有了些启发,果真用原生系统实现起来比较困难哈。




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