From a244aeb5f8a128e495b4bc9e8d75077a480f4310 Mon Sep 17 00:00:00 2001
From: Quintine <15965533+Quintine@users.noreply.github.com>
Date: Wed, 28 Oct 2026 00:08:16 +1100
Subject: [PATCH] Support named ordinary cards in Advanced Voice
---
components/battle-preparation.tsx | 14 +-
components/turn-action-fields.tsx | 10 +-
components/turn-action-promises.tsx | 4 +-
docs/CURRENT_STATUS.md | 10 ++
docs/IMPLEMENTATION_STATUS.md | 11 ++
docs/PORTABLE_SNOOPER_ENGINE_AUDIT.md | 26 +++-
docs/RULE_DECISIONS.md | 14 +-
game/battle-cards.ts | 41 +++++-
game/battle-power-question.ts | 4 +-
game/bots.ts | 2 +-
game/combat-response-quote.ts | 4 +-
game/engine.ts | 28 ++--
game/nexus-borrowed-voice.ts | 4 +-
game/reference.ts | 21 +++
tests/battle-power-question.test.ts | 3 +
tests/nexus-borrowed-voice-runtime.test.ts | 16 ++
tests/nexus-borrowed-voice.test.ts | 2 +-
tests/voice-named-card-controls.test.tsx | 103 +++++++++++++
tests/voice-named-card-runtime.test.ts | 164 +++++++++++++++++++++
tests/voice-named-card.test.ts | 74 ++++++++++
20 files changed, 514 insertions(+), 41 deletions(-)
create mode 100644 tests/voice-named-card-controls.test.tsx
create mode 100644 tests/voice-named-card-runtime.test.ts
create mode 100644 tests/voice-named-card.test.ts
diff --git a/components/battle-preparation.tsx b/components/battle-preparation.tsx
index 2ae92b38..ccbf47fb 100644
--- a/components/battle-preparation.tsx
+++ b/components/battle-preparation.tsx
@@ -7,7 +7,7 @@ import {
isStoneBurner,
isMirrorWeapon,
isDefenseCard,
- VOICE_KINDS,
+ voiceChoices,
} from '@/game/battle-cards';
import { useState } from 'react';
import { Button } from '@/components/ui/button';
@@ -150,15 +150,15 @@ export function BattlePreparation({
Both combatants continue in attacker order before Prescience or sealed plans. Only an unallied holder may spend the card.
{offer.blocked && {offer.blocked}
}
{offer.canUse && <>
-