void Aggro(Unit *pWho) { if(!pInstance) return; if (pWho->GetTypeId() != TYPEID_PLAYER) return; Creature* pBlightTarget = m_creature->GetMap()->GetCreature(blightTargetGUID); pInstance->SetData(TYPE_FESTERGUT, IN_PROGRESS); DoScriptText(-1631203,m_creature,pWho); if (pBlightTarget && !pBlightTarget->isAlive()) pBlightTarget->Respawn(); if (pBlightTarget) { pBlightTarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); pBlightTarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); doRemove(SPELL_BLIGHT_VISUAL_1,pBlightTarget); doRemove(SPELL_BLIGHT_VISUAL_2,pBlightTarget); doRemove(SPELL_BLIGHT_VISUAL_3,pBlightTarget); doCast(SPELL_BLIGHT_VISUAL_1,pBlightTarget); } doCast(SPELL_GASEOUS_BLIGHT_1); doRemoveFromAll(SPELL_BLIGHT_VISUAL_3); doRemoveFromAll(SPELL_BLIGHT_VISUAL_2); doRemoveFromAll(SPELL_BLIGHT_VISUAL_1); /* for(uint8 i = 0; i < 3; ++i) if (pPuddleStalkerGUID[i]) doCast(SPELL_GASEOUS_SPIGOT, m_creature->GetMap()->GetCreature(pPuddleStalkerGUID[i])); */ }
void JustReachedHome() { if (!pInstance) return; pInstance->SetData(TYPE_FESTERGUT, FAIL); doRemoveFromAll(SPELL_BLIGHT_VISUAL_1); doRemoveFromAll(SPELL_BLIGHT_VISUAL_2); doRemoveFromAll(SPELL_BLIGHT_VISUAL_3); if (Creature* pBlightTarget = m_creature->GetMap()->GetCreature(blightTargetGUID)) { doCast(SPELL_BLIGHT_VISUAL_1,pBlightTarget); } }
void JustDied(Unit *killer) { if(!pInstance) return; pInstance->SetData(TYPE_LANATHEL, DONE); DoScriptText(-1631333,m_creature,killer); m_creature->SetUInt32Value(UNIT_FIELD_BYTES_0, 0); m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); doRemoveFromAll(getSpellWithDifficulty(SPELL_ESSENCE_OF_BLOOD_QWEEN)); doRemoveFromAll(SPELL_ESSENCE_OF_BLOOD_QWEEN_2); doRemoveFromAll(SPELL_PACT_OF_DARKFALLEN); doRemoveFromAll(SPELL_BLOOD_MIRROR); doRemoveFromAll(SPELL_BLOOD_MIRROR_MARK); }
void JustDied(Unit *killer) { if (!pInstance) return; pInstance->SetData(TYPE_FESTERGUT, DONE); pInstance->SetData(TYPE_EVENT, 550); DoScriptText(-1631206,m_creature); Creature* pBlightTarget = m_creature->GetMap()->GetCreature(blightTargetGUID); doRemoveFromAll(SPELL_BLIGHT_VISUAL_1); doRemoveFromAll(SPELL_BLIGHT_VISUAL_2); doRemoveFromAll(SPELL_BLIGHT_VISUAL_3); if (pBlightTarget) { doCast(SPELL_BLIGHT_VISUAL_1,pBlightTarget); } /* for(uint8 i = 0; i < 3; ++i) if (pPuddleStalkerGUID[i]) { Creature* pTemp = m_creature->GetMap()->GetCreature(pPuddleStalkerGUID[i]); if (pTemp) pTemp->ForcedDespawn(); pPuddleStalkerGUID[i] = NULL; } */ }
void UpdateAI(const uint32 diff) { if(!pInstance) return; if (!pet) { if (Creature* pGuard = pInstance->GetSingleCreatureFromStorage(NPC_STINKY)) if (!pGuard->isAlive()) { pet = true; if (pInstance->GetData(TYPE_STINKY) == NOT_STARTED) { DoScriptText(-1631209,m_creature); pInstance->SetData(TYPE_STINKY,DONE); } } } if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; Creature* pBlightTarget = m_creature->GetMap()->GetCreature(blightTargetGUID); switch(getStage()) { case 0: if (timedQuery(SPELL_GASEOUS_BLIGHT_2, diff)) setStage(1); break; case 1: switch (urand(0,2)) { case 0: DoScriptText(-1631210,m_creature); break; case 1: DoScriptText(-1631211,m_creature); break; case 2: DoScriptText(-1631212,m_creature); break; } doCast(SPELL_INHALE_BLIGHT); setStage(2); break; case 2: if (m_creature->IsNonMeleeSpellCasted(false)) return; if (pBlightTarget) { doRemove(SPELL_GASEOUS_BLIGHT_1); doRemove(SPELL_BLIGHT_VISUAL_1,pBlightTarget); doRemove(SPELL_BLIGHT_VISUAL_1,m_creature); doCast(SPELL_GASEOUS_BLIGHT_2); doRemoveFromAll(SPELL_BLIGHT_VISUAL_3); doRemoveFromAll(SPELL_BLIGHT_VISUAL_2); doRemoveFromAll(SPELL_BLIGHT_VISUAL_1); } setStage(3); break; case 3: if (timedQuery(SPELL_GASEOUS_BLIGHT_3, diff)) setStage(4); break; case 4: switch (urand(0,2)) { case 0: DoScriptText(-1631210,m_creature); break; case 1: DoScriptText(-1631211,m_creature); break; case 2: DoScriptText(-1631212,m_creature); break; } doCast(SPELL_INHALE_BLIGHT); setStage(5); break; case 5: if (m_creature->IsNonMeleeSpellCasted(false)) return; if (pBlightTarget) { doRemove(SPELL_GASEOUS_BLIGHT_2); doRemove(SPELL_BLIGHT_VISUAL_2,pBlightTarget); doRemove(SPELL_BLIGHT_VISUAL_2,m_creature); doCast(SPELL_GASEOUS_BLIGHT_3); doRemoveFromAll(SPELL_BLIGHT_VISUAL_3); doRemoveFromAll(SPELL_BLIGHT_VISUAL_2); doRemoveFromAll(SPELL_BLIGHT_VISUAL_1); } setStage(6); break; case 6: if (timedQuery(SPELL_GASEOUS_BLIGHT_3, diff)) setStage(7); break; case 7: switch (urand(0,2)) { case 0: DoScriptText(-1631210,m_creature); break; case 1: DoScriptText(-1631211,m_creature); break; case 2: DoScriptText(-1631212,m_creature); break; } doCast(SPELL_INHALE_BLIGHT); setStage(8); break; case 8: if (m_creature->IsNonMeleeSpellCasted(false)) return; if (pBlightTarget) { doRemove(SPELL_GASEOUS_BLIGHT_3); doRemove(SPELL_BLIGHT_VISUAL_3,pBlightTarget); doRemove(SPELL_BLIGHT_VISUAL_3,m_creature); doRemoveFromAll(SPELL_BLIGHT_VISUAL_3); doRemoveFromAll(SPELL_BLIGHT_VISUAL_2); doRemoveFromAll(SPELL_BLIGHT_VISUAL_1); } setStage(9); break; case 9: if (timedQuery(SPELL_PUNGENT_BLIGHT, diff)) { DoScriptText(-1631208,m_creature); doCast(SPELL_PUNGENT_BLIGHT); setStage(10); } break; case 10: if (m_creature->IsNonMeleeSpellCasted(false)) return; if (pBlightTarget) { doCast(SPELL_BLIGHT_VISUAL_1,pBlightTarget); doRemoveFromAll(SPELL_BLIGHT_VISUAL_3); doRemoveFromAll(SPELL_BLIGHT_VISUAL_2); doRemoveFromAll(SPELL_BLIGHT_VISUAL_1); } m_creature->RemoveAurasDueToSpell(SPELL_INHALED_BLIGHT); setStage(0); break; } timedCast(SPELL_GAS_SPORE, diff); timedCast(SPELL_GASTRIC_BLOAT, diff); if (timedQuery(SPELL_VILE_GAS, diff)) { float fPosX, fPosY, fPosZ; m_creature->GetPosition(fPosX, fPosY, fPosZ); m_creature->GetRandomPoint(fPosX, fPosY, fPosZ, 30.0f, fPosX, fPosY, fPosZ); if (Unit* pTemp = doSummon(NPC_VILE_GAS_STALKER,fPosX, fPosY, fPosZ)) doCast(SPELL_VILE_GAS, pTemp); DoScriptText(-1631213,m_creature); }; if (timedQuery(SPELL_BERSERK, diff)) { doCast(SPELL_BERSERK); DoScriptText(-1631207,m_creature); }; DoMeleeAttackIfReady(); }