Rev 9 ships with game thirteen's scars
The WARD's bite now rides the stack per its card text, cardless traps carry their own damage through resolution, and the duel skill records the goat: BUTT-HEAD's charge is cross-map physical that no spell- counter answers, custody of one's own chest is a dial not a state, and junction terrain outlives every spell cast near it. Ledgers verified. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF
This commit is contained in:
co-authored by
Claude Fable 5
parent
019deedd85
commit
2a8539e59a
@@ -238,8 +238,10 @@ export interface CastParams {
|
||||
* Rev 7: DISEASE is a self-cast plague ("You're the carrier!") — the caster
|
||||
* carries it, sharing a square bites both directions, no counteraction.
|
||||
* Rev 8: the fire imp's scorch is a SPELL (FAQ) — counteractable, magical —
|
||||
* and SOULSTONE's floor holds even at 3 life or below. */
|
||||
export const CURRENT_RULES_REV = 8;
|
||||
* and SOULSTONE's floor holds even at 3 life or below.
|
||||
* Rev 9: the WARD's bite is counteractable ("COUNTERACTIONs ... otherwise
|
||||
* work as written"), though nothing a counter does touches its caster. */
|
||||
export const CURRENT_RULES_REV = 9;
|
||||
|
||||
export interface GameConfig {
|
||||
playerIds: PlayerId[];
|
||||
@@ -4567,8 +4569,29 @@ function doWardChoice(prev: GameState, play: boolean): CommandResult {
|
||||
owner.displayed = owner.displayed.filter((id) => id !== card!.instanceId);
|
||||
state.discard.push(card!);
|
||||
events.push({ type: "wardSprung", owner: owner.id, victim: taker.id });
|
||||
applyDamage(state, events, taker, 3, "warded treasure", null);
|
||||
checkVictory(state, events);
|
||||
// Rev 9: "COUNTERACTIONs against WARD ... otherwise work as written" —
|
||||
// the bite rides the stack. `trapped` carries the card's other clause:
|
||||
// nothing a counter does can touch the Ward's caster. Older games
|
||||
// recorded the instant bite and replay it.
|
||||
if ((state.config.deckRev ?? 1) >= 9) {
|
||||
state.stack = {
|
||||
attackerId: owner.id,
|
||||
defenderId: taker.id,
|
||||
attackCard: null,
|
||||
numberValue: null,
|
||||
amplifyFactor: 1,
|
||||
extendFactor: 1,
|
||||
powerAttackPoints: 0,
|
||||
params: { damage: 3 },
|
||||
kind: "spell",
|
||||
counters: [],
|
||||
waitingOn: taker.id,
|
||||
trapped: true,
|
||||
};
|
||||
} else {
|
||||
applyDamage(state, events, taker, 3, "warded treasure", null);
|
||||
checkVictory(state, events);
|
||||
}
|
||||
}
|
||||
return { ok: true, state, events };
|
||||
}
|
||||
@@ -5839,7 +5862,7 @@ function resolveStack(state: GameState, events: GameEvent[]): void {
|
||||
? (stack.params?.damage ?? 1) // a creature's blow
|
||||
: stack.tearTreasure
|
||||
? 0 // the tear wrestles; it does not bruise
|
||||
: 1; // a punch
|
||||
: (stack.params?.damage ?? 1); // a punch — or a cardless trap's bite
|
||||
// Webs burn: "Any fire damage done to player in webs causes two extra points."
|
||||
if (attackId === "fireball" && sustainedOn(state, defender.id, "sticky-web").length > 0) {
|
||||
base += 2;
|
||||
|
||||
Reference in New Issue
Block a user