diff --git a/scripts/scenes/battle_scene.gd b/scripts/scenes/battle_scene.gd index f56fe73..bb03d0b 100644 --- a/scripts/scenes/battle_scene.gd +++ b/scripts/scenes/battle_scene.gd @@ -9167,7 +9167,7 @@ func _attack_target_preview_badge(selected: Dictionary, target: Dictionary) -> D return _make_target_preview_badge("거리밖", "invalid") var hit_chance := int(preview.get("hit_chance", 100)) - var result_text := "퇴각" if bool(preview.get("would_defeat", false)) else "-%d" % int(preview.get("damage", 0)) + var result_text := _format_attack_result_badge_text(preview) var directional_text := _format_directional_badge_suffix(preview) var counter_text := _format_attack_counter_badge_suffix(preview) var badge := _make_target_preview_badge("%s%s %d%%%s" % [result_text, directional_text, hit_chance, counter_text], _attack_preview_badge_kind(preview)) @@ -9175,6 +9175,12 @@ func _attack_target_preview_badge(selected: Dictionary, target: Dictionary) -> D return badge +func _format_attack_result_badge_text(preview: Dictionary) -> String: + if bool(preview.get("would_defeat", false)): + return "퇴각" + return "피해%d" % int(preview.get("damage", 0)) + + func _format_directional_badge_suffix(preview: Dictionary) -> String: var bonus := int(preview.get("directional_bonus", 0)) if bonus <= 0: @@ -9244,12 +9250,11 @@ func _auto_attack_target_preview_badge_for_origin(selected: Dictionary, target: func _format_auto_attack_target_badge_text(preview: Dictionary) -> String: - var damage := int(preview.get("damage", 0)) var hit_chance := int(preview.get("hit_chance", 0)) - var result_text := "퇴각" if bool(preview.get("would_defeat", false)) else "-%d" % damage + var result_text := _format_attack_result_badge_text(preview) var directional_text := _format_directional_badge_suffix(preview) var counter_text := _format_auto_attack_counter_badge_suffix(preview) - return "이동 %s%s %d%%%s" % [result_text, directional_text, hit_chance, counter_text] + return "진격 %s%s %d%%%s" % [result_text, directional_text, hit_chance, counter_text] func _format_auto_attack_target_hint(preview: Dictionary) -> String: diff --git a/tools/smoke_directional_combat.gd b/tools/smoke_directional_combat.gd index 56bda4b..6cb9288 100644 --- a/tools/smoke_directional_combat.gd +++ b/tools/smoke_directional_combat.gd @@ -236,10 +236,12 @@ func _check_scene_directional_attack_badges(failures: Array[String]) -> void: scene._refresh_ranges() scene.hover_cell = Vector2i(5, 9) var auto_badge: Dictionary = scene._target_preview_badge() - if str(auto_badge.get("text", "")).contains("행공") or not str(auto_badge.get("tooltip", "")).contains("이동 후 공격"): + if str(auto_badge.get("text", "")).contains("행공") or str(auto_badge.get("text", "")).contains("이동 ") or not str(auto_badge.get("tooltip", "")).contains("이동 후 공격"): failures.append("auto-move attack hover badge should use a clear hint instead of jargon: %s" % str(auto_badge)) - if not str(auto_badge.get("text", "")).contains("이동"): - failures.append("auto-move attack hover badge should visibly show that movement is included: %s" % str(auto_badge)) + if not str(auto_badge.get("text", "")).contains("진격"): + failures.append("auto-move attack hover badge should visibly show advance intent: %s" % str(auto_badge)) + if not str(auto_badge.get("text", "")).contains("피해") and not str(auto_badge.get("text", "")).contains("퇴각"): + failures.append("auto-move attack hover badge should expose visible damage or retreat wording: %s" % str(auto_badge)) if not str(auto_badge.get("text", "")).contains("후+%d" % BattleStateScript.DIRECTIONAL_BACK_DAMAGE_BONUS): failures.append("auto-move attack hover badge should expose compact rear bonus: %s" % str(auto_badge)) if not str(auto_badge.get("tooltip", "")).contains("후방 공격 +%d 피해" % BattleStateScript.DIRECTIONAL_BACK_DAMAGE_BONUS): diff --git a/tools/smoke_post_move_action_flow.gd b/tools/smoke_post_move_action_flow.gd index 0a5fe5f..50d6c17 100644 --- a/tools/smoke_post_move_action_flow.gd +++ b/tools/smoke_post_move_action_flow.gd @@ -687,10 +687,12 @@ func _check_scene_enemy_click_auto_attack(failures: Array[String]) -> void: failures.append("selected unit should mark enemies reachable by move+attack: %s" % str(auto_markers)) scene.hover_cell = Vector2i(4, 3) var auto_badge := scene._target_preview_badge() - if str(auto_badge.get("text", "")).contains("행공") or not str(auto_badge.get("tooltip", "")).contains("이동 후 공격"): + if str(auto_badge.get("text", "")).contains("행공") or str(auto_badge.get("text", "")).contains("이동 ") or not str(auto_badge.get("tooltip", "")).contains("이동 후 공격"): failures.append("hovering a move+attack target should use metadata instead of jargon text: %s" % str(auto_badge)) - if not str(auto_badge.get("text", "")).contains("이동"): - failures.append("move+attack hover badge should visibly say that movement is included: %s" % str(auto_badge)) + if not str(auto_badge.get("text", "")).contains("진격"): + failures.append("move+attack hover badge should use clear advance wording: %s" % str(auto_badge)) + if not str(auto_badge.get("text", "")).contains("피해") and not str(auto_badge.get("text", "")).contains("퇴각"): + failures.append("move+attack hover badge should expose visible damage or retreat wording: %s" % str(auto_badge)) if not ["advance", "counter", "danger"].has(str(auto_badge.get("kind", ""))): failures.append("move+attack hover badge should use an attack-risk color kind: %s" % str(auto_badge)) if str(auto_badge.get("icon", "")).strip_edges().is_empty(): diff --git a/tools/smoke_visual_assets.gd b/tools/smoke_visual_assets.gd index 1ff554d..9fddf15 100644 --- a/tools/smoke_visual_assets.gd +++ b/tools/smoke_visual_assets.gd @@ -5401,9 +5401,12 @@ func _check_hover_intent_badges(failures: Array[String]) -> void: scene.hover_cell = Vector2i(1, 5) var attack_badge := scene._target_preview_badge() + var attack_badge_text := str(attack_badge.get("text", "")) if attack_badge.is_empty() or str(attack_badge.get("kind", "")) == "move" or str(attack_badge.get("text", "")) == "행군": failures.append("enemy hover should keep attack badge priority: %s" % str(attack_badge)) - if not str(attack_badge.get("text", "")).contains("반"): + if not attack_badge_text.contains("피해") and not attack_badge_text.contains("퇴각"): + failures.append("attack badge should expose readable damage or retreat wording: %s" % str(attack_badge)) + if not attack_badge_text.contains("반"): failures.append("adjacent attack badge should expose counterattack risk: %s" % str(attack_badge)) if str(attack_badge.get("kind", "")) != "counter" and str(attack_badge.get("kind", "")) != "danger": failures.append("counterable attack badge should use a counter danger color kind: %s" % str(attack_badge))