void DoSpawnNextCrystal()
    {
        if (!m_pInstance)
            return;

        Creature* pOssirianTrigger = nullptr;
        if (m_uiCrystalPosition == 0)
        {
            // Respawn static spawned crystal trigger
            pOssirianTrigger = m_pInstance->GetSingleCreatureFromStorage(NPC_OSSIRIAN_TRIGGER);
            if (pOssirianTrigger && !pOssirianTrigger->isAlive())
                pOssirianTrigger->Respawn();
        }
        else
        {
            // Summon a new crystal trigger at some position depending on m_uiCrystalPosition
            // Note: the summon points seem to be very random; requires additional research
            float fX, fY, fZ;
            m_creature->GetRandomPoint(aCrystalSpawnPos[0], aCrystalSpawnPos[1], aCrystalSpawnPos[2], 100.0f, fX, fY, fZ);
            m_creature->SummonCreature(NPC_OSSIRIAN_TRIGGER, fX, fY, fZ, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
        }
        if (!pOssirianTrigger)
            return;

        // Respawn GO near crystal trigger
        if (GameObject* pCrystal = GetClosestGameObjectWithEntry(pOssirianTrigger, GO_OSSIRIAN_CRYSTAL, 10.0f))
            m_pInstance->DoRespawnGameObject(pCrystal->GetObjectGuid(), 5 * MINUTE);

        // Increase position
        ++m_uiCrystalPosition %= MAX_CRYSTAL_POSITIONS;
    }
Example #2
0
    void DoSpawnNextCrystal()
    {
        if (!m_pInstance)
            return;

        Creature* pOssirianTrigger = NULL;
        if (m_uiCrystalPosition == 0)
        {
            // Respawn static spawned crystal trigger
            pOssirianTrigger = m_pInstance->GetSingleCreatureFromStorage(NPC_OSSIRIAN_TRIGGER);
            if (pOssirianTrigger && !pOssirianTrigger->isAlive())
                pOssirianTrigger->Respawn();
        }
        else
        {
            // Summon a new crystal trigger at some position depending on m_uiCrystalPosition
        }
        if (!pOssirianTrigger)
            return;

        // Respawn GO near crystal trigger
        if (GameObject* pCrystal = GetClosestGameObjectWithEntry(pOssirianTrigger, GO_OSSIRIAN_CRYSTAL, 10.0f))
            m_pInstance->DoRespawnGameObject(pCrystal->GetObjectGuid(), 5*MINUTE);

        // Increase position
        ++m_uiCrystalPosition %= MAX_CRYSTAL_POSITIONS;
    }
Example #3
0
    void JustDied(Unit* pKiller) override
    {
        if (pKiller->GetEntry() != NPC_RAJAXX)
            return;

        // Yell when killed by Rajaxx
        if (m_pInstance)
        {
            if (Creature* pRajaxx = m_pInstance->GetSingleCreatureFromStorage(NPC_RAJAXX))
                DoScriptText(SAY_KILLS_ANDOROV, pRajaxx);
        }
    }