Carry marker hints into battle start notice
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user