Repository navigation
Rage and the tail-cut gate as behaviour blocks - #67
Merged
Merged
Conversation
RAGE_START, RAGE_END, ANGER_ADD, ENTITY.RAGE_TIMER/ANGER/ANGER_THRESHOLD, FLAGS 0x400, OBJ_VTABLE.CUT_GATE, and the enrage and calm effects, measured live on em75 in a lane. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ral rage The brain writes the engine's own rage levers from its thread: enrage sets FLAGS 0x400 unless the monster is enraged, calm leaves one frame on RAGE_TIMER while it is, and Lua's request (mhfu_em_rage) waits on the board for the brain. mhfu_em_natural_rage raises the species' anger threshold once per monster and restores it. mhfu_em_sever_gate wraps the species' CUT_GATE through the wrap builder (a vtable swap, claimed with the rest): the tail cuts only below an HP percent, and the species' own gate runs on every cut it allows. The block grows by one wrapper (128 bytes). Lua API version 5. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…port:enrage and port:calm _arm_native sets the tail cut's gate (sever_below) and natural rage from the moves module or the define spec, every time it arms; the quest's end drops both. port:enrage() and port:calm() queue the rage on the board. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
….natural_rage The moves module gains top-level sever_below and natural_rage (left out at their defaults). The Zinogre enrages on its charge and cuts its tail only below 50% HP. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… the Behaviour dock A rename keeps a part severable, with its HP percent. The new tests skip until the package has Part.sever_below and Behaviour.natural_rage. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Zinogre tests follow phase 4 The loader's refusals reach the Parts dock unchanged: the studio no longer checks a severable part or a percent range itself. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> # Conflicts: # framework/src/core/em_vhook.cpp # framework/tests/test_em_brain.py
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tions, effects and holds Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…tarts Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
set_rage writes EM_BOARD.RAGE, the request Lua's mhfu.em_rage queues; the brain applies it in the monster's next AI frame through the engine's own start or end. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…lmed trigger Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ns if the monster already is Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…er leaves the window 1512 px With Watch the game and Fire in it the Behaviour header made the window 1586 px wide. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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.
Phase 4 of the moveset editor: rage and the tail cut become building blocks. Stacked on #66.
FLAGS0x400 unless the monster is enraged; the engine runs its own rage start on the next AI frame, roar included.RAGE_TIMER= 1 while enraged; the engine runs its own rage end.port:enrage()andport:calm(), queued on the board and applied by the brain.[parts.tail] sever_below = 50lets the tail be cut only below 50 % HP, set from the Parts dock.OBJ_VTABLE.CUT_GATE, vt+0xE0, the same gate that holds Akantor's tail until 25 %), refuses above the line, and still calls the native gate below it.[behaviour] natural_rage = false(a Behaviour dock checkbox) raisesANGER_THRESHOLDto 32767 once per monster, and turning it back on restores the species value.mhfu.em_sever_gate,em_natural_rage,em_rage;addresses.tomlgains RAGE_START, RAGE_END, ANGER_ADD, the rage fields and CUT_GATE.Live, lane 3 (native Tigrex for the levers, the Zinogre for the rest):
enragedandcalmedevents.Tests: 2985 passed with game data on macOS; CI's test job passes on Linux 3.11 and 3.14 (2397 passed).
🤖 Generated with Claude Code