Enable Basic Kull preview with Tech Tokens
Verify and publish checkpoint container / container (push) Canceled after 0s

This commit is contained in:
Quintine committed 2026-10-29 05:10:06 +11:00
1 parent 92d5c0ac2e
commit 16f10beecf
11 files changed
+375 -18

No files matched your search

+6 -3
View File
@@ -1,4 +1,5 @@
import { FACTIONS } from './catalog';
import { basicKullTechRoster } from './kull-default-profile';
/** Public lobby configuration only; physical freshness is checked by the initializer. */
export type FactionModuleProfile = {
@@ -134,13 +135,13 @@ export function selectedPhaseModuleRoster(
/** Keep unrelated overlays outside this phase-only permission. Semuta's caller
* additionally retains its old roster envelope below, rather than inheriting
* new selected-family admission through its explicit context flag. */
function phaseModuleContext(game: FactionModuleProfile, semuta = false, independent = false): boolean {
function phaseModuleContext(game: FactionModuleProfile, semuta = false, independent = false, kull = false): boolean {
return typeof game.advanced === 'boolean' &&
!(game.strongholdCards && !game.advanced) && !game.leaderSkills &&
!game.homeworlds && !game.nexusCards && !game.discoveryEnabled && !game.discoveries &&
!game.discoveryStash && !game.greatMaker && (independent ? game.ecazTreachery === true : !game.ecazTreachery) &&
(!game.semutaPreview || (semuta && game.semutaPreview === true)) &&
!game.advancedPreview && !game.kullPreview && !game.nexusKullPreview &&
!game.advancedPreview && (!game.kullPreview || kull) && !game.nexusKullPreview &&
!game.guildBetrayalPreview && !game.richeseBetrayalPreview &&
!game.nexusIxianReplacementPreview && !game.nexusIxianBetrayalPreview &&
!game.nexusHarkonnenBetrayalPreview;
@@ -183,7 +184,9 @@ function legacySemutaTechRoster(game: FactionModuleProfile): boolean {
/** Tech-only Basic/Advanced or original Advanced Strongholds at three-six seats.
* Explicit Semuta validation keeps its earlier family/native/Harkonnen scope. */
export function nativeFactionTechProfile(game: FactionModuleProfile, semuta = false): boolean {
return !!game && phaseModuleContext(game, semuta) && !!game.techTokens &&
const kull = !!game && !semuta && game.kullPreview === true && basicKullTechRoster(game) &&
!game.sandtrout && !game.spiceBankerIncomePreview;
return !!game && phaseModuleContext(game, semuta, false, kull) && !!game.techTokens &&
(semuta ? legacySemutaTechRoster(game) :
selectedPhaseModuleRoster(game) && game.players.length >= 3);
}