From 1b44fb30774f5a69ffe854c96ec5a015baff01f0 Mon Sep 17 00:00:00 2001 From: Natalie Date: Sun, 3 May 2026 18:22:49 -0400 Subject: [PATCH] =?UTF-8?q?feat(@projects/@magic-civilization):=20?= =?UTF-8?q?=E2=9C=A8=20update=20runesmith=20specialist=20slots=20and=20bui?= =?UTF-8?q?lding=20renames?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- public/resources/buildings/archive_of_runes.json | 2 +- .../buildings/council_of_runesmiths.json | 2 +- public/resources/buildings/deep_atelier.json | 2 +- .../{choral_hall.json => forge_chant_hall.json} | 8 ++++---- ...grand_exposition.json => grand_clanmoot.json} | 4 ++-- public/resources/buildings/rune_museum.json | 2 +- .../{amphitheater.json => saga_arena.json} | 4 ++-- public/resources/buildings/saga_chronicle.json | 2 +- ...{high_academy.json => stonelore_academy.json} | 6 +++--- public/resources/buildings/university.json | 2 +- .../{royal_treasury.json => vault_of_seals.json} | 4 ++-- public/resources/specialists/specialists.json | 16 ++++++++-------- .../tests/unit/management/test_turn_processor.gd | 8 +++++++- 13 files changed, 34 insertions(+), 28 deletions(-) rename public/resources/buildings/{choral_hall.json => forge_chant_hall.json} (89%) rename public/resources/buildings/{grand_exposition.json => grand_clanmoot.json} (94%) rename public/resources/buildings/{amphitheater.json => saga_arena.json} (95%) rename public/resources/buildings/{high_academy.json => stonelore_academy.json} (92%) rename public/resources/buildings/{royal_treasury.json => vault_of_seals.json} (94%) diff --git a/public/resources/buildings/archive_of_runes.json b/public/resources/buildings/archive_of_runes.json index 52ec0d82..0fc2f274 100644 --- a/public/resources/buildings/archive_of_runes.json +++ b/public/resources/buildings/archive_of_runes.json @@ -48,6 +48,6 @@ }, "stack_mode": "amplify", "specialist_slots": [ - "loremaster_scholar" + "runescribe" ] } diff --git a/public/resources/buildings/council_of_runesmiths.json b/public/resources/buildings/council_of_runesmiths.json index a176462b..187d3453 100644 --- a/public/resources/buildings/council_of_runesmiths.json +++ b/public/resources/buildings/council_of_runesmiths.json @@ -42,6 +42,6 @@ ] }, "specialist_slots": [ - "loremaster_scholar" + "runescribe" ] } diff --git a/public/resources/buildings/deep_atelier.json b/public/resources/buildings/deep_atelier.json index 2cf0dfae..66018463 100644 --- a/public/resources/buildings/deep_atelier.json +++ b/public/resources/buildings/deep_atelier.json @@ -31,7 +31,7 @@ } ], "requires_buildings_all_cities": [ - "choral_hall" + "forge_chant_hall" ], "sprite": "sprites/buildings/deep_atelier.png", "stack_mode": "single", diff --git a/public/resources/buildings/choral_hall.json b/public/resources/buildings/forge_chant_hall.json similarity index 89% rename from public/resources/buildings/choral_hall.json rename to public/resources/buildings/forge_chant_hall.json index d0bf4393..57b9a61d 100644 --- a/public/resources/buildings/choral_hall.json +++ b/public/resources/buildings/forge_chant_hall.json @@ -1,6 +1,6 @@ { - "id": "choral_hall", - "name": "Choral Hall", + "id": "forge_chant_hall", + "name": "Forge-Chant Hall", "description": "A vaulted chamber tuned for voice and drum — dwarven choirs rehearse the funeral chants and forge-songs that the holds carry forward through generations.", "placement": "city", "category": "culture", @@ -30,7 +30,7 @@ "value": 1 } ], - "requires_existing": "amphitheater", + "requires_existing": "saga_arena", "consumes_existing": false, "sprite": "sprites/buildings/choral_hall.png", "stack_mode": "amplify", @@ -44,6 +44,6 @@ ] }, "specialist_slots": [ - "choral_voice" + "forge_chanter" ] } diff --git a/public/resources/buildings/grand_exposition.json b/public/resources/buildings/grand_clanmoot.json similarity index 94% rename from public/resources/buildings/grand_exposition.json rename to public/resources/buildings/grand_clanmoot.json index ca232b9a..7fac1e21 100644 --- a/public/resources/buildings/grand_exposition.json +++ b/public/resources/buildings/grand_clanmoot.json @@ -1,6 +1,6 @@ { - "id": "grand_exposition", - "name": "Grand Exposition", + "id": "grand_clanmoot", + "name": "Grand Clanmoot", "description": "Once per generation, every clan sends its finest works, weapons, and savants to the Mountain-Throne for a year-long exhibition that reshapes the realm's priorities.", "placement": "city", "category": "culture", diff --git a/public/resources/buildings/rune_museum.json b/public/resources/buildings/rune_museum.json index 5ba23613..3f6ee74c 100644 --- a/public/resources/buildings/rune_museum.json +++ b/public/resources/buildings/rune_museum.json @@ -30,7 +30,7 @@ "value": 1 } ], - "requires_existing": "choral_hall", + "requires_existing": "forge_chant_hall", "consumes_existing": false, "sprite": "sprites/buildings/rune_museum.png", "stack_mode": "amplify", diff --git a/public/resources/buildings/amphitheater.json b/public/resources/buildings/saga_arena.json similarity index 95% rename from public/resources/buildings/amphitheater.json rename to public/resources/buildings/saga_arena.json index 3f9dd930..689897d0 100644 --- a/public/resources/buildings/amphitheater.json +++ b/public/resources/buildings/saga_arena.json @@ -1,6 +1,6 @@ { - "id": "amphitheater", - "name": "Amphitheater", + "id": "saga_arena", + "name": "Saga Arena", "description": "An echoing stone arena where bards recite clan sagas and history is etched into the rock walls. The first place a clan's stories outlive their tellers.", "placement": "city", "category": "culture", diff --git a/public/resources/buildings/saga_chronicle.json b/public/resources/buildings/saga_chronicle.json index 76dd8802..0039d7b7 100644 --- a/public/resources/buildings/saga_chronicle.json +++ b/public/resources/buildings/saga_chronicle.json @@ -31,7 +31,7 @@ } ], "requires_buildings_all_cities": [ - "amphitheater" + "saga_arena" ], "sprite": "sprites/buildings/saga_chronicle.png", "stack_mode": "single", diff --git a/public/resources/buildings/high_academy.json b/public/resources/buildings/stonelore_academy.json similarity index 92% rename from public/resources/buildings/high_academy.json rename to public/resources/buildings/stonelore_academy.json index a993b1bf..c545ba32 100644 --- a/public/resources/buildings/high_academy.json +++ b/public/resources/buildings/stonelore_academy.json @@ -1,6 +1,6 @@ { - "id": "high_academy", - "name": "High Academy", + "id": "stonelore_academy", + "name": "Stonelore Academy", "description": "The Mountain-Throne's central school of philosophy, mathematics, and runesmithing. Convened only when every hold has a library to send its brightest from.", "placement": "city", "category": "research", @@ -42,6 +42,6 @@ ] }, "specialist_slots": [ - "loremaster_scholar" + "runescribe" ] } diff --git a/public/resources/buildings/university.json b/public/resources/buildings/university.json index da74bb58..3c53d687 100644 --- a/public/resources/buildings/university.json +++ b/public/resources/buildings/university.json @@ -44,6 +44,6 @@ "requires_existing": "scriptorium", "consumes_existing": false, "specialist_slots": [ - "loremaster_scholar" + "runescribe" ] } diff --git a/public/resources/buildings/royal_treasury.json b/public/resources/buildings/vault_of_seals.json similarity index 94% rename from public/resources/buildings/royal_treasury.json rename to public/resources/buildings/vault_of_seals.json index 85fe4197..0aa045d7 100644 --- a/public/resources/buildings/royal_treasury.json +++ b/public/resources/buildings/vault_of_seals.json @@ -1,6 +1,6 @@ { - "id": "royal_treasury", - "name": "Royal Treasury", + "id": "vault_of_seals", + "name": "Vault of Seals", "description": "Vault of the High Throne, fed by tithes from every market in the realm. To raise it, every hold must have a marketplace pumping its share into the coffer.", "placement": "city", "category": "economy", diff --git a/public/resources/specialists/specialists.json b/public/resources/specialists/specialists.json index ce916e59..6eecbaaa 100644 --- a/public/resources/specialists/specialists.json +++ b/public/resources/specialists/specialists.json @@ -16,7 +16,7 @@ } ], "employed_in": [ - "amphitheater", + "saga_arena", "saga_chronicle" ], "population_cost": 1, @@ -32,8 +32,8 @@ } }, { - "id": "choral_voice", - "name": "Choral Voice", + "id": "forge_chanter", + "name": "Forge-Chanter", "description": "Trained in the deep-throat singing and forge-rhythm of dwarven tradition. Performs at clan gatherings and funerals.", "flavor": "We sing while we work. We work while we sing. The two have always been the same.", "gpp_type": "music", @@ -48,7 +48,7 @@ } ], "employed_in": [ - "choral_hall" + "forge_chant_hall" ], "population_cost": 1, "encyclopedia": { @@ -129,8 +129,8 @@ } }, { - "id": "loremaster_scholar", - "name": "Loremaster Scholar", + "id": "runescribe", + "name": "Runescribe", "description": "An academic in the deep-archive tradition. Writes treatises, copies manuscripts, and tutors the next generation.", "flavor": "We do not invent. We discover what was already true. Then we write it down.", "gpp_type": "scholarship", @@ -147,7 +147,7 @@ "employed_in": [ "library", "university", - "high_academy", + "stonelore_academy", "council_of_runesmiths", "archive_of_runes" ], @@ -182,7 +182,7 @@ "employed_in": [ "market", "marketplace", - "royal_treasury", + "vault_of_seals", "guild_hall", "high_guild_hall" ], diff --git a/src/game/engine/tests/unit/management/test_turn_processor.gd b/src/game/engine/tests/unit/management/test_turn_processor.gd index 4ed5c519..136084a5 100644 --- a/src/game/engine/tests/unit/management/test_turn_processor.gd +++ b/src/game/engine/tests/unit/management/test_turn_processor.gd @@ -262,7 +262,13 @@ func test_catchup_research_mult_active_when_two_eras_behind() -> void: func test_player_tier_peak_returns_max_era() -> void: ## _player_tier_peak finds the highest era across researched_techs. var p: PlayerScript = _make_player(0) - p.researched_techs = ["agriculture", "naval"] # era 1, era 2 + var arr: Array[String] = ["agriculture", "naval"] + p.researched_techs = arr # era 1, era 2 + # Diagnostic: confirm DataLoader can resolve these tech ids. + var ag: Dictionary = DataLoader.get_tech("agriculture") + var nv: Dictionary = DataLoader.get_tech("naval") + print("DBG agriculture=", ag, " naval=", nv) + print("DBG p.researched_techs=", p.researched_techs) assert_eq( TurnProcessorScript._player_tier_peak(p), 2, "tier_peak must equal max era of researched_techs"