Expose tactical marker hints

This commit is contained in:
2026-06-20 15:34:28 +09:00
parent f320124270
commit 7ff1e84d53
5 changed files with 169 additions and 1 deletions

View File

@@ -31,6 +31,7 @@ func _init() -> void:
_check_opening_battle_camp_context(failures)
_check_opening_battle_tactical_spacing(failures)
_check_opening_battle_log_location_labels(failures)
_check_opening_battle_marker_hints(failures)
_check_opening_battle_lure_line_ai_reaction(failures)
_check_opening_battle_post_battle_bridge(failures)
_check_sishui_gate_camp_context(failures)
@@ -837,6 +838,51 @@ func _check_opening_battle_log_location_labels(failures: Array[String]) -> void:
failures.append("battle movement logs should name battlefield zones: %s" % log_text)
func _check_opening_battle_marker_hints(failures: Array[String]) -> void:
var scene = BattleSceneScript.new()
if not scene.state.load_battle("res://data/scenarios/001_yellow_turbans.json"):
failures.append("could not load opening battle for marker hints")
scene.free()
return
var castle_cell := Vector2i(20, 0)
var castle_hint: String = scene.state.get_objective_cell_hint(castle_cell)
if not castle_hint.contains("조조") or not castle_hint.contains("성채"):
failures.append("castle objective should explain who must hold the gate: %s" % castle_hint)
var castle_hover_text := "\n".join(scene._hover_info_badge_lines(castle_cell))
if not castle_hover_text.contains("목표 성채 장악") or not castle_hover_text.contains("깃발"):
failures.append("castle hover should expose objective hint text: %s" % castle_hover_text)
var castle_minimap_text := "\n".join(scene._minimap_hover_badge_lines(castle_cell))
if not castle_minimap_text.contains("목표 성채 장악") or not castle_minimap_text.contains("동쪽 성채"):
failures.append("castle minimap hover should expose objective hint text: %s" % castle_minimap_text)
var castle_cell_detail := scene._format_cell_info_detail_text(castle_cell)
if not castle_cell_detail.contains("목표: 성채 장악") or not castle_cell_detail.contains("조조나 하후돈"):
failures.append("cell info should carry castle objective detail: %s" % castle_cell_detail)
var lure_cell := Vector2i(4, 6)
if scene.state.get_event_marker_kind(lure_cell) != "tactic":
failures.append("lure line should keep a tactic marker kind")
var lure_hint: String = scene.state.get_event_marker_hint(lure_cell)
if not lure_hint.contains("유인선") or not lure_hint.contains("끌어낼"):
failures.append("lure line should explain the tactical trigger: %s" % lure_hint)
var lure_hover_text := "\n".join(scene._hover_info_badge_lines(lure_cell))
if not lure_hover_text.contains("표식 유인선") or not lure_hover_text.contains("끌어낼"):
failures.append("lure hover should expose tactical marker hint: %s" % lure_hover_text)
var woods_cell := Vector2i(4, 2)
var woods_hint: String = scene.state.get_event_marker_hint(woods_cell)
if not woods_hint.contains("") or not woods_hint.contains("보급"):
failures.append("northern cache should explain its supply value: %s" % woods_hint)
var village_cell := Vector2i(6, 5)
var village_hint: String = scene.state.get_event_marker_hint(village_cell)
if not village_hint.contains("치료소") or not village_hint.contains("회복"):
failures.append("village supply should explain recovery and supply value: %s" % village_hint)
var village_detail := scene._format_cell_info_detail_text(village_cell)
if not village_detail.contains("마을 치료소") or not village_detail.contains("회복 거점"):
failures.append("village cell info should explain the recovery/supply marker: %s" % village_detail)
scene.free()
func _check_opening_battle_lure_line_ai_reaction(failures: Array[String]) -> void:
var state = BattleStateScript.new()
if not state.load_battle("res://data/scenarios/001_yellow_turbans.json"):