Expansion phase: settlements — the North joins the world

Runs 5-6 logged in FINDINGS.md (soul layer validated: nature debris
0.000 vs selfish 0.225 after two years; the ledger works).

Towns are now real spatial structure: TownDef seeds (South at the
bottom of the map, North at the top), NPCs affiliate with a home town,
communal duty serves your own settlement (buildings are town-tagged,
founding uses the town centroid and per-town shelter caps), and each
town raises its own shelters and granary. Generational (North) soul
profile added — temperament only until the knowledge system lands.
Map shows town labels; rosters and CSVs carry town columns.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 14:02:59 -04:00
parent 8aab1a763b
commit 3f2c5e2f18
11 changed files with 4124 additions and 6541 deletions
+2 -1
View File
@@ -24,7 +24,7 @@ public static class StatsLogger
"avg_debris,refusals";
private const string NpcHeader =
"day,npc,name,soul,dominant,gather_ticks,build_ticks,trade_ticks,rest_ticks,social_ticks," +
"day,npc,name,soul,town,dominant,gather_ticks,build_ticks,trade_ticks,rest_ticks,social_ticks," +
"nourish,health,debris";
private const string GiftHeader =
@@ -154,6 +154,7 @@ public static class StatsLogger
.Append(i + 1).Append(',')
.Append(npc.Name).Append(',')
.Append(npc.Soul.Type).Append(',')
.Append(npc.HomeTown).Append(',')
.Append(npc.DominantStateToday()).Append(',')
.Append(t[(int)NpcState.Gathering]).Append(',')
.Append(t[(int)NpcState.Building]).Append(',')