Skip to main content

VendettaEventControllerMgr

void VendettaEventControllerMgr::ProcessQueueAndTeleport()
{
    uint32 l_teleportedPlayers = 0;

    m_playerQueueVortex.remove_if([](Player* pPlayer) -> bool
    {
        return !pPlayer || !pPlayer->IsInWorld() || !pPlayer->IsAlive() || pPlayer->InBattleground() || pPlayer->InBattlegroundQueue() || pPlayer->IsInCombat() || pPlayer->isUsingLfg();   
    });

    for(auto player : m_playerQueueVortex)
    {
        if(m_playerQueueVortex.size() >= GetVortexTemplateMaxPlayers() && !IsVortextEventInProgress())
        {
            if(l_teleportedPlayers < GetVortexTemplateMaxPlayers())
            {
                if(Creature* assoraPortal = player->FindNearestCreature(VortexEnums::CreaturesVortex::CREATURE_TRIGGER_ASSORA, 150.0f))
                {
                    player->GetMotionMaster()->MoveJump(assoraPortal->GetPositionX(), assoraPortal->GetPositionY(), assoraPortal->GetPositionZ(), 70.0f, 11.0f);
                }else{
                    player->TeleportTo(MAP_ID, g_PortalPosition.GetPositionX(), g_PortalPosition.GetPositionY(), g_PortalPosition.GetPositionZ(), g_PortalPosition.GetOrientation());
                }
                l_teleportedPlayers++;
            }
        }
    }
}