[Vengeance] Fix Vengeance Metamorphosis refresh assertion crash#10954
Merged
ToppleTheNun merged 1 commit intosimulationcraft:midnightfrom Feb 15, 2026
Merged
Conversation
Spell 187827 (VDH Metamorphosis) has a Periodic Dummy effect (simulationcraft#7, 2s period) used for visual/server logic not modeled by SimC. During buff_t::init(), set_period() detects this periodic effect and sets refresh_behavior=TICK. However, the metamorphosis_buff_t constructor sets tick_behavior=NONE, so no tick_event is ever created. When Meta is refreshed (e.g. hardcasting during active Untethered Rage-procced Meta), refresh_duration() hits the TICK case and asserts tick_event is non-null, crashing the sim. Fix: Explicitly set refresh_behavior=DURATION in the constructor so init() -> set_period() respects the override flag and skips the TICK assignment.
c349cd0 to
2333bf6
Compare
a70b298
into
simulationcraft:midnight
120 of 226 checks passed
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.
Summary
Fixes an assertion crash when Vengeance Metamorphosis is refreshed (e.g. hardcasting Meta during an active Untethered Rage-procced Meta).
Root Cause
Vengeance Metamorphosis (spell 187827) has a Periodic Dummy effect that
set_period()picks up duringbuff_t::init():Effect 7 is a Periodic Dummy (visual/server logic, not modeled by SimC). During
buff_t::init(),set_period()detects thisA_PERIODIC_DUMMYsubtype and setsrefresh_behavior=TICK. However,metamorphosis_buff_texplicitly setstick_behavior=NONE— so notick_eventis ever created.When Meta is refreshed,
refresh_duration()enters theTICKcase and assertstick_eventis non-null → crash.Chain of events
metamorphosis_buff_tconstructor setsbuff_period = 0,tick_behavior = NONEbuff_t::init()→set_period(min())scans spell data, finds effect 7 (A_PERIODIC_DUMMY, 2s period)buff_period = 2sand setsrefresh_behavior = TICK(since!refresh_behavior_overridden)tick_behavior = NONEpreventstick_eventcreation instart()trigger()→refresh()→refresh_duration()→assert(tick_event)atbuff.cpp:1637→ crashFix
Explicitly call
set_refresh_behavior(buff_refresh_behavior::DURATION)in themetamorphosis_buff_tconstructor. This setsrefresh_behavior_overridden=true, soinit() → set_period()respects the override and skips the TICK assignment.Reproduction
A VDH profile with Untethered Rage that casts
metamorphosison cooldown crashes within ~100 iterations:Test profile (click to expand)