Keep Atomics penalties on original targets after alliance changes
This commit is contained in:
1 parent
1f38f12beb
commit
4bf6cfc875
15 files changed
+303
-181
No files matched your search
@@ -49,7 +49,6 @@ import { NexusAdvisors } from './nexus-advisors';
|
||||
import { NexusSardaukar } from './nexus-sardaukar';
|
||||
import { TerrorBoardMarkers } from './terror-board-markers';
|
||||
import { homeworldRevivalActionBlock } from '@/game/homeworld-revival-deployment-options';
|
||||
import { atomicsAllianceChangeBlocked } from '@/game/moritani-atomics';
|
||||
import { GuildHomeworldShipment } from './guild-homeworld-shipment';
|
||||
import { JunctionTransport } from './junction-transport';
|
||||
import { BiddingEnd } from './bidding-end';
|
||||
@@ -3954,29 +3953,23 @@ export function GameTable({
|
||||
<option value="">Choose a player</option>
|
||||
{g.players
|
||||
.filter((p) => p.id !== me.id)
|
||||
.map((p) => {
|
||||
const atomicsBlocked = atomicsAllianceChangeBlocked(g.moritaniAtomics, me.id, p.id);
|
||||
return <option value={p.id} key={p.id}
|
||||
disabled={!!g.homeworldAllianceBlocks?.[p.id] || atomicsBlocked}>
|
||||
.map((p) => (
|
||||
<option value={p.id} key={p.id}
|
||||
disabled={!!g.homeworldAllianceBlocks?.[p.id]}>
|
||||
{p.name}
|
||||
{g.homeworldAllianceBlocks?.[p.id] ? ` · ${g.homeworldAllianceBlocks[p.id]}` : ''}
|
||||
{atomicsBlocked ? ' · Atomics alliance ruling pending' : ''}
|
||||
{g.allianceOffers[p.id] === me.id ? ' · Invited you' : ''}
|
||||
</option>;
|
||||
})}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
</label>
|
||||
{g.homeworldAllianceBlocks?.[target] && <p className="notice">{g.homeworldAllianceBlocks[target]}</p>}
|
||||
{!!target && atomicsAllianceChangeBlocked(g.moritaniAtomics, me.id, target) &&
|
||||
<p className="notice">Changing Moritani’s ally after Atomics awaits a hand-limit ruling.</p>}
|
||||
{actionButton('Propose / accept alliance', {
|
||||
type: 'alliance',
|
||||
target,
|
||||
}, !target || !!g.homeworldAllianceBlocks?.[target] ||
|
||||
atomicsAllianceChangeBlocked(g.moritaniAtomics, me.id, target))}
|
||||
}, !target || !!g.homeworldAllianceBlocks?.[target])}
|
||||
{me.ally &&
|
||||
actionButton('Break alliance', { type: 'alliance' },
|
||||
atomicsAllianceChangeBlocked(g.moritaniAtomics, me.id, null))}
|
||||
actionButton('Break alliance', { type: 'alliance' })}
|
||||
</>
|
||||
)}
|
||||
{g.phase === 1 && !g.nexus && !g.spiceWindow && (
|
||||
|
||||
@@ -264,6 +264,8 @@ export function MoritaniTerrorSupply({ game }: { game: GameView }) {
|
||||
<p className="mt-1 mb-0">
|
||||
A lasting hand-limit reduction of one applies to {affectedNames}.
|
||||
Any excess cards were discarded at random when Atomics resolved.
|
||||
The provisional penalty stays on these original players if alliances
|
||||
later change; a new ally does not inherit it.
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
@@ -597,7 +599,9 @@ export function MoritaniEntry({
|
||||
otherwise legal movement or Sneak Attack. Your hand limit
|
||||
falls by one starting this turn; your ally’s at activation
|
||||
does too, if you have one. Each hand over its new limit
|
||||
discards one random card per excess card.
|
||||
discards one random card per excess card. Under the provisional
|
||||
persistent-target interpretation, later alliance changes do not
|
||||
move this penalty to a new ally.
|
||||
</p>
|
||||
)}
|
||||
{entry.kind === 'sneakAttack' && sneak && (
|
||||
|
||||
Reference in new issue
Block a user