Localize Sishui gate and battle log tone
This commit is contained in:
@@ -1645,25 +1645,25 @@ func _play_ui_cancel() -> void:
|
||||
|
||||
|
||||
func _play_log_sfx(message: String) -> void:
|
||||
if message.contains(" but misses."):
|
||||
if message.contains(" but misses.") or message.contains("헛쳤다"):
|
||||
_play_sfx("guard_block")
|
||||
elif message.begins_with("Objective updated:") or message.begins_with("Defeat condition updated:"):
|
||||
elif message.begins_with("Objective updated:") or message.begins_with("Defeat condition updated:") or message.begins_with("군령 갱신:") or message.begins_with("패전 군령 갱신:"):
|
||||
_play_ui_confirm()
|
||||
elif message.ends_with(" withdraws from the battlefield."):
|
||||
elif message.ends_with(" withdraws from the battlefield.") or message.ends_with("전장을 물러났다."):
|
||||
_play_ui_confirm()
|
||||
elif message.contains(" attacks ") or message.contains(" counterattacks "):
|
||||
if message.contains(" for "):
|
||||
elif message.contains(" attacks ") or message.contains(" counterattacks ") or message.contains(" 공격 ") or message.contains(" 반격 "):
|
||||
if message.contains(" for ") or message.contains("피해"):
|
||||
_play_sfx("hit_heavy")
|
||||
elif message.contains(" casts "):
|
||||
if message.contains("restoring") or message.contains(" until "):
|
||||
elif message.contains(" casts ") or message.contains(" 시전 "):
|
||||
if message.contains("restoring") or message.contains(" until ") or message.contains("회복") or message.contains("지원"):
|
||||
_play_sfx("skill_cast")
|
||||
else:
|
||||
_play_sfx("fire_skill")
|
||||
elif message.contains(" moved to ") or message.contains(" advances to ") or message.contains(" takes formation at ") or message.contains(" arrives at "):
|
||||
_play_sfx("footstep")
|
||||
elif message.contains(" uses ") or message.contains(" equips ") or message.contains(" 매입:") or message.contains(" 매각:") or message.begins_with("Received "):
|
||||
elif message.contains(" uses ") or message.contains(" equips ") or message.contains(" 사용:") or message.contains(" 장착:") or message.contains(" 매입:") or message.contains(" 매각:") or message.begins_with("Received ") or message.begins_with("전리품:") or message.begins_with("군자금:"):
|
||||
_play_sfx("item_pickup")
|
||||
elif message.contains(" reaches Lv.") or message.contains(" promotes to "):
|
||||
elif message.contains(" reaches Lv.") or message.contains(" promotes to ") or message.contains("공적") or message.contains("승급"):
|
||||
_play_sfx("menu_confirm")
|
||||
|
||||
|
||||
@@ -3056,9 +3056,9 @@ func _skill_target_preview_badge_for_cell(selected: Dictionary, target: Dictiona
|
||||
return _make_target_preview_badge_at("가득", "invalid", cell)
|
||||
if bool(preview.get("has_area", false)):
|
||||
return _make_target_preview_badge_at("+%d x%d" % [total_heal, target_count], "heal", cell)
|
||||
return _make_target_preview_badge_at("+%d HP" % heal, "heal", cell)
|
||||
return _make_target_preview_badge_at("+%d 병력" % heal, "heal", cell)
|
||||
if kind == "support":
|
||||
var effect_text := str(preview.get("effect_text", "Support"))
|
||||
var effect_text := str(preview.get("effect_text", "지원"))
|
||||
var badge_kind := _support_preview_badge_kind(effect_text)
|
||||
if bool(preview.get("has_area", false)):
|
||||
return _make_target_preview_badge_at("%s x%d" % [_compact_support_preview_text(effect_text), target_count], badge_kind, cell)
|
||||
@@ -3099,8 +3099,8 @@ func _item_target_preview_badge_for_cell(selected: Dictionary, target: Dictionar
|
||||
if hp_heal > 0 and mp_heal > 0:
|
||||
return _make_target_preview_badge_at("+%d/%d" % [hp_heal, mp_heal], "heal", cell)
|
||||
if hp_heal > 0:
|
||||
return _make_target_preview_badge_at("+%d HP" % hp_heal, "heal", cell)
|
||||
return _make_target_preview_badge_at("+%d MP" % mp_heal, "mp", cell)
|
||||
return _make_target_preview_badge_at("+%d 병력" % hp_heal, "heal", cell)
|
||||
return _make_target_preview_badge_at("+%d 기력" % mp_heal, "mp", cell)
|
||||
|
||||
|
||||
func _hover_intent_preview_badge(selected: Dictionary, target: Dictionary) -> Dictionary:
|
||||
@@ -3145,7 +3145,10 @@ func _compact_support_preview_text(effect_text: String) -> String:
|
||||
var for_index := part.find(" for ")
|
||||
if for_index >= 0:
|
||||
part = part.substr(0, for_index)
|
||||
if not part.is_empty() and part != "No support effect.":
|
||||
var duration_index := part.find(", ")
|
||||
if duration_index >= 0:
|
||||
part = part.substr(0, duration_index)
|
||||
if not part.is_empty() and part != "No support effect." and part != "효험 없음":
|
||||
parts.append(_compact_support_badge_text(part))
|
||||
if parts.is_empty():
|
||||
return "지원"
|
||||
@@ -3155,27 +3158,27 @@ func _compact_support_preview_text(effect_text: String) -> String:
|
||||
|
||||
|
||||
func _compact_support_badge_text(text: String) -> String:
|
||||
if text.contains("Disarm"):
|
||||
if text.contains("Disarm") or text.contains("무장해제"):
|
||||
return "무장해제"
|
||||
if text.contains("Snare"):
|
||||
if text.contains("Snare") or text.contains("발묶임"):
|
||||
return "속박"
|
||||
if text.contains("Seal"):
|
||||
if text.contains("Seal") or text.contains("봉인"):
|
||||
return "봉인"
|
||||
if text.contains("Poison"):
|
||||
if text.contains("Poison") or text.contains("독"):
|
||||
return "독"
|
||||
if text.contains("Cleanse"):
|
||||
if text.contains("Cleanse") or text.contains("해소"):
|
||||
return "해소"
|
||||
return text
|
||||
|
||||
|
||||
func _support_preview_badge_kind(effect_text: String) -> String:
|
||||
if effect_text.contains("Disarm"):
|
||||
if effect_text.contains("Disarm") or effect_text.contains("무장해제"):
|
||||
return "disarm"
|
||||
if effect_text.contains("Snare"):
|
||||
if effect_text.contains("Snare") or effect_text.contains("발묶임"):
|
||||
return "snare"
|
||||
if effect_text.contains("Seal"):
|
||||
if effect_text.contains("Seal") or effect_text.contains("봉인"):
|
||||
return "seal"
|
||||
if effect_text.contains("Poison"):
|
||||
if effect_text.contains("Poison") or effect_text.contains("독"):
|
||||
return "poison"
|
||||
if effect_text.contains("-"):
|
||||
return "debuff"
|
||||
@@ -3805,7 +3808,7 @@ func _update_skill_forecast(selected: Dictionary) -> void:
|
||||
preview["mp_cost"],
|
||||
mp_text,
|
||||
area_text,
|
||||
preview.get("effect_text", "Support effect"),
|
||||
preview.get("effect_text", "지원"),
|
||||
refresh_text
|
||||
]
|
||||
else:
|
||||
@@ -4617,7 +4620,7 @@ func _load_pending_post_battle_choice() -> void:
|
||||
if briefing_panel != null:
|
||||
briefing_panel.visible = false
|
||||
if log_box != null:
|
||||
log_box.append_text("Campaign choice pending.\n")
|
||||
log_box.append_text("군의 논의가 이어지고 있다.\n")
|
||||
|
||||
|
||||
func _load_scenario(scenario_id: String) -> void:
|
||||
@@ -6426,10 +6429,10 @@ func _on_post_battle_choice_pressed(choice: Dictionary) -> void:
|
||||
_append_result_items(choice.get("items", []))
|
||||
_append_unique_result_values("joined_officers", choice.get("join_officers", []))
|
||||
_append_unique_result_values("left_officers", choice.get("leave_officers", []))
|
||||
_on_log_added("Campaign choice saved: %s." % battle_result_summary["choice_label"])
|
||||
_on_log_added("군령 채택: %s." % battle_result_summary["choice_label"])
|
||||
else:
|
||||
_play_ui_cancel()
|
||||
_on_log_added("Could not save campaign choice.")
|
||||
_on_log_added("군령을 봉하지 못했다.")
|
||||
_rebuild_result_choices()
|
||||
_update_result_next_button_visibility()
|
||||
if result_label != null and state.battle_status == BattleState.STATUS_VICTORY:
|
||||
@@ -6825,7 +6828,7 @@ func _show_campaign_complete() -> void:
|
||||
if briefing_panel != null:
|
||||
briefing_panel.visible = false
|
||||
if log_box != null:
|
||||
log_box.append_text("Campaign complete.\n")
|
||||
log_box.append_text("전기가 여기서 매듭지어졌다.\n")
|
||||
|
||||
|
||||
func _on_new_campaign_pressed() -> void:
|
||||
@@ -7109,7 +7112,7 @@ func _format_post_move_tactic_button_text(skill_id: String, skill: Dictionary, s
|
||||
|
||||
func _format_post_move_item_button_text(item_id: String, item: Dictionary, count: int) -> String:
|
||||
var marker := "> " if selected_item_id == item_id else ""
|
||||
var item_name := str(item.get("name", item_id))
|
||||
var item_name := _item_display_name(item_id)
|
||||
return "%s%s x%d %s" % [marker, item_name, count, _format_post_move_item_effect_text(item)]
|
||||
|
||||
|
||||
@@ -7545,13 +7548,13 @@ func _format_tactic_effect_text(skill: Dictionary) -> String:
|
||||
if amount == 0:
|
||||
continue
|
||||
var sign := "+" if amount > 0 else ""
|
||||
parts.append("%s %s%d" % [str(effect.get("stat", "")).to_upper(), sign, amount])
|
||||
parts.append("%s %s%d" % [_battle_stat_display_name(str(effect.get("stat", ""))), sign, amount])
|
||||
elif effect_type == "damage_over_time" and amount > 0:
|
||||
var status_name := str(effect.get("status", "status")).replace("_", " ").capitalize()
|
||||
var status_name := _battle_status_display_name(str(effect.get("status", "status")))
|
||||
parts.append("%s -%d" % [status_name, amount])
|
||||
elif effect_type == "action_lock":
|
||||
parts.append("%s %s" % [
|
||||
str(effect.get("status", "status")).replace("_", " ").capitalize(),
|
||||
_battle_status_display_name(str(effect.get("status", "status"))),
|
||||
_action_lock_effect_label(str(effect.get("action", "")))
|
||||
])
|
||||
if not parts.is_empty():
|
||||
@@ -7592,6 +7595,42 @@ func _action_lock_effect_label(action: String) -> String:
|
||||
return "군령 봉인"
|
||||
|
||||
|
||||
func _battle_stat_display_name(stat: String) -> String:
|
||||
var normalized := stat.strip_edges().to_lower()
|
||||
if normalized == "hp":
|
||||
return "병력"
|
||||
if normalized == "mp":
|
||||
return "기력"
|
||||
if normalized == "atk":
|
||||
return "무력"
|
||||
if normalized == "def":
|
||||
return "방비"
|
||||
if normalized == "int":
|
||||
return "지략"
|
||||
if normalized == "agi":
|
||||
return "순발"
|
||||
if normalized == "move":
|
||||
return "행군"
|
||||
return _format_identifier_label(stat)
|
||||
|
||||
|
||||
func _battle_status_display_name(status: String) -> String:
|
||||
var normalized := status.strip_edges().to_lower()
|
||||
if normalized == "poison":
|
||||
return "독"
|
||||
if normalized == "seal":
|
||||
return "봉인"
|
||||
if normalized == "snare":
|
||||
return "발묶임"
|
||||
if normalized == "disarm":
|
||||
return "무장해제"
|
||||
if normalized == "debuff":
|
||||
return "약화"
|
||||
if normalized.is_empty():
|
||||
return "상태"
|
||||
return _format_identifier_label(status)
|
||||
|
||||
|
||||
func _skill_kind_text(kind: String) -> String:
|
||||
var normalized := kind.strip_edges().to_lower()
|
||||
if normalized == "damage":
|
||||
@@ -7714,7 +7753,7 @@ func _clear_item_list() -> void:
|
||||
|
||||
func _format_item_button_text(item_id: String, item: Dictionary, count: int) -> String:
|
||||
var marker := "> " if selected_item_id == item_id else ""
|
||||
var item_name := str(item.get("name", item_id))
|
||||
var item_name := _item_display_name(item_id)
|
||||
return "%s%s x%d %s" % [marker, item_name, count, _format_item_effect_text(item)]
|
||||
|
||||
|
||||
@@ -7728,7 +7767,7 @@ func _format_item_effect_text(item: Dictionary) -> String:
|
||||
elif str(effect.get("type", "")) == "heal_mp":
|
||||
parts.append("기력 +%d" % int(effect.get("amount", 0)))
|
||||
elif str(effect.get("type", "")) == "cure_status":
|
||||
parts.append("치료 %s" % str(effect.get("status", "status")).replace("_", " ").capitalize())
|
||||
parts.append("치료 %s" % _battle_status_display_name(str(effect.get("status", "status"))))
|
||||
elif str(effect.get("type", "")) == "cleanse_debuffs":
|
||||
parts.append("약화 해소")
|
||||
if parts.is_empty():
|
||||
@@ -7872,9 +7911,9 @@ func _format_unit_equipment(unit: Dictionary) -> String:
|
||||
for slot in ["weapon", "armor", "accessory"]:
|
||||
var item_id := _equipment_item_id(equipment, slot)
|
||||
if item_id.is_empty():
|
||||
parts.append("%s -" % slot.capitalize())
|
||||
parts.append("%s -" % _equipment_slot_display_name(slot))
|
||||
else:
|
||||
parts.append("%s %s" % [slot.capitalize(), _item_display_name(item_id)])
|
||||
parts.append("%s %s" % [_equipment_slot_display_name(slot), _item_display_name(item_id)])
|
||||
return _join_strings(parts, ", ")
|
||||
|
||||
|
||||
@@ -7911,7 +7950,7 @@ func _format_equipment_option_text(unit: Dictionary, item_id: String, item: Dict
|
||||
|
||||
func _format_equipment_unequip_text(unit: Dictionary, slot: String, item_id: String, item: Dictionary) -> String:
|
||||
var parts := [
|
||||
"%s 해제:" % slot.capitalize(),
|
||||
"%s 해제:" % _equipment_slot_display_name(slot),
|
||||
_item_display_name(item_id)
|
||||
]
|
||||
var change_text := _format_equipment_unequip_change_text(unit, slot, item)
|
||||
@@ -7929,7 +7968,7 @@ func _format_equipment_unequip_change_text(unit: Dictionary, slot: String, item:
|
||||
var delta := -int(current_bonuses.get(stat, 0))
|
||||
if delta == 0:
|
||||
continue
|
||||
parts.append("%s %d" % [stat.to_upper(), delta])
|
||||
parts.append("%s %d" % [_battle_stat_display_name(stat), delta])
|
||||
if slot == "weapon":
|
||||
var current_range := _format_equipment_item_range_text(item)
|
||||
if not current_range.is_empty():
|
||||
@@ -7960,7 +7999,7 @@ func _format_equipment_change_text(unit: Dictionary, item: Dictionary) -> String
|
||||
if delta == 0:
|
||||
continue
|
||||
var sign := "+" if delta > 0 else ""
|
||||
parts.append("%s %s%d" % [stat.to_upper(), sign, delta])
|
||||
parts.append("%s %s%d" % [_battle_stat_display_name(stat), sign, delta])
|
||||
|
||||
var range_text := _format_equipment_range_change_text(current_item, item)
|
||||
if not range_text.is_empty():
|
||||
@@ -7980,6 +8019,17 @@ func _equipment_slot_for_display(item: Dictionary) -> String:
|
||||
return ""
|
||||
|
||||
|
||||
func _equipment_slot_display_name(slot: String) -> String:
|
||||
var normalized := slot.strip_edges().to_lower()
|
||||
if normalized == "weapon":
|
||||
return "병장"
|
||||
if normalized == "armor":
|
||||
return "갑주"
|
||||
if normalized == "accessory":
|
||||
return "보물"
|
||||
return _format_identifier_label(slot)
|
||||
|
||||
|
||||
func _equipment_bonus_map(item: Dictionary) -> Dictionary:
|
||||
if item.is_empty() or typeof(item.get("bonuses", {})) != TYPE_DICTIONARY:
|
||||
return {}
|
||||
@@ -7995,7 +8045,7 @@ func _format_equipment_range_change_text(current_item: Dictionary, candidate_ite
|
||||
return ""
|
||||
if current_range.is_empty():
|
||||
current_range = "-"
|
||||
return "RNG %s->%s" % [current_range, candidate_range]
|
||||
return "사거리 %s->%s" % [current_range, candidate_range]
|
||||
|
||||
|
||||
func _format_equipment_item_range_text(item: Dictionary) -> String:
|
||||
@@ -8021,10 +8071,10 @@ func _format_equipment_effectiveness_change_text(current_item: Dictionary, candi
|
||||
if candidate_text == current_text:
|
||||
return ""
|
||||
if current_text.is_empty():
|
||||
return "Gains %s" % candidate_text
|
||||
return "특효 획득 %s" % candidate_text
|
||||
if candidate_text.is_empty():
|
||||
return "Loses %s" % current_text
|
||||
return "Effect changes"
|
||||
return "특효 상실 %s" % current_text
|
||||
return "특효 변화"
|
||||
|
||||
|
||||
func _format_equipment_bonus_text(item: Dictionary) -> String:
|
||||
@@ -8038,12 +8088,12 @@ func _format_equipment_bonus_text(item: Dictionary) -> String:
|
||||
if amount == 0:
|
||||
continue
|
||||
var sign := "+" if amount > 0 else ""
|
||||
parts.append("%s %s%d" % [stat.to_upper(), sign, amount])
|
||||
parts.append("%s %s%d" % [_battle_stat_display_name(stat), sign, amount])
|
||||
var effective_text := _format_equipment_effectiveness_text(item)
|
||||
if not effective_text.is_empty():
|
||||
parts.append(effective_text)
|
||||
if parts.is_empty():
|
||||
return str(item.get("kind", "equipment")).capitalize()
|
||||
return _item_kind_text(str(item.get("kind", "item")))
|
||||
return _join_strings(parts, ", ")
|
||||
|
||||
|
||||
@@ -8054,7 +8104,7 @@ func _format_equipment_rarity_text(item: Dictionary) -> String:
|
||||
func _format_item_rarity_text(item: Dictionary) -> String:
|
||||
var rarity := str(item.get("rarity", ""))
|
||||
if rarity == "named":
|
||||
return "Named"
|
||||
return "명품"
|
||||
return ""
|
||||
|
||||
|
||||
@@ -8074,7 +8124,7 @@ func _format_equipment_effectiveness_text(item: Dictionary) -> String:
|
||||
labels.append(label)
|
||||
if labels.is_empty():
|
||||
return ""
|
||||
return "Effective +%d vs %s" % [bonus, _join_strings(labels, "/")]
|
||||
return "%s 특효 +%d" % [_join_strings(labels, "/"), bonus]
|
||||
|
||||
|
||||
func _format_move_type(move_type: String) -> String:
|
||||
|
||||
Reference in New Issue
Block a user