- config.cpp: fix script/config binding. Crates now inherit a shared
YALootBoxes_Base config class (name-matches the script class) instead of
relying on the non-binding simulationModule line. Base class changed from
non-existent ContainerObject to vanilla Container_Base.
- Lootbox.c: same base class change; replace never-called GetActions
override with the engine-correct SetActions()/AddAction().
- ActionOpen.c: BROKEN_BONE now uses player.SetBrokenLegs(eBrokenLegs.
BROKEN_LEGS) instead of bogus GetHealthDamageManager().SetFracture();
DecreaseHealth health-type arg empty-string changed to "Health" (3 sites).
- Config.c: restructure loot lists from a string-keyed map to a flat array
of YALB_LootList{type,entries} for reliable JSON deserialization;
GetLootListForType updated to linear scan; position made a ref array;
document failEffects.chance as a weight, not a probability.
- loot_lists.json (configfiles.readme): match new array schema.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Renamed code prefix LB_ -> YALB_ across all four script files
- Renamed source files LootboxSpawner_*.c -> YALootBoxes_*.c
- Deleted three empty 0-byte stub files (_BoxTypes/_LootLists/_SpawnLocations)
- Fixed folder case scripts/4_world -> scripts/4_World to match config.cpp
- Verified box_types.json className values match CfgVehicles class names
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>