Add first support tactic
This commit is contained in:
@@ -202,12 +202,12 @@ func _create_hud() -> void:
|
||||
|
||||
selected_label = Label.new()
|
||||
selected_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
selected_label.custom_minimum_size = Vector2(420, 72)
|
||||
selected_label.custom_minimum_size = Vector2(420, 92)
|
||||
side_column.add_child(selected_label)
|
||||
|
||||
cell_info_label = Label.new()
|
||||
cell_info_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
cell_info_label.custom_minimum_size = Vector2(420, 90)
|
||||
cell_info_label.custom_minimum_size = Vector2(420, 106)
|
||||
side_column.add_child(cell_info_label)
|
||||
|
||||
forecast_label = Label.new()
|
||||
@@ -567,7 +567,7 @@ func _play_log_sfx(message: String) -> void:
|
||||
if message.contains(" for "):
|
||||
_play_sfx("hit_heavy")
|
||||
elif message.contains(" casts "):
|
||||
if message.contains("restoring"):
|
||||
if message.contains("restoring") or message.contains(" until "):
|
||||
_play_sfx("skill_cast")
|
||||
else:
|
||||
_play_sfx("fire_skill")
|
||||
@@ -882,6 +882,9 @@ func _update_hud() -> void:
|
||||
selected.get("min_range", 1),
|
||||
selected["range"]
|
||||
]
|
||||
var selected_effects := state.get_status_effect_summary(selected["id"])
|
||||
if not selected_effects.is_empty():
|
||||
selected_label.text += "\nEffects: %s" % selected_effects
|
||||
wait_button.disabled = selected.get("acted", false) or not state.can_player_act() or _is_input_locked()
|
||||
_update_tactic_button(selected)
|
||||
_update_item_button(selected)
|
||||
@@ -933,6 +936,9 @@ func _update_cell_info() -> void:
|
||||
unit.get("min_range", 1),
|
||||
unit["range"]
|
||||
]
|
||||
var status_effects := state.get_status_effect_summary(unit["id"])
|
||||
if not status_effects.is_empty():
|
||||
text += "\nEffects: %s" % status_effects
|
||||
|
||||
cell_info_label.text = text
|
||||
|
||||
@@ -1011,6 +1017,16 @@ func _update_skill_forecast(selected: Dictionary) -> void:
|
||||
preview["target_hp_after"],
|
||||
target["max_hp"]
|
||||
]
|
||||
elif preview["kind"] == "support":
|
||||
var refresh_text := " Refresh." if bool(preview.get("already_active", false)) else ""
|
||||
forecast_label.text = "%s: %s, %d MP.%s\n%s.%s" % [
|
||||
preview["skill_name"],
|
||||
range_text,
|
||||
preview["mp_cost"],
|
||||
mp_text,
|
||||
preview.get("effect_text", "Support effect"),
|
||||
refresh_text
|
||||
]
|
||||
else:
|
||||
var defeat_text := " Defeat" if preview["would_defeat"] else ""
|
||||
forecast_label.text = "%s: %s, %d MP.%s\n%d damage, target HP %d/%d.%s" % [
|
||||
@@ -2277,9 +2293,27 @@ func _format_tactic_button_text(skill_id: String, skill: Dictionary, selected: D
|
||||
var mp_cost := int(skill.get("mp_cost", 0))
|
||||
var kind := str(skill.get("kind", "skill")).capitalize()
|
||||
var range_text := _format_tactic_range_text(skill)
|
||||
var power_text := int(skill.get("power", 0))
|
||||
var effect_text := _format_tactic_effect_text(skill)
|
||||
var disabled_text := " - MP" if int(selected.get("mp", 0)) < mp_cost else ""
|
||||
return "%s%s %dMP %s R%s P%d%s" % [marker, skill_name, mp_cost, kind, range_text, power_text, disabled_text]
|
||||
return "%s%s %dMP %s R%s %s%s" % [marker, skill_name, mp_cost, kind, range_text, effect_text, disabled_text]
|
||||
|
||||
|
||||
func _format_tactic_effect_text(skill: Dictionary) -> String:
|
||||
if str(skill.get("kind", "")) == "support":
|
||||
var parts := []
|
||||
for effect in skill.get("effects", []):
|
||||
if typeof(effect) != TYPE_DICTIONARY:
|
||||
continue
|
||||
if str(effect.get("type", "")) != "stat_bonus":
|
||||
continue
|
||||
var amount := int(effect.get("amount", 0))
|
||||
if amount == 0:
|
||||
continue
|
||||
var sign := "+" if amount > 0 else ""
|
||||
parts.append("%s %s%d" % [str(effect.get("stat", "")).to_upper(), sign, amount])
|
||||
if not parts.is_empty():
|
||||
return _join_strings(parts, ", ")
|
||||
return "P%d" % int(skill.get("power", 0))
|
||||
|
||||
|
||||
func _format_tactic_range_text(skill: Dictionary) -> String:
|
||||
|
||||
Reference in New Issue
Block a user