Localize Sishui gate and battle log tone

This commit is contained in:
2026-06-19 06:06:14 +09:00
parent 30ac2479c4
commit 0b599b39be
12 changed files with 314 additions and 190 deletions

View File

@@ -186,12 +186,12 @@ func _check_unequip_ui_entries(failures: Array[String]) -> void:
var selected: Dictionary = scene.state.get_unit("cao_cao")
scene._rebuild_equip_menu(selected)
if not _container_has_button_text(scene.equip_list, "Unequip Weapon:"):
if not _container_has_button_text(scene.equip_list, "병장 해제:"):
failures.append("battle equipment menu should include an Unequip Weapon button")
scene.armory_unit_id = "cao_cao"
scene._rebuild_armory_menu()
if not _container_has_button_text(scene.armory_list, "Unequip Weapon:"):
if not _container_has_button_text(scene.armory_list, "병장 해제:"):
failures.append("pre-battle Armory should include an Unequip Weapon button")
scene.free()

View File

@@ -48,13 +48,13 @@ func _check_wuchao_depot_pickup(failures: Array[String]) -> void:
failures.append("Wuchao depot should grant Wine x1: before %s after %s" % [str(before_inventory), str(after_inventory)])
if not logs.has("Usable Wuchao stores are seized before the granaries burn."):
failures.append("Wuchao depot pickup log missing")
if not logs.has("Received Bean x2."):
if not logs.has("전리품: 콩 x2."):
failures.append("Bean pickup receipt log missing")
if not logs.has("Received Wine."):
if not logs.has("전리품: 술."):
failures.append("Wine pickup receipt log missing")
if not feedback.has("cao_cao_ch13|+Bean|item"):
if not feedback.has("cao_cao_ch13|+|item"):
failures.append("Bean pickup feedback missing")
if not feedback.has("cao_cao_ch13|+Wine|item"):
if not feedback.has("cao_cao_ch13|+|item"):
failures.append("Wine pickup feedback missing")
if not state.fired_event_ids.has("wuchao_depot_burned"):
failures.append("Wuchao depot event should be marked fired")

View File

@@ -51,8 +51,8 @@ func _check_single_withdraw(state, failures: Array[String]) -> void:
failures.append("single withdraw unit should no longer occupy its map cell")
if state.get_living_units("enemy").size() != before_living - 1:
failures.append("single withdraw should remove one living enemy from battle counts")
_check_log_contains(failures, logs, "Smoke Raider withdraws from the battlefield.")
_check_feedback_contains(failures, feedback, "withdraw_smoke_enemy", "WITHDRAW", "fade")
_check_log_contains(failures, logs, "Smoke Raider 전장을 물러났다.")
_check_feedback_contains(failures, feedback, "withdraw_smoke_enemy", "퇴각", "fade")
func _check_multi_withdraw(state, failures: Array[String]) -> void:

View File

@@ -35,7 +35,7 @@ func _check_panacea_cleanses_debuffs(failures: Array[String]) -> void:
var preview: Dictionary = state.get_item_preview("cao_cao", "panacea", cao_cao["pos"])
var cure_names: Array = preview.get("cure_statuses", [])
for expected in ["Poison", "Seal", "ATK down", "MOVE down"]:
for expected in ["", "봉인", "무력 저하", "행군 저하"]:
if not cure_names.has(expected):
failures.append("Panacea preview should include %s in %s" % [expected, str(cure_names)])
@@ -58,15 +58,15 @@ func _check_panacea_cleanses_debuffs(failures: Array[String]) -> void:
if int(state.get_inventory_snapshot().get("panacea", 0)) != 0:
failures.append("Panacea should be consumed after cleansing")
var summary := state.get_status_effect_summary("cao_cao")
if not summary.contains("DEF +4"):
if not summary.contains("방비 +4"):
failures.append("Panacea should keep positive buffs: %s" % summary)
for removed_text in ["ATK -3", "MOVE -1", "Poison", "Seal"]:
for removed_text in ["무력 -3", "행군 -1", "", "봉인"]:
if summary.contains(removed_text):
failures.append("Panacea should remove %s from summary: %s" % [removed_text, summary])
_check_log_contains(failures, logs, "Cao Cao is cured of Poison.")
_check_log_contains(failures, logs, "Cao Cao is cured of Seal.")
_check_log_contains(failures, logs, "Cao Cao is cleansed of ATK down, MOVE down.")
if not feedback.has("cao_cao|CLEANSE|support"):
_check_log_contains(failures, logs, "Cao Cao의 독 해소.")
_check_log_contains(failures, logs, "Cao Cao의 봉인 해소.")
_check_log_contains(failures, logs, "Cao Cao의 약화 해소: 무력 저하, 행군 저하.")
if not feedback.has("cao_cao|정화|support"):
failures.append("Panacea cleanse feedback missing: %s" % str(feedback))
@@ -102,7 +102,7 @@ func _check_panacea_menu_text(failures: Array[String]) -> void:
scene.free()
return
var text := scene._format_item_effect_text(scene.state.get_item_def("panacea"))
if not text.contains("Cleanse debuffs"):
if not text.contains("약화 해소"):
failures.append("Panacea menu text should mention debuff cleanse: %s" % text)
scene.free()

View File

@@ -422,7 +422,7 @@ func _check_scene_post_move_item_picker_flow(failures: Array[String]) -> void:
if item_markers.size() != 1 or item_markers[0].get("cell", Vector2i.ZERO) != Vector2i(2, 4):
failures.append("item target markers should include only the Bean target: %s" % str(item_markers))
else:
if str(item_markers[0].get("text", "")) != "+20 HP":
if str(item_markers[0].get("text", "")) != "+20 병력":
failures.append("item target marker should preview healing: %s" % str(item_markers[0]))
if str(item_markers[0].get("kind", "")) != "heal":
failures.append("item target marker should use heal color: %s" % str(item_markers[0]))

View File

@@ -30,7 +30,7 @@ func _init() -> void:
{"type": "level_up", "name": "Cao Cao", "to_level": 2}
],
"next_scenario_id": "002_sishui_gate",
"next_scenario_title": "Sishui Gate",
"next_scenario_title": "사수관 선봉전",
"choice_applied": true,
"choice_label": ""
}
@@ -40,9 +40,9 @@ func _init() -> void:
_check_contains(failures, "item reward", result_text, "콩 x2")
_check_contains(failures, "roster section", result_text, "합류: 전위")
_check_contains(failures, "growth section", result_text, "Cao Cao Lv.2")
_check_contains(failures, "campaign section", result_text, "다음 행군: Sishui Gate")
_check_contains(failures, "campaign section", result_text, "다음 행군: 사수관 선봉전")
_check_contains(failures, "next camp section", result_text, "다음 군막")
_check_contains(failures, "next camp location", result_text, "Sishui Gate, 190 CE")
_check_contains(failures, "next camp location", result_text, "사수관, 초평 원년")
_check_contains(failures, "next camp talk", result_text, "군막 회의 · 3건")
_check_contains(failures, "next camp shop", result_text, "군상 물품 · 6종")
_check_contains(failures, "next camp deploy", result_text, "출진 명부 · 2/3")
@@ -58,7 +58,7 @@ func _init() -> void:
"joined_officers": [],
"left_officers": [],
"progression_events": [],
"next_scenario_title": "Sishui Gate",
"next_scenario_title": "사수관 선봉전",
"choice_applied": true,
"choice_label": ""
}

View File

@@ -45,9 +45,9 @@ func _check_status_summary_duration_text(failures: Array[String]) -> void:
}
]
var summary: String = state.get_status_effect_summary("cao_cao")
_check_contains(failures, "stat duration", summary, "ATK +3 (2 phases)")
_check_contains(failures, "poison duration", summary, "Poison -4 HP (1 phase)")
_check_contains(failures, "seal duration", summary, "Seal no tactics (3 phases)")
_check_contains(failures, "stat duration", summary, "무력 +3 (2)")
_check_contains(failures, "poison duration", summary, " -4 병력 (1)")
_check_contains(failures, "seal duration", summary, "봉인 책략 봉인 (3회)")
func _check_hud_reuses_status_summary(failures: Array[String]) -> void:
@@ -66,8 +66,8 @@ func _check_hud_reuses_status_summary(failures: Array[String]) -> void:
scene.state.selected_unit_id = "cao_cao"
scene.hover_cell = Vector2i(1, 3)
scene._update_hud()
_check_contains(failures, "selected HUD status", scene.selected_label.text, "상태: DEF -2 (2 phases)")
_check_contains(failures, "hover tile status", scene.cell_info_label.text, "상태: DEF -2 (2 phases)")
_check_contains(failures, "selected HUD status", scene.selected_label.text, "상태: 방비 -2 (2)")
_check_contains(failures, "hover tile status", scene.cell_info_label.text, "상태: 방비 -2 (2)")
scene.free()

View File

@@ -133,7 +133,7 @@ func _check_battle_visual_data(failures: Array[String]) -> void:
_check_camp_conversation(failures, gate_conversations[2], "sishui_quartermaster_antidote", "topic", "")
_check_camp_conversation_effect(failures, gate_conversations[2], "antidote", 1)
var gate_merchant := gate_state.get_shop_merchant()
if str(gate_merchant.get("name", "")) != "Coalition Merchant":
if str(gate_merchant.get("name", "")) != "연합 상인":
failures.append("002 shop should expose coalition merchant name")
if (gate_merchant.get("lines", []) as Array).size() < 2:
failures.append("002 shop should expose merchant flavor lines")