void instance_shadow_labyrinth::OnCreatureDeath(Creature* pCreature)
{
    // unbanish Hellmaw when all Cabal Ritualists are dead
    if (pCreature->GetEntry() == NPC_CABAL_RITUALIST)
    {
        m_sRitualistsAliveGUIDSet.erase(pCreature->GetObjectGuid());

        if (m_sRitualistsAliveGUIDSet.empty())
        {
            if (Creature* pHellmaw = GetSingleCreatureFromStorage(NPC_HELLMAW))
            {
                // yell intro and remove banish aura
                DoScriptText(SAY_HELLMAW_INTRO, pHellmaw);
                pHellmaw->GetMotionMaster()->MoveWaypoint();
                pHellmaw->RemoveAurasDueToSpell(SPELL_BANISH);
            }

            GuidVector containmentVector;
            GetCreatureGuidVectorFromStorage(NPC_CONTAINMENT_BEAM, containmentVector);
            for (ObjectGuid& guid : containmentVector)
            {
                if (Creature* pBeam = pCreature->GetMap()->GetCreature(guid))
                    pBeam->ForcedDespawn();
            }
        }
    }
}
Esempio n. 2
0
void instance_sethekk_halls::FinishAnzuIntro()
{
    Creature* target = GetSingleCreatureFromStorage(NPC_INVIS_RAVEN_GOD_TARGET, true);
    target->SummonCreature(NPC_ANZU, -89.20406f, 287.9736f, 26.5665f, 3.001966f, TEMPSPAWN_MANUAL_DESPAWN, 0);
    static_cast<TemporarySpawn*>(target)->UnSummon();
    GuidVector casterVector;
    GetCreatureGuidVectorFromStorage(NPC_INVIS_RAVEN_GOD_CASTER, casterVector);
    for (ObjectGuid guid : casterVector)
        if (Creature* caster = instance->GetCreature(guid))
            static_cast<TemporarySpawn*>(caster)->UnSummon();
    Creature* portal = GetSingleCreatureFromStorage(NPC_INVIS_RAVEN_GOD_PORTAL, true);
    static_cast<TemporarySpawn*>(portal)->UnSummon();
    GameObject* ravensClaw = GetSingleGameObjectFromStorage(GO_RAVENS_CLAW);
    ravensClaw->SetRespawnTime(7 * DAY);
    ravensClaw->SetLootState(GO_JUST_DEACTIVATED);
    GameObject* moonstone = GetSingleGameObjectFromStorage(GO_MOONSTONE);
    moonstone->SetLootState(GO_JUST_DEACTIVATED);
    GameObject* testRift = GetSingleGameObjectFromStorage(GO_TEST_RIFT);
    testRift->SetLootState(GO_JUST_DEACTIVATED);
}