diff --git a/components/game-table.tsx b/components/game-table.tsx index af19b64f..ac386e5a 100644 --- a/components/game-table.tsx +++ b/components/game-table.tsx @@ -1,5 +1,6 @@ 'use client'; import { TravelPromises } from './travel-promises'; +import { TurnActionPromises } from './turn-action-promises'; import { MixedTraitorPromises } from './mixed-traitor-promises'; import { MixedBattlePromises } from './mixed-battle-promises'; import { TraitorDecisionPromises } from './traitor-decision-promises'; @@ -2066,6 +2067,7 @@ export function GameTable({ {g.status === 'playing' && } {g.status === 'playing' && } {g.status === 'playing' && } + {g.status === 'playing' && } {g.guildBetrayalReaction ? ( ) : g.richeseBetrayalReaction ? ( diff --git a/components/truthtrance.tsx b/components/truthtrance.tsx index ebcb6b02..f93404b2 100644 --- a/components/truthtrance.tsx +++ b/components/truthtrance.tsx @@ -3,6 +3,9 @@ import { TravelClaimFields, travelClaimInputError } from './travel-claim-fields'; import { TravelAnswers } from './travel-promises'; import type { TravelActionClaim } from '@/game/travel-expression-promises'; +import { TurnActionFields, turnActionInputError } from './turn-action-fields'; +import { TurnActionAnswers } from './turn-action-promises'; +import type { TurnActionLeaf } from '@/game/turn-action-promises'; import { MixedTraitorFields, mixedTraitorInputError } from './mixed-traitor-fields'; import type { TraitorActionClaim } from '@/game/mixed-traitor-question'; @@ -93,7 +96,7 @@ export function Truthtrance({ g.players.find((p) => p.id !== me.id)!.id, ); const [kind, setKind] = useState< - 'fact' | 'freeform' | 'battlePlan' | 'shipment' | 'mixedShipment' | 'movement' | 'traitorCall' | 'bid' | 'revival' | 'bribe' | 'alliance' | 'leaderRevival' | 'revivalExpression' | 'bribeExpression' | 'movementExpression' | 'mixedMovement' | 'mixedBribe' | 'mixedRevival' | 'mixedBid' | 'allianceExpression' | 'mixedAlliance' | 'mixedBattlePlan' | 'mixedTraitorCall' | 'travel' + 'fact' | 'freeform' | 'battlePlan' | 'shipment' | 'mixedShipment' | 'movement' | 'traitorCall' | 'bid' | 'revival' | 'bribe' | 'alliance' | 'leaderRevival' | 'revivalExpression' | 'bribeExpression' | 'movementExpression' | 'mixedMovement' | 'mixedBribe' | 'mixedRevival' | 'mixedBid' | 'allianceExpression' | 'mixedAlliance' | 'mixedBattlePlan' | 'mixedTraitorCall' | 'travel' | 'turnActions' >('fact'); const [revivalLeader, setRevivalLeader] = useState(g.allLeaders.find(leader => leader.faction === g.players.find(player => player.id === target)?.faction)?.id ?? ''); @@ -175,6 +178,12 @@ export function Truthtrance({ { kind: 'action', action: { kind: 'move', territory: 'arrakeen', minimum: 1 } }, ] }); const travelError = travelClaimInputError(travel, g, target); + const [turnActions, setTurnActions] = useState>({ kind: 'and', terms: [ + { kind: 'action', action: { kind: 'payment', recipient: g.me, minimum: 1 } }, + { kind: 'action', action: { kind: 'ship', territory: 'carthag', minimum: 1 } }, + { kind: 'action', action: { kind: 'move', territory: 'arrakeen', minimum: 1 } }, + ] }); + const turnActionsError = turnActionInputError(turnActions, g, target); const [shipment, setShipment] = useState({ territory: 'carthag', minimum: 6 }); const [mixed, setMixed] = useState({ kind: 'and', @@ -211,6 +220,7 @@ export function Truthtrance({ claim: planClaim, } : kind === 'mixedBattlePlan' ? { kind, target, battle: g.battle?.event ?? null, territory: g.battle?.territory ?? '', mixed: mixedBattle } + : kind === 'turnActions' ? { kind, target, turn: g.turn, mixed: turnActions } : kind === 'travel' ? { kind, target, turn: g.turn, mixed: travel } : kind === 'mixedTraitorCall' ? { kind, target, battle: g.battle?.event ?? '', territory: g.battle?.territory ?? '', mixed: mixedTraitor } : kind === 'traitorCall' ? { kind, target, battle: g.battle?.event ?? '', territory: g.battle?.territory ?? '' } @@ -441,6 +451,8 @@ export function Truthtrance({
{button(answer === 'unknown' ? 'I don’t know yet' : `Answer ${answer === 'yes' ? 'Yes' : 'No'}`, { type: 'truthAnswer', answer })}
))} + ) : w.question!.kind === 'turnActions' ? ( + ) : w.question!.kind === 'travel' ? ( ) : w.question!.kind === 'traitorCall' || w.question!.kind === 'mixedTraitorCall' ? ( @@ -569,6 +581,7 @@ export function Truthtrance({ +