Files
AIGame/Tools/enemy_audit_sheet.py
T
udxandClaude Opus 5.5 89e0fa246f Add formal enemies, remaining formal partners and synthesized UI SFX
- UI SFX v3: procedurally synthesized one-shots (Tools/synth_ui_sfx.py) wired to
  buttons, rewards, errors and red dots via UiSfx, gated by the SFX setting.
- Five formal enemies (Hornlet, Dashlet, Shellhorn, HornCaptain, GreatHorn):
  Hunyuan 50k -> 2000-tri XPbr, DGXA TokenRig, Idle/Walk/Attack, nested per type
  in PrototypeArena; PrototypeBattle.Enemy gains presentation-only Moving/Strikes.
- Formal partners for all ten pets in the arena and portraits, including new
  VineSprite, ThunderLeopard and TideWhale.
- Pipeline fixes: reject local TokenRig fallback, drop loose mesh islands,
  configurable Unity run_script timeout, companion static stage.
- Also includes concurrent work from another tool in this working tree
  (FlameLion, enemy combat FX, challenge mode, home explorer, server updates).
- Resources registered in Doc/ResDesc_*.md; verified on isolated :18081.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:23:55 +08:00

13 lines
720 B
Python

#!/usr/bin/env python3
"""Join an enemy's static_audit front/side/back/perspective captures into sheet.png for review."""
import sys
from pathlib import Path
from PIL import Image
base = Path(__file__).resolve().parents[1] / "Tools/output"
d = next(p for p in (base / "enemy_characters" / sys.argv[1] / "static_audit", base / "companions" / sys.argv[1] / "static_audit") if p.exists())
ims = [Image.open(d / f"{v}.png").convert("RGB") for v in ("front", "side", "back", "perspective")]
ims = [i.resize((int(i.width * 300 / i.height), 300)) for i in ims]
s = Image.new("RGB", (sum(i.width for i in ims), 300), "white"); x = 0
for i in ims: s.paste(i, (x, 0)); x += i.width
s.save(d / "sheet.png"); print(d / "sheet.png")