Team BattleGroundIC::GetSpawnTeamFor(ObjectGuid const& guid) const
{
    if (guid.IsEmpty() || !guid.HasEntry())
        return TEAM_NONE;

    switch (guid.GetEntry())
    {
        case VEHICLE_IC_DEMOLISHER:
        case VEHICLE_IC_DEMOLISHER_1:
        {
            if (m_Nodes[BG_IC_NODE_WORKSHOP] == BG_IC_NODE_STATUS_ALLY_OCCUPIED)
                return ALLIANCE;

            else if (m_Nodes[BG_IC_NODE_WORKSHOP] == BG_IC_NODE_STATUS_HORDE_OCCUPIED)
                return HORDE;
            break;
        }
        case VEHICLE_IC_CATAPULT:
        case VEHICLE_IC_CATAPULT_1:
        {
            if (m_Nodes[BG_IC_NODE_DOCKS] == BG_IC_NODE_STATUS_ALLY_OCCUPIED)
                return ALLIANCE;

            else if (m_Nodes[BG_IC_NODE_DOCKS] == BG_IC_NODE_STATUS_HORDE_OCCUPIED)
                return HORDE;
            break;
        }
        case VEHICLE_IC_CANNON:
        case VEHICLE_IC_CANNON_1:
        {
            WorldObject const* obj = const_cast<BattleGroundIC*>(this)->GetBgMap()->GetWorldObject(guid);
            if (obj)
                // simplest way to determine factions Ive found
                return (obj->GetPositionX() > 1000.0f) ? HORDE : ALLIANCE;
            break;
        }
        case VEHICLE_IC_GLAIVE_A:
            return ALLIANCE;
        case VEHICLE_IC_GLAIVE_H:
            return HORDE;
        default:
            break;
    }
    return TEAM_INVALID;
}
Example #2
0
Team BattleGroundSA::GetSpawnTeamFor(ObjectGuid const& guid) const override
{
    if (guid.IsEmpty() || !guid.HasEntry())
        return TEAM_NONE;

    switch (guid.GetEntry())
    {
        case VEHICLE_SA_DEMOLISHER:
        case VEHICLE_SA_DEMOLISHER_1:
            return GetDefender() == ALLIANCE ? HORDE : ALLIANCE;
        case VEHICLE_SA_CANNON:
        case VEHICLE_SA_CANNON_1:
            return GetDefender() == ALLIANCE ? ALLIANCE : HORDE;
        default:
            break;
    }
    return TEAM_NONE;
}