Support staged group Fremen revival grants
Verify and publish checkpoint container / container (push) Canceled after 0s
Verify and publish checkpoint container / container (push) Canceled after 0s
This commit is contained in:
1 parent
9081249574
commit
d8d2e7207b
9 files changed
+277
-15
No files matched your search
@@ -15,6 +15,28 @@ export function FremenRevivalGrant({
|
||||
}) {
|
||||
const grant = game.fremenRevivalGrant;
|
||||
const me = game.players.find((player) => player.id === game.me);
|
||||
const group = game.fremenGroupRevivalGrant;
|
||||
if (group && game.status === 'playing' && game.phase === 4 && me?.faction === 'fremen') {
|
||||
const busyWindow = busy || !!game.truthtrance || !!game.nexusTraitors?.pending;
|
||||
return (
|
||||
<section className="notice space-y-3" aria-label="Fremen group ally free revival">
|
||||
<h3 className="font-serif text-xl">Fremen group revival</h3>
|
||||
<p className="muted">Choose an ally to receive the ordinary Fremen free-revival rate of three for this phase. This replaces their native rate; normal revival limits still apply.</p>
|
||||
<p className="fine">The grant to each ally is a provisional interpretation of the larger-alliance rule. Each declaration opens a Karama response.</p>
|
||||
{group.map(option => {
|
||||
const name = game.players.find(player => player.id === option.recipient)?.name ?? 'Ally';
|
||||
return <div key={option.recipient}>
|
||||
{option.granted && <p className="fine">Free revival has been granted to {name}.</p>}
|
||||
{option.blocked && !option.granted && <p className="fine">{name}: {option.blocked}</p>}
|
||||
<Button className="game-action" disabled={busyWindow || option.granted || !!option.blocked}
|
||||
onClick={() => act({type:'grantRevival', target:option.recipient})}>
|
||||
Grant {name} free revival <ArrowRight size={15} />
|
||||
</Button>
|
||||
</div>;
|
||||
})}
|
||||
</section>
|
||||
);
|
||||
}
|
||||
if (!grant || game.status !== 'playing' || game.phase !== 4 ||
|
||||
me?.faction !== 'fremen' || me.ally !== grant.recipient) return null;
|
||||
const recipient = game.players.find((player) => player.id === grant.recipient)?.name ?? 'your ally';
|
||||
|
||||
Reference in new issue
Block a user