Place names: Miss Terri's gets a draft list (ruling miss-terris-improvised-places)

Real Australian place names, Indigenous-derived and English, in the old
Australia file's spirit; a draft Emily may replace. The test that pinned her as
designation-only now clears her list in memory to prove the fallback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-10-17 20:35:37 +02:00
commit a5a8199321
2 changed files with 19 additions and 11 deletions

View file

@ -174,16 +174,21 @@ public sealed class PlaceNamesTests : IDisposable
[Fact]
public void AFactionWithoutAListGetsCatalogueDesignations()
{
var terris = Shared.GetAll<Faction>().Single(f => f.ShortName == "Miss Terri's");
Assert.Empty(terris.Places);
var held = 0;
foreach (var galaxy in Galaxies(true, 10))
foreach (var zone in galaxy.Zones.Where(z => z.Owner == terris))
{
Assert.Matches(Designation, zone.Name);
held++;
}
Assert.True(held > 0, "Miss Terri's held no zone in the first ten prelude galaxies");
// Its own cache: the list is cleared, which must not reach the galaxies the other tests share.
var cache = RestoredHullsTests.OpenCatalog();
_own.Add(cache);
var terris = cache.GetAll<Faction>().Single(f => f.ShortName == "Miss Terri's");
Assert.NotEmpty(terris.Places);
var galaxy = Enumerable.Range(1, 20).Select(seed => { try { return Build(cache, true, (uint)seed); } catch (Exception) { return null; } })
.First(g => g != null && g.Zones.Any(z => z.Owner == terris));
terris.Places = Array.Empty<FactionPlace>();
var random = new Random(7);
galaxy.NamePlaces(ref random);
var held = galaxy.Zones.Where(z => z.Owner == terris).ToArray();
Assert.NotEmpty(held);
Assert.All(held, zone => Assert.Matches(Designation, zone.Name));
}
[Fact]

View file

@ -11,7 +11,7 @@ using GameCult.Caching;
// place-names [apply] (aetheria-release, cut faction-curated-place-names; ruling faction-curated-place-names):
// authors every curated faction's Places from the table below, which is the one source of those names. A faction is
// identified by its record key, and its ShortName must agree (ghostlight-verse ruling faction-identity-is-record-key).
// A faction without a row keeps the catalogue designations Galaxy.NamePlaces falls back to (question miss-terris-place-names).
// A faction without a row keeps the catalogue designations Galaxy.NamePlaces falls back to.
// Order is meaning: the first name is the faction's capital, and the home zone takes it. Dry run unless passed "apply".
public static class PlaceNamesCommand
{
@ -44,6 +44,9 @@ public static class PlaceNamesCommand
"Ishtar Studios | Prime Time | Maxwell Heights | Cloud Nine Live | Channel Aphrodite | Clout | Buzz Market | Ratings Tower | Lagrange Feed | Spotlight | Exclusive | Trending | Broadcast Row | Red Carpet | Season Finale | Sponsored | Headliner | Viral | Golden Hour | Breaking News"),
new("087df3f89e59beab14f9d41c849b202f", "Megiddo",
"First Vigil | Earth Stars | Continuity | The Long Silence | Deferred Ground | Unverified | Boundary Watch | Custody | Not Our World | Pleiades Watch | Second Vault | Presumption | Under Orion | Night Watch | Witness | Flatland Edge | Old Sky | Record Keeper | Patience | Revelation Pending"),
// Real Australian place names, Indigenous-derived and English, a draft Emily may replace (ruling miss-terris-improvised-places).
new("d6466821-6776-4f40-9609-2342debf5c86", "Miss Terri's",
"Woolloomooloo | Wagga Wagga | Humpty Doo | Come By Chance | Yackandandah | Nowhere Else | Kurri Kurri | Lightning Ridge | Mooloolaba | Woy Woy | Banana | Coober Pedy | Gundagai | Burpengary | Toowoomba | Kalgoorlie | Bald Hills | Wollongong | Innaloo | Ballarat"),
new("73d368dd-58a8-4431-b9ba-2d44754d36a1", "NiteLife",
"Caloris Array | Arete Grid | Malam | Cahaya | Graveyard Shift | Lights On | Bintang | Night Count | Pelita | Uptime Pro | Bulan | Grid Plus | Kilat | Afterglow | Load Balance | Peak Hours | Terang | Version Two | Midnight Blue | Keep On"),
new("e34d0354f46873df7ec27273fa2abe3d", "Forge",