save_binary called stream.read_dword(value) instead of write_dword,
so packing any container raised a TypeError. load_json called
super().load_json() without data, so the item base never loaded.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When the bool after USE_TRIGGER / LOOT_TRIGGER is set, the client
(sb.exe 0xC46DE0) instantiates a trigger object by name and loads
extra data from the stream. The parser silently ignored the branch,
which would desync the rest of the template. Raise instead.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The client loads MerchantData as ArcCacheID + ArcCacheID + int32
(20 bytes, sb.exe 0x4859B0). save_binary wrote the final field as a
qword, corrupting any packed object carrying merchant sparse data.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>