A reflected Lightning Blast ends the caster's turn on the spot (rev 28)
FAQ: 'If this gets FULLY REFLECTED, you lose the rest of your turn and cannot draw cards (in addition to damage).' When the returned bolt stuns its own caster mid-turn, their remaining actions end at once and the end-of-turn draw comes up empty (new turn.drawForbidden flag); the normal stun still costs them the next turn. The affected player sees 'Your own bolt has left you reeling' in place of the usual spent-turn slip. Older revisions played on and stored games replay so. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0138A8CjeQRpvzKxuMfz1Bqc
This commit is contained in:
co-authored by
Claude Fable 5
parent
67157ad3a2
commit
1d7407cb20
@@ -167,6 +167,9 @@ export interface TurnState {
|
||||
/** SLOW: "his attacks [reduce] to every other turn". */
|
||||
attackForbidden: boolean;
|
||||
actionsEnded: boolean;
|
||||
/** A reflected LIGHTNING BLAST stuns mid-turn: no end-of-turn draw either
|
||||
* (FAQ: "you lose the rest of your turn and can't draw cards"). */
|
||||
drawForbidden?: boolean;
|
||||
}
|
||||
|
||||
export interface CastStack {
|
||||
@@ -845,6 +848,15 @@ const CARD_EFFECTS: Record<string, AttackEffect | NeutralEffect | CounterEffect>
|
||||
if (ctx.damageDealt <= 0 || !ctx.defender.alive) return;
|
||||
ctx.defender.lostTurns++;
|
||||
ctx.events.push({ type: "stunned", player: ctx.defender.id, turnsLost: 1 });
|
||||
// Stunned mid-own-turn (the bolt came back): FAQ — "If this gets FULLY
|
||||
// REFLECTED, you lose the rest of your turn and can't draw cards (in
|
||||
// addition to damage)." Rules rev 28; older games played on and replay so.
|
||||
const st = ctx.state;
|
||||
if ((st.config.deckRev ?? 1) >= 28 &&
|
||||
st.players[st.turn.activeIndex]!.id === ctx.defender.id) {
|
||||
st.turn.actionsEnded = true;
|
||||
st.turn.drawForbidden = true;
|
||||
}
|
||||
},
|
||||
},
|
||||
powerthrust: { kind: "attack", requiresLos: true, baseDamage: (n) => 2 + (n ?? 0) },
|
||||
@@ -5955,7 +5967,7 @@ function doEndTurn(prev: GameState, draw: number): CommandResult {
|
||||
const events: GameEvent[] = [];
|
||||
|
||||
const room = handLimit(p) - p.hand.length;
|
||||
const count = Math.min(draw, room);
|
||||
const count = state.turn.drawForbidden ? 0 : Math.min(draw, room);
|
||||
if (count > 0) {
|
||||
const drawn: CardInstance[] = [];
|
||||
let toDraw = count;
|
||||
|
||||
Reference in New Issue
Block a user