Description:
In The Nexus, the final boss Keristrasza's frost nova ability shows diminishing returns against the players fighting her.
Current behaviour:
Keristrasza casts a frost nova-like spell, which roots players causing them to gain stacks of frozen core. After three or four of these casts, she still says her line "Stay, enjoy your final moments" but players are no longer rooted.
Expected behaviour:
Frost nova should affect all the players for the same amount of time, each time she casts it.
Steps to reproduce the problem:
Branch(es):
3.3.5
TC rev. hash/commit:
TrinityCore rev. b166d12cbef0 2020-03-21 21:14:49 +0100 (3.3.5 branch) (Unix, RelWithDebInfo, Static)
Online players: 0 (max: 6)
Active connections: 0 (max: 6) Queued connections: 0 (max: 0)
Server uptime: 1 Day 10 Hours 22 Minutes 59 Seconds.
Update time diff: 50.
Operating system: Linux
There's no spell called frost nova https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp#L32-L39
SPELL_CRYSTAL_CHAINS = 50997,
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 8ce9ff2a08..2f588aa179 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -2270,6 +2270,9 @@ void SpellInfo::_LoadSpellDiminishInfo()
// Screams of the Dead (King Ymiron)
else if (Id == 51750)
return DIMINISHING_NONE;
+ // Crystal Chains
+ else if (Id == 50997)
+ return DIMINISHING_NONE;
// Triggered trample aura (ToC 5)
else if (Id == 67868)
return DIMINISHING_NONE;
This didn't work for me. I added this manually since I couldn't get the patch to apply correctly. Probably because the Trample Aura wasn't in my code. I might've been slightly out of date?
Regardless, I added it before the break in that case statement and after Screams of the Dead, but the spell still had diminishing returns.
Edited to add: I might not be clearing all my caches right, according to comments on another issue I made. Lemme double check this....
Cleared my client cache, and this spell still has diminishing returns. Lasts 8 seconds, then 4, then 2, then 1, then you are totally unaffected for the rest of the encounter.
If I remember correctly, players could jump constantly to avoid the spell stacking effect. I can only presume that the spell should stack incrementally and that the player could be rooted in a freeze spell from time to time (unless jumping often enough to avoid getting hit by the root effect).
That's true, people could jump to avoid the spell stacking. But, Crystal Chains would root you in place similar to a mage's frost nova, which keeps you from jumping or moving, making it stack on everyone until it either disappears or someone dispels it.
Here's a video of the encounter, showing everyone getting frozen in place 5 times: https://youtu.be/NrwOvCTUK7c
Good point. Thanks for reminding me of how it looks on retail.
Might be related also to #24478 where yelling is there, but no aura, possible reason that she dint found any target.
issue ticket title adjustment suggestion:
Scripts/Nexus: Keristrasza's spell Crystal Chains has Diminishing Returns
So.....this is embarrassing. The fix that Rushor wrote actually does work. The problem is that we were looking at SPELL_CRYSTAL_CHAINS, which is the Normal version of the spell I was concerned with, which is actually SPELL_CRYSTALIZE (which is misspelled, not sure if anyone cares though it should be CRYSTALLIZE).
So, the following works for me, tested on 7c91c423d05a
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 58152b95fe..2aaf871d4a 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -2267,6 +2267,9 @@ void SpellInfo::_LoadSpellDiminishInfo()
// Black Plague
else if (Id == 64155)
return DIMINISHING_NONE;
+ // Crystallize
+ else if (Id == 48179)
+ return DIMINISHING_NONE;
// Screams of the Dead (King Ymiron)
else if (Id == 51750)
return DIMINISHING_NONE;
And if anyone wants to fix the misspelling:
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
index f12778ed32..1bc2b392fd 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
@@ -34,7 +34,7 @@ enum Spells
SPELL_CRYSTAL_CHAINS = 50997,
SPELL_ENRAGE = 8599,
SPELL_CRYSTALFIRE_BREATH = 48096,
- SPELL_CRYSTALIZE = 48179,
+ SPELL_CRYSTALLIZE = 48179,
SPELL_INTENSE_COLD = 48094,
SPELL_INTENSE_COLD_TRIGGERED = 48095
};
@@ -42,7 +42,7 @@ enum Spells
enum Events
{
EVENT_CRYSTAL_FIRE_BREATH = 1,
- EVENT_CRYSTAL_CHAINS_CRYSTALIZE,
+ EVENT_CRYSTAL_CHAINS_CRYSTALLIZE,
EVENT_TAIL_SWEEP
};
@@ -99,7 +99,7 @@ class boss_keristrasza : public CreatureScript
BossAI::JustEngagedWith(who);
events.ScheduleEvent(EVENT_CRYSTAL_FIRE_BREATH, 14s);
- events.ScheduleEvent(EVENT_CRYSTAL_CHAINS_CRYSTALIZE, DUNGEON_MODE(30000, 11000));
+ events.ScheduleEvent(EVENT_CRYSTAL_CHAINS_CRYSTALLIZE, DUNGEON_MODE(30000, 11000));
events.ScheduleEvent(EVENT_TAIL_SWEEP, 5s);
}
@@ -186,14 +186,14 @@ class boss_keristrasza : public CreatureScript
DoCastVictim(SPELL_CRYSTALFIRE_BREATH);
events.ScheduleEvent(EVENT_CRYSTAL_FIRE_BREATH, 14s);
break;
- case EVENT_CRYSTAL_CHAINS_CRYSTALIZE:
+ case EVENT_CRYSTAL_CHAINS_CRYSTALLIZE:
DoCast(me, SPELL_TAIL_SWEEP);
- events.ScheduleEvent(EVENT_CRYSTAL_CHAINS_CRYSTALIZE, 5s);
+ events.ScheduleEvent(EVENT_CRYSTAL_CHAINS_CRYSTALLIZE, 5s);
break;
case EVENT_TAIL_SWEEP:
Talk(SAY_CRYSTAL_NOVA);
if (IsHeroic())
- DoCast(me, SPELL_CRYSTALIZE);
+ DoCast(me, SPELL_CRYSTALLIZE);
else if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true))
DoCast(target, SPELL_CRYSTAL_CHAINS);
events.ScheduleEvent(EVENT_TAIL_SWEEP, DUNGEON_MODE(30000, 11000));
Very well, thank you for the feedback. Useful to know that 48179 (Crystallize) needs an entry in SpellInfo.cpp
. As for the spelling correction, it would be useful to save it until the script needs to be changed in boss_keristrasza.cpp
and make several changes at the same time (spelling corrections for enums are low priority).
@wotlk-enthusiast so you telling, that each time she yelled, you also got Crystal Chains aura? How long you tested? For me it didn't work and my char was only target there.
Actually, I haven't had time to try anything ingame, but, make sure you're in heroic mode @Faq
https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp#L193-L200
Why in heroic? SPELL_CRYSTAL_CHAINS is casted in normal mode.
read @wotlk-enthusiast comment 馃槃
https://github.com/TrinityCore/TrinityCore/issues/24360#issuecomment-619477685
So, this is what we can call a bad report from beginning and I hope author will learn from this. Issue was made with just bunch of names without any specific link. So in 29 days finally it more detailed and finished, just need a PR. :)
Yeah, well, sometimes less experienced users need to go through the long-winded path to get to a useful conclusion, even if it takes more days or weeks to get there.
Yeahhhhhh, sorry about that. I have learned a lot in the last 29 days. Dynamically linking and hotswapping the scripts, learning about TC_LOG, and importing the code into an IDE really helped me learn what is going on under the hood. Future issues will have a lot more clarity in them. Now to learn how to do a PR properly...
@wotlk-enthusiast there are some tutorials on github about how to do that, but in general when creating a PR for 3.3.5 one should :
Most helpful comment
Yeahhhhhh, sorry about that. I have learned a lot in the last 29 days. Dynamically linking and hotswapping the scripts, learning about TC_LOG, and importing the code into an IDE really helped me learn what is going on under the hood. Future issues will have a lot more clarity in them. Now to learn how to do a PR properly...