Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
- index 6ffe614..d34caef 100644
- --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
- +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
- @@ -128,6 +128,7 @@ enum Spells
- SPELL_UNDEATH = 70089,
- SPELL_IMPALING_SPEAR = 71443,
- SPELL_AETHER_SHIELD = 71463,
- + SPELL_DIVINE_SURGE = 71465,
- SPELL_HURL_SPEAR = 71466,
- // Captain Arnath
- @@ -733,12 +734,16 @@ class boss_sister_svalna : public CreatureScript
- void Reset()
- {
- _Reset();
- - me->SetReactState(REACT_DEFENSIVE);
- + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
- + me->RemoveAurasDueToSpell(SPELL_DIVINE_SURGE);
- + _impaledguid = 0;
- _isEventInProgress = false;
- }
- void JustDied(Unit* /*killer*/)
- {
- + if (_impaledguid)
- + RemoveSpike();
- _JustDied();
- Talk(SAY_SVALNA_DEATH);
- @@ -763,8 +768,7 @@ class boss_sister_svalna : public CreatureScript
- crok->AI()->Talk(SAY_CROK_COMBAT_SVALNA);
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_1);
- events.ScheduleEvent(EVENT_SVALNA_COMBAT, 9000);
- - events.ScheduleEvent(EVENT_IMPALING_SPEAR, urand(40000, 50000));
- - events.ScheduleEvent(EVENT_AETHER_SHIELD, urand(100000, 110000));
- + events.ScheduleEvent(EVENT_IMPALING_SPEAR, urand(20000, 30000));
- }
- void KilledUnit(Unit* victim)
- @@ -772,6 +776,8 @@ class boss_sister_svalna : public CreatureScript
- switch (victim->GetTypeId())
- {
- case TYPEID_PLAYER:
- + if (victim->GetGUID() == _impaledguid)
- + _impaledguid = 0;
- Talk(SAY_SVALNA_KILL);
- break;
- case TYPEID_UNIT:
- @@ -795,6 +801,7 @@ class boss_sister_svalna : public CreatureScript
- void JustReachedHome()
- {
- _JustReachedHome();
- + me->RemoveAurasDueToSpell(SPELL_DIVINE_SURGE);
- me->SetReactState(REACT_PASSIVE);
- }
- @@ -835,6 +842,18 @@ class boss_sister_svalna : public CreatureScript
- }
- }
- + void RemoveSpike()
- + {
- + if (!_impaledguid)
- + return;
- + if (Player* _impaled = sObjectMgr->GetPlayer(_impaledguid))
- + {
- + _impaled->RemoveAurasDueToSpell(VEHICLE_SPELL_RIDE_HARDCODED);
- + _impaled->RemoveAurasDueToSpell(SPELL_IMPALING_SPEAR);
- + _impaledguid = 0;
- + }
- + }
- +
- void SpellHitTarget(Unit* target, SpellEntry const* spell)
- {
- switch (spell->Id)
- @@ -854,8 +873,9 @@ class boss_sister_svalna : public CreatureScript
- {
- Talk(EMOTE_SVALNA_IMPALE, target->GetGUID());
- summon->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_UNK1 | 0x4000);
- - summon->CastCustomSpell(VEHICLE_SPELL_RIDE_HARDCODED, SPELLVALUE_BASE_POINT0, 1, target, false);
- - }
- + summon->CastCustomSpell(VEHICLE_SPELL_RIDE_HARDCODED, SPELLVALUE_BASE_POINT0, 1, target, false);
- + _impaledguid = target->GetGUID();
- + }
- break;
- default:
- break;
- @@ -872,6 +892,9 @@ class boss_sister_svalna : public CreatureScript
- if (me->HasUnitState(UNIT_STAT_CASTING))
- return;
- + if (!GetClosestCreatureWithEntry(me, NPC_IMPALING_SPEAR, 50000.0f))
- + RemoveSpike();
- +
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- @@ -886,13 +909,27 @@ class boss_sister_svalna : public CreatureScript
- case EVENT_SVALNA_COMBAT:
- me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_1);
- me->SetReactState(REACT_DEFENSIVE);
- + DoCast(me, SPELL_DIVINE_SURGE, true);
- Talk(SAY_SVALNA_AGGRO);
- break;
- case EVENT_IMPALING_SPEAR:
- + if (_impaledguid)
- + break;
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -SPELL_IMPALING_SPEAR))
- - DoCast(target, SPELL_IMPALING_SPEAR);
- - events.ScheduleEvent(EVENT_IMPALING_SPEAR, urand(20000, 25000));
- - break;
- + {
- + if (Creature* _oldspike = GetClosestCreatureWithEntry(me, NPC_IMPALING_SPEAR, 50000.0f))
- + {
- + _oldspike->DespawnOrUnsummon();
- + RemoveSpike();
- + }
- + DoCast(target, SPELL_IMPALING_SPEAR);
- + events.ScheduleEvent(EVENT_AETHER_SHIELD, 5000);
- + }
- + events.ScheduleEvent(EVENT_IMPALING_SPEAR, urand(40000, 50000));
- + break;
- + case EVENT_AETHER_SHIELD:
- + DoCast(me, SPELL_AETHER_SHIELD, true);
- + break;
- default:
- break;
- }
- @@ -902,6 +939,7 @@ class boss_sister_svalna : public CreatureScript
- }
- private:
- + uint64 _impaledguid;
- bool _isEventInProgress;
- };
Advertisement
Add Comment
Please, Sign In to add comment