diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index 22adbf3e4dc..69b749b1f11 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -126,6 +126,7 @@ enum Spells SPELL_LIFE_SIPHON = 73488, SPELL_LIFE_SIPHON_HEAL = 73489, SPELL_EJECT_ALL_PASSENGERS = 68576, + SPELL_VALKYR_TRANSFORM = 73501, // Phase 3 SPELL_VILE_SPIRITS = 70498, @@ -1442,7 +1443,10 @@ private: struct npc_valkyr_shadowguard : public ScriptedAI { - npc_valkyr_shadowguard(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { } + npc_valkyr_shadowguard(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) + { + SetCombatMovement(false); + } void Reset() override { @@ -1479,10 +1483,6 @@ struct npc_valkyr_shadowguard : public ScriptedAI me->ClearUnitState(UNIT_STATE_EVADE); } - void AttackStart(Unit* /*target*/) override - { - } - void MovementInform(uint32 type, uint32 id) override { if (type != POINT_MOTION_TYPE) @@ -1512,13 +1512,15 @@ struct npc_valkyr_shadowguard : public ScriptedAI triggers.sort(Trinity::ObjectDistanceOrderPred(me)); DoCast(target, SPELL_VALKYR_CARRY); _dropPoint.Relocate(triggers.front()); - _events.ScheduleEvent(EVENT_MOVE_TO_DROP_POS, 1500ms); + _events.ScheduleEvent(EVENT_MOVE_TO_DROP_POS, 1s + 500ms); } } else me->DespawnOrUnsummon(); break; case POINT_SIPHON: + DoCastSelf(SPELL_VALKYR_TRANSFORM); + me->SetReactState(REACT_AGGRESSIVE); DoZoneInCombat(); _events.ScheduleEvent(EVENT_LIFE_SIPHON, 2s); break; @@ -1557,9 +1559,8 @@ struct npc_valkyr_shadowguard : public ScriptedAI me->GetMotionMaster()->MovePoint(POINT_DROP_PLAYER, _dropPoint); break; case EVENT_LIFE_SIPHON: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) - DoCast(target, SPELL_LIFE_SIPHON); - _events.ScheduleEvent(EVENT_LIFE_SIPHON, 2500ms); + DoCastVictim(SPELL_LIFE_SIPHON); + _events.Repeat(2s + 500ms); break; case EVENT_MOVE_TO_CENTER: { @@ -1571,6 +1572,9 @@ struct npc_valkyr_shadowguard : public ScriptedAI default: break; } + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; } // no melee attacks |
