aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp4
-rw-r--r--src/server/game/Spells/Auras/SpellEffects.cpp5
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp32
3 files changed, 37 insertions, 4 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index 0b49322ab8b..c4aeca15a13 100644
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -903,6 +903,10 @@ void Aura::HandleAuraSpecificMods(AuraApplication const * aurApp, Unit * caster,
if (GetStackAmount() >= 5 && !target->HasAura(33652))
target->CastSpell(target, 33652, true);
break;
+ case 50836: //Petrifying Grip, becomes stoned
+ if (GetStackAmount() >= 5 && !target->HasAura(50812))
+ target->CastSpell(target, 50812, true);
+ break;
case 60970: // Heroic Fury (remove Intercept cooldown)
if (target->GetTypeId() == TYPEID_PLAYER)
target->ToPlayer()->RemoveSpellCooldown(20252, true);
diff --git a/src/server/game/Spells/Auras/SpellEffects.cpp b/src/server/game/Spells/Auras/SpellEffects.cpp
index f765acb1f2a..0d44be000a8 100644
--- a/src/server/game/Spells/Auras/SpellEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellEffects.cpp
@@ -391,8 +391,9 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
return;
break;
}
- // gruul's shatter
- case 33671:
+ case 33671: // gruul's shatter
+ case 50811: //krystallus shatter ( Normal )
+ case 61547: //krystallus shatter ( Heroic )
{
// don't damage self and only players
if (unitTarget->GetGUID() == m_caster->GetGUID() || unitTarget->GetTypeId() != TYPEID_PLAYER)
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
index 3ab55799ea3..071bc8d01ad 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
@@ -20,6 +20,9 @@ enum Spells
SPELL_GROUND_SLAM = 50827,
SPELL_SHATTER = 50810,
H_SPELL_SHATTER = 61546,
+ SPELL_SHATTER_EFFECT = 50811,
+ H_SPELL_SHATTER_EFFECT = 61547,
+ SPELL_STONED = 50812,
SPELL_STOMP = 48131,
H_SPELL_STOMP = 59744
};
@@ -108,8 +111,7 @@ struct boss_krystallusAI : public ScriptedAI
{
if (uiShatterTimer <= diff)
{
- DoCast(me, SPELL_SHATTER);
- bIsSlam = false;
+ DoCast(me, DUNGEON_MODE(SPELL_SHATTER, H_SPELL_SHATTER));
} else uiShatterTimer -= diff;
}
@@ -130,6 +132,32 @@ struct boss_krystallusAI : public ScriptedAI
return;
DoScriptText(SAY_KILL, me);
}
+
+ void SpellHitTarget(Unit* pTarget, const SpellEntry* pSpell)
+ {
+ //this part should be in the core
+ if (pSpell->Id == SPELL_SHATTER || pSpell->Id == H_SPELL_SHATTER)
+ {
+ //this spell must have custom handling in the core, dealing damage based on distance
+ pTarget->CastSpell(pTarget, DUNGEON_MODE(SPELL_SHATTER_EFFECT, H_SPELL_SHATTER_EFFECT), true);
+
+ if (pTarget->HasAura(SPELL_STONED))
+ pTarget->RemoveAurasDueToSpell(SPELL_STONED);
+
+ //clear this, if we are still performing
+ if (bIsSlam)
+ {
+ bIsSlam = false;
+
+ //and correct movement, if not already
+ if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() != TARGETED_MOTION_TYPE)
+ {
+ if (me->getVictim())
+ me->GetMotionMaster()->MoveChase(me->getVictim());
+ }
+ }
+ }
+ }
};
CreatureAI* GetAI_boss_krystallus(Creature* pCreature)