Commit Graph
19 Commits
Author SHA1 Message Date
MagicBotandClaude Opus 5.5 ca4d2b2565 Hash grant attr and power keys, read grant values signed
Power and skill grants read every sub-array as (u32 key, int32 value)
(sb.exe 0x6D7640). Skill keys were already hashed; attr and power keys
now are too, and the values plus attribute/skill/resource amounts and
power action arguments are read signed. Shared pair read/write and key
hashing moved into helpers; load_json no longer mutates its input.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 12:55:04 -04:00
MagicBotandClaude Opus 5.5 0adbfe0d99 Read client signed int32 fields as signed
Add ResStream.read_long/write_long and use them for every CObjects
field the client loads with ResStream_ReadInt32 (sb.exe 0x7E1700)
as a value: rank info, attribute/skill/resource amounts, requirements,
door/deed/container/key fields, natural attacks, hardpoints, sound
event types and sparse VAL_LONG (LoadSaveBehavior<long>). Hash/enum
fields, list counts and flag words keep unsigned reads.

The binary is unchanged; JSON now shows e.g. -1 instead of 4294967295
(rank_hirelings, rank_rank) and -10 instead of 4294967286 (attr_adj).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 12:55:04 -04:00
MagicBotandClaude Opus 5.5 6a8598f33f Fix ArcContainerObject save_binary and load_json
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>
2026-10-16 12:53:31 -04:00
MagicBotandClaude Opus 5.5 2008697d6c Fail on unsupported asset template trigger objects
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>
2026-10-16 12:42:57 -04:00
MagicBotandClaude Opus 5.5 7da18716a8 Fix sparse MerchantData write size
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>
2026-10-16 12:42:57 -04:00
MagicBot 75efa29012 helper and groupee are not hashes. They correspond to the group type on the rune. 2024-04-04 14:46:59 -04:00
MagicBot 834f8f6d8d rune and item skill grant sub arrays are now hashed 2024-04-03 16:07:13 -04:00
MagicBot 89faf12277 mbEditorPro 2.1 2024-03-30 10:44:19 -04:00
MagicBot 1fb6336c39 Update 'mbEditorPro2.0/README.md' 2023-01-01 00:47:51 +00:00
MagicBot 6bc7e3ecd8 Show progress bar when unpacking files. 2022-12-31 11:49:00 -05:00
MagicBot 2e62063c14 README updated 2022-12-25 09:51:53 -05:00
MagicBot a4f75ee1b5 README updated 2022-12-25 09:50:19 -05:00
MagicBot cbd1b579ae README updated 2022-12-25 09:24:38 -05:00
MagicBot 4ca95d2a17 README updated 2022-12-25 09:22:47 -05:00
MagicBot 282d644580 README updated 2022-12-25 09:19:42 -05:00
MagicBot 738de28858 README updated 2022-12-25 09:14:11 -05:00
MagicBot 11a7a21630 README updated 2022-12-25 09:13:06 -05:00
MagicBot 7ac814ab03 README updated 2022-12-25 08:52:21 -05:00
MagicBot 942b33a252 mbEditorPro2.0 release 2022-12-25 08:47:00 -05:00