Yes...
And now On Topic Quote from TraceyG: How to get the 9th player race to work.
Ok... here's an example of a teamspec copied staright from a patrol script
const tTeamSpec& team1 = mCreateTeamSpec("Attacker1Team", // const std::string& TeamName,
static_cast<eTeamID>(kAttacker1Team), // eTeamID TeamID,
kMaxChance, // float ChanceTeamIsAvailable,
kTrue, // iTruth Requried,
kPrimaryTeam, // eTeamType TeamType,
kMinChance, // float ChanceTeamCanBePlayedByAI,
kSpecPlayableRace, // iMissSpecRace ValidRaces,
kAnyRace, // iRaceCriteria RaceCriteria,
typeid( tAttacker1Team ), // const type_info& TeamAllocType = typeid( tTeamInfo ),
kNoTeamTag, // eTeamTag TeamTag = kNoTeamTag,
Messages[kAttackTeamMissionTitle_msg] // const std::string&
TeamMissionTitle = "Mystery?"
);
The kSpecPlayableRace value is an enumerated type which can take one of the following:
// Bit masks for race (assumed to be in same order as eRaceName
typedef int32 iMissSpecRace;
enum
{
kSpecNoRace = 0,
kSpecFed = 1 << kFederation,
kSpecKling = 1 << kKlingon,
kSpecRomulan = 1 << kRomulan,
kSpecLyran = 1 << kLyran,
kSpecHydran = 1 << kHydran,
kSpecGorn = 1 << kGorn,
kSpecTholian = 1 << kTholian,
kSpecISC = 1 << kISC,
kSpecMirak = 1 << kMirak,
kSpecLDR = 1 << kLDR,
kSpecWYN = 1 << kWYN,
kSpecJindarian = 1 << kJindarian,
kSpecOrion = 1 << kOrion,
// Orion Races
kSpecOrionOrion = 1 << kOrionOrion,
kSpecOrionKorgath = 1 << kOrionKorgath,
kSpecOrionPrime = 1 << kOrionPrime,
kSpecOrionTigerHeart = 1 << kOrionTigerHeart,
kSpecOrionBeastRaiders = 1 << kOrionBeastRaiders,
kSpecOrionSyndicate = 1 << kOrionSyndicate,
kSpecOrionWyldeFire = 1 << kOrionWyldeFire,
kSpecOrionCamboro = 1 << kOrionCamboro,
kSpecMonster = 1 << kMonster,
kSpecAnyRace = ( kSpecFed | kSpecKling | kSpecRomulan | kSpecLyran | kSpecHydran | kSpecGorn | kSpecTholian | kSpecISC | kSpecMirak | kSpecLDR | kSpecWYN | kSpecJindarian | kSpecOrion | kSpecOrionOrion | kSpecOrionKorgath | kSpecOrionPrime | kSpecOrionTigerHeart | kSpecOrionBeastRaiders | kSpecOrionSyndicate | kSpecOrionWyldeFire | kSpecOrionCamboro),
kSpecNonPirateRace = kSpecAnyRace & ( ~kSpecOrion | ~kSpecOrionOrion | ~kSpecOrionKorgath | ~kSpecOrionPrime | ~kSpecOrionTigerHeart | ~kSpecOrionBeastRaiders | ~kSpecOrionSyndicate | ~kSpecOrionWyldeFire | ~kSpecOrionCamboro ),
kSpecPlayableRace = ( kSpecFed | kSpecKling | kSpecRomulan | kSpecLyran | kSpecGorn | kSpecHydran | kSpecISC | kSpecMirak | kSpecOrionOrion | kSpecOrionKorgath | kSpecOrionPrime | kSpecOrionTigerHeart | kSpecOrionBeastRaiders | kSpecOrionSyndicate | kSpecOrionWyldeFire | kSpecOrionCamboro),
};