0.2.5-dev: the 外勤医疗 (Touch) reserve medic takes the initial aggro order of PR #523 and its detail opens in the preparation phase (PR #523 by @YinqiMargatroid, ported; the owner's decision of 2026-10-12); golden: one more scenario moves (named in docs/history/0.2.5.md)
This commit is contained in:
1 parent
7fd0478dc0
commit
37e0fffb34
22 files changed
+293
-59
No files matched your search
@@ -13,7 +13,7 @@ export class BattleDeploy {
|
||||
* operator that left the field comes back on its body tile, restTile). `keepSp` = { sp, charges }
|
||||
* restored right after the skill reset, before the `deploy` hook fires.
|
||||
*/
|
||||
_deploy(u, { initial = false, carry = null, tile = null, keepSp = null } = {}) {
|
||||
_deploy(u, { initial = false, carry = null, tile = null, keepSp = null, preBattleAggroSeq = null } = {}) {
|
||||
if ((u.alive && u.deployed) || u._removing) return false;
|
||||
const R0 = tile ? tile[0] : u.homeR, C0 = tile ? tile[1] : u.homeC;
|
||||
if (!this.grid.inRect(R0, C0)) {
|
||||
@@ -37,7 +37,9 @@ export class BattleDeploy {
|
||||
u.x = C0; u.y = R0; u.tileR = R0; u.tileC = C0;
|
||||
u.blocking = [];
|
||||
u.deploySeq = ++this._deploySeq;
|
||||
u.aggroSeq = u.deploySeq;
|
||||
// A prepared map character is instantiated after the board deployment but keeps an earlier target order.
|
||||
// Its deploySeq remains the identity of this actual deployment for scheduled effects and redeploy checks.
|
||||
u.aggroSeq = preBattleAggroSeq ?? u.deploySeq;
|
||||
u.deployedAt = this.time;
|
||||
u.atkCd = 0;
|
||||
u.lastAttackAt = -Infinity;
|
||||
|
||||
@@ -60,7 +60,7 @@ export class BattleSummons {
|
||||
if (opts.stats) for (const [k, v] of Object.entries(opts.stats)) if (Number.isFinite(v)) u.base[k] = v;
|
||||
this._setupUnit(u, opts.kit ?? null);
|
||||
if (opts.untargetable) this.addBuff(u, { key: 'trait:untargetable', flags: { untargetable: true }, persist: true, allowDead: true });
|
||||
if (!this._deploy(u, { initial: false })) {
|
||||
if (!this._deploy(u, { initial: false, preBattleAggroSeq: opts.preBattleAggroSeq })) {
|
||||
// tile still busy (a unit stands there even with `force`): drop the half-built token and its hooks
|
||||
u.removed = true;
|
||||
this.offOwner(u);
|
||||
|
||||
Reference in new issue
Block a user