Show hostile tactic threat hints
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user