Files
AIGame/Tools/audit_budbud_action.py
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

18 lines
759 B
Python

import bpy
from pathlib import Path
p=Path('Tools/output/companions/BudBud/motions/Walk/animated.fbx')
bpy.ops.wm.read_factory_settings(use_empty=True); bpy.ops.import_scene.fbx(filepath=str(p),use_anim=True)
for o in bpy.context.scene.objects:
if o.type=='ARMATURE':
print('arm',o.name,'frame',bpy.context.scene.frame_start,bpy.context.scene.frame_end,'anim',bool(o.animation_data))
a=o.animation_data.action if o.animation_data else None
print('action',a,a.layers if a else None)
if a:
for l in a.layers:
print('layer',l.name,'strips',len(l.strips))
for s in l.strips:
print('strip',type(s),dir(s)[:20])
cb=s.channelbag(0) if hasattr(s,'channelbag') else None
print('cb',cb, 'fcurves',len(cb.fcurves) if cb else None)