From 9ed6200fdb5f4f81ad1fa14b024feb1d9091ad8d Mon Sep 17 00:00:00 2001 From: Wickedness Date: Fri, 19 Jun 2026 10:48:30 +0900 Subject: [PATCH] Age battle command chrome --- scripts/scenes/battle_scene.gd | 122 ++++++++++++++++-------------- tools/smoke_objective_progress.gd | 4 +- tools/smoke_visual_assets.gd | 32 ++++++-- 3 files changed, 92 insertions(+), 66 deletions(-) diff --git a/scripts/scenes/battle_scene.gd b/scripts/scenes/battle_scene.gd index 166829f..a065e74 100644 --- a/scripts/scenes/battle_scene.gd +++ b/scripts/scenes/battle_scene.gd @@ -213,6 +213,7 @@ var status_label: Label var objective_label: Label var campaign_status_label: Label var mission_title_label: Label +var mission_detail_panel: PanelContainer var mission_detail_label: Label var objective_notice_panel: PanelContainer var objective_notice_label: Label @@ -1010,7 +1011,7 @@ func _create_hud() -> void: top_row.add_child(restart_button) new_campaign_button = Button.new() - new_campaign_button.text = "새 전기" + new_campaign_button.text = "새 전기 열기" new_campaign_button.pressed.connect(_on_new_campaign_pressed) top_row.add_child(new_campaign_button) @@ -1089,7 +1090,7 @@ func _create_hud() -> void: _apply_label_style(mission_title_label, UI_OLD_BRONZE) side_column.add_child(mission_title_label) - var mission_detail_panel := PanelContainer.new() + mission_detail_panel = PanelContainer.new() mission_detail_panel.custom_minimum_size = Vector2(420, 134) mission_detail_panel.size_flags_horizontal = Control.SIZE_EXPAND_FILL _apply_panel_style(mission_detail_panel, "bamboo_slips") @@ -1099,14 +1100,17 @@ func _create_hud() -> void: mission_detail_row.add_theme_constant_override("separation", 8) mission_detail_panel.add_child(mission_detail_row) - mission_detail_row.add_child(_make_ornament_bar(5, 112)) + mission_detail_row.add_child(_make_bamboo_gutter(12, 112)) + mission_detail_row.add_child(_make_edict_marker_stack(["令", "勝", "敗"], 112)) mission_detail_label = Label.new() mission_detail_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART - mission_detail_label.custom_minimum_size = Vector2(384, 112) + mission_detail_label.custom_minimum_size = Vector2(292, 112) mission_detail_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL _apply_label_style(mission_detail_label, UI_PARCHMENT_TEXT) mission_detail_row.add_child(mission_detail_label) + mission_detail_row.add_child(_make_edict_marker_stack(["功", "兆", "封"], 112)) + mission_detail_row.add_child(_make_bamboo_gutter(12, 112)) cell_info_label = Label.new() cell_info_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART @@ -1131,17 +1135,17 @@ func _create_hud() -> void: side_column.add_child(button_row) wait_button = Button.new() - wait_button.text = "대기" + wait_button.text = "대기령" wait_button.pressed.connect(_on_wait_pressed) button_row.add_child(wait_button) tactic_button = Button.new() - tactic_button.text = "책략" + tactic_button.text = "책략첩" tactic_button.pressed.connect(_on_tactic_pressed) button_row.add_child(tactic_button) item_button = Button.new() - item_button.text = "도구" + item_button.text = "보급첩" item_button.pressed.connect(_on_item_pressed) button_row.add_child(item_button) @@ -1151,13 +1155,13 @@ func _create_hud() -> void: button_row.add_child(equip_button) threat_button = Button.new() - threat_button.text = "적진" + threat_button.text = "적진도" threat_button.toggle_mode = true threat_button.pressed.connect(_on_threat_pressed) button_row.add_child(threat_button) end_turn_button = Button.new() - end_turn_button.text = "군령 종료" + end_turn_button.text = "군령 봉함" end_turn_button.pressed.connect(_on_end_turn_pressed) button_row.add_child(end_turn_button) @@ -1167,7 +1171,7 @@ func _create_hud() -> void: side_column.add_child(tactic_menu) var tactic_title := Label.new() - tactic_title.text = "책략" + tactic_title.text = "책략첩" _apply_label_style(tactic_title, UI_OLD_BRONZE, 14) tactic_menu.add_child(tactic_title) @@ -1181,7 +1185,7 @@ func _create_hud() -> void: side_column.add_child(item_menu) var item_title := Label.new() - item_title.text = "도구" + item_title.text = "보급첩" _apply_label_style(item_title, UI_OLD_BRONZE, 14) item_menu.add_child(item_title) @@ -1229,25 +1233,25 @@ func _create_hud() -> void: post_move_column.add_child(post_move_grid) post_move_attack_button = Button.new() - post_move_attack_button.text = "공격" + post_move_attack_button.text = "타격령" post_move_attack_button.tooltip_text = "이 자리에서 칠 적군을 지목합니다." post_move_attack_button.pressed.connect(_on_post_move_attack_pressed) post_move_grid.add_child(post_move_attack_button) post_move_tactic_button = Button.new() - post_move_tactic_button.text = "책략" + post_move_tactic_button.text = "책략첩" post_move_tactic_button.tooltip_text = "군령에 올릴 책략 죽간을 고릅니다." post_move_tactic_button.pressed.connect(_on_post_move_tactic_pressed) post_move_grid.add_child(post_move_tactic_button) post_move_item_button = Button.new() - post_move_item_button.text = "도구" + post_move_item_button.text = "보급첩" post_move_item_button.tooltip_text = "군령에 올릴 보급 물자를 고릅니다." post_move_item_button.pressed.connect(_on_post_move_item_pressed) post_move_grid.add_child(post_move_item_button) post_move_wait_button = Button.new() - post_move_wait_button.text = "대기" + post_move_wait_button.text = "대기령" post_move_wait_button.tooltip_text = "행군을 확정하고 군령을 봉인합니다." post_move_wait_button.pressed.connect(_on_post_move_wait_pressed) post_move_grid.add_child(post_move_wait_button) @@ -1566,12 +1570,12 @@ func _create_hud() -> void: shop_menu.add_child(shop_mode_row) shop_buy_button = Button.new() - shop_buy_button.text = "매입" + shop_buy_button.text = "사들이기" shop_buy_button.pressed.connect(_on_shop_buy_mode_pressed) shop_mode_row.add_child(shop_buy_button) shop_sell_button = Button.new() - shop_sell_button.text = "매각" + shop_sell_button.text = "내다팔기" shop_sell_button.pressed.connect(_on_shop_sell_mode_pressed) shop_mode_row.add_child(shop_sell_button) @@ -1775,14 +1779,16 @@ func _create_hud() -> void: dialogue_text_panel.add_child(dialogue_text_row) dialogue_text_row.add_child(_make_bamboo_gutter(18, DIALOGUE_TEXT_SIZE.y - 20)) + dialogue_text_row.add_child(_make_edict_marker_stack(["言", "問", "答"], DIALOGUE_TEXT_SIZE.y - 20)) dialogue_text_label = Label.new() dialogue_text_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART - dialogue_text_label.custom_minimum_size = Vector2(DIALOGUE_TEXT_SIZE.x - 88, DIALOGUE_TEXT_SIZE.y - 20) + dialogue_text_label.custom_minimum_size = Vector2(DIALOGUE_TEXT_SIZE.x - 164, DIALOGUE_TEXT_SIZE.y - 20) dialogue_text_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL dialogue_text_label.size_flags_vertical = Control.SIZE_EXPAND_FILL _apply_label_style(dialogue_text_label, UI_AGED_INK, 17) dialogue_text_row.add_child(dialogue_text_label) + dialogue_text_row.add_child(_make_edict_marker_stack(["錄", "軍", "印"], DIALOGUE_TEXT_SIZE.y - 20)) dialogue_text_row.add_child(_make_bamboo_gutter(18, DIALOGUE_TEXT_SIZE.y - 20)) dialogue_column.add_child(_make_scroll_rod(DIALOGUE_TEXT_SIZE.x, 3)) @@ -1863,7 +1869,7 @@ func _create_hud() -> void: result_column.add_child(result_restart_button) next_battle_button = Button.new() - next_battle_button.text = "다음 전장으로" + next_battle_button.text = "다음 전장도" next_battle_button.pressed.connect(_on_next_battle_pressed) result_column.add_child(next_battle_button) @@ -3800,10 +3806,10 @@ func _format_objective_hud_text() -> String: var lines := [] var victory := String(state.objectives.get("victory", "적군을 모두 격파하라.")) if not victory.is_empty(): - lines.append("勝令|%s" % victory) + lines.append("勝令|朱批 %s" % victory) var defeat := String(state.objectives.get("defeat", "")) if not defeat.is_empty(): - lines.append("敗兆|%s" % defeat) + lines.append("敗兆|墨戒 %s" % defeat) if lines.is_empty(): return "勝令" return _join_strings(lines, "\n") @@ -4002,21 +4008,21 @@ func _format_mission_panel_text() -> String: var victory := str(state.objectives.get("victory", "")) if not victory.is_empty(): lines.append("勝令") - lines.append(" %s" % victory) + lines.append(" 令牌|%s" % victory) var defeat := str(state.objectives.get("defeat", "")) if not defeat.is_empty(): lines.append("敗兆") - lines.append(" %s" % defeat) + lines.append(" 戒牌|%s" % defeat) var progress_lines := state.get_objective_progress_lines(false, false) if not progress_lines.is_empty(): lines.append("戰功 죽간") for progress_line in progress_lines: - lines.append(" %s" % progress_line) + lines.append(" 功簿|%s" % progress_line) var risk_lines := state.get_defeat_progress_lines() if not risk_lines.is_empty(): lines.append("凶兆 징후") for risk_line in risk_lines: - lines.append(" %s" % risk_line) + lines.append(" 凶簡|%s" % risk_line) if lines.is_empty(): return "아직 봉인된 군령이 없습니다." return _join_strings(lines, "\n") @@ -4491,9 +4497,9 @@ func _format_hanja_number(value: int) -> String: func _on_objective_updated(victory: String, defeat: String) -> void: var notice_lines := ["新詔 軍令 봉인"] if not victory.is_empty(): - notice_lines.append("勝令|%s" % victory) + notice_lines.append("勝令|朱批 %s" % victory) if not defeat.is_empty(): - notice_lines.append("敗兆|%s" % defeat) + notice_lines.append("敗兆|墨戒 %s" % defeat) if objective_notice_label != null: objective_notice_label.text = "\n".join(notice_lines) if objective_notice_panel != null: @@ -5252,27 +5258,27 @@ func _format_briefing_objectives() -> String: var text := "" var victory := str(state.objectives.get("victory", "")) if not victory.is_empty(): - text = "受命 勝令\n %s" % victory + text = "受命 勝令\n 朱批|%s" % victory var defeat := str(state.objectives.get("defeat", "")) if not defeat.is_empty(): if not text.is_empty(): text += "\n" - text += "戒懼 敗兆\n %s" % defeat + text += "戒懼 敗兆\n 墨戒|%s" % defeat var progress_lines := state.get_objective_progress_lines(false, false) if not progress_lines.is_empty(): if not text.is_empty(): text += "\n" - text += "驗功 戰功 죽간\n %s" % _join_strings(progress_lines, " · ") + text += "驗功 戰功 죽간\n 功簿|%s" % _join_strings(progress_lines, " · ") var risk_lines := state.get_defeat_progress_lines() if not risk_lines.is_empty(): if not text.is_empty(): text += "\n" - text += "不祥 凶兆 징후\n %s" % _join_strings(risk_lines, " · ") + text += "不祥 凶兆 징후\n 凶簡|%s" % _join_strings(risk_lines, " · ") var rewards_text := _format_briefing_rewards() if not rewards_text.is_empty(): if not text.is_empty(): text += "\n" - text += "封賞 戰利 봉인\n %s" % rewards_text + text += "封賞 戰利 봉인\n 封賞|%s" % rewards_text return text @@ -7933,7 +7939,7 @@ func _set_action_button_state(button: Button, label: String, disabled: bool, too func _set_action_button_blocked(button: Button, base_label: String, reason_label: String, tooltip: String) -> void: - _set_action_button_state(button, "%s - %s" % [base_label, reason_label], true, tooltip) + _set_action_button_state(button, "%s|%s" % [base_label, reason_label], true, tooltip) func _action_phase_block_reason() -> Dictionary: @@ -7969,16 +7975,16 @@ func _update_wait_button(selected: Dictionary) -> void: if wait_button == null: return if selected.is_empty(): - _set_action_button_blocked(wait_button, "대기", "부대 미지정", "명령할 부대를 먼저 고릅니다.") + _set_action_button_blocked(wait_button, "대기령", "부대 미지정", "명령할 부대를 먼저 고릅니다.") return if bool(selected.get("acted", false)): - _set_action_button_blocked(wait_button, "대기", "봉인됨", "이 부대는 이미 행동했습니다.") + _set_action_button_blocked(wait_button, "대기령", "봉인됨", "이 부대는 이미 행동했습니다.") return var phase_block := _action_phase_block_reason() if not phase_block.is_empty(): - _set_action_button_blocked(wait_button, "대기", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", ""))) + _set_action_button_blocked(wait_button, "대기령", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", ""))) return - _set_action_button_state(wait_button, "대기", false, "이 부대의 군령을 봉인합니다.") + _set_action_button_state(wait_button, "대기령", false, "이 부대의 군령을 봉인합니다.") func _update_end_turn_button() -> void: @@ -7986,9 +7992,9 @@ func _update_end_turn_button() -> void: return var phase_block := _action_phase_block_reason() if not phase_block.is_empty(): - _set_action_button_blocked(end_turn_button, "군령 종료", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", ""))) + _set_action_button_blocked(end_turn_button, "군령 봉함", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", ""))) return - _set_action_button_state(end_turn_button, "군령 종료", false, "아군 군령을 거두고 적군의 차례로 넘깁니다.") + _set_action_button_state(end_turn_button, "군령 봉함", false, "아군 군령을 거두고 적군의 차례로 넘깁니다.") func _update_threat_button() -> void: @@ -7996,46 +8002,46 @@ func _update_threat_button() -> void: return threat_button.button_pressed = show_threat_overlay if campaign_complete_screen: - _set_action_button_blocked(threat_button, "적진", "전기 봉인", "전기가 완결되었습니다.") + _set_action_button_blocked(threat_button, "적진도", "전기 봉인", "전기가 완결되었습니다.") return if not battle_started: - _set_action_button_blocked(threat_button, "적진", "전장도 미개봉", "전장도를 펼친 뒤 적진을 살필 수 있습니다.") + _set_action_button_blocked(threat_button, "적진도", "전장도 미개봉", "전장도를 펼친 뒤 적진을 살필 수 있습니다.") return if state.battle_status != BattleState.STATUS_ACTIVE: - _set_action_button_blocked(threat_button, "적진", "전장 종결", "전투 중에만 적진을 살필 수 있습니다.") + _set_action_button_blocked(threat_button, "적진도", "전장 종결", "전투 중에만 적진을 살필 수 있습니다.") return - _set_action_button_state(threat_button, "적진", false, "적의 무기와 책략 사거리를 살핍니다.") + _set_action_button_state(threat_button, "적진도", false, "적의 무기와 책략 사거리를 살핍니다.") func _update_tactic_button(selected: Dictionary) -> void: if tactic_button == null: return if selected.is_empty(): - _set_action_button_blocked(tactic_button, "책략", "부대 미지정", "책략을 쓸 부대를 먼저 고릅니다.") + _set_action_button_blocked(tactic_button, "책략첩", "부대 미지정", "책략을 쓸 부대를 먼저 고릅니다.") return var skill_ids := state.get_skill_ids(selected["id"]) if skill_ids.is_empty(): - _set_action_button_blocked(tactic_button, "책략", "없음", "이 부대는 사용할 책략이 없습니다.") + _set_action_button_blocked(tactic_button, "책략첩", "없음", "이 부대는 사용할 책략이 없습니다.") return if state.is_unit_skill_sealed(selected["id"]): - _set_action_button_blocked(tactic_button, "책략", "봉인됨", "이 부대는 책략을 쓸 수 없습니다.") + _set_action_button_blocked(tactic_button, "책략첩", "봉인됨", "이 부대는 책략을 쓸 수 없습니다.") return if bool(selected.get("acted", false)): - _set_action_button_blocked(tactic_button, "책략", "봉인됨", "이 부대는 이미 행동했습니다.") + _set_action_button_blocked(tactic_button, "책략첩", "봉인됨", "이 부대는 이미 행동했습니다.") return var phase_block := _action_phase_block_reason() if not phase_block.is_empty(): - _set_action_button_blocked(tactic_button, "책략", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", ""))) + _set_action_button_blocked(tactic_button, "책략첩", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", ""))) return if not selected_skill_id.is_empty(): var skill := state.get_skill_def(selected_skill_id) - _set_action_button_state(tactic_button, "책략: %s" % str(skill.get("name", selected_skill_id)), false, "전장에 책략 대상을 지목합니다.") + _set_action_button_state(tactic_button, "책략첩|%s" % str(skill.get("name", selected_skill_id)), false, "전장에 책략 대상을 지목합니다.") elif tactic_menu != null and tactic_menu.visible: - _set_action_button_state(tactic_button, "책략 닫기", false, "책략 목록을 닫습니다.") + _set_action_button_state(tactic_button, "책략첩 봉함", false, "책략 목록을 닫습니다.") else: - _set_action_button_state(tactic_button, "책략", false, "책략 목록을 펼칩니다. %d개." % skill_ids.size()) + _set_action_button_state(tactic_button, "책략첩", false, "책략 목록을 펼칩니다. %d개." % skill_ids.size()) func _show_tactic_menu(selected: Dictionary) -> void: @@ -8247,28 +8253,28 @@ func _update_item_button(selected: Dictionary) -> void: if item_button == null: return if selected.is_empty(): - _set_action_button_blocked(item_button, "도구", "부대 미지정", "도구를 쓸 부대를 먼저 고릅니다.") + _set_action_button_blocked(item_button, "보급첩", "부대 미지정", "도구를 쓸 부대를 먼저 고릅니다.") return if bool(selected.get("acted", false)): - _set_action_button_blocked(item_button, "도구", "봉인됨", "이 부대는 이미 행동했습니다.") + _set_action_button_blocked(item_button, "보급첩", "봉인됨", "이 부대는 이미 행동했습니다.") return var phase_block := _action_phase_block_reason() if not phase_block.is_empty(): - _set_action_button_blocked(item_button, "도구", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", ""))) + _set_action_button_blocked(item_button, "보급첩", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", ""))) return var item_ids := state.get_usable_item_ids() if item_ids.is_empty(): - _set_action_button_blocked(item_button, "도구", "비어 있음", "사용할 도구가 없습니다.") + _set_action_button_blocked(item_button, "보급첩", "비어 있음", "사용할 도구가 없습니다.") return if not selected_item_id.is_empty(): var item := state.get_item_def(selected_item_id) - _set_action_button_state(item_button, "도구: %s" % str(item.get("name", selected_item_id)), false, "전장에서 도구 대상을 지목합니다.") + _set_action_button_state(item_button, "보급첩|%s" % str(item.get("name", selected_item_id)), false, "전장에서 도구 대상을 지목합니다.") elif item_menu != null and item_menu.visible: - _set_action_button_state(item_button, "도구 닫기", false, "도구 목록을 닫습니다.") + _set_action_button_state(item_button, "보급첩 봉함", false, "도구 목록을 닫습니다.") else: - _set_action_button_state(item_button, "도구", false, "도구 목록을 펼칩니다. %d종." % item_ids.size()) + _set_action_button_state(item_button, "보급첩", false, "도구 목록을 펼칩니다. %d종." % item_ids.size()) func _show_item_menu(selected: Dictionary) -> void: diff --git a/tools/smoke_objective_progress.gd b/tools/smoke_objective_progress.gd index 88fb1ee..e0d946b 100644 --- a/tools/smoke_objective_progress.gd +++ b/tools/smoke_objective_progress.gd @@ -211,12 +211,12 @@ func _check_objective_notice(failures: Array[String]) -> void: scene._on_objective_updated("Defeat the new vanguard.", "") if scene.objective_notice_panel == null or not scene.objective_notice_panel.visible: failures.append("objective notice panel should be visible after objective update") - elif not scene.objective_notice_label.text.contains("新詔 軍令 봉인") or not scene.objective_notice_label.text.contains("勝令|Defeat the new vanguard."): + elif not scene.objective_notice_label.text.contains("新詔 軍令 봉인") or not scene.objective_notice_label.text.contains("勝令|朱批 Defeat the new vanguard."): failures.append("objective notice label should use sealed edict wording: %s" % scene.objective_notice_label.text) scene._on_objective_updated("", "Supply train is lost.") if scene.objective_notice_panel == null or not scene.objective_notice_panel.visible: failures.append("objective notice panel should be visible after defeat update") - elif not scene.objective_notice_label.text.contains("新詔 軍令 봉인") or not scene.objective_notice_label.text.contains("敗兆|Supply train is lost."): + elif not scene.objective_notice_label.text.contains("新詔 軍令 봉인") or not scene.objective_notice_label.text.contains("敗兆|墨戒 Supply train is lost."): failures.append("objective notice label should use omen wording: %s" % scene.objective_notice_label.text) if scene._format_log_entry_text("Objective updated: Defeat the new vanguard.") != "軍令 개정: Defeat the new vanguard.": failures.append("objective log display should use edict wording") diff --git a/tools/smoke_visual_assets.gd b/tools/smoke_visual_assets.gd index f60f70c..ef805ca 100644 --- a/tools/smoke_visual_assets.gd +++ b/tools/smoke_visual_assets.gd @@ -2871,8 +2871,10 @@ func _check_ancient_ui_theme(failures: Array[String]) -> void: var hud_objective := scene._format_objective_hud_text() if not hud_objective.contains("勝令|") or not hud_objective.contains("敗兆|"): failures.append("HUD objective should read as paired edict and omen text: %s" % hud_objective) + if not hud_objective.contains("朱批") or not hud_objective.contains("墨戒"): + failures.append("HUD objective should use brush annotation wording: %s" % hud_objective) var mission_text := scene._format_mission_panel_text() - for expected in ["勝令", "敗兆", "戰功 죽간", "凶兆 징후"]: + for expected in ["勝令", "敗兆", "戰功 죽간", "凶兆 징후", "令牌|", "戒牌|", "功簿|", "凶簡|"]: if not mission_text.contains(expected): failures.append("mission panel should use old campaign wording `%s`: %s" % [expected, mission_text]) _check_panel_style_fill(failures, scene.briefing_panel, "briefing panel", Color(0.42, 0.27, 0.10, 0.997)) @@ -2891,7 +2893,10 @@ func _check_ancient_ui_theme(failures: Array[String]) -> void: _check_seal_ribbon(failures, scene.result_seal_ribbon, "result seal ribbon") _check_bamboo_gutter_row(failures, scene.briefing_objective_panel, "briefing objective bamboo gutters") _check_bamboo_gutter_row(failures, scene.dialogue_text_panel, "dialogue scroll bamboo gutters") + _check_bamboo_gutter_row(failures, scene.mission_detail_panel, "mission detail bamboo gutters") _check_edict_marker_stack(failures, scene.briefing_objective_panel, "briefing objective edict markers") + _check_edict_marker_stack(failures, scene.dialogue_text_panel, "dialogue scroll edict markers") + _check_edict_marker_stack(failures, scene.mission_detail_panel, "mission detail edict markers") _check_hanging_tassel(failures, scene.dialogue_left_tassel, "dialogue left tassel") _check_hanging_tassel(failures, scene.dialogue_right_tassel, "dialogue right tassel") _check_dialogue_column_budget(failures, scene) @@ -2945,8 +2950,20 @@ func _check_ancient_ui_theme(failures: Array[String]) -> void: failures.append("briefing talk button should use war council wording") if scene.formation_button == null or scene.formation_button.text != "진형 배치": failures.append("briefing formation button should use battle array wording") + if scene.shop_buy_button == null or scene.shop_buy_button.text != "사들이기": + failures.append("briefing shop buy button should avoid modern purchase wording") + if scene.shop_sell_button == null or scene.shop_sell_button.text != "내다팔기": + failures.append("briefing shop sell button should avoid modern sale wording") if scene.post_move_title_label == null or scene.post_move_title_label.text != "군령 선택": failures.append("post-move command title should use order wording") + if scene.post_move_attack_button == null or scene.post_move_attack_button.text != "타격령": + failures.append("post-move attack button should use old order wording") + if scene.post_move_tactic_button == null or scene.post_move_tactic_button.text != "책략첩": + failures.append("post-move tactic button should use old slip wording") + if scene.post_move_item_button == null or scene.post_move_item_button.text != "보급첩": + failures.append("post-move item button should use old supply-slip wording") + if scene.post_move_wait_button == null or scene.post_move_wait_button.text != "대기령": + failures.append("post-move wait button should use old order wording") if scene.post_move_cancel_button == null or scene.post_move_cancel_button.text != "발걸음 거두기": failures.append("post-move cancel button should use recall step wording") if scene.post_move_picker_back_button == null or scene.post_move_picker_back_button.text != "죽간 거두기": @@ -2955,6 +2972,9 @@ func _check_ancient_ui_theme(failures: Array[String]) -> void: failures.append("targeting hint title should use mark foe wording") if scene.targeting_hint_back_button == null or scene.targeting_hint_back_button.text != "죽간 거두기": failures.append("targeting hint back button should use bamboo-slip wording") + scene._on_objective_updated("동문에 조서를 꽂아라.", "조조가 퇴각하면 패전이다.") + if scene.objective_notice_label == null or not scene.objective_notice_label.text.contains("朱批") or not scene.objective_notice_label.text.contains("墨戒"): + failures.append("objective update notice should use brush annotation wording") scene._update_briefing_camp_overview(scene.state.get_briefing(), false) if scene.briefing_camp_overview_fallback_label == null or scene.briefing_camp_overview_fallback_label.text != "비단 전장도": failures.append("briefing map fallback should read as an old campaign map") @@ -3137,7 +3157,7 @@ func _check_action_button_disabled_reasons(failures: Array[String]) -> void: "remaining_phases": 2 }] scene._update_tactic_button(cao_cao) - if scene.tactic_button.text != "책략 - 봉인됨" or not scene.tactic_button.tooltip_text.contains("책략"): + if scene.tactic_button.text != "책략첩|봉인됨" or not scene.tactic_button.tooltip_text.contains("책략"): failures.append("sealed unit should explain disabled tactic button: %s | %s" % [scene.tactic_button.text, scene.tactic_button.tooltip_text]) cao_cao["status_effects"] = [] @@ -3158,24 +3178,24 @@ func _check_action_button_disabled_reasons(failures: Array[String]) -> void: cao_cao["acted"] = false cao_cao["moved"] = true scene._update_equip_button(cao_cao) - if scene.equip_button.text != "병장 - 행군 후" or not scene.equip_button.tooltip_text.contains("행군 전"): + if scene.equip_button.text != "병장|행군 후" or not scene.equip_button.tooltip_text.contains("행군 전"): failures.append("moved unit should explain disabled equip button: %s | %s" % [scene.equip_button.text, scene.equip_button.tooltip_text]) cao_cao["moved"] = false scene.state.set_inventory_snapshot({}) scene._update_item_button(cao_cao) - if scene.item_button.text != "도구 - 비어 있음" or not scene.item_button.tooltip_text.contains("도구"): + if scene.item_button.text != "보급첩|비어 있음" or not scene.item_button.tooltip_text.contains("도구"): failures.append("empty inventory should explain disabled item button: %s | %s" % [scene.item_button.text, scene.item_button.tooltip_text]) scene.state.current_team = BattleState.TEAM_ENEMY scene._update_end_turn_button() - if scene.end_turn_button.text != "군령 종료 - 적군 차례" or not scene.end_turn_button.tooltip_text.contains("아군 군령"): + if scene.end_turn_button.text != "군령 봉함|적군 차례" or not scene.end_turn_button.tooltip_text.contains("아군 군령"): failures.append("enemy phase should explain disabled end turn button: %s | %s" % [scene.end_turn_button.text, scene.end_turn_button.tooltip_text]) scene.state.current_team = BattleState.TEAM_PLAYER scene.battle_started = false scene._update_threat_button() - if scene.threat_button.text != "적진 - 전장도 미개봉" or not scene.threat_button.tooltip_text.contains("전장도"): + if scene.threat_button.text != "적진도|전장도 미개봉" or not scene.threat_button.tooltip_text.contains("전장도"): failures.append("inactive battle should explain disabled threat button: %s | %s" % [scene.threat_button.text, scene.threat_button.tooltip_text]) _free_action_button_test_scene(scene)