Exemplo n.º 1
0
    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;
        }
    }
Exemplo n.º 2
0
    void Aggro(Unit* /*pWho*/) override
    {
        DoScriptText(SAY_AGGRO, m_creature);

        if (m_pInstance)
            m_pInstance->SetData(TYPE_MALYGOS, IN_PROGRESS);
    }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    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);
                }
            }
        }
    }
Exemplo n.º 5
0
 void JustReachedHome() override
 {
     if (m_pInstance)
         m_pInstance->SetData(TYPE_MALYGOS, FAIL);
 }