Esempio n. 1
0
    void MoveInLineOfSight(Unit* pWho) override
    {
        // !!! Workaround which ejects the players from the spectral realm !!!
        if (pWho->GetTypeId() == TYPEID_PLAYER && pWho->IsWithinLOSInMap(m_creature) && pWho->IsWithinDistInMap(m_creature, 75.0f))
        {
            if (!pWho->HasAura(SPELL_SPECTRAL_REALM_AURA))
            {
                pWho->CastSpell(pWho, SPELL_TELEPORT_NORMAL_REALM, TRIGGERED_OLD_TRIGGERED);
                pWho->CastSpell(pWho, SPELL_SPECTRAL_EXHAUSTION, TRIGGERED_OLD_TRIGGERED);

                if (m_pInstance)
                    m_pInstance->RemoveFromSpectralRealm(pWho->GetObjectGuid());
            }
        }

        ScriptedAI::MoveInLineOfSight(pWho);
    }