Add 小狩猎套装礼包: level-1 +9 set with full attributes, sold in the item mall

Server (tools/server/hunt-set, deployed on 203): game patch adds quest function
item.set_attribute (CItem::SetForceAttribute); quest hunt_set turns the unused
ITEM_QUEST 50307 into a per-class box of eight +9 pieces with five max-value
attributes each. Item mall sells it for 2,000,000.

Client locale: name overlay plus whole-row overlays for item_list.txt (gift-box
icon) and itemdesc.txt (build_zh_locale.py ROW_FILES).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-30 10:23:33 +09:00
co-authored by Claude Opus 5.5
parent 20b189a9da
commit 7155785167
11 changed files with 276 additions and 0 deletions
+13
View File
@@ -82,6 +82,19 @@ class LocaleBuildTest(unittest.TestCase):
self.assertEqual((root / "out.txt").read_bytes().decode("gbk"), "1\t金币\n2\t剑\n")
self.assertEqual(result["overlaid"], 1)
def test_row_overlay_replaces_whole_rows(self):
with tempfile.TemporaryDirectory() as directory:
root = Path(directory)
(root / "itemdesc.txt").write_bytes(b"50306\tBook\tCaf\xe9.\r\n50307\tBook\tEasy.\r\n")
(root / "overlay.txt").write_text("# vnum\tname\tdescription\n50307\t礼包\t打开。\n")
result = MODULE.overlay_rows(root / "itemdesc.txt", root / "overlay.txt")
self.assertEqual((root / "itemdesc.txt").read_bytes(),
b"50306\tBook\tCaf\xe9.\r\n" + "50307\t礼包\t打开。\r\n".encode("gbk"))
self.assertEqual(result, {"replaced_rows": ["50307"]})
(root / "overlay.txt").write_text("99\tx\ty\n")
with self.assertRaises(ValueError):
MODULE.overlay_rows(root / "itemdesc.txt", root / "overlay.txt")
def test_skilldesc_keeps_format_arguments(self):
with tempfile.TemporaryDirectory() as directory:
root = Path(directory)