void JustDied(Unit* pKiller) { if (defaultTarget && defaultTarget->isAlive()) bsw->doRemove(SPELL_SNOBOLLED, defaultTarget); // if (pBoss && pBoss->isAlive()) bsw->doRemove(SPELL_RISING_ANGER,pBoss); // This string - not offlike, in off this buff not removed! especially for small servers. }
void UpdateAI(const uint32 uiDiff) { if ((!m_creature->SelectHostileTarget() || !m_creature->getVictim()) && (m_pInstance->GetData(TYPE_NORTHREND_BEASTS) != DREADSCALE_SUBMERGED)) return; switch (stage) { case 0: { bsw->timedCast(SPELL_BURNING_BITE, uiDiff); bsw->timedCast(SPELL_MOLTEN_SPEW, uiDiff); bsw->timedCast(SPELL_FIRE_SPIT, uiDiff); bsw->timedCast(SPELL_BURNING_SPRAY, uiDiff); bsw->timedCast(SPELL_SWEEP_0, uiDiff); if (m_pInstance->GetData(TYPE_NORTHREND_BEASTS) == DREADSCALE_SUBMERGED) stage = 1; break; } case 1: { m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); bsw->doCast(SPELL_SUBMERGE_0); stage = 2; DoScriptText(-1713557,m_creature); m_pInstance->SetData(TYPE_NORTHREND_BEASTS, DREADSCALE_SUBMERGED); break; } case 2: { if (bsw->timedQuery(SPELL_SLIME_POOL, uiDiff)) bsw->doCast(NPC_SLIME_POOL); if (bsw->timedQuery(SPELL_SUBMERGE_0, uiDiff) && m_pInstance->GetData(TYPE_NORTHREND_BEASTS) == DREADSCALE_SUBMERGED) stage = 3; break; } case 3: { DoScriptText(-1713559,m_creature); bsw->doRemove(SPELL_SUBMERGE_0); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); stage = 0; m_pInstance->SetData(TYPE_NORTHREND_BEASTS, ACIDMAW_SUBMERGED); break; } } if (m_pInstance->GetData(TYPE_NORTHREND_BEASTS) == SNAKES_SPECIAL && !enraged) { DoScriptText(-1713559,m_creature); bsw->doRemove(SPELL_SUBMERGE_0); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); bsw->doCast(SPELL_ENRAGE); enraged = true; stage = 0; DoScriptText(-1713504,m_creature); }; DoMeleeAttackIfReady(); }
void UpdateAI(const uint32 uiDiff) { if (m_pInstance && !Unit::GetCreature((*me), m_pInstance->GetData64(NPC_ACIDMAW))) this->JustReachedHome(); if (!UpdateVictim()) return; switch (stage) { case 0: { bsw->timedCast(SPELL_BURNING_BITE, uiDiff); bsw->timedCast(SPELL_MOLTEN_SPEW, uiDiff); bsw->timedCast(SPELL_FIRE_SPIT, uiDiff); bsw->timedCast(SPELL_BURNING_SPRAY, uiDiff); bsw->timedCast(SPELL_SWEEP_0, uiDiff); if (m_pInstance->GetData(TYPE_NORTHREND_BEASTS) == DREADSCALE_SUBMERGED) stage = 1; break;} case 1: { me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); bsw->doCast(SPELL_SUBMERGE_0); stage = 2; DoScriptText(-1713557,me); m_pInstance->SetData(TYPE_NORTHREND_BEASTS, DREADSCALE_SUBMERGED); break;} case 2: { if (bsw->timedQuery(SPELL_SLIME_POOL, uiDiff)) bsw->doCast(NPC_SLIME_POOL); if (bsw->timedQuery(SPELL_SUBMERGE_0, uiDiff) && m_pInstance->GetData(TYPE_NORTHREND_BEASTS) == DREADSCALE_SUBMERGED) stage = 3; break;} case 3: { DoScriptText(-1713559,me); bsw->doRemove(SPELL_SUBMERGE_0); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); bsw->resetTimer(SPELL_SLIME_POOL); stage = 0; m_pInstance->SetData(TYPE_NORTHREND_BEASTS, ACIDMAW_SUBMERGED); break;} } if (m_pInstance->GetData(TYPE_NORTHREND_BEASTS) == SNAKES_SPECIAL && !enraged) { DoScriptText(-1713559,me); bsw->doRemove(SPELL_SUBMERGE_0); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); bsw->doCast(SPELL_ENRAGE); enraged = true; stage = 0; DoScriptText(-1713504,me); }; DoMeleeAttackIfReady(); }