Ejemplo n.º 1
0
 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;
     }
 }
Ejemplo n.º 2
0
 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;
     }
 }
Ejemplo n.º 3
0
 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;
     }
 }
Ejemplo n.º 4
0
 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;
    }
 }
Ejemplo n.º 5
0
 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;
     }
 }
Ejemplo n.º 6
0
 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;
     }
 }
Ejemplo n.º 7
0
 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;
     }
 }
Ejemplo n.º 8
0
 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;
     }
 }
Ejemplo n.º 10
0
    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();
    }