void Wall03() { switch(Step) { case 0: m_pInstance->SetData(DATA_SUMMONS, 3); SetEscortPaused(true); DoCast(me, SPELL_RAISE_DEAD); DoScriptText(SAY_LICH_KING_GNOUL, me); StepTimer = 10000; ++Step; break; case 1: SetEscortPaused(false); DoScriptText(SAY_LICH_KING_ABON, me); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_ABON); CallGuard(NPC_ABON); m_pInstance->SetData(TYPE_ICE_WALL_03, DONE); StepTimer = 100; Step = 0; break; } }
void Wall03() { switch(_stepCount) { case 0: instance->SetData(DATA_SUMMONS, 3); DoCast(me, SPELL_RAISE_DEAD); Talk(SAY_LICH_KING_GNOUL); _stepTimer = 7000; ++_stepCount; break; case 1: Talk(SAY_LICH_KING_ABON); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_ABON); CallGuard(NPC_ABON); instance->SetData(DATA_ICE_WALL_3, DONE); _stepTimer = 6000; _stepCount = 0; _wallEntry = 0; SetEscortPaused(false); break; } }
void Wall03() { switch(Step) { case 0: pInstance->SetData(DATA_SUMMONS, 3); DoCast(me, SPELL_RAISE_DEAD); Talk(SAY_LICH_KING_GNOUL); StepTimer = 6000; ++Step; break; case 1: Talk(SAY_LICH_KING_ABON); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_ABON); CallGuard(NPC_ABON); pInstance->SetData(DATA_ICE_WALL_3, DONE); StepTimer = 5000; Step = 0; uiWall = 0; SetEscortPaused(false); break; } }
void Wall04() { switch (Step) { case 0: SetEscortPaused(true); DoCast(m_creature, SPELL_RAISE_DEAD); DoScriptText(SAY_LICH_KING_GNOUL, m_creature); StepTimer = 10000; ++Step; break; case 1: SetEscortPaused(false); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_ABON); CallGuard(NPC_ABON); StepTimer = 15000; ++Step; break; case 2: DoScriptText(SAY_LICH_KING_ABON, m_creature); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_RISEN_WITCH_DOCTOR); m_pInstance->SetData(TYPE_ICE_WALL_04, DONE); ++Step; break; } }
void Wall04() { switch(Step) { case 0: instance->SetData(DATA_SUMMONS, 3); DoCast(me, SPELL_RAISE_DEAD); DoScriptText(SAY_LICH_KING_GNOUL, me); StepTimer = 6000; ++Step; break; case 1: CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_ABON); CallGuard(NPC_ABON); StepTimer = 15000; ++Step; break; case 2: DoScriptText(SAY_LICH_KING_ABON, me); CallGuard(NPC_RISEN_WITCH_DOCTOR); CallGuard(NPC_RISEN_WITCH_DOCTOR); instance->SetData(DATA_ICE_WALL_4, DONE); uiWall = 0; SetEscortPaused(false); ++Step; break; } }
void Wall01() { switch(Step) { case 0: SetEscortPaused(true); m_pInstance->SetData(DATA_SUMMONS, 3); DoScriptText(SAY_LICH_KING_WALL_01, me); DoCast(me, SPELL_DESTROY_ICE_WALL_02); StepTimer = 2000; ++Step; break; case 1: StepTimer = 2000; ++Step; break; case 2: DoCast(me, SPELL_RAISE_DEAD); DoScriptText(SAY_LICH_KING_GNOUL, me); StepTimer = 7000; ++Step; break; case 3: DoCast(me, SPELL_WINTER); DoScriptText(SAY_LICH_KING_WINTER, me); me->SetSpeed(MOVE_WALK, 1.1f, true); StepTimer = 1000; ++Step; break; case 4: SetEscortPaused(false); StepTimer = 2000; ++Step; break; case 5: CallGuard(NPC_RISEN_WITCH_DOCTOR); m_pInstance->SetData(TYPE_ICE_WALL_01, DONE); StepTimer = 100; Step = 0; break; } }
void Wall01() { switch(Step) { case 0: pInstance->SetData(DATA_SUMMONS, 3); Talk(SAY_LICH_KING_WALL_01); StepTimer = 2000; ++Step; break; case 1: DoCast(me, SPELL_RAISE_DEAD); Talk(SAY_LICH_KING_GNOUL); StepTimer = 7000; ++Step; break; case 2: me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE ); // DoCast(me, SPELL_PAIN_AND_SUFFERING); Spell is currently broken, it also does damage to people in front of you. DoCast(me, SPELL_WINTER); Talk(SAY_LICH_KING_WINTER); me->SetSpeed(MOVE_WALK, walkSpeed, true); StepTimer = 1000; ++Step; break; case 3: StepTimer = 2000; ++Step; break; case 4: CallGuard(NPC_RISEN_WITCH_DOCTOR); pInstance->SetData(DATA_ICE_WALL_1, DONE); StepTimer = 100; Step = 0; uiWall = 0; SetEscortPaused(false); break; } }
void Wall01() { switch(_stepCount) { case 0: instance->SetData(DATA_SUMMONS, 3); Talk(SAY_LICH_KING_WALL_01); _stepTimer = 3000; ++_stepCount; break; case 1: DoCast(me, SPELL_RAISE_DEAD); Talk(SAY_LICH_KING_GNOUL); _stepTimer = 8000; ++_stepCount; break; case 2: DoCast(me, SPELL_WINTER); Talk(SAY_LICH_KING_WINTER); me->SetSpeed(MOVE_WALK, _walkSpeed, true); _stepTimer = 2000; ++_stepCount; break; case 3: _stepTimer = 3000; ++_stepCount; break; case 4: CallGuard(NPC_RISEN_WITCH_DOCTOR); instance->SetData(DATA_ICE_WALL_1, DONE); _stepTimer = 100; _stepCount = 0; _wallEntry = 0; SetEscortPaused(false); break; } }
void Wall01() { switch(Step) { case 0: instance->SetData(DATA_SUMMONS, 3); DoScriptText(SAY_LICH_KING_WALL_01, me); StepTimer = 2000; ++Step; break; case 1: DoCast(me, SPELL_RAISE_DEAD); DoScriptText(SAY_LICH_KING_GNOUL, me); StepTimer = 7000; ++Step; break; case 2: DoCast(me, SPELL_WINTER); DoScriptText(SAY_LICH_KING_WINTER, me); StepTimer = 1000; ++Step; break; case 3: StepTimer = 2000; ++Step; break; case 4: CallGuard(NPC_RISEN_WITCH_DOCTOR); instance->SetData(DATA_ICE_WALL_1, DONE); StepTimer = 100; Step = 0; wall = 0; SetEscortPaused(false); break; } }
void UpdateAI(const uint32 uiDiff) { if (m_bIntro && m_uiIntroTimer <= uiDiff) { switch (m_uiStage) { case 0: DoScriptText(SAY_INTRO_01, m_creature); m_uiStage = 1; m_uiIntroTimer = 5*IN_MILLISECONDS; break; case 1: DoScriptText(SAY_INTRO_02, m_creature); m_uiStage = 2; m_uiIntroTimer = 5*IN_MILLISECONDS; break; case 2: DoScriptText(SAY_INTRO_03, m_creature); m_uiStage = 3; m_bIntro = false; break; default: break; } } else m_uiIntroTimer -= uiDiff; if (m_creature->HasAura(SPELL_MANA_BARRIER)) { if (m_creature->GetHealth() <= m_creature->GetMaxHealth()) { if (m_creature->GetPower(POWER_MANA) > (m_creature->GetMaxHealth() - m_creature->GetHealth())) { m_creature->SetPower(POWER_MANA, m_creature->GetPower(POWER_MANA) - (m_creature->GetMaxHealth() - m_creature->GetHealth())); m_creature->SetHealth(m_creature->GetMaxHealth()); } else m_creature->SetPower(POWER_MANA, 0); } } if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; if (m_bMovementStarted) return; DoControlObsessedPlayers(); switch (m_uiStage) { case 3: if (IsCombatMovement()) SetCombatMovement(false); if (m_uiShadowBoltTimer <= uiDiff) { if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) { switch (m_uiMode) { case RAID_DIFFICULTY_10MAN_NORMAL: case RAID_DIFFICULTY_10MAN_HEROIC: DoCast(pTarget, SPELL_SHADOW_BOLT_N); break; case RAID_DIFFICULTY_25MAN_NORMAL: case RAID_DIFFICULTY_25MAN_HEROIC: DoCast(pTarget, SPELL_SHADOW_BOLT_H); break; } m_uiShadowBoltTimer = urand(5*IN_MILLISECONDS, 8*IN_MILLISECONDS); } } else m_uiShadowBoltTimer -= uiDiff; if (m_uiSummonGuardsTimer <= uiDiff) { switch (m_uiMode) { case RAID_DIFFICULTY_10MAN_NORMAL: CallGuards(); m_uiSummonGuardsTimer = MINUTE*IN_MILLISECONDS; break; case RAID_DIFFICULTY_25MAN_NORMAL: CallGuards(); m_uiSummonGuardsTimer = 40*IN_MILLISECONDS; break; case RAID_DIFFICULTY_10MAN_HEROIC: CallGuards(); m_uiSummonGuardsTimer = MINUTE*IN_MILLISECONDS; break; case RAID_DIFFICULTY_25MAN_HEROIC: CallGuards(); m_uiSummonGuardsTimer = 40*IN_MILLISECONDS; break; default: m_uiSummonGuardsTimer = MINUTE*IN_MILLISECONDS; break; } } else m_uiSummonGuardsTimer -= uiDiff; break; case 4: if (m_uiFrostboltTimer <= uiDiff) { switch (m_uiMode) { case RAID_DIFFICULTY_10MAN_NORMAL: DoCast(m_creature->getVictim(), SPELL_FROSTBOLT_10_N); break; case RAID_DIFFICULTY_25MAN_NORMAL: case RAID_DIFFICULTY_10MAN_HEROIC: case RAID_DIFFICULTY_25MAN_HEROIC: DoCast(m_creature->getVictim(), SPELL_FROSTBOLT_25); break; default: break; } m_uiFrostboltTimer = urand(10*IN_MILLISECONDS, 20*IN_MILLISECONDS); } else m_uiFrostboltTimer -= uiDiff; if (m_uiFrostboltVolleyTimer <= uiDiff) { switch (m_uiMode) { case RAID_DIFFICULTY_10MAN_NORMAL: DoCast(m_creature->getVictim(), SPELL_FROSTBOLT_VOLLEY_10_N); break; case RAID_DIFFICULTY_25MAN_NORMAL: DoCast(m_creature->getVictim(), SPELL_FROSTBOLT_VOLLEY_25_N); break; case RAID_DIFFICULTY_10MAN_HEROIC: case RAID_DIFFICULTY_25MAN_HEROIC: DoCast(m_creature->getVictim(), SPELL_FROSTBOLT_VOLLEY_H); break; default: break; } m_uiFrostboltVolleyTimer = urand(10*IN_MILLISECONDS, 20*IN_MILLISECONDS); } else m_uiFrostboltVolleyTimer -= uiDiff; if (m_uiTouchOfInsignificanceTimer <= uiDiff) { DoCast(m_creature->getVictim(), SPELL_TOUCH_OF_INSIGNIFICANCE); m_uiTouchOfInsignificanceTimer = urand(10*IN_MILLISECONDS, 20*IN_MILLISECONDS); } else m_uiTouchOfInsignificanceTimer -= uiDiff; if (m_uiSummonSpiritTimer <= uiDiff) { CallSpirit(); m_uiSummonSpiritTimer = urand(8*IN_MILLISECONDS, 15*IN_MILLISECONDS); } else m_uiSummonSpiritTimer -= uiDiff; if (m_uiSummonGuardsTimer <= uiDiff) { switch (m_uiMode) { case RAID_DIFFICULTY_10MAN_NORMAL: break; case RAID_DIFFICULTY_25MAN_NORMAL: break; case RAID_DIFFICULTY_10MAN_HEROIC: CallGuard(); m_uiSummonGuardsTimer = 45*IN_MILLISECONDS; break; case RAID_DIFFICULTY_25MAN_HEROIC: CallGuards(); m_uiSummonGuardsTimer = 60*IN_MILLISECONDS; break; default: break; } } else m_uiSummonGuardsTimer -= uiDiff; break; } if (m_uiMode != RAID_DIFFICULTY_10MAN_NORMAL) { if (m_uiDominateMindTimer <= uiDiff) { DominateMind(); switch (m_uiMode) { case RAID_DIFFICULTY_10MAN_HEROIC: case RAID_DIFFICULTY_25MAN_NORMAL: m_uiDominateMindTimer = urand(12*IN_MILLISECONDS, 15*IN_MILLISECONDS); break; case RAID_DIFFICULTY_25MAN_HEROIC: m_uiDominateMindTimer = urand(4*IN_MILLISECONDS, 6*IN_MILLISECONDS); break; default: m_uiDominateMindTimer = 0; break; } } else m_uiDominateMindTimer -= uiDiff; } if (m_uiDeathAndDecayTimer <= uiDiff) { if(Unit *pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) { if(pTarget) { switch (m_uiMode) { case RAID_DIFFICULTY_10MAN_NORMAL: case RAID_DIFFICULTY_10MAN_HEROIC: DoCast(pTarget, SPELL_DEATH_AND_DECAY_10); break; case RAID_DIFFICULTY_25MAN_NORMAL: DoCast(pTarget, SPELL_DEATH_AND_DECAY_25_N); break; case RAID_DIFFICULTY_25MAN_HEROIC: DoCast(pTarget, SPELL_DEATH_AND_DECAY_25_H); break; default: break; } } } m_uiDeathAndDecayTimer = urand(10*IN_MILLISECONDS, 20*IN_MILLISECONDS); } else m_uiDeathAndDecayTimer -= uiDiff; if(!m_creature->HasAura(SPELL_MANA_BARRIER) && m_uiStage == 3) { m_uiStage = 4; DoScriptText(SAY_PHASE2_01, m_creature); SetCombatMovement(false); m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); } if(m_uiBerserkTimer <= uiDiff) { DoCast(m_creature, SPELL_BERSERK); DoScriptText(SAY_BERSERK_01, m_creature); }; if (m_uiStage == 4) DoMeleeAttackIfReady(); }