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; }
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; }