fix: 修复洛洛 S2 越界续锁与旧弹倍率干扰;Golden 因独立浮游/本体攻击更新 roster-004、roster-005、bond-victoriaShip-low、bond-victoriaShip-high、coop3-ABYSS-5、coop4-FUNNY-6、coop4-ABYSS-7、coop2-NORMAL-8-serverrun、coop2-NORMAL-1-coverage-standins
This commit is contained in:
1 parent
bc50cac01f
commit
f567e8045e
9 files changed
+461
-127
No files matched your search
+1
-1
@@ -1341,7 +1341,7 @@ header of professions.js).
|
||||
| loopshooter | 回环射手 (user playtest #3): every attack throws a boomerang (`ai.js throwBoomerang`, projectile `'boomerang'`) out to the target at 15 tiles/s — it hits on arrival — and back to the thrower's current position at 3.75 tiles/s without damage (PRTS 跃跃 "投射物飞行速度15,返回时飞行速度3.75"); attacks only while holding it (every boomerang thrown caught — "必须回收全部回旋投掷物才可以进行下一次攻击", `unit.trait.boomerangsOut`) and with the attack cooldown ready, so the real interval is the longer of the two; a target dead mid-flight is not hit (it still flies to the last position and back); knocked out / withdrawn ⇒ lost, a redeployed thrower holds a fresh one; 跃跃 S2's extra boomerangs share the one flight (cnt hits); each catch fires `boomerangCaught`, and an attack profile's `boomerangOnward(ctx)` flies it on after the first hit before it turns back — ctx `hit` (a hit of the same attack), `comeBack(x, y)` once (a content error sends it back from the hit point): 娜仁图亚 S1 bounces, S2 dashes on and hits on its way back (kits/ops/op-narant.js) |
|
||||
| reaperrange | hits every enemy in range; ×1.5 (bb atk_scale) on the trait front grid (or its own line ahead) — both along its direction |
|
||||
| chain | chain N (trait text/bb max_target) with −15 % per jump (bb chain.atk_scale), 1.7-tile jumps (constants.js CHAIN_RADIUS, PRTS 溅射半径一览: 链术师 1.7; 1.8 until 0.1.1), sluggish on each hit |
|
||||
| funnel | drone damage 20 % → +15 %/hit on the same target → 110 % (bb init/delta/max) |
|
||||
| funnel | drone damage 20 % → +15 %/hit on the same target → 110 % (bb init/delta/max). Rockrock S2 detaches this multiplier from new body shots and inherits the trait ramp in an independent skill tick: `rockr:drone`, arts, `isSkill:true`, `isAttack:false`. Older projectiles cannot change its local ramp. A living selectable lock need not remain in body range; end hands the ramp back and restores the normal multiplier (DESIGN §29.16) |
|
||||
| mystic | 秘术师 (PRTS 分支特性信息 秘术师, GitHub #181): at its attack check (the attack ready, able to act, not disarmed) with no valid target — no target, or its kit's `canAttack` false (深靛 never picks a bound enemy) — it stores one energy (`storeEnergy`, up to bb times: 3, 深靛's MSC-X 4), an attack action: the attack interval restarts; a full store idles with the attack ready. The energies leave with its next attack that happens (`releaseEnergy` in `performAttack`, after `beforeAttack`: an attack cancelled before its shot keeps them) and land with the main hit, one arts attack hit each (`hitsFn` reads the hit's `info.energy`); a redeployment holds none [ASSUMED]. 维伊 / 黑键 plug their own `storeEnergy` (转置能量, elite energies) into the same check |
|
||||
| phalanx | no attack & DEF +200 %, RES +20 (bb) while the skill is off; while on, `rangeAoe`: each attack strikes every selectable enemy on its range at once (blocked enemies included; a stealthed one only when revealed or blocked), the same damage near and far, instant (`'beam'`) — "群体法术伤害" (secondary: Terra Wiki, Phalanx Caster: "attacks hit all enemies within their range"; supporting: PRTS 林 S3 备注 "单次普攻最多触发1次效果" — one normal attack can kill several — the same 锁定攻击范围 shape as the 轰击术师, and PRTS 溅射半径一览 documents no splash radius for it (it omits the 撼地者 too, so this is not proof); no primary source states a target cap; community report E3: it used to be one bolt + a 1.1 splash). 卡涅利安's charged S1 keeps the skill-off trait, 不攻击 included (kit `canAttack`, PRTS 备注) |
|
||||
| physician | heal the lowest HP% injured ally in range (a skill `targeting.maxTargets` widens any heal profile) |
|
||||
|
||||
@@ -167,6 +167,12 @@ Profession traits (default behaviours implemented once in the engine, keyed by `
|
||||
|
||||
---
|
||||
|
||||
Rockrock S2 releases its trait drone into an independent skill tick (§29.16). Acquisition uses the body's normal
|
||||
target selection; a living selectable lock stays valid outside the body's range. The body retains its own ranged
|
||||
ordinary attacks. The released ramp inherits the trait state but is isolated from older projectiles. Ending the
|
||||
skill returns that ramp to the trait and restores the normal multiplier and overload cap. S1 and other operators'
|
||||
funnel attacks keep their existing paths.
|
||||
|
||||
## 7. Content modules (server/sim/content + match/effectsMeta handlers)
|
||||
|
||||
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).
|
||||
|
||||
@@ -274,3 +274,27 @@ 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.16 Rockrock S2 drone pursuit
|
||||
|
||||
The official `skill_table.json` entry `skchr_rockr_2`, ranks 4 and 7, keeps a released drone locked until the enemy
|
||||
dies or the skill ends; leaving the operator's range is not a return condition. The old `beforeAttack` callback
|
||||
both replaced the body's target and required the lock to remain in range. With no body candidate, the attack loop
|
||||
never reached that callback at all.
|
||||
|
||||
S2 now ticks one independent arts skill drone (`attack@cnt = 0`, one trait drone). It acquires inside the normal
|
||||
range, keeps a living selectable target after it leaves, and reacquires only after losing that target. The body
|
||||
continues its own in-range attacks. The released drone inherits the trait's target/ramp, resolved module init/delta,
|
||||
live attack interval and overload cap; its multiplier is detached from newly launched body shots during S2 and
|
||||
restored on end. Its local ramp is isolated from older ordinary projectiles and handed back to the trait at end;
|
||||
existing projectiles keep their launch profile. Natural expiry, explicit stop and caster death
|
||||
clear released state; the existing overload buff/cap restoration and stun stay in place. S1, other operators and
|
||||
redeployment ramp rules are unchanged.
|
||||
|
||||
[ASSUMED] Released hits use the existing independent-skill-drone model: no launch-flight delay, and body control
|
||||
does not pause an already released drone. A target becoming hidden or otherwise unselectable releases the lock
|
||||
using the shared target filter. The tables do not settle these details. The kit and PR name these assumptions.
|
||||
Sources: [official skill table](https://github.com/Kengxxiao/ArknightsGameData/blob/master/zh_CN/gamedata/excel/skill_table.json)
|
||||
and [PRTS mode levels](https://prts.wiki/w/卫戍协议:盟约). Controlled regressions cover both forms, leaving/returning,
|
||||
newcomers, combat death, end/stop, module ramp, cadence and overload. A fixed-seed production Match and real headless
|
||||
Chrome normal-input route reproduce the original failure and the repaired pursuit separately.
|
||||
Reference in new issue
Block a user