Place eggs near their Pal's boss, and make one plan serve both builds #1
Loading…
Reference in a new issue
No description provided.
Delete branch "egg-placement-geography"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Egg placement gains a geographic tie-break. Where a Pal has a field boss,
the spawner whose map footprint is nearest that boss wins -- but only among
the spawners the element theme and rarity band already allowed, so a Pal
never leaves its theme to be near its boss. Of 54 candidates, 15 have a
usable boss location and 9 land inside their boss's own footprint; the rest
are theme-blocked and settle for the nearest spawner their element permits.
Paladius now hatches in the desert it patrols rather than in grassland.
tools/geo.py supplies both halves from the game's own files. Boss positions
come from DT_BossSpawnerLoactionData, whose 159 rows include 69 human NPC
bosses with no CharacterID. The egg spawners have no location table at all,
so each Blueprint's footprint is recovered by scanning the world-partition
grid -- 648 of ~10,000 cells reference one. The 25600-uu cell size is
confirmed against the boss table's own region prefixes rather than assumed:
worldtree_* and skyisland_* bosses land inside the matching spawner's cell
range at that size and no other.
plan_additions no longer reads the config. It covers all 54 candidates and
the caller filters -- the pak bakes the opted-in subset, egg_plan.lua ships
the whole plan and gates it at runtime. This is what makes the two agree.
Planning only the opted-in subset made placement depend on how many Pals
were enabled, because the tie-breaks count what a spawner has already taken:
the pak and egg_plan.lua disagreed for 14 of 20 Pals, and enabling one Pal
in the TOML silently moved others. Both now match exactly, and placement is
byte-identical across configs of 0, 1 and 54 enabled Pals.
The pak consequently rewrites only the spawners that gain a Pal -- 10 of 14
at the default config, down from all 14, and 68,376 bytes from 94,285.
Round-trip byte-match holds for all 14 spawners, structural diff is clean
for all 10 rebuilt, and the Lua suite passes.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com