世界今亮点!RPGMaker MV 基于Yep系列插件实例教程(2)

2023-04-29 13:09:15   来源:哔哩哔哩


(资料图片仅供参考)

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 关闭