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

Project1

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

[有事请教] 如何使强制战斗行动释放的技能受速度补正影响?

[复制链接]

Lv2.观梦者

梦石
0
星屑
689
在线时间
57 小时
注册时间
2022-2-9
帖子
16
跳转到指定楼层
1
发表于 2024-1-13 18:54:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
大佬们,我发现强制战斗行动释放的技能总是第一个释放,无论该技能速度补正多小。
实测了1v1,敌方强制释放了一个速度补正-2000的会施加某号状态的技能,我方释放一个速度补正+2000的会解除该状态的技能,结果是敌方先动我方后动

Lv4.逐梦者

梦石
0
星屑
5420
在线时间
1228 小时
注册时间
2016-12-6
帖子
389
2
发表于 2024-1-13 19:21:55 | 只看该作者
强制行动的指令不参与正常的战斗流程,触发就立即释放,所以速度补正属性是无效的
最好的解决办法是少用强制行动指令
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36397
在线时间
10791 小时
注册时间
2009-3-15
帖子
4813
3
发表于 2024-1-13 19:59:25 | 只看该作者
我方后动不对吗?你要解除得要对方先附加对吧
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3462
在线时间
2598 小时
注册时间
2012-3-1
帖子
767
4
发表于 2024-1-13 21:37:27 | 只看该作者
强制战斗指令通常都是处于剧情内使用,或者是开局挂上buff什么的。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26264
在线时间
5355 小时
注册时间
2016-3-8
帖子
1655
5
发表于 2024-1-13 22:29:38 | 只看该作者
本帖最后由 alexncf125 于 2024-1-13 22:41 编辑
shiroin 发表于 2024-1-13 19:21
强制行动的指令不参与正常的战斗流程,触发就立即释放,所以速度补正属性是无效的
最好的解决办法是少用强 ...


佬看看这样改会出bug么?
JAVASCRIPT 代码复制
  1. BattleManager.forceAction = function (battler) {
  2.     // this._actionForcedBattler = battler; // 此行移除
  3.     var index = this._actionBattlers.indexOf(battler);
  4.     if (index >= 0) {
  5.         this._actionBattlers.splice(index, 1);
  6.     }
  7.     // 以下是新增內容
  8.     var actionBattlers = this._actionBattlers;
  9.     actionBattlers.splice(0, 0, battler);
  10.     actionBattlers.forEach(function (b) {
  11.         b.makeSpeed();
  12.     });
  13.     actionBattlers.sort(function (a, b) {
  14.         return b.speed() - a.speed();
  15.     });
  16.     this._actionBattlers = actionBattlers;
  17.     // 以上是新增內容
  18. };


JAVASCRIPT 代码复制
  1. BattleManager.processTurn = function () {
  2.     var subject = this._subject;
  3.     var action = subject.currentAction();
  4.     if (action) {
  5.         // 以下是新增內容
  6.         if (action._forcing) {
  7.             action._forcing = false;
  8.             this._subject = this.getNextSubject();
  9.             return;
  10.         }
  11.         // 以上是新增內容
  12.         action.prepare();
  13.         if (action.isValid()) {
  14.             this.startAction();
  15.         }
  16.         subject.removeCurrentAction();
  17.     } else {
  18.         subject.onAllActionsEnd();
  19.         this.refreshStatus();
  20.         this._logWindow.displayAutoAffectedStatus(subject);
  21.         this._logWindow.displayCurrentState(subject);
  22.         this._logWindow.displayRegeneration(subject);
  23.         this._subject = this.getNextSubject();
  24.     }
  25. };
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5420
在线时间
1228 小时
注册时间
2016-12-6
帖子
389
6
发表于 2024-1-13 23:10:02 | 只看该作者
alexncf125 发表于 2024-1-13 22:29
佬看看这样改会出bug么?
BattleManager.forceAction = function (battler) {
    // this._actionForcedB ...

我对战斗系统的底层代码研究得并不深,不好评价
但看你这个写法,新的forceAction方法是会对所有batter起效影响速度排序,不管是不是强制行动指令的作用对象。这可能会有超预期的反应
对底层代码进行修改也往往会引起牵一发动全身的效果,对战斗系统有深度定制的插件很可能会无法正常工作,一般是不建议这么折腾的
如果你目的是为了让强制行动指令可以适配技能应有的出手顺序,你完全可以借助YEP_BuffsStatesCore或者YEP_SkillCore的Timing Effects来定制强制行动指令,在我看来可以自由安排效果发动时间点的机制明显容错率是更高的
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5420
在线时间
1228 小时
注册时间
2016-12-6
帖子
389
7
发表于 2024-1-13 23:13:45 | 只看该作者
shiroin 发表于 2024-1-13 23:10
我对战斗系统的底层代码研究得并不深,不好评价
但看你这个写法,新的forceAction方法是会对所有batter起 ...

举例的话比如这个:

<Custom Turn End Effect>
if (user.agi > 300){
var skill = 312;
var target = -2;
BattleManager.queueForceAction(user, skill, target);
}
</Custom Turn End Effect>

持有包含这个注释的状态的角色,在回合结束时就会进行一次if判断,敏捷值判断通过就会强制发起一次312号技能
你可以针对Turn End的发动时机或者if (user.agi > 300)的条件内容进行定制,一样可以模拟出不同出手顺序的强制行动
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 00:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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