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(); }
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(); }
void JustReachedHome() { CheckLightningShield(); }