Project1

标题: 【记录贴】状态、BUFF和一些技能效果 [打印本页]

作者: 红手湘潭玉簟秋    时间: 2022-11-26 10:37
标题: 【记录贴】状态、BUFF和一些技能效果
自己想要很多效果,当时一直找都找不到例子,所以现在自己在这里立一个帖子,记录一些我写的东西,虽然不一定有用,但是万一有人需要呢,对吧,嘿嘿嘿!
作者: 红手湘潭玉簟秋    时间: 2022-11-26 10:45
本帖最后由 红手湘潭玉簟秋 于 2022-11-26 11:01 编辑

叠加伤害类的buff:例如毒素 需要”状态核心“插件,原名YEP_BuffStatesCore
此状态可以设定为武器或者角色或者装备的攻击附加状态当中
//定义毒素这个状态每次攻击增加2
<Custom Apply Effect>
target._du = target._du || 0;                     //target._du这个可以自行修改,改成自己能力的变量
target._du += 2;
</Custom Apply Effect>

//每回合毒素减少1层
<Custom Regenerate Effect>
if (target._du >= 0) {
  target._du -= 1;
  target.setStateCounter(34, target._du);    //显示层数计数,34是状态编号, target._du是调用了之前定义的变量,需要跟随最开始的变量名进行修改
}
</Custom Regenerate Effect>

//计算每次行动后的血量减少
<Custom Action Start Effect>
var damage = Math.floor(target._du);        //定义一个伤害变量 并进行计算
target.gainHp(-damage);                          //进行血量的增减,示例中是减少
target.startDamagePopup();                     //伤害弹出
</Custom Action Start Effect>

//状态结束后将毒素变量清零
<Custom Leave Effect>
target._du = 0;
</Custom Leave Effect>
作者: 红手湘潭玉簟秋    时间: 2022-11-26 11:08
为角色添加专属武器,需要”状态核心“插件,原名YEP_BuffStatesCore
需要”自动添加被动“插件,原名YEP_AutoPassiveStates

//下文中的Weapon和Weapons可以替换为Armor和Armors,其中Weapon代表武器,Armor代表防具,
//2替换为武器\防具的编号
//11替换为专属武器对应附加的状态编号
<Custom Battle Effect>
if (user.hasWeapon($dataWeapons[2])) {
origin.addState(11);
}
</Custom Battle Effect>
作者: redsky    时间: 2022-11-27 14:18
支持楼主
作者: 红手湘潭玉簟秋    时间: 2022-11-28 08:45
本帖最后由 红手湘潭玉簟秋 于 2022-11-28 08:49 编辑

加成固定伤害的装备如何制作,需要”状态核心“插件,原名YEP_BuffStatesCore

<Custom Confirm Effect>
//如果造成了伤害,并且伤害(<0代表治疗,>0代表伤害,如果你非要等于0.....你八成是......)
if (this.isHpEffect() && value < 0) {
//定义一个变量,用来确定增减固定伤害的装备或者技能
  var zhiliao = 100;
//这个例子是个加治理量的
//因此以下公式用的是-如果是加固定伤害的就用+,记得将zhiliao替换为你定义的变量名称
  value -= Math.round(zhiliao);
}
</Custom Confirm Effect>

//最后补充一点,这个代码是写在状态里的,需要你装备自带这个状态,需要“自动状态插件”,原名YEP_AutoPassiveStates
//需要在装备里写
<Passive State: 状态编号>
//一定要记得把状态编号换了......
作者: 红手湘潭玉簟秋    时间: 2022-11-28 09:11
红手湘潭玉簟秋 发表于 2022-11-26 11:08
为角色添加专属武器,需要”状态核心“插件,原名YEP_BuffStatesCore
需要”自动添加被动“插件,原名YEP_A ...

每太听明白意思,意思是,只判断这一个人还是将多个人一起判断,例如羁绊这样?
作者: fnhjjrrk    时间: 2022-11-28 09:45
红手湘潭玉簟秋 发表于 2022-11-28 09:11
每太听明白意思,意思是,只判断这一个人还是将多个人一起判断,例如羁绊这样? ...

就是羁绊,如果2号和3号角色或者更多同时在场时,获得XX状态,这个应该怎么实现?
作者: 红手湘潭玉簟秋    时间: 2022-11-28 13:37
本帖最后由 红手湘潭玉簟秋 于 2022-11-28 15:14 编辑
fnhjjrrk 发表于 2022-11-28 09:45
就是羁绊,如果2号和3号角色或者更多同时在场时,获得XX状态,这个应该怎么实现? ...


//那我简单举个例子
角色2
//以下的开头代表战斗开始进行的处理
<Custom Battle Effect>
//将变量681,设置为1
$gameVariables.setValue(681, 1);
</Custom battle Effect>
角色3
//以下的开头代表战斗开始进行的处理
<Custom Battle Effect>
//将变量682,设置为1
$gameVariables.setValue(681, 1);
</Custom battle Effect>


//-------------以下全写在一个状态里--------------
//有相同羁绊的角色都需要自带以下被动状态
//在角色哪里输入<Passive State: 状态编号>    需要”自动添加被动“插件,原名YEP_AutoPassiveStates
//以下为每回合判定的效果
<Custom Turn Start Effect>
//如果变量681和682都等于1的情况下
//可以考虑继续&& 更多的角色,就是一个角色一个变量就行,或者开关也行不过开关一般用的敌方比较多,变量可以额外定义,所以我喜欢用变量代替角色
if (($gameVariables.value(681)==1) && ($gameVariables.value(682)==1)) {
//添加状态47(可自行修改)
target.addState(47);
}
</Custom Turn Start Effect>


//战斗胜利后将两个变量归零,作用是用来检测角色有没有离开队伍
<Custom Victory Effect>
$gameVariables.setValue(681, 0);
$gameVariables.setValue(682, 0);
</Custom Victory Effect>
//同上一个,不过这个是逃跑归零的
<Custom Escape Effect>
$gameVariables.setValue(681, 0);
$gameVariables.setValue(682, 0);
</Custom Escape Effect>
作者: 红手湘潭玉簟秋    时间: 2022-12-7 12:10
可以复活一次的装备如何制作,需要”状态核心“插件,原名YEP_BuffStatesCore
                                             需要“武器释放”插件,原名YEP_WeaponUnleash

//将以下程序输入状态1(也就是死亡状态)中
<Custom Apply Effect>
//判断死亡状态的角色是否是玩家
  if(target.isActor()) {
//判断变量681是否等于1
  if($gameVariables.value(681)==1) {
//如果成立,则变量681设定为0
     $gameVariables.setValue(681, 0);
//回复生命999,可以给更多
     target.gainHp(999);
//播放动画49(rmmv自带的复活动画)
     target.startAnimation(49, 0, 0);
//回复数值弹出
     target.startDamagePopup();
}
}
</Custom Apply Effect>

//以下输入在一个空状态中
//战斗开始时
<Custom Battle Effect>
//将变量681设定为1
$gameVariables.setValue(681, 1);
</Custom Battle Effect>

//以下输入在武器中
<Passive State: 空状态的编号>


作者: 红手湘潭玉簟秋    时间: 2022-12-7 14:31
一定回合数后给自己添加一个状态,需要”状态核心“插件,原名YEP_BuffStatesCore
\\为装备\角色添加以下这条代码,X替换为状态编号
<Passive State: X>

\\以下部分添加到X号状态中
\\战斗开始时
<Custom Battle Effect>
\\设定一个角色的冷却值(3可以替换为几回合加状态)
user._Cooldown = 3;
</Custom Battle Effect>
\\每回合循环发生
<Custom Regenerate Effect>
user._Cooldown = user._Cooldown || 0;
\\如果冷却时间大于0
if (user._Cooldown > 0) {
\\冷却时间减少1
  user._Cooldown -= 1;
如果冷却时间小于或等于0
if (user._Cooldown <= 0) {
\\播放35号动画,当然你可以任选
  user.startAnimation(35);
\\添加Y状态Y为状态编号,不是这个状态的编号,是你想要固定回合刷新的状态
  user.addState(Y);
\\重新设定冷却时间为3(或者你想要的数字)
  user._Cooldown = 3;
  }
}
</Custom Regenerate Effect>
作者: 船走听雨眠    时间: 2023-1-5 14:08
支持楼主。另外我想咨询一下,有办法让毒素类状态或者持续伤害类的这些状态,不用gainHp命令吗?这条命令绕过了绝大部分的判断步骤,以致于闪避反射暴击,甚至设置的各种减伤分摊免死状态都绕过了,感觉有点过于强了。
作者: MLRPG    时间: 2023-1-23 06:01
回楼上 持续类伤害本身就是比较特殊的存在 可以无视闪避反射暴击是正常的(不如说只有遇到这种敌人时才会考虑用dot) 尽量做成单次伤害不高但持续久会比直接技能伤害高这数值吧至于后面的无视免死确实是个问题 等待楼主解答
作者: xiamumomo    时间: 2023-1-23 11:16
船走听雨眠 发表于 2023-1-5 14:08
支持楼主。另外我想咨询一下,有办法让毒素类状态或者持续伤害类的这些状态,不用gainHp命令吗?这条命令绕 ...

有一个大胆的想法  判断目标的这个状态有效度然后 gainHp * 这个有效度   主要是不是很懂折弯有效度的值怎么获取
作者: woliebe    时间: 2023-2-23 08:22
哈哈哈,竟然刷到你了,这个帖子非常有用。谢谢了
作者: zhufeng233    时间: 2023-4-10 22:18
非常感谢你的分享,最近在学习使用YEP的几个战斗相关的核心插件,因为没有JS基础,YEP的帮助文档也写的太笼统,只能到处找范例学习了。希望能够多分享一些案例,能让我这种萌新多学习一下
作者: 红手湘潭玉簟秋    时间: 2023-8-16 17:46
船走听雨眠 发表于 2023-1-5 14:08
支持楼主。另外我想咨询一下,有办法让毒素类状态或者持续伤害类的这些状态,不用gainHp命令吗?这条命令绕 ...

其实你想要不绕过那些判定可以把最终你想要的结算计算公式判定加入gainHp里,你技能造成的伤害不也是通过公式实现的么,最终形成扣血和离散,你可以定义一个掉血的公式然后在gainHp时候加进去就可以了,没啥区别,离散也可以自己定义一个随机系数给你的持续伤害离散
作者: xin6429    时间: 2024-2-12 15:56
红手湘潭玉簟秋 发表于 2022-12-7 14:31
一定回合数后给自己添加一个状态,需要”状态核心“插件,原名YEP_BuffStatesCore
\\为装备\角色添加以下这 ...

大佬,这个可以把一定回合数,改为生命下降到指定百分百?
作者: xin6429    时间: 2024-2-28 01:33
红手湘潭玉簟秋 发表于 2022-12-7 12:10
可以复活一次的装备如何制作,需要”状态核心“插件,原名YEP_BuffStatesCore
                            ...

这个复活好像有点问题啊,1号角色戴了复活装备,被动触发后,如果是2号角色先死,那2号角色复活,1号角色就没复活了
作者: shiroin    时间: 2024-2-28 09:54
xin6429 发表于 2024-2-28 01:33
这个复活好像有点问题啊,1号角色戴了复活装备,被动触发后,如果是2号角色先死,那2号角色复活,1号角色 ...

可能是<Custom Apply Effect>这个时点其实不区分对象,没具体测试过,但想解决也很简单,把时点的对象精准限定在状态持有者本人就行,比如可以改用<Custom Respond Effect>,只在被命中并受到伤害时触发,完整的代码可以参考这个:
  1. <Custom Battle Effect>
  2. user._Revive = true;
  3. </Custom Battle Effect>

  4. <Custom Respond Effect>
  5. if (target.isDead() || target.hp <= 0) {
  6.   if (target._Revive){
  7.    target.setHp(target.mhp);
  8.    target.startAnimation(49);
  9.    target._Revive = false;
  10.   }
  11. }
  12. </Custom Respond Effect>
复制代码

作者: xin6429    时间: 2024-2-28 11:34
shiroin 发表于 2024-2-28 09:54
可能是这个时点其实不区分对象,没具体测试过,但想解决也很简单,把时点的对象精准限定在状态持有者本人 ...

感谢回复
作者: 红手湘潭玉簟秋    时间: 2024-4-17 18:50
xin6429 发表于 2024-2-12 15:56
大佬,这个可以把一定回合数,改为生命下降到指定百分百?


我记得好像状态核心里有对应代码,是生命百分比附加,不需要疯狂模式的代码就可以实现




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