void JustDidDialogueStep(int32 iEntry) override { switch (iEntry) { case PHASE_DISCS: // ToDo: start some movement over the platform m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_uiPhase = PHASE_DISCS; DoSpawnAdds(); break; case SPELL_DESTROY_PLATFORM_BOOM: if (m_pInstance) { if (Creature* pTrigger = m_pInstance->GetSingleCreatureFromStorage(NPC_LARGE_TRIGGER)) pTrigger->CastSpell(pTrigger, SPELL_DESTROY_PLATFORM_BOOM, false); } break; case SPELL_SUMMON_RED_DRAGON: if (m_pInstance) { // Destroy the platform if (GameObject* pPlatform = m_pInstance->GetSingleGameObjectFromStorage(GO_PLATFORM)) pPlatform->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK_11); } DoCastSpellIfCan(m_creature, SPELL_SUMMON_RED_DRAGON); break; case SAY_INTRO_PHASE_3: m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_uiPhase = PHASE_DRAGONS; break; } }
void Aggro(Unit* /*pWho*/) override { DoScriptText(SAY_AGGRO, m_creature); if (m_pInstance) m_pInstance->SetData(TYPE_MALYGOS, IN_PROGRESS); }
void JustDied(Unit* /*pKiller*/) override { DoScriptText(SAY_DEATH, m_creature); m_creature->SummonCreature(NPC_ALEXSTRASZA, aAlextraszaSpawnPos[0], aAlextraszaSpawnPos[1], aAlextraszaSpawnPos[2], aAlextraszaSpawnPos[3], TEMPSUMMON_TIMED_DESPAWN, 5 * MINUTE * IN_MILLISECONDS); if (m_pInstance) m_pInstance->SetData(TYPE_MALYGOS, DONE); }
void SummonedCreatureJustDied(Creature* pSummoned) override { if (pSummoned->GetEntry() == NPC_NEXUS_LORD || pSummoned->GetEntry() == NPC_SCION_OF_ETERNITY) { pSummoned->CastSpell(pSummoned, SPELL_SUMMON_DISC, true); ++m_uiAddsDeadCount; // When all adds are killed start phase 3 if (m_uiAddsDeadCount == m_uiMaxScions + m_uiMaxNexusLords) { StartNextDialogueText(SAY_END_PHASE_2); m_uiPhase = PHASE_TRANSITION_2; // Start platform animation - not sure if this is cast by the right npc if (m_pInstance) { if (Creature* pTrigger = m_pInstance->GetSingleCreatureFromStorage(NPC_LARGE_TRIGGER)) pTrigger->CastSpell(pTrigger, SPELL_DESTROY_PLATFORM_PRE, false); } } } }
void JustReachedHome() override { if (m_pInstance) m_pInstance->SetData(TYPE_MALYGOS, FAIL); }