Fix spectre buffs only applying from the selected spectre - #10225
Fix spectre buffs only applying from the selected spectre#10225canuysal wants to merge 1 commit into
Conversation
Raise Spectre now instantiates every spectre in the spectre list so their buff, aura and curse skills are applied, instead of only the ones from the spectre currently selected on the skill. The selected spectre is still the only one used for minion DPS and defence calculations.
| -- Instantiate the other spectres in the spectre list so their buff skills can be applied | ||
| if isSpectre then | ||
| activeSkill.spectreListMinions = activeSkill.spectreListMinions or { } | ||
| for _, spectreType in ipairs(minionList) do |
There was a problem hiding this comment.
[P1] Temporary spectres can exceed the active limit
Codex found that this changed loop activates every library entry for every Raise Spectre group without enforcing the calculated spectre limit. The supplied regression already uses three spectre types with a level-20 gem whose ActiveSpectreLimit is 2. In a five-entry reproducer, all five temporary minions are created and the overflow entries grant PDR, Onslaught, and three curses. This can materially inflate player and minion calculations whenever the library is larger than the available slots. Would it make sense to represent the actually active spectre types explicitly—or select them deterministically—and cap that set to ActiveSpectreLimit before downstream processing? An overflow regression could then confirm that extra library entries contribute no effects.
Raise Spectre now instantiates every spectre in the spectre list so their buff, aura and curse skills are applied, instead of only the ones from the spectre currently selected on the skill. The selected spectre is still the only one used for minion DPS and defence calculations.
Fixes #9308.
Description of the problem being solved:
When Raise Spectre is enabled, only the spectre currently selected on the skill (defaulting to the first one in the Manage Spectres list) had its buff, aura and curse skills applied. For example, with Perfect Blood Demon, Perfect Forest Tiger and Perfect Guardian Turtle in the list, the Tiger's Haste and the Turtle's Determination were never applied unless that specific spectre was selected as the active minion. The only workaround was socketing one Raise Spectre gem per spectre.
Raise Spectre now instantiates every spectre in the spectre list so their buff, aura and curse skills are applied, instead of only the ones from the spectre currently selected on the skill. The selected spectre is still the only one used for minion DPS and defence calculations. Corpse-granted mods (ally/player/minion modifiers and the beast spectre condition) are also now applied from every spectre in the list rather than just the selected one.
This is based on the approach from the unmerged
add_spectre-skill-buffsbranch by @LocalIdentity (26cb0d1), rebased and adapted to the current dev codebase, withskillTypes/minionSkillTypesadditionally carried into the temporary skill copy so support compatibility checks behave the same as for the main minion.Steps taken to verify a working solution:
spec/System/TestSpectreBuffs_spec.lua) reproducing the exact scenario above; it fails on current dev (Haste/Determination missing) and passes with this changeLink to a build that showcases this PR:
Add perfect forest tiger - perfect blood demon, and perfect guardian turtle. Buffs should also affect players (turtle)
https://pobb.in/_S9pWnHIblbX
Before screenshot:
After screenshot: