Show hostile tactic threat hints

This commit is contained in:
2026-06-18 11:43:44 +09:00
parent cecdb05a4a
commit ca51680b1c
6 changed files with 204 additions and 6 deletions

View File

@@ -1496,6 +1496,9 @@ func _update_cell_info() -> void:
var physical_threats := state.get_physical_threat_previews(cell, BattleState.TEAM_ENEMY)
if not physical_threats.is_empty():
text += "\nPhysical threat: %s" % _format_physical_threat_preview_text(physical_threats, 3)
var skill_threats := state.get_skill_threat_previews(cell, BattleState.TEAM_ENEMY)
if not skill_threats.is_empty():
text += "\nSkill threat: %s" % _format_skill_threat_preview_text(skill_threats, 3)
cell_info_label.text = text
@@ -1524,6 +1527,44 @@ func _format_physical_threat_preview_text(previews: Array[Dictionary], limit: in
return _join_strings(parts, "; ")
func _format_skill_threat_preview_text(previews: Array[Dictionary], limit: int) -> String:
var parts := []
var safe_limit: int = maxi(1, limit)
for index in range(mini(previews.size(), safe_limit)):
var preview: Dictionary = previews[index]
var source_text := str(preview.get("source_name", "Unit"))
var skill_text := str(preview.get("skill_name", "Skill"))
var area_text := _format_skill_threat_area_text(preview)
if str(preview.get("kind", "")) == "damage":
var defeat_text := " KO" if bool(preview.get("would_defeat", false)) else ""
parts.append("%s %s %d dmg%s%s" % [
source_text,
skill_text,
int(preview.get("damage", 0)),
area_text,
defeat_text
])
else:
var active_text := " active" if bool(preview.get("already_active", false)) else ""
parts.append("%s %s %s%s%s" % [
source_text,
skill_text,
str(preview.get("effect_text", "Effect")),
area_text,
active_text
])
if previews.size() > safe_limit:
parts.append("+%d" % (previews.size() - safe_limit))
return _join_strings(parts, "; ")
func _format_skill_threat_area_text(preview: Dictionary) -> String:
var target_count := int(preview.get("target_count", 0))
if target_count <= 1:
return ""
return " x%d" % target_count
func _compact_name_list(names: Array[String], limit: int) -> String:
var visible_names: Array[String] = []
var safe_limit: int = maxi(1, limit)