Пример #1
0
        void Reset()
        {
            bIsFrenzy = false;

            uiChainLightningTimer = urand(5000, 8000);
            uiStaticChargeTimer = urand(15000, 20000);
            uiLightningRingTimer = urand(25000, 30000);
            uiLightningShieldTimer = urand(10000, 15000);
            uiSummonTimer = 1000;
            uiCheckPhaseTimer = 1000;
            uiKilledIronSludges = 0;
            uiSummonPhase = 1;
            uiSummonEntry = CREATURE_FORGED_IRON_DWARF;
            lSummons.DespawnAll();

            if(pInstance)
                pInstance->SetData(DATA_SJONNIR_EVENT, NOT_STARTED);

            CheckLightningShield();
        }
Пример #2
0
        void UpdateAI(const uint32 diff)
        {
            //Return since we have no target
            if (!UpdateVictim())
                return;

            if (uiChainLightningTimer <= diff)
            {
                if (!me->IsNonMeleeSpellCasted(false))
                {
                    if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
                        DoCast(pTarget, SPELL_CHAIN_LIGHTING);
                    uiChainLightningTimer = urand(12000, 15000);
                }
            } else uiChainLightningTimer -= diff;

            if (uiStaticChargeTimer <= diff)
            {
                if (!me->IsNonMeleeSpellCasted(false))
                {
                    if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
                        DoCast(pTarget, SPELL_STATIC_CHARGE);
                    uiStaticChargeTimer = 25000;
                }
            } else uiStaticChargeTimer -= diff;

            if (uiLightningRingTimer <= diff)
            {
                if (!me->IsNonMeleeSpellCasted(false))
                {
                    DoCast(me, SPELL_LIGHTING_RING);
                    uiLightningRingTimer = urand(30000, 35000);
                }
            } else uiLightningRingTimer -= diff;

            if (uiLightningShieldTimer <= diff)
            {
                if (!me->IsNonMeleeSpellCasted(false))
                {
                    CheckLightningShield();
                    uiLightningShieldTimer = urand(45000, 55000);
                }
            } else uiLightningShieldTimer -= diff;

            if (uiCheckPhaseTimer <= diff)
            {
                if (HealthBelowPct(75) && uiSummonPhase == 1)
                {
                    uiSummonEntry = CREATURE_FORGED_IRON_TROGG;
                    uiSummonTimer = 1000;
                    uiSummonPhase = 2;
                } 
                else if (HealthBelowPct(50) && uiSummonPhase == 2)
                {
                    uiSummonEntry = CREATURE_MALFORMED_OOZE;
                    uiSummonTimer = 1000;
                    uiSummonPhase = 3;
                }
                else if (HealthBelowPct(25) && uiSummonPhase == 3)
                {
                    uiSummonEntry = CREATURE_EARTHEN_DWARF;
                    uiSummonTimer = 1000;
                    uiSummonPhase = 4;
                }
                
                uiCheckPhaseTimer = 1000;

            } else uiCheckPhaseTimer -= diff;

            if (uiSummonTimer <= diff)
            {
                uint32 rnd = urand(0, 1);
                
                if (uiSummonEntry)
                    me->SummonCreature(uiSummonEntry, PipeLocations[rnd].x, PipeLocations[rnd].y, PipeLocations[rnd].z, 0.0f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);

                switch (uiSummonPhase)
                {
                    case 1: uiSummonTimer = 20000; break;
                    case 2: uiSummonTimer = 7500; break;
                    case 3: uiSummonTimer = 2500; break;
                    case 4: uiSummonTimer = 5000; break;
                }

            } else uiSummonTimer -= diff;

            if (!bIsFrenzy)
                if (HealthBelowPct(25))
                    if (!me->IsNonMeleeSpellCasted(false))
                    {
                        //DoScriptText(EMOTE_GENERIC_FRENZY, me);
                        DoCast(me, SPELL_FRENZY);
                        bIsFrenzy = true;
                    }
                            
            DoMeleeAttackIfReady();
        }
Пример #3
0
 void JustReachedHome()
 {
     CheckLightningShield();
 }