Carry marker hints into battle start notice

This commit is contained in:
2026-06-20 15:51:17 +09:00
parent 3e40a31d62
commit 497a306366
3 changed files with 57 additions and 10 deletions

View File

@@ -11344,9 +11344,10 @@ func _format_battle_start_marker_summary() -> String:
if label.is_empty():
continue
var kind := str(marker.get("kind", "event")).strip_edges().to_lower()
var hint := str(marker.get("hint", "")).strip_edges()
if not _battle_start_marker_is_tactical(label, kind):
continue
var text := _battle_start_marker_text(label, kind)
var text := _battle_start_marker_text(label, kind, hint)
if text.is_empty() or seen.has(text):
continue
seen[text] = true
@@ -11362,12 +11363,16 @@ func _battle_start_marker_is_tactical(label: String, kind: String) -> bool:
return label.contains("유인") or label.contains("보급") or label.contains("마을") or label.contains("")
func _battle_start_marker_text(label: String, kind: String) -> String:
func _battle_start_marker_text(label: String, kind: String, hint: String = "") -> String:
var normalized_label := label
if kind == "tactic" and not label.contains("유인"):
return "유인 %s" % label
if kind == "supply" and not label.contains("보급"):
return "보급 %s" % label
return label
normalized_label = "유인 %s" % label
elif kind == "supply" and not label.contains("보급"):
normalized_label = "보급 %s" % label
var summary := _briefing_marker_summary_from_hint(hint)
if summary.is_empty():
return normalized_label
return "%s-%s" % [normalized_label, summary]
func _show_command_notice(title: String, body: String) -> void:
@@ -11545,11 +11550,17 @@ func _command_notice_icon_entry_tooltip(entry: Dictionary, title: String, body:
"status":
detail = _first_notice_body_line(body, ["주의", "퇴각", "위험", ""])
"tactic":
detail = _first_notice_body_line(body, ["유인", "표식"])
detail = _battle_start_marker_tooltip_detail_for_key(key)
if detail.is_empty():
detail = _first_notice_body_line(body, ["유인", "표식"])
"supply":
detail = _first_notice_body_line(body, ["보급", "마을"])
detail = _battle_start_marker_tooltip_detail_for_key(key)
if detail.is_empty():
detail = _first_notice_body_line(body, ["보급", "마을"])
"recover":
detail = _first_notice_body_line(body, ["회복", "마을"])
detail = _battle_start_marker_tooltip_detail_for_key(key)
if detail.is_empty():
detail = _first_notice_body_line(body, ["회복", "마을"])
"gold":
detail = _first_notice_body_line(body, ["군자금"])
"threat", "forecast":
@@ -11563,6 +11574,37 @@ func _command_notice_icon_entry_tooltip(entry: Dictionary, title: String, body:
return "%s\n%s" % [label_text, _short_preview_text(detail, 110)]
func _battle_start_marker_tooltip_detail_for_key(key: String) -> String:
var parts: Array[String] = []
var seen := {}
for marker in state.get_event_markers():
var label := str(marker.get("label", "")).strip_edges()
var kind := str(marker.get("kind", "event")).strip_edges().to_lower()
var hint := str(marker.get("hint", "")).strip_edges()
if label.is_empty() or hint.is_empty():
continue
if not _battle_start_marker_matches_notice_key(label, kind, hint, key):
continue
var text := "%s: %s" % [label, hint]
if seen.has(text):
continue
seen[text] = true
parts.append(text)
return _join_strings(parts, "\n")
func _battle_start_marker_matches_notice_key(label: String, kind: String, hint: String, key: String) -> bool:
match key:
"tactic":
return kind == "tactic" or label.contains("유인") or hint.contains("유인") or hint.contains("끌어낼")
"supply":
return kind == "supply" or label.contains("보급") or label.contains("") or hint.contains("보급") or hint.contains("")
"recover":
return kind == "recover" or label.contains("마을") or hint.contains("회복") or hint.contains("치료소")
_:
return false
func _first_notice_body_line(body: String, keywords: Array[String]) -> String:
for line in body.split("\n", false):
var normalized_line := str(line).strip_edges()