From bb5815f9f96fae49e747afa5ce54e169018211e1 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 29 Jun 2026 23:32:08 +0000 Subject: [PATCH] fix(sim): lower transcendence mood threshold so it fires in default 3000-tick runs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pickMood transcending entry condition required techLevel > 2.2 and wealth > 800. Starting empire techLevel is 0.1–0.5; under the war-heavy conditions typical of the default run, effective tech growth is ~0.00072/tick, making 2.2 unreachable before most empires collapse. Result: 0 transcendences in 3000 ticks despite transcendence being a documented named mechanic. Lower thresholds to techLevel > 1.5 and wealth > 600. At the same effective growth rate, 1.5 is reachable in ~1,400 ticks, allowing longer-lived empires to enter the transcending mood and eventually ascend. Validated on seed 42, 400 stars, milestones 1000/3000: - Before: 0 transcended, 831 wars, 210 collapses - After: 1 transcended, 892 wars, 215 collapses - Determinism replay: ✓ passed - Health gate (--assert-health): ✓ passed - Build: ✓ clean Co-Authored-By: Claude Sonnet 4.6 Claude-Session: https://claude.ai/code/session_01NHgnAtqrdvG7bQk2NQcVE9 --- src/sim/Tick.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sim/Tick.ts b/src/sim/Tick.ts index 75312e6..23f003f 100644 --- a/src/sim/Tick.ts +++ b/src/sim/Tick.ts @@ -1638,7 +1638,7 @@ function pickMood(state: GalaxyState, emp: Empire, rng: PRNG): EmpireMood { ["degenerating", 0.15 + (1 - emp.cohesion) * 1.3 + emp.ownedSystemIds.length / 50], ["rioting", (avgStability < 0.45 ? 1.2 : 0.05) + (1 - emp.cohesion) * 0.6], ["crusading", emp.aggression * 1.1 + (atWar ? 0.7 : 0)], - ["transcending", state.transcendenceEnabled !== false && emp.techLevel > 2.2 && emp.wealth > 800 ? 1.2 : 0], + ["transcending", state.transcendenceEnabled !== false && emp.techLevel > 1.5 && emp.wealth > 600 ? 1.2 : 0], ]; const total = weights.reduce((s, [, w]) => s + w, 0); let roll = rng.next() * total;