Esempio 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;
        }
    }
Esempio n. 2
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);
                }
            }
        }
    }