fix: include Vulpisfoglia Hunt addition on first damage

This commit is contained in:
星闌 committed 2026-10-11 12:48:59 +08:00
1 parent bc50cac01f
commit b87fcb3ac9
9 files changed
+250 -129

No files matched your search

+5
View File
@@ -1065,6 +1065,11 @@ has the generic spec. Summons: `battle.tokenDef(tokenId, unit)` / `battle.spawnT
(token skill of that slot: `variants[owner].bySkill[i]`, module attributes: `.byModule[id]`). Coverage of the selectable
skills: `node tools/kit-coverage.mjs --missing [--tier N] [--strict]`.
忍冬's 追凶 records the per-enemy start time and applies its arts addition in the same `damaged` callback,
including the first instance (PRTS talent remarks; DESIGN §29.15). It does not refresh the ten-second window on
repeated hits. Its `vulpisHunt` / `addition` tags and re-entrancy guard prevent the rider from feeding itself.
`test/content/vulpis-first-hit.test.js` checks actual HP loss and damage events with naturally ready skills.
Timed deployment kits: 宴 S2 uses `bb.duration` and skill ATK mods, loses current HP once on landing, and converts normal
physical attacks to arts only while S2 is active; S1 has no such conversion. 斯卡蒂 S2 uses its own record's
`s.bb.duration` / `s.bb.atk`; DRE-Y revival in place does not restart it. 野鬃 S1 uses its record's `duration` /
+2
View File
@@ -172,6 +172,8 @@ Profession traits (default behaviours implemented once in the engine, keyed by `
Each domain file `server/sim/content/{tokens,bonds,garrisons,items,bands,enemies,bosses,devices,choices}.js` exports `install(battle)` (battle side; called once per Battle by `content/index.js → installContent`) and `registerMeta(registry)` (prep side; called once at server boot by `match/effectsMeta.js`, API documented in `docs/META.md`). Kits live one per file in `content/kits/ops/` (`export default { [baseChessId]: (bb, chess, def) => Kit }`), listed in `content/kits/index.js` (guide: `content/kits/README.md`). Content must be **data-driven from blackboards** (numbers never hard-coded when a blackboard key exists). Every effect gets at least one unit test in `test/content/*.test.js` using the `test/helpers/battleHarness.js` harness (provided by sim-core).
- kits: all 112 visible chess + hidden ones used by effects (盟约·辅助干员), default skill + talents + trait specifics; tokens. The 72 non-collaboration 6★ DIY operators include 克莱门莎 (§28.1); her launch-day provisional mechanics are local to her kit. 黍 GUA-Y and 乌尔比安 CRU-Y follow the generated module blackboards and existing module-level rules (§28.2).
忍冬's 追凶 adds arts damage on the first qualifying instance too; the per-enemy window starts on that instance,
and repeated hits do not extend it. The addition keeps its own tag and re-entrancy guard (§29.15).
克莱门莎 S2 removes dead, hidden, self-bound / teleport-immune and unreachable passengers before checking new
boarding in the same tick. Each released passenger returns its current weight to the cabin's remaining budget
and frees its slot (§28.27); neither corpses nor failed carries reserve capacity.
+19
View File
@@ -274,3 +274,22 @@ enemy: picking emitted a unit click with no definition, instead of the tile clic
engine-canvas regression retains the card/100 HP assertions and also covers another field refresh, live HP loss and
closing the card when the crate is destroyed. Device metadata supplied by the new entry still wins; changing fields
does not carry old devices across. Gameplay and allied targeting rules are unchanged.
### 29.15 Vulpisfoglia's first Hunt instance
[PRTS 忍冬](https://prts.wiki/w/忍冬), 追凶's remarks, includes the first damage instance in its arts addition.
The mode's generated talent blackboard (`chess_char_3_18_a/b`, `atk_scale` 0.3, `interval` 10) supplies the numbers;
no mode-specific first-hit exception was found. The old callback recorded the first timestamp and returned,
skipping the addition on every new enemy. Kit hooks are installed before initial deployment, so this was not a
delayed stat or talent installation.
The callback now records the timestamp and continues to the existing addition path on that same instance.
The fixed window, damage tags, dodge settings and recursion guard retain their previous behavior; skills,
modules and other operators are unchanged. Full-content controlled-enemy tests cover ordinary first hits in both
forms and all selectable modules/skills, first skill damage from S1–S3, per-enemy timing and actual HP/event totals.
The existing HP-loss conversion regression now expects one rider on every attack, including the first.
The intended golden moves are `roster-007/009/026/039`, `bond-soloShip-low`, `bond-yanShip-low`,
`coop2-NORMAL-3`, `coop4-ABYSS-7` and `coop2-NORMAL-5-coverage-diy`: the extra first instance changes damage,
kills and downstream battle/match choices in scenarios that field Vulpisfoglia. Fields, stand-ins and DIY
scenarios retain their digests.