Skip to content

Laplace 开发笔记

又名《螺旋社之十万个为什么》

目录

目标切换

下一个目标选择

对于普通关卡,按照在场1-6的位置进行切换。

QuestFlag.immediateEnemyDisappear, 由于敌人立马补充,将按照uniqueId顺序切换,如1-6,打死1号位,1号位补充id=7; 切到2号位打死,2号位补充id=8;再切换到3号位而非1号位的id=7。也相当于登场顺序,但在不维护登场顺序的时候看单调递增的uniqueId即可。

全体攻击指令卡(大总统)的目标切换和结算时机

宝具卡、全体攻击卡(大总统 Buster / Extra)前后均会触发敌方的退场/亡语/目标切换。 举例说明:大总统BAQ接EX会执行三次退场结算和目标更新:

  1. Buster后执行第一次退场
  2. AQ之后执行第二次退场
  3. EX之后执行第三次退场

唯一需要注意的就是如果大总统BAQ然后B卡打死了那可能会影响回收。

DOT伤害结算

回合结束时,先记录当前血量为x,接着先结算回血,再结算扣血。若扣血会导致从者退场(hp <= 0):

  • 当敌方(包括候补)存在幸存者: 正常结算
  • 当敌方(包括候补)全部死亡时: 让该从者存活,DoT伤害变为x - 1

举例说明,巴贝奇装备1HP的毅力礼装后使用3技能(300 DoT),梵高使用二技能(100 Dot + 300 HoT),接着陈宫嘲讽自己发射巴贝奇:

  • 若当前敌方(包括候补)存在幸存者: 巴贝奇血量为 1 + 300 - 400 = -99 HP 结算阵亡退场
  • 若当敌方(包括候补)全部死亡时: 巴贝奇血量为 1 + 300 - 0 = 301 HP,此时由于当前血量为1,所以DoT伤害为 1 - 1 = 0

也就是说,击杀当前wave的全部敌人可以帮助有致死DoT的从者多活一回合。

鞭尸 Bug Bug

众所周知,fgo的普通指令卡有鞭尸bug,导致即使游戏内未显示Overkill时也算作Overkill。

该bug作为良性bug被当作feature保留了下来,如果出卡之间敌方结算了退场并且发动亡语或者毅力时发动的buff,则鞭尸bug失效。

该鞭尸bug bug可以在2.6的新达灵顿free第二面测试,这面包含一个没有亡语的大怪和两个有亡语的小怪。使用AOE宝具击杀两个小怪同时把大怪打到半血以下可以发现鞭尸bug此时失效。

复数改变职阶相性的叠加

举例莱妮斯放宝具打消防御不利相性,迦摩使用三技能变为对AE阶有利,同时AE阶敌方单位赋予自身对杀阶攻击有利,最终该AE阶敌方攻击迦摩会是几倍克制?

该问题的答案取决于迦摩三技能和莱妮斯宝具的顺序:

  • 首先,防御方的buff会覆盖掉攻击方的,所以直接忽视AE攻击者的buff
  • 迦摩身上此时有复数的职阶相性buff,先上的buff覆盖后上的buff,即先放莱妮斯宝具,则最终克制系数为1; 反之先放迦摩三技能,则为0.5

很神奇吧

复数宝具色卡变更buff的叠加

可以自己带俩光兔兔和仇凛 + CD服试试看!答案是后选的卡色会覆盖先选的卡色。

复仇/Revenge的目标选择

复仇相关Buff: selfturnendFunction(每回合结束发动), delayFunction(X回合后发动), gutsFunction(毅力时发动), damageFunction(受击时发动), deadFunction(死亡时发动)。每个trigger skill单独计算复仇目标。

自身受到伤害类型分为: 指令卡伤害、宝具伤害、HP减少(lossHp)、DoT(毒/诅咒/灼烧, 无攻击来源)、damageValue(多见于敌方直接造成伤害)。

WARNING

目前目标选择机制仍存疑

目前认为基于以下顺序:

  1. 先选择复仇目标

    以上buff触发技能时,将最后一个攻击自身的人设定为复仇目标(无论敌方/己方、前排/后排、是否死亡):

    • 排除攻击来源于自身或无来源
    • DataVals.OpponentOnly,则仅遍历敌方(目前仅deadFunction使用)

    若复仇目标不存在,则随机选择一名“敌方单体”。在Laplace中应回退至选中的敌方单位。

  2. 根据func.funcTargetType选择实际发动目标

    • enemy: 敌方单体,若上述存在复仇目标,则使用该目标(无论是敌方还是己方)。若目标已死亡,则由于无目标不发动。
    • enemyOneNoDamageNoAction: 同上,但仅在自身受到伤害时发动。
    • enemyOther/enemyOtherFull: 除目标外的敌方全体,首先获取敌方全体,再剔除上述复仇目标,因此:
      • 若复仇目标为己方,实际为敌方全体
      • 若复仇目标为敌方,实际为复仇目标外的敌方全体

小安宝具机制

目前测试结果为,小安会在释放宝具之后记录自身受到伤害的数值,同时回血会抵消这部分的数值。 需要注意的几个点:

  • 累计受到的伤害不会是负数,最低为0。
  • 从者的最低生命值为0,也就是说即便小安现在就 500 HP 同时吃了一个亿的伤害,记录的伤害为 500 而非一亿。
  • DOT 伤害(诅咒、毒、灼烧)、强制即死(陈宫宝具)、以及自己打自己造成的伤害(包括自己即死自己)不计入受到的伤害。
  • HOT 回复计入,即抵消累计受到的伤害(不过现在好像没有再自己回合小安放完宝具再吃到敌方伤害的正经方法)。
  • 毅力发动相当于 HP 回复,会抵消累计伤害,但是数值为 毅力回复的HP - 1

小Tips,大部分时候小安反弹的基础伤害(没算小安宝具的倍率之前)相当于 小安在敌方行动开始前的血量 - 小安在敌方行动结束后的血量 + 毅力次数

血条消失术

  • EnemyScript.shiftPosition: 初始的shiftDeckIndex值, 默认值为-1。根据此值敌方对应血条会被隐藏。如EnemyScript.shift中共5个npcId,应为6管血,若shiftPosition=1,则隐藏2管血,实际显示3管额外血条。
  • EnemyScript.dispBreakDisp: 初始击破血条的数量,默认值为0。即初始显示空槽数量。相当于修改了shiftDeckIndex
  • FuncType.breakGaugeUp/Down: 单纯增加或击破血条,不过有DataVals.ChangeMaxBreakGauge会有显示上的不同。 例如显示总计5管血剩余3管血(3/5),若DataVals.ChangeMaxBreakGauge, 则相当于修改shiftPosition, 会增加最大血槽数量(4/6),否则恢复血槽(4/5).

举例: FSR联动主线2-1 丑御前 base enemy npcId=100, EnemyScript:

json
{
  "npcId": 100,
  "script": {
    "shift": [101, 102, 103, 104],
    "shiftPosition": 2,
    "dispBreakShift": 1
  }
}
idxSteplowLimitShiftshiftDeckIndexcurNpcIdBars
1init0-1100◆◆◆◆
5/5
2shiftPosition=20+(2+1)=3-1+(2+1)=2103
2/2
3dispBreakShift=132+1=3104
1/2
4breakGaugeUp(2)
+ChangeMaxBreakGauge
3-2=13-2=1102◆◆◇
3/4
5breakGaugeUp(1)11-1=0101◆◆◆
4/4

其中第4步为御主由井正雪的技能效果,第5步不存在该关卡中,仅展示breakGaugeUp时有无ChangeMaxBreakGauge的区别

Powered by Vitepress