fix: 将涤火杰西卡的盾牌放置限制在相邻四格
This commit is contained in:
1 parent
1db8e51023
commit
85062bab67
11 files changed
+209
-22
No files matched your search
+4
-1
@@ -621,7 +621,10 @@ Any `choice:` handler whose EffectRef reuses its own key must guard like this (o
|
||||
(`PlayerState._legal` / `summonRange`, `board.js ownerRangeKeys`; a summon dragged onto its own owner is checked from
|
||||
the owner's new tile, an operator dragged onto the summon from the summon's new tile); Mon3tr's 重构体 likewise (her
|
||||
talent), while 凯尔希·思衡托's 战术锚点 (`ownerRangeOutside` / `rangedTilesOnly`) goes only on a 高台 outside that range
|
||||
(`summonExcluded`, board.js class `high`). When the owner is re-oriented in
|
||||
(`summonExcluded`, board.js class `high`). 涤火杰西卡's 机动盾牌 instead uses the four orthogonally adjacent tiles
|
||||
(`shared/summonPlacement.js`, her T1 in backups.json / PRTS 涤火杰西卡 天赋), regardless of her facing, skill or
|
||||
module; diagonal and distant tiles are refused in prep. The same `summonRange` feeds server placement, swaps, the
|
||||
client's drag highlights and bot planning. When the owner is re-oriented in
|
||||
place (or promoted) a summon its new range leaves out goes back onto its stack with a toast (`_liftOutOfRange` in
|
||||
`recompute`) — one still inside stays [ASSUMED]. A re-orientation that would leave such a summon with no stack and no
|
||||
free hand / temp slot is refused (HAND_FULL, like withdrawing a summon into a full hand); in the other cases (a
|
||||
|
||||
@@ -58,6 +58,12 @@ Intent handlers (validate → mutate → recompute bonds → push private view):
|
||||
|
||||
Summons (§20.1): an operator on the board sends its manually deployable summons to the hand — deploy-limit copies in one stack, no deploy slot (tokens.json `placeable`, `gamedata.placeableTokens`); moving or swapping it sends its placed summons back to their stack, withdrawing or selling it removes them. A range-bound summon (tokens.json `ownerRange`: 狼群, 流形) goes only on a tile of its owner's attack range (`PlayerState._legal` / `summonRange`); in a swap each piece is checked from the tile it ends on; an in-place re-orientation or promotion that leaves it outside sends it back to its stack with a toast (one still inside stays [ASSUMED], user-confirmed 2026-10-03), and a re-orientation whose lifted summon would have no room is refused with `HAND_FULL`; on the other paths it leaves the board and returns at the next round start (§21.3).
|
||||
|
||||
涤火杰西卡's 机动盾牌 uses a fixed placement grid of the four orthogonally adjacent tiles, independent of her attack
|
||||
range, facing, skill or module (`shared/summonPlacement.js`; her T1 in backups.json / PRTS 涤火杰西卡 天赋).
|
||||
`summonRange` supplies that grid to placement, swaps, the client's highlights, the bots and range cleanup. Moving or
|
||||
withdrawing her uses the ordinary summon-return/removal rules above; re-orienting either piece on its own tile keeps
|
||||
the shield in place. This corrects a missing prep check; the battle's far-shield fixture remains a defensive kit test.
|
||||
|
||||
Equipment (research 04 §2 + addendum, 09 §1.2): 2 slots per chess; a third item on a full carrier replaces the equipped item `replaceUid` names (the replace dialog's pick, official `UseEquipUp.unloadInstId`; absent ⇒ the oldest; a uid not equipped on the target ⇒ `BAD_TARGET`, nothing changes) and the replaced item is destroyed. A consume-on-equip item (盟约之币, 博士投影 …) on a full carrier replaces the same way before it resolves, so the carrier is left with a free slot (the normal 博士投影 takes it until the next round start); a target its effect refuses (博士投影 on an elite) keeps both items — PRTS 卫戍协议/帮助 "达到上限强行佩戴会改为替换装备" names no exception (GitHub #263; the client opens the replace dialog for it, `equipReplaces`). Equipped items are otherwise **locked**: `destroy` (销毁) accepts hand / temp items only (`BAD_TARGET 'equipped items are locked'`); equipment goes back to the hand only when its carrier merges, is sold, or is destroyed by 突变细胞's transformation (the cell itself returns too; PRTS 帮助 "在失去该干员(干员出售、销毁、合并等)…时自动卸除", §21.1) — a sale is refused with `HAND_FULL` when there is no room for it; returned equipment is stowed before the operator a transformation gains and before a merge elite's summon cards, and every path that hands the player an item — returned equipment included — ends with the auto-merge, so no player holds two identical mergeable normal items (§21.7).
|
||||
|
||||
Economy/shop/pool/merge/hand rules: exactly as research 00-INDEX §3–§4 (income `min(3+r,12)`; prices by tier; refresh 1; freeze toggles all; sell +1; items not sellable; upgrade prices per mode with −1/round; shared pool copies 12/14/18/16/8/5 (缪尔赛思 4) across all players; elite = 3 copies; odds = copy-weighted draw over unbanned visible chess with tier ≤ level; merge 3 (风丸 2) → elite onto the consumed deployed copy's tile, else to the hand (§20.11) + reward offer of 3 **different** free chess of tier `min(level+1, 6)` (copy-weighted; a tier short of different chess tops up from the tier below [ASSUMED], §20.6); full hand blocks every buy / reward pick, a merge-completing one too (PRTS 卫戍协议/帮助 §手牌区, GitHub #82); overflow to temp; a free hand slot pulls the temp pieces back in at once, right → left (`PlayerState._fillHandFromTemp`); temp blocks ready).
|
||||
|
||||
@@ -479,3 +479,15 @@ imports and typecheck pass. This round changes no production UI and does not rer
|
||||
the `roster`, `bonds`, `fields`, `matches`, `standins` families are unchanged.
|
||||
- **Contracts updated:** design/engine.md, SIM.md (cabin), design/client.md, design/network.md, META.md and PLAYING.md
|
||||
(local identity recovery and handshake).
|
||||
|
||||
|
||||
### 28.28 Jessica's shield uses four adjacent prep tiles — `shared/summonPlacement.js`, `match/player/placement.js`, `ui/gameLogic/placement.js`
|
||||
|
||||
- Cause: prep accepted distant and diagonal shield tiles while the kit's adjacent shield effects used the official
|
||||
four-tile rule. Source: `data/backups.json` 涤火杰西卡 T1 and [PRTS 涤火杰西卡](https://prts.wiki/w/涤火杰西卡), 天赋.
|
||||
- A symmetric four-tile grid feeds the existing summon-range checks: hand deployment, moves, both swap directions,
|
||||
drag highlights and bot planning agree independently of her facing, skill and module. In-place reorientation keeps
|
||||
a legal shield; moving her returns it, withdrawal removes it. Other summons retain their own placement rules.
|
||||
Rejections and returned-shield messages use i18n. No new [ASSUMED] rule; existing in-place summon behavior is kept.
|
||||
- Regression: `test/match/jessica-placement.test.js` uses real Match handlers and the client placement mirror.
|
||||
It grants one operator as fixture setup; the shield is generated normally. This is model evidence, not natural UI.
|
||||
Reference in new issue
Block a user