fix(locale): resolve Chinese monster and NPC names via Locale.mob_names and early-bind name resolver

This commit is contained in:
shen
2026-09-19 19:19:55 -07:00
parent 7cbda7b3dd
commit 1637b500e5
4 changed files with 143 additions and 22 deletions
+60
View File
@@ -2,6 +2,7 @@ extends SceneTree
const Locale = preload("res://locale.gd")
const ItemTooltip = preload("res://ui/item_tooltip.gd")
const NetPlay = preload("res://net_play.gd")
func _init() -> void:
print("=== Starting test_chinese_locale ===")
@@ -97,6 +98,65 @@ func _init() -> void:
printerr("FAIL: Expected title '武士刀+0', got '%s'" % model.get("title", ""))
failed += 1
# 7. NetPlay._entity_name resolution for mobs, stones, NPCs, and PCs
var np := NetPlay.new()
np.locale = loc
# 7a. Monster: stray_dog (race 101) -> 幼狼
var mob_dog := np._entity_name({"race": 101, "kind": 2, "name": "stray_dog"})
if mob_dog == "幼狼":
print("PASS: NetPlay._entity_name(race 101 stray_dog) resolved to '幼狼'")
passed += 1
else:
printerr("FAIL: Expected '幼狼', got '%s'" % mob_dog)
failed += 1
# 7b. Monster: wolf (race 102) -> 灰狼
var mob_wolf := np._entity_name({"race": 102, "kind": 2, "name": "wolf"})
if mob_wolf == "灰狼":
print("PASS: NetPlay._entity_name(race 102 wolf) resolved to '灰狼'")
passed += 1
else:
printerr("FAIL: Expected '灰狼', got '%s'" % mob_wolf)
failed += 1
# 7c. Metin Stone: race 8001 -> 鱼跃陨石
var stone := np._entity_name({"race": 8001, "kind": 3, "name": "metin_sorrow"})
if stone == "鱼跃陨石":
print("PASS: NetPlay._entity_name(race 8001) resolved to '鱼跃陨石'")
passed += 1
else:
printerr("FAIL: Expected '鱼跃陨石', got '%s'" % stone)
failed += 1
# 7d. NPC: Blacksmith (race 20016) -> 王铁匠
var npc_smith := np._entity_name({"race": 20016, "kind": 1, "name": "blacksmith"})
if npc_smith == "王铁匠":
print("PASS: NetPlay._entity_name(race 20016) resolved to '王铁匠'")
passed += 1
else:
printerr("FAIL: Expected '王铁匠', got '%s'" % npc_smith)
failed += 1
# 7e. PC: Player Warrior (race 0) keeps player name
var pc_warrior := np._entity_name({"race": 0, "kind": 0, "name": "无双战神"})
if pc_warrior == "无双战神":
print("PASS: NetPlay._entity_name(PC warrior) preserved player name '无双战神'")
passed += 1
else:
printerr("FAIL: Expected '无双战神', got '%s'" % pc_warrior)
failed += 1
# 7f. PC: Player Ninja (race 1) keeps player name
var pc_ninja := np._entity_name({"race": 1, "kind": 0, "name": "暗影刺客"})
if pc_ninja == "暗影刺客":
print("PASS: NetPlay._entity_name(PC ninja) preserved player name '暗影刺客'")
passed += 1
else:
printerr("FAIL: Expected '暗影刺客', got '%s'" % pc_ninja)
failed += 1
np.free()
print("\n=== %d / %d CHINESE LOCALE TESTS PASSED (Failed: %d) ===" % [passed, passed + failed, failed])
if failed > 0:
quit(1)