设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2144|回复: 7
打印 上一主题 下一主题

[搬运汉化] 【MV插件】Yep状态核心战斗实例教程翻译合集

[复制链接]

Lv2.观梦者

梦石
0
星屑
318
在线时间
13 小时
注册时间
2023-3-7
帖子
8
跳转到指定楼层
1
发表于 2023-4-29 13:03:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
购买主题 已有 92 人购买  本主题需向作者支付 2 星屑 才能浏览

Lv2.观梦者

梦石
0
星屑
318
在线时间
13 小时
注册时间
2023-3-7
帖子
8
2
 楼主| 发表于 2023-4-29 13:06:01 | 只看该作者
Day2:Stagger
《醉拳》的做法:

需求插件:(全部为yep系插件)
Battle Engine Core
Buffs & States Core
Passive Aura Effects

实现这个功能在原版做法中本来同样需要两个buff。
第一个buff是【醉拳】本身,用以将受到的物理伤害转化为持续性伤害【流觞】。
第二个buff则是【流觞】,他是一个将受到的物理伤害记录并造成持续性伤害的buff,由【醉拳】产生。
但在后续讨论下我们优化了这个代码,将他改为了只需要【醉拳】本身就能实现。

在【醉拳】的备注中,我们应该这么写:

//<Custom React Effect>
//检查当前动作是否物理伤害,是否为生命值变动效果,值是否大于0
if (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>

评分

参与人数 1+1 收起 理由
liz_fly + 1 塞糖

查看全部评分

回复 支持 2 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
318
在线时间
13 小时
注册时间
2023-3-7
帖子
8
3
 楼主| 发表于 2023-5-5 00:02:29 | 只看该作者
本帖最后由 贝尔沃夫 于 2023-5-5 00:46 编辑

Day3:joint penalty

《同生共死》的做法:
本实例需要:
Battle Engine Core
Buffs & States Core
两个插件实现。


只需要写一个状态:同生共死
在原地址下区分了物理,魔法,必中,所有伤害类型4种伤害传导的方式,这里只翻译“所有伤害类型”传导的部分。

<Custom React Effect>
// Check if the damage is positive.检查伤害值是否为正数
if (value > 0) {
  // Get the living members of the same party. 若变量大于0,则检索同队内存活的成员。
  var members = target.friendsUnit().aliveMembers();
  // Make an empty group to list affected members. 制作为空集的受影响队伍列表。
  var affected = [];
  // We'll go through each member to check them. 开始循环一个一个检索队伍成员
  for (var i = 0; i < members.length; ++i) {
    // Getting the individual member. 检索到单独成员成为列表中受影响对象
    var member = members;
    // Does the member exist and is the member affected by state 91 (the Joint Penalty state)?  检索对象是否存活,并是否受到 91 (你的同生共死buff状态的对应ID)影响?
    if (member && member.isStateAffected(你同生共死buff对应ID) ){
      // If the member is affected, add it to the affected group.  若是,则将其添加入受影响队列清单上。
      affected.push(member);
    }
  }
  // Divide up the damage by how many members are affected. 均分并计算每个角色受到的伤害(若要做等额伤害可以删掉这一步或修改)
  value = Math.ceil(value / affected.length);
  // We'll go through each of the affected members now. 开始循环找寻受影响对象成员
  for (var i = 0; i < affected.length; ++i) {
    // Getting the individual affected member. 定义受影响对象
    var member = affected;
    // Ignore the effect if the member is the target of attack. 忽略受到攻击那一个目标,它本身不传导。
    if (member !== target) {
      // Let's play animation 1 on the affected member. 将动画效果1作为受到传到的动画效果。
      member.startAnimation(1);
      // The affected member takes damage.  使得受同生共死影响对象承受伤害
      member.gainHp(-value);
      // We'll have the affected member reveal a damage popup.  跳出受到伤害的数值。
      member.startDamagePopup();
      // Clear the results of the effect. 清除此效果造成的影响。
      member.clearResult();
      // Next, check to see if the member is dead. 接下来要检查对象是否死亡。
      if (member.isDead()) {
        // If the member is dead, we'll make it collapse.  若对象已经死亡,则清除上述进程残留效果。
        member.performCollapse();
      }
    }
  }
}
</Custom React Effect>

(找不到什么比较有名的类似梗了只能是让大家理解理解,赛尔号里那个是主动让对方血和自己平衡的,这个是队内或者敌方内部受到传导伤害的)

后续修改:
更新了一个群内讨论后简化版的状态代码写法:
这个写法简化了判断语句和获取对象以及造成影响的语句,极大简化了代码长度。

/是物理的
const isPhysical = this.isPhysical();
//是魔法的
const isMagical = this.isMagical();
//是普通攻击
const isAttack = this.isAttack();
//是伤害
const isDamage = this.isDamage();
//检查动作是否伤害
if (isDamage) {
    //获取目标队伍中存活成员 过滤 返回 成员有指定状态 且 不是本次行动的目标
    const affectMembers = target.friendsUnit().aliveMembers().filter((member) => {return member.isStateAffected(你同生共死buff对应ID) && member != target});
    //受影响的成员 对每一个 成员
    affectMembers.forEach((member) => {
        //播放受伤害动画
        member.startAnimation(1);
        //减少生命值
        member.gainHp( -1 * Math.ceil(value / affectMembers.length));
        //播放伤害弹窗
        member.startDamagePopup();
        //清除动作结果
        member.clearResult();
        //如果成员死亡
        if (member.isDead()) {
            //清除成员
            member.performCollapse();
        }
    })
}
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
424
在线时间
103 小时
注册时间
2022-4-28
帖子
116
4
发表于 2023-10-3 23:45:02 | 只看该作者
6666我我我
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
424
在线时间
103 小时
注册时间
2022-4-28
帖子
116
5
发表于 2023-10-3 23:46:12 | 只看该作者
这是啥啊   啊  
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
424
在线时间
103 小时
注册时间
2022-4-28
帖子
116
6
发表于 2023-10-11 16:05:57 | 只看该作者
厉害 但是看不懂
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
34
在线时间
18 小时
注册时间
2023-10-10
帖子
23
7
发表于 2023-10-12 12:02:42 | 只看该作者
666
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
407
在线时间
62 小时
注册时间
2023-10-27
帖子
11
8
发表于 2023-11-29 19:32:18 | 只看该作者
666.继续更新啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 23:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表