fix(@projects/@magic-civilization): 🐛 update beacon_tower unlocks logic

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Natalie 2026-05-13 12:42:34 -07:00
parent aa4d0f86a0
commit b47a8034b4
5 changed files with 19 additions and 15 deletions

View file

@ -473,13 +473,13 @@
"gunpowder"
],
"unlocks": {
"buildings": [
"beacon_tower"
],
"buildings": [],
"units": [
"beacon_bearer"
],
"improvements": []
"improvements": [
"beacon_tower"
]
},
"flavor": "Fire speaks faster than any runner. But fire can be put out.",
"encyclopedia": {

View file

@ -296,9 +296,7 @@
"tracking"
],
"unlocks": {
"buildings": [
"tunnel_mouth"
],
"buildings": [],
"units": [
"tunnel_runner"
],

View file

@ -320,7 +320,8 @@ func get_legal_actions() -> Array[Dictionary]:
is_deployed,
is_embarked,
has_adjacent_water,
has_adjacent_land
has_adjacent_land,
{}
)

View file

@ -288,10 +288,15 @@ func test_build_json_embeds_clan_weights_when_ctrl_present() -> void:
GameState.players = [p0]
var ctrl: RefCounted = ClassDB.instantiate("GdMcTreeController")
var data_dir: String = ProjectSettings.globalize_path(
"res://public/games/age-of-dwarves/data"
# build_mc_tree_state expects ai_personalities.json *contents* (JSON string),
# not a directory path — the Rust bridge variant is
# scoring_weights_for_clan_json. Loading the file contents here matches the
# production path (ai_turn_bridge.gd::_load_ai_personalities_json).
var personalities_path: String = (
"res://public/games/age-of-dwarves/data/ai_personalities.json"
)
var gs: Dictionary = StateScript.build_mc_tree_state(ctrl, data_dir)
var personalities_json: String = FileAccess.get_file_as_string(personalities_path)
var gs: Dictionary = StateScript.build_mc_tree_state(ctrl, personalities_json)
var players_arr: Array = gs["players"] as Array
var p_dict: Dictionary = players_arr[0] as Dictionary

View file

@ -126,7 +126,7 @@ func test_gd_unit_actions_bridge_legal_actions_for_military() -> void:
pass_test("GdUnitActions not loaded in headless — skipping bridge test")
return
var bridge: RefCounted = ClassDB.instantiate("GdUnitActions") as RefCounted
var actions: Array[Dictionary] = bridge.legal_actions_for("military", "", true, false, false, false, false, false, false)
var actions: Array[Dictionary] = bridge.legal_actions_for("military", "", true, false, false, false, false, false, false, {})
assert_true(actions.size() >= 2, "military unit with movement gets multiple actions")
var kinds: Array[String] = []
for d: Dictionary in actions:
@ -140,7 +140,7 @@ func test_gd_unit_actions_bridge_founder_gets_found_city() -> void:
pass_test("GdUnitActions not loaded in headless — skipping bridge test")
return
var bridge: RefCounted = ClassDB.instantiate("GdUnitActions") as RefCounted
var actions: Array[Dictionary] = bridge.legal_actions_for("civilian", "founder", true, false, false, false, false, false, false)
var actions: Array[Dictionary] = bridge.legal_actions_for("civilian", "founder", true, false, false, false, false, false, false, {})
var kinds: Array[String] = []
for d: Dictionary in actions:
kinds.append(d.get("kind", ""))
@ -152,7 +152,7 @@ func test_gd_unit_actions_bridge_fortified_cannot_fortify_again() -> void:
pass_test("GdUnitActions not loaded in headless — skipping bridge test")
return
var bridge: RefCounted = ClassDB.instantiate("GdUnitActions") as RefCounted
var actions: Array[Dictionary] = bridge.legal_actions_for("military", "", false, true, false, false, false, false, false)
var actions: Array[Dictionary] = bridge.legal_actions_for("military", "", false, true, false, false, false, false, false, {})
for d: Dictionary in actions:
if d.get("kind", "") == "fortify":
assert_false(d.get("enabled", true), "fortify disabled when already fortified")
@ -164,7 +164,7 @@ func test_gd_unit_actions_bridge_sentrying_unit_shows_unsentry() -> void:
return
var bridge: RefCounted = ClassDB.instantiate("GdUnitActions") as RefCounted
# is_sentrying = true
var actions: Array[Dictionary] = bridge.legal_actions_for("melee", "", true, false, true, false, false, false, false)
var actions: Array[Dictionary] = bridge.legal_actions_for("melee", "", true, false, true, false, false, false, false, {})
var by_kind: Dictionary = {}
for d: Dictionary in actions:
by_kind[d.get("kind", "")] = d