Repository navigation
feat(port): a donor attack with no host match plays a spare record derived at build time - #120
Merged
Merged
Conversation
Two more levers beside power, element and volume: kind (+0x03) and active (+0x01, the frames a node stays active). A spare record needs both; a hand-authored one may set them too. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
own.expand gives each donor record that no host record matches (and [brain.attacks] does not name) one of the records a species-75 port never spawns: ids 34-106 but 70 and the ones the node code treats by id (5, 6, 21, 22, 24, 28, 31, 39, 40, 99, 100). Its power is the donor's times the median host/donor ratio of the port's matched records, its kind the family's (hit, weak, a node that hurts nobody), its active frames the donor's, grown to the move's window. It points at a free volume set that holds the donor's volumes on the port's joints. Both go into the expanded manifest as [[attack]] and [[hitbox]], never the saved one; P3_OWN_SPARE says what was taken, P3_OWN_ATTACK where nothing is left. Brute's record 26 (the hind feet) takes record 34 on set 19, spheres on joints 24 and 29; Zinogre's nine unmatched records each get one. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… records runtime.expanded hands the write plan the manifest own.expand returns, so studio port hit and push, Send hitboxes to game and Push to game ship the spare [[attack]] and [[hitbox]] entries beside the authored ones; the document keeps none of them. The plan writes the two new attack levers (kind, active) and the content id covers them. Games are read only when the brain has an own move the manifest does not define. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #119. A donor attack with no Tigrex record to match now plays a spare one, derived at each build.
brain/spare.py, throughown.expand): an em75 record a species-75 port never spawns (34-69, 71-106; ids the overlay's node code treats specially are skipped: 5, 6, 21, 22, 24, 28, 31, 39, 40, 99, 100) on a spare volume set with room, carrying the donor's volumes on the port's joints, its power scaled by the median host/donor ratio of the port's matched records, its kind by family and its active frames. They are[[attack]]/[[hitbox]]entries of the expanded manifest only (P3_OWN_SPARE);[[attack]]gainskindandactive.studio port hit, push, Send to game) take the expanded manifest for a port with[brain].Tests: allocation, capacity, scaling; with game data, Brute's and Zinogre's spares and the hit plan bytes.
🤖 Generated with Claude Code