(资料图片仅供参考)
Day2:Stagger《醉拳》的做法:
需求插件:(全部为yep系插件)Battle Engine CoreBuffs & States CorePassive Aura Effects实现这个功能在原版做法中本来同样需要两个buff。第一个buff是【醉拳】本身,用以将受到的物理伤害转化为持续性伤害【流觞】。第二个buff则是【流觞】,他是一个将受到的物理伤害记录并造成持续性伤害的buff,由【醉拳】产生。但在后续讨论下我们优化了这个代码,将他改为了只需要【醉拳】本身就能实现。在【醉拳】的备注中,我们应该这么写://<Custom React Effect>//检查当前动作是否物理伤害,是否为生命值变动效果,值是否大于0if (this.isPhysical() && this.isHpEffect() && value > 0) { //设置目标身上的总伤害流逝值 target._staggerDmg = target._staggerDmg || []; //设置当前伤害的流失伤害的比例为15% + 随机值 * 0.25(此处可以改为定值,最好是设置为15%~40%,这是测试得出的结果,原版是35%) const reduceRate = 0.15 + Math.random() * 0.25; //设置当前伤害的流失伤害回合为1到3(此处同样可以改为定值,设置为固定几回合,只要修改下方右边的数值就好) const reduceTurn = Math.randomInt(3) + 1; //计算因流逝减少的伤害 var reduce = Math.ceil(value * reduceRate); //应用减伤效果 value -= reduce; //将当前伤害的后续流失效果储存在总流逝值内 target._staggerDmg.push({"damage":reduce,"turn":3});}//</Custom React Effect>//<Custom Regenerate Effect>user._staggerDmg = user._staggerDmg || [];//检查用户是否存活,总流逝是否存在if (user.isAlive() && user._staggerDmg.length > 0) { //循环总流逝库 for (let index = 0; index < user._staggerDmg.length; index++) { //设置当前流逝伤害为当前流逝子库中伤害/剩余回合,即将伤害按照回合均分 const dmg = Math.ceil(user._staggerDmg[index]["damage"] / user._staggerDmg[index]["turn"]); //当前流逝子库中伤害减少 user._staggerDmg[index]["damage"] -= dmg; //用户减少流失效果的生命值 user.gainHp(-dmg); //播放动画(任选一个啦,和你的动画库里的ID相对应) user.startAnimation(1); //启动伤害弹窗 user.startDamagePopup(); //清除结果 user.clearResult(); //当前流逝子库中剩余回合减1 user._staggerDmg[index]["turn"]--; //检查当前流逝子库中剩余回合是否小于等于0 if(user._staggerDmg[index]["turn"] <= 0) { //若是,则移除当前流逝子库 user._staggerDmg.splice(index,1); }; //检查角色是否死亡 if (user.isDead()) { //若角色死亡 user.performCollapse(); //则角色总流逝库清空 user._staggerDmg = []; }; };};//</Custom Regenerate Effect>
标签:
X 关闭
X 关闭