Compose selected E1/E2 independent cards with Nexus rules
Retain selected decks and original optional modules through normal setup, distinguish native Ixian Betrayal from absent-faction replacement, route explicit CHOAM fuel before printed effects, and preserve native No-Field invoices and pair continuation. Connect canonical native cancellation stock and existing human/minimal AI consumers. Validation: 194 affected tests across 19 files, types/lint/build, bounded native invoice review and seven finite original-action/rendered-control programmes. Runtime ec5ad6c18996d8d958ec0d01132ef3e3ea6d23d36188902eca9a63d4db2efbf8; documentation-only proof overlay a5892004937434429916496497c07a3838a324b4a5d64d4a0eb804ab5212d5bd. Other envelopes, full combinations, comprehensive assurance and deployed acceptance remain open. No saved-room/provider changes.
This commit is contained in:
1 parent
999edb67e6
commit
8422cf1f2d
20 files changed
+1413
-97
No files matched your search
+12
-10
@@ -14,7 +14,7 @@ import { AdvancedPreviewNotice, RulesetControls } from './ruleset-controls';
|
||||
import { EcazOccupyLeadChoice, EcazOccupyBattleSummary, EcazOccupyDialExplanation } from './ecaz-occupy';
|
||||
import { ecazOccupyOwnProfile, ecazOccupyPlanControl } from '@/game/ecaz-occupy-options';
|
||||
import { nexusGuildCunningAction, nexusGuildCunningActive, nexusGuildMovementAvailable, nexusGuildShipmentAvailable, nexusGuildSkipShipmentAction } from '@/game/nexus-guild-cunning-options';
|
||||
import { classicNexusCoreProfile } from '@/game/faction-module-profile';
|
||||
import { nexusCoreProfile } from '@/game/faction-module-profile';
|
||||
import {
|
||||
matchesShipment,
|
||||
liveShipmentPromises,
|
||||
@@ -262,8 +262,8 @@ export function GameTable({
|
||||
const movementAvailable = nexusGuildMovementAvailable(g);
|
||||
const guildCunning = nexusGuildCunningActive(g);
|
||||
const guildCunningAction = g.nexusGuildCunning?.offer ? nexusGuildCunningAction(g, g.nexusGuildCunning.offer.event) : null;
|
||||
const classicNexusPreview = classicNexusCoreProfile(g) &&
|
||||
(g.guildBetrayalPreview || g.nexusIxianReplacementPreview || g.nexusHarkonnenBetrayalPreview);
|
||||
const coreNexusPreview = nexusCoreProfile(g) &&
|
||||
(g.guildBetrayalPreview || g.nexusIxianReplacementPreview || g.nexusHarkonnenBetrayalPreview || g.nexusIxianBetrayalPreview);
|
||||
const combatName = (id: string) =>
|
||||
g.combatLocations?.find((place) => place.id === id)?.name ??
|
||||
gameTerritories(g).find((place) => place.id === id)?.name ??
|
||||
@@ -1290,10 +1290,12 @@ export function GameTable({
|
||||
<a href="/rules?topic=nexus-richese-betrayal#nexus-richese-betrayal">Preview rules and limits</a>
|
||||
</p>
|
||||
)}
|
||||
{classicNexusPreview && (
|
||||
{coreNexusPreview && (
|
||||
<p className="notice" role="status">
|
||||
Classic Nexus reactions preview · Basic/Advanced classic factions, original base33
|
||||
or selected independent36 Treachery, optionally all14 Leader Skills and Homeworlds.
|
||||
Nexus core reactions preview · Basic/Advanced classic factions with base33 or
|
||||
independent36, or selected Ixian/CHOAM decks with the independent three-card
|
||||
variant, permitting registered classic and selected native seats. Optional all14
|
||||
Leader Skills and Homeworlds compose.
|
||||
Own-World Reinforcements fees provisionally spend ordinary non-role counters first,
|
||||
reducing temporary Sardaukar roles only when converted counters pay.
|
||||
Original Tech (3+ seats) and Advanced Strongholds (2+ seats) may compose. Native reactions
|
||||
@@ -1303,7 +1305,7 @@ export function GameTable({
|
||||
<a href="/rules?topic=nexus-cards#nexus-cards">Preview rules and limits</a>
|
||||
</p>
|
||||
)}
|
||||
{g.guildBetrayalPreview && !classicNexusPreview && (
|
||||
{g.guildBetrayalPreview && !coreNexusPreview && (
|
||||
<p className="notice" role="status">
|
||||
Guild Nexus Betrayal development preview · whole funded shipment
|
||||
payment replacement, including your own payment and occupied Junction.
|
||||
@@ -1312,7 +1314,7 @@ export function GameTable({
|
||||
<a href="/rules?topic=nexus-guild-betrayal#nexus-guild-betrayal">Preview rules and limits</a>
|
||||
</p>
|
||||
)}
|
||||
{g.nexusIxianReplacementPreview && !classicNexusPreview && (
|
||||
{g.nexusIxianReplacementPreview && !coreNexusPreview && (
|
||||
<p className="notice" role="status">
|
||||
Ixian Nexus purchased-card replacement development preview · original supported
|
||||
standalone Tleilaxu or Richese entries. Normal paid/Karama and supported native
|
||||
@@ -1321,7 +1323,7 @@ export function GameTable({
|
||||
<a href="/rules?topic=nexus-ixian-replacement#nexus-ixian-replacement">Preview rules and limits</a>
|
||||
</p>
|
||||
)}
|
||||
{g.nexusIxianBetrayalPreview && (
|
||||
{g.nexusIxianBetrayalPreview && !coreNexusPreview && (
|
||||
<p className="notice" role="status">
|
||||
Ixian Nexus Betrayal development preview · native Ixian Bidding extra-card
|
||||
inspection/draw and Advanced Technology exchange prevention. Native Ixians,
|
||||
@@ -1330,7 +1332,7 @@ export function GameTable({
|
||||
<a href="/rules?topic=nexus-ixian-betrayal#nexus-ixian-betrayal">Preview rules and limits</a>
|
||||
</p>
|
||||
)}
|
||||
{g.nexusHarkonnenBetrayalPreview && !classicNexusPreview && (
|
||||
{g.nexusHarkonnenBetrayalPreview && !coreNexusPreview && (
|
||||
<p className="notice" role="status">
|
||||
Harkonnen Nexus Betrayal development preview · cancel an actually declared native Harkonnen
|
||||
traitor call, return that physical card to the Traitor Deck, and draw one private replacement
|
||||
|
||||
Reference in new issue
Block a user