From d11d46c469a40e6208cfbc515c97bf90153e83ce Mon Sep 17 00:00:00 2001 From: shenlei Date: Fri, 16 Oct 2026 09:31:52 +0900 Subject: [PATCH] Fix the zh locale build after the item shapes overlay A stray comma turned the proto patch argument list into a tuple, so the build failed with "bad operand type for unary +" since 5dcac9cb. The AVA2 biology step also accepts the reference unpacked under AVA2/TEST instead of only the FILES+SRC.tgz archive. Co-Authored-By: Claude Opus 5.5 --- scripts/build_zh_locale.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/scripts/build_zh_locale.py b/scripts/build_zh_locale.py index 9160ccbc..959e42c3 100644 --- a/scripts/build_zh_locale.py +++ b/scripts/build_zh_locale.py @@ -356,7 +356,7 @@ def build(en: Path, zh: Path, output: Path, client_base: Path, [str(proto_tool), str(en / "item_proto"), str(en / "mob_proto"), str(item_names), str(mob_names), str(locale_dir / "item_proto"), str(locale_dir / "mob_proto")] + ([str(limits)] if limits.is_file() else []) - + ([str(names_dir / "item_stones_server.tsv")] if (names_dir / "item_stones_server.tsv").is_file() else []), + + ([str(names_dir / "item_stones_server.tsv")] if (names_dir / "item_stones_server.tsv").is_file() else []) # item_shapes_server.tsv follows the stone overlay (positional): size and flags of new-use items. + ([str(names_dir / "item_shapes_server.tsv")] if (names_dir / "item_shapes_server.tsv").is_file() else []), check=True, capture_output=True, text=True, @@ -397,7 +397,10 @@ def build_biolog(output: Path, pack_tool: Path): root = REPO / "tools/server/biolog" ava = REPO.parent / "AVA2" archive = ava / "2. Backup SF+SRC and SQL/FILES+SRC.tgz" - if not archive.is_file(): + extracted = ava / "TEST/2. Backup SF+SRC and SQL/home/srv1/db/item_proto.txt" + if not archive.is_file() and extracted.is_file(): + ava = ava / "TEST" # the reference unpacked under AVA2/TEST + elif not archive.is_file(): raise ValueError("AVA2 biology requires the local FILES+SRC.tgz reference") proto_tool = tool("biolog_proto_patch") if not proto_tool.is_file(): @@ -405,11 +408,14 @@ def build_biolog(output: Path, pack_tool: Path): stage = output.parent / "biolog" stage.mkdir(parents=True, exist_ok=True) proto = stage / "ava2-item-proto.txt" - with tarfile.open(archive, "r:gz") as source: - member = source.extractfile("home/srv1/db/item_proto.txt") - if member is None: - raise ValueError("AVA2 item table missing") - proto.write_bytes(member.read()) + if not archive.is_file(): + shutil.copyfile(extracted, proto) + else: + with tarfile.open(archive, "r:gz") as source: + member = source.extractfile("home/srv1/db/item_proto.txt") + if member is None: + raise ValueError("AVA2 item table missing") + proto.write_bytes(member.read()) spec = importlib.util.spec_from_file_location("biolog_assets", root / "make_assets.py") module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module)