--
-- classdef.lua
--
-- This file only contains ship classfication lists that allow the AI script writer to seperate each ship
-- into different subclasses (fighters, corvettes, anti-fighter, fast, slow,...) This is done to make it easier
-- (and faster) to refer to a ship based on its generalized properties.
--
-- Custom classes can be added at the end but have to be added in a very specific way.
-- 

aitrace("CPU: CLASSDEF LOADED")


-- table of all squadron class lists
squadclass = {}

-- is mothership
squadclass[eMotherShip] = {
	HGN_MOTHERSHIP,
	
	VGR_MOTHERSHIP,
	VGR_MOTHERSHIP_MAKAAN,

	IMP_MOTHERSHIP,
}

-- can harvest
squadclass[eCollector] = {
	HGN_RESOURCECOLLECTOR,
	VGR_RESOURCECOLLECTOR,
	IMP_RESOURCECOLLECTOR,
	REB_RESOURCECOLLECTOR,
	IMP_MOLE_MINER,
	REB_MOLE_MINER,
	BEN_MOLE_MINER,
}

-- is a good scout/explorer
squadclass[eScout] = {
	HGN_SCOUT,
	HGN_PROBE,
	HGN_PROXIMITYSENSOR,
	HGN_ECMPROBE,
	VGR_SCOUT,
	VGR_PROBE,
	VGR_PROBE_PROX,
	VGR_PROBE_ECM,
	IMP_TIE_VANGUARD,
	REB_ACTION_IV,
        REB_LONG_PROBE_Y_WING,
	REB_FERRET,
	BEN_ACTION_IV,
        BEN_LONG_PROBE_Y_WING,
}

-- is a refinery
squadclass[eRefinery] = {
	HGN_RESOURCECONTROLLER,
	VGR_RESOURCECONTROLLER,
	IMP_RESOURCECONTROLLER,
	REB_RESOURCECONTROLLER,
	IMP_MINING_SHIP,
	IMP_MODULAR_TASKFORCE_CRUISER,
	REB_MINING_SHIP,
	BEN_MINING_SHIP,
}

-- can build ships
squadclass[eBuilder] = {
	HGN_MOTHERSHIP,
	HGN_CARRIER,  -- will need subsystem
	HGN_SHIPYARD,	
	VGR_MOTHERSHIP,
	VGR_MOTHERSHIP_MAKAAN,
	VGR_CARRIER,  -- will need subsystem
	VGR_SHIPYARD,
        IMP_MOTHERSHIP,
	IMP_FIGHTERSHIPYARD,
	IMP_DESTROYERSHIPYARD,
        IMP_CRUISERSHIPYARD,
	IMP_MODULAR_TASKFORCE_CRUISER,
        REB_CRUISERSHIPYARD,
	REB_FIGHTERSHIPYARD,
	REB_DESTROYERSHIPYARD,
	BEN_CRUISERSHIPYARD,
	BEN_FIGHTERSHIPYARD,
	BEN_DESTROYERSHIPYARD,

}

-- can be used as a resource dropoff
squadclass[eDropOff] = {
	HGN_MOTHERSHIP,
	HGN_CARRIER,  -- will need subsystem
	HGN_SHIPYARD,
	HGN_RESOURCECONTROLLER,
	VGR_MOTHERSHIP,
	VGR_MOTHERSHIP_MAKAAN,
	VGR_CARRIER,  -- will need subsystem
	VGR_SHIPYARD,
	VGR_RESOURCECONTROLLER,
	IMP_MOTHERSHIP,
	IMP_MODULAR_TASKFORCE_CRUISER,
        IMP_MINING_SHIP,
        REB_MINING_SHIP,
	REB_FIGHTERSHIPYARD,
	IMP_FIGHTERSHIPYARD,
	REB_DESTROYERSHIPYARD,
	IMP_DESTROYERSHIPYARD,
	BEN_MINING_SHIP,
	BEN_FIGHTERSHIPYARD,
	BEN_DESTROYERSHIPYARD,
}

-- can be used as a salvage dropoff
squadclass[eSalvageDropOff] = {
    HGN_MOTHERSHIP,
	HGN_CARRIER,
	HGN_SHIPYARD,
	VGR_MOTHERSHIP,
	VGR_MOTHERSHIP_MAKAAN,
	VGR_CARRIER,
	VGR_SHIPYARD,
	IMP_MOTHERSHIP,
	IMP_MODULAR_TASKFORCE_CRUISER,
        IMP_MINING_SHIP,
        REB_MINING_SHIP,
	REB_FIGHTERSHIPYARD,
	IMP_FIGHTERSHIPYARD,
	REB_DESTROYERSHIPYARD,
	IMP_DESTROYERSHIPYARD,
        BEN_MINING_SHIP,
	BEN_FIGHTERSHIPYARD,
	BEN_DESTROYERSHIPYARD,
}

-- is a fighter
squadclass[eFighter] = {
	HGN_INTERCEPTOR,
	HGN_ATTACKBOMBER,
	HGN_ATTACKBOMBERELITE,
	VGR_INTERCEPTOR,
	VGR_BOMBER,
	VGR_LANCEFIGHTER,
	IMP_TIE_FIGHTER,
	IMP_TIE_DEFENDER,
	IMP_TIE_DROID,
	IMP_TIE_PHANTOM,
	IMP_TIE_SENTINAL,
	IMP_TIE_INTERECEPTOR,
	IMP_TIE_RAPTOR,
	IMP_SKIPRAY_BLASTBOAT,
	IMP_PREYBIRD,
	IMP_A9_INTERCEPTOR,
	IMP_I7_HOWLRUNNER,
	IMP_ASSAULT_GUNBOAT,
	IMP_TIE_AVENGER,
	REB_SKIPRAY_BLASTBOAT,
	REB_R41,
	REB_CLOAKSHAPE,
	REB_X_WING,
	REB_XJ_WING,
	REB_A_WING,
	REB_T_WING,
	REB_E_WING,
	BEN_PREYBIRD,
	BEN_A9_INTERCEPTOR,
	BEN_I7_HOWLRUNNER,
	BEN_SKIPRAY_BLASTBOAT,
	BEN_R41,
	BEN_CLOAKSHAPE,
	BEN_Y_WING,
	BEN_XTIE,
	BEN_YTIE,
	BEN_TIEWING,
}

-- is a corvette
squadclass[eCorvette] = {
	HGN_ASSAULTCORVETTE,
	HGN_PULSARCORVETTE,
	HGN_MINELAYERCORVETTE,
	VGR_MISSILECORVETTE,
	VGR_LASERCORVETTE,
	VGR_MINELAYERCORVETTE,
	VGR_COMMANDCORVETTE,
	IMP_SYSTEM_PATROL_CRAFT,
	IMP_ASSAULT_TRANSPORT,
	IMP_CORELLIAN_PATROL_SHIP,
	IMP_ESCORT_SHUTTLE,
	IMP_OMICRON_TRANSPORT,
	IMP_GUARDIAN_LIGHT_CRUISER,	
	REB_CORELLIAN_PATROL_SHIP,
	REB_CORELLIAN_LT_GUNSHIP,
	REB_ASSAULT_TRANSPORT,
	REB_ESCORT_SHUTTLE,
	REB_ESCORT_TRANSPORT,
	IMP_CORELLIAN_CORVETTE,
	IMP_CORELLIAN_GUNSHIP,
	IMP_CORELLIAN_HEAVY_GUNSHIP,
	IMP_HEAVY_CORVETTE,	
	REB_CORELLIAN_CORVETTE,
	REB_CORELLIAN_GUNSHIP,
	REB_CORELLIAN_HEAVY_GUNSHIP,
	REB_HEAVY_CORVETTE,
	REB_AGRAVE_PICKET,
	REB_WARRIOR_GUNSHIP,
	REB_RANGER_GUNSHIP,
	REB_MARAUDER_CORVETTE,
	BEN_ASSAULT_TRANSPORT,
	BEN_CORELLIAN_PATROL_SHIP,
	BEN_ESCORT_SHUTTLE,
	BEN_GUARDIAN_LIGHT_CRUISER,
	BEN_HEAVY_CORVETTE,
	BEN_SYSTEM_PATROL_CRAFT,	
	BEN_CORELLIAN_CORVETTE,
	BEN_CORELLIAN_GUNSHIP,
	BEN_CORELLIAN_HEAVY_GUNSHIP,
	BEN_HEAVY_CORVETTE,
	BEN_AGRAVE_PICKET,
	BEN_MARAUDER_CORVETTE,	
}

-- is a frigate
squadclass[eFrigate] = {
	HGN_ASSAULTFRIGATE,
	HGN_DEFENSEFIELDFRIGATE,
	HGN_IONCANNONFRIGATE,
	HGN_MARINEFRIGATE,
	HGN_MARINEFRIGATE_SOBAN,
	HGN_TORPEDOFRIGATE,
	HGN_TORPEDOFRIGATEELITE,	
	VGR_ASSAULTFRIGATE,
	VGR_HEAVYMISSILEFRIGATE,
	VGR_INFILTRATORFRIGATE,
	IMP_CARRACK_CRUISER,
	IMP_LORONAR_STRIKE_CRUISER,
	IMP_NEBULON_B_2_FRIGATE,
	IMP_NEBULON_B_FRIGATE,
	IMP_LANCER_FRIGATE,
	IMP_CORELLIAN_LIGHT_FRIGATE,
	IMP_BAYONET_CRUISER,
	IMP_EIDOLON_CRUISER,
	IMP_CORELLIAN_FRIGATE,
	REB_LORONAR_STRIKE_CRUISER,
	REB_NEBULON_B_FRIGATE,
	REB_CORELLIAN_LIGHT_FRIGATE,
	REB_EIDOLON_CRUISER,
	REB_CORELLIAN_FRIGATE,
	REB_CC9600_FRIGATE,
	REB_CC7700_FRIGATE,
	REB_BALRUS_CRUISER,
	IMP_DREADNAUGHT,
	IMP_ENFORCER_CRUISER,
	REB_ASSAULT_FRIGATE,
	REB_BULK_CRUISER,
	REB_DREADNAUGHT,
	REB_MC_40_DESTROYER,
	REB_MC_60_DESTROYER,
	REB_LIBERATOR_CRUISER,
	REB_CORONA_FRIGATE,
	IMP_CORONA_FRIGATE,
	BEN_CARRACK_CRUISER,
	BEN_LORONAR_STRIKE_CRUISER,
	BEN_NEBULON_B_FRIGATE,
	BEN_CORELLIAN_LIGHT_FRIGATE,
	BEN_BAYONET_CRUISER,
	BEN_EIDOLON_CRUISER,
	BEN_CORELLIAN_FRIGATE,
	BEN_CC9600_FRIGATE,
	BEN_CC7700_FRIGATE,
	BEN_BALRUS_CRUISER,
	BEN_DREADNAUGHT,
	BEN_ENFORCER_CRUISER,
	BEN_ASSAULT_FRIGATE,
	BEN_BULK_CRUISER,
}

-- can capture other ships
squadclass[eCapture] = {
	HGN_MARINEFRIGATE,
	HGN_MARINEFRIGATE_SOBAN,
	VGR_INFILTRATORFRIGATE,
	IMP_ASSAULT_SHUTTLE,
	IMP_OMICRON_TRANSPORT,
	IMP_ASSAULT_TRANSPORT,
	REB_ASSAULT_TRANSPORT,
	REB_GALOFREE_TRANSPORT,
	BEN_ASSAULT_TRANSPORT,
	BEN_GALOFREE_TRANSPORT,
}


-- has shields
squadclass[eShield] = {
	HGN_DEFENSEFIELDFRIGATE,
}

-- is a platform
squadclass[ePlatform] = {
	HGN_GUNTURRET,
	HGN_IONTURRET,
	VGR_WEAPONPLATFORM_GUN,
	VGR_WEAPONPLATFORM_MISSILE,
	VGR_HYPERSPACE_PLATFORM,
	IMP_GOLAN_III_PLATFORM,
	IMP_GUN_TURRET,
	IMP_ION_PLATFORM,
	IMP_MISSILE_PLATFORM,
	IMP_PERIMETER_DEFENSE,
	IMP_XQ_1_PLATFORM,	
	REB_GOLAN_III_PLATFORM,
	REB_GUN_TURRET,
	REB_ION_PLATFORM,
	REB_MISSILE_PLATFORM,
	REB_PERIMETER_DEFENSE,
	REB_XQ_1_PLATFORM,
	BEN_GUN_TURRET,
	BEN_ION_PLATFORM,
	BEN_MISSILE_PLATFORM,
	BEN_PERIMETER_DEFENSE,
	BEN_XQ_1_PLATFORM,
}

-- good at attacking fighters
squadclass[eAntiFighter] = {
	HGN_INTERCEPTOR,
	HGN_ASSAULTCORVETTE,
	HGN_ASSAULTFRIGATE,
	HGN_GUNTURRET,
	VGR_INTERCEPTOR,
	VGR_ASSAULTFRIGATE,
	VGR_WEAPONPLATFORM_GUN,
	IMP_A9_INTERCEPTOR,
	IMP_CORELLIAN_LT_GUNSHIP,
	IMP_CORELLIAN_GUNSHIP,
	IMP_CORELLIAN_PATROL_SHIP,
	IMP_ESCORT_SHUTTLE,
	IMP_I7_HOWLRUNNER,
	IMP_LANCER_FRIGATE,
	IMP_NEBULON_B_2_FRIGATE,
	IMP_SKIPRAY_BLASTBOAT,
	IMP_TIE_DEFENDER,
	IMP_TIE_DROID,
	IMP_TIE_FIGHTER,
	IMP_TIE_INTERCEPTOR,
	IMP_TIE_PHANTOM,
	IMP_TIE_RAPTOR,
	IMP_TIE_SENTINAL,
	IMP_TIE_AVENGER,
	REB_A_WING,
	REB_BULK_CRUISER,
	REB_CORELLIAN_GUNSHIP,
	REB_CORELLIAN_LT_GUNSHIP,
	REB_CORELLIAN_PATROL_SHIP,
	REB_E_WING,
	REB_ESCORT_SHUTTLE,
	REB_SKIPRAY_BLASTBOAT,
	REB_T_WING,
	REB_X_WING,
	REB_XJ_WING,
	REB_Y_WING,
	REB_AGRAVE_PICKET,
	IMP_CORONA_FRIGATE,
	REB_CORONA_FRIGATE,
}

-- good at killing corvettes
squadclass[eAntiCorvette] = {
	HGN_PULSARCORVETTE,
	HGN_TORPEDOFRIGATE,
	HGN_TORPEDOFRIGATEELITE,
	HGN_DESTROYER,
	VGR_LANCEFIGHTER,
	VGR_LAZERCORVETTE,
	VGR_DESTROYER,
	IMP_ASSAULT_TRANSPORT,
	IMP_CARRACK_CRUISER,
	IMP_CORELLIAN_CORVETTE,
	IMP_CORELLIAN_GUNSHIP,
	IMP_CORELLIAN_HEAVY_GUNSHIP,
	IMP_CORELLIAN_LIGHT_FRIGATE,
	IMP_CORELLIAN_LT_GUNSHIP,
	IMP_CORELLIAN_PATROL_SHIP,
	IMP_ENFORCER_CRUISER,
	IMP_ESCORT_TRANSPORT,
	IMP_GUARDIAN_LIGHT_CRUISER,
	IMP_HEAVY_CORVETTE,
	IMP_I7_HOWLRUNNER,
	IMP_LANCER_FRIGATE,
	IMP_NEBULON_B_2_FRIGATE,
	IMP_NEBULON_B_FRIGATE,
	IMP_OMICRON_TRANSPORT,
	IMP_SYSTEM_PATROL_CRAFT,
	IMP_TIE_BOMBER,
	IMP_TIE_DEFENDER,
	IMP_TIE_FIGHTER,
	IMP_TIE_PHANTOM,
	IMP_TIE_SENTINAL,
	IMP_CORELLIAN_FRIGATE,
	IMP_ASSAULT_GUNBOAT,
	REB_ASSAULT_TRANSPORT,
	REB_BULK_CRUISER,
	REB_CORELLIAN_CORVETTE,
	REB_CORELLIAN_GUNSHIP,
	REB_CORELLIAN_HEAVY_GUNSHIP,
	REB_CORELLIAN_LIGHT_FRIGATE,
	REB_CORELLIAN_LT_GUNSHIP,
	REB_CORELLIAN_PATROL_SHIP,
	REB_ESCORT_TRANSPORT,
	REB_E_WING,
	REB_HEAVY_CORVETTE,
	REB_NEBULON_B_FRIGATE,
	REB_X_WING,
	REB_XJ_WING,
	REB_Y_WING,
	REB_CORELLIAN_FRIGATE,
	REB_CC9600_FRIGATE,
	REB_REPUBLIC_DESTROYER,
	REB_NEBULA_DESTROYER,
	REB_CC7700_FRIGATE,
	REB_BALRUS_CRUISER,
	REB_AGRAVE_PICKET,
	IMP_CORONA_FRIGATE,
	REB_CORONA_FRIGATE,	
}

-- good at killing frigates
squadclass[eAntiFrigate] = {
	HGN_IONTURRET,
	HGN_ATTACKBOMBER,
	HGN_ATTACKBOMBERELITE,
	HGN_IONCANNONFRIGATE,
	HGN_MARINEFRIGATE,
	HGN_MARINEFRIGATE_SOBAN,
	HGN_DEFENSEFIELDFRIGATE,
	HGN_DESTROYER,
	HGN_BATTLECRUISER,
	VGR_BOMBER,
	VGR_HEAVYMISSILEFRIGATE,
	VGR_INFILTRATORFRIGATE,
	VGR_DESTROYER,
	VGR_BATTLECRUISER,
	VGR_WEAPONPLATFORM_MISSILE,
	IMP_ALLEGIANCE_DESTROYER,
	IMP_ASSAULT_TRANSPORT,
	IMP_CARRACK_CRUISER,
	IMP_CORELLIAN_GUNSHIP,
	IMP_CORELLIAN_HEAVY_GUNSHIP,
	IMP_CORELLIAN_LIGHT_FRIGATE,
	IMP_DOMINATOR_DESTROYER,	
	IMP_DREADNAUGHT,
	IMP_ENFORCER_CRUISER,
	IMP_EXECUTOR_SSD,
	IMP_GOLAN_III_PLATFORM,
	IMP_HARROW_DESTROYER,
	IMP_I7_HOWLRUNNER,
	IMP_IMPERATOR_DESTROYER,
	IMP_IMPERATOR_II_DESTROYER,
	IMP_IMPERATOR_III_DESTROYER,
	IMP_LORONAR_STRIKE_cRUISER,
	IMP_IMP_TIE_BOMBER,
	IMP_TIE_DEFENDER,
	IMP_TYRANT_MISSILE_CRUISER,
	IMP_VENGENCE_SSD,
	IMP_VICTORY_I_DESTROYER,
	IMP_VICTORY_II_DESTROYER,
	IMP_EIDOLON_CRUISER,
	IMP_CORELLIAN_FRIGATE,
	IMP_ASSAULT_GUNBOAT,
	IMP_TITAN_CRUISER,
	REB_ASSAULT_FRIGATE,
	REB_B_WING,
	REB_BULK_CRUISER,
	REB_BULWARK_CRUISER,
	REB_CORELLIAN_GUNSHIP,
	REB_CORELLIAN_HEAVY_GUNSHIP,
	REB_CORELLIAN_LIGHT_FRIGATE,
	REB_DEFENDER_DESTROYER,
	REB_DREADNAUGHT,
	REB_E_WING,
	REB_GOLAN_III_PLATFORM,
	REB_HEAVY_CORVETTE,
	REB_LORONAR_STRIKE_CRUISER,
	REB_MC40_DESTROYER,
	REB_MC80_DESTROYER,
	REB_MC80A_DESTROYER,
	REB_MC80B2_DESTROYER,
	REB_MC80B_DESTROYER,
	REB_MC80C_CRUISER,
	REB_MC90_DESTROYER,
	REB_MEDIATOR_CRUISER,
	REB_X_WING,
	REB_XJ_WING,
	REB_Y_WING,
	REB_EIDOLON_CRUISER,
	REB_CORELLIAN_FRIGATE,
	REB_CC9600_FRIGATE,
	REB_REPUBLIC_DESTROYER,
	REB_NEBULA_DESTROYER,
	REB_CC7700_FRIGATE,
	REB_BALRUS_CRUISER,
	REB_BULWARK2_CRUISER,
	REB_AGRAVE_PICKET,
	IMP_CORONA_FRIGATE,
	REB_CORONA_FRIGATE,
	REB_HOME_ONE_CRUISER,
}

-- is a capital ship
squadclass[eCapital] = {
	HGN_CARRIER,
	HGN_MOTHERSHIP,
	HGN_SHIPYARD,
	HGN_DESTROYER,
	HGN_BATTLECRUISER,
	HGN_DREADNAUGHT,
	VGR_CARRIER,
	VGR_MOTHERSHIP,
	VGR_MOTHERSHIP_MAKAAN,
	VGR_SHIPYARD,
	VGR_DESTROYER,
	VGR_BATTLECRUISER,
	IMP_TYRANT_MISSILE_CRUISER,
	IMP_TITAN_CRUISER,
	IMP_ALLEGIANCE_DESTROYER,
	IMP_EXECUTOR_SSD,
	IMP_VENGENCE_SSD,
	IMP_SOVEREIGN_SDD,
	REB_BULWARK_CRUISER,
	REB_MC80C_CRUISER,
	REB_MEDIATOR_CRUISER,
	REB_REPUBLIC_DESTROYER,
	REB_NEBULA_DESTROYER,
	IMP_ALLEGIANCE_DESTROYER,
	IMP_DOMINATOR_DESTROYER,
	IMP_IMPERATOR_DESTROYER,
	IMP_IMPERATOR_II_DESTROYER,
	IMP_IMPERATOR_III_DESTROYER,
	IMP_HARROW_DESTROYER,
	IMP_VICTORY_I_DESTROYER,
	IMP_VICTORY_II_DESTROYER,
	REB_NEBULA_DESTROYER,
	REB_REPUBLIC_DESTROYER,
	REB_DEFENDER_DESTROYER,
	REB_MC80_DESTROYER,
	REB_MC80A_DESTROYER,
	REB_MC80B2_DESTROYER,
	REB_MC80B_DESTROYER,
	REB_MC90_DESTROYER,
	REB_BULWARK2_CRUISER,
	IMP_EXECUTOR_SSD,
	IMP_VENGENCE_SDD,
	IMP_SOVEREIGN_SDD,
	IMP_DREADNAUGHT,
	IMP_ENFORCER_CRUISER,
	REB_ASSAULT_FRIGATE,
	REB_BULK_CRUISER,
	REB_DREADNAUGHT,
	REB_MC_40_DESTROYER,
	IMP_CARRACK_CRUISER,
	IMP_LORONAR_STRIKE_CRUISER,
	IMP_NEBULON_B_2_FRIGATE,
	IMP_NEBULON_B_FRIGATE,
	IMP_LANCER_FRIGATE,
	IMP_CORELLIAN_LIGHT_FRIGATE,
	IMP_BAYONET_CRUISER,
	IMP_EIDOLON_CRUISER,
	IMP_CORELLIAN_FRIGATE,
	REB_LORONAR_STRIKE_CRUISER,
	REB_NEBULON_B_FRIGATE,
	REB_CORELLIAN_LIGHT_FRIGATE,
	REB_EIDOLON_CRUISER,
	REB_CORELLIAN_FRIGATE,
	REB_CC9600_FRIGATE,
	REB_CC7700_FRIGATE,
	REB_BALRUS_CRUISER,
	REB_AGRAVE_PICKET,
	IMP_CORONA_FRIGATE,
	REB_CORONA_FRIGATE,
	REB_HOME_ONE_CRUISER,
	BEN_VICTORY_I_DESTROYER,
	BEN_VICTORY_II_DESTROYER,

}

-- eCollector + eScout (maybe refineries - but those things are pretty tough?)
-- this is currently only used to count the number of 'military units' the player/enemy has
squadclass[eNonThreat] = {
	HGN_RESOURCECOLLECTOR,
	VGR_RESOURCECOLLECTOR,
	HGN_RESOURCECONTROLLER,
	VGR_RESOURCECONTROLLER,
	HGN_CARRIER,
	HGN_MOTHERSHIP,
	HGN_SHIPYARD,
	VGR_CARRIER,
	VGR_MOTHERSHIP,
	VGR_MOTHERSHIP_MAKAAN,
	VGR_SHIPYARD,
	HGN_SCOUT,
	HGN_PROBE,
	HGN_PROXIMITYSENSOR,
	HGN_ECMPROBE,	
	VGR_SCOUT,
	VGR_PROBE,
	VGR_PROBE_PROX,
	VGR_PROBE_ECM,
	VGR_HYPERSPACE_PLATFORM,
	IMP_FIGHTERSHIPYARD,
	IMP_DESTROYERSHIPYARD,
	IMP_CRUISERSHIPYARD,
	IMP_MINING_SHIP,
	IMP_MOLE_MINER,
	IMP_MODULAR_TASKFORCE_CRUISER,
	REB_FIGHTERSHIPYARD,
	REB_DESTROYERSHIPYARD,
	REB_CRUISERSHIPYARD,
	REB_MINING_SHIP,
	REB_MOLE_MINER,
}

-- is a hyperspace gate
squadclass[eHyperspaceGate] = 
{
	VGR_HYPERSPACE_PLATFORM,
}

-- good at killing subsystems
squadclass[eSubSystemAttackers] = 
{
	HGN_ATTACKBOMBER,
	HGN_ATTACKBOMBERELITE,
	VGR_BOMBER,
	IMP_I7_HOWLRUNNER,
	IMP_TIE_DEFENDER,
	IMP_TIE_BOMBER,
	IMP_ASSAULT_GUNBOAT,
	REB_B_WING,
	REB_E_WING,
	REB_X_WING,
	REB_XJ_WING,
	REB_Y_WING,
}

-- non critical subsystems
squadclass[eNonCriticalSubSys] = 
{
	CLOAKGENERATOR,
	FIRECONTROLTOWER,
	HYPERSPACEINHIBITOR,
	ADVANCEDARRAY,
	CLOAKSENSOR,
}

-- good at killing repairing collectors
squadclass[eGoodRepairAttackers] = 
{
	HGN_INTERCEPTOR,
	HGN_ASSAULTFRIGATE,
	HGN_IONCANNONFRIGATE,
	HGN_DESTROYER,
	HGN_BATTLECRUISER,
	VGR_INTERCEPTOR,
	VGR_MISSILECORVETTE,
	VGR_ASSAULTFRIGATE,
	VGR_DESTROYER,
	VGR_BATTLECRUISER,
	IMP_A9_INTERCEPTOR,
	IMP_ASSAULT_TRANSPORT,
	IMP_CORELLIAN_PATROL_SHIP,	
	IMP_ESCORT_SHUTTLE,
	IMP_GUARDIAN_LIGHT_CRUISER,
	IMP_I7_HOWLRUNNER,
	IMP_NEBULON_B_2_FRIGATE,
	IMP_TIE_FIGHTER,
	IMP_TIE_INTERCEPTOR,
	IMP_TIE_DEFENDER,
	IMP_TIE_BOMBER,
	REB_ASSAULT_TRANSPORT,
	REB_B_WING,
	REB_CORELLIAN_PATROL_SHIP,
	REB_E_WING,
	REB_ESCORT_SHUTTLE,
	REB_X_WING,
	REB_T_WING,
	REB_XJ_WING,
	REB_Y_WING,
}

-------------------------------------------
-- CUSTOM classes

-- do not exceed eMaxUserCount(32)

eUselessShips = eMaxCount
eBattleCruiser = eMaxCount + 1
eSuperCapital = eMaxCount + 2
eDestroyer = eMaxCount + 3 
eHeavyFrigate = eMaxCount + 4
eHeavyCorvette = eMaxCount + 5 
eBomber = eMaxCount + 6
eCarrier = eMaxCount + 7
eAntiDestroyer = eMaxCount + 8
eAntiCruiser = eMaxCount + 9
--eGravWell = eMaxCount + 10
--eRepair = eMaxCount + 10
-- this number should be one greater then the highest class
--sg_maxClasses = eMaxCount + 12
sg_maxClasses = eAntiCruiser + 1

-- ships that the AI should not build because they are not used properly
squadclass[ eUselessShips ] = 
{
	HGN_MINELAYERCORVETTE,
	VGR_MINELAYERCORVETTE,
	VGR_COMMANDCORVETTE,
}

-- is a battlecruiser
squadclass[eBattleCruiser] = 
{
	HGN_BATTLECRUISER,
	VGR_BATTLECRUISER,
	IMP_TYRANT_MISSILE_CRUISER,
	IMP_ALLEGIANCE_DESTROYER,
	IMP_EXECUTOR_SSD,
	IMP_VENGENCE_SSD,
	IMP_SOVEREIGN_SDD,
	HGN_Imperator_II_Destroyer,
	REB_BULWARK_CRUISER,
	REB_MC80C_CRUISER,
	REB_MEDIATOR_CRUISER,
	REB_BULWARK2_CRUISER,
	IMP_ALLEGIANCE_DESTROYER,
	IMP_DOMINATOR_DESTROYER,
	IMP_IMPERATOR_DESTROYER,
	IMP_IMPERATOR_II_DESTROYER,
	IMP_IMPERATOR_III_DESTROYER,
	IMP_HARROW_DESTROYER,
	IMP_VICTORY_I_DESTROYER,
	IMP_VICTORY_II_DESTROYER,
	REB_DEFENDER_DESTROYER,
	REB_MC80_DESTROYER,
	REB_MC80A_DESTROYER,
	REB_MC80B2_DESTROYER,
	REB_MC80B_DESTROYER,
	REB_MC90_DESTROYER,
	REB_REPUBLIC_DESTROYER,
	REB_NEBULA_DESTROYER,
	IMP_DREADNAUGHT,
	IMP_ENFORCER_CRUISER,
	REB_ASSAULT_FRIGATE,
	REB_BULK_CRUISER,
	REB_DREADNAUGHT,
	REB_MC_40_DESTROYER,
	IMP_CARRACK_CRUISER,
	IMP_LORONAR_STRIKE_CRUISER,
	IMP_NEBULON_B_2_FRIGATE,
	IMP_NEBULON_B_FRIGATE,
	IMP_LANCER_FRIGATE,
	IMP_CORELLIAN_LIGHT_FRIGATE,
	IMP_BAYONET_CRUISER,
	IMP_EIDOLON_CRUISER,
	IMP_CORELLIAN_FRIGATE,
	REB_LORONAR_STRIKE_CRUISER,
	REB_NEBULON_B_FRIGATE,
	REB_CORELLIAN_LIGHT_FRIGATE,
	REB_EIDOLON_CRUISER,
	REB_CORELLIAN_FRIGATE,
	REB_CC9600_FRIGATE,
	REB_CC7700_FRIGATE,
	REB_BALRUS_CRUISER,
	IMP_CORONA_FRIGATE,
	REB_CORONA_FRIGATE,
	REB_HOME_ONE_CRUISER,

	BEN_BULWARK2_CRUISER,

}

squadclass[eSuperCapital] = 
{
	IMP_EXECUTOR_SSD,
	IMP_VENGENCE_SDD,
	IMP_SOVEREIGN_SDD,
}

squadclass[eDestroyer] = 
{
	IMP_ALLEGIANCE_DESTROYER,
	IMP_DOMINATOR_DESTROYER,
	IMP_IMPERATOR_DESTROYER,
	IMP_IMPERATOR_II_DESTROYER,
	IMP_IMPERATOR_III_DESTROYER,
	IMP_HARROW_DESTROYER,
	IMP_VICTORY_I_DESTROYER,
	IMP_VICTORY_II_DESTROYER,
	REB_DEFENDER_DESTROYER,
	REB_MC80_DESTROYER,
	REB_MC80A_DESTROYER,
	REB_MC80B2_DESTROYER,
	REB_MC80B_DESTROYER,
	REB_MC90_DESTROYER,
	REB_REPUBLIC_DESTROYER,
	REB_NEBULA_DESTROYER,
}

squadclass[eHeavyFrigate] = 
{
	IMP_DREADNAUGHT,
	IMP_ENFORCER_CRUISER,
	IMP_EIDOLON_CRUISER,
	REB_ASSAULT_FRIGATE,
	REB_BULK_CRUISER,
	REB_DREADNAUGHT,
	REB_MC_40_DESTROYER,
	REB_EIDOLON_CRUISER,
}

squadclass[eHeavyCorvette] = 
{
	IMP_CORELLIAN_CORVETTE,
	IMP_CORELLIAN_GUNSHIP,
	IMP_CORELLIAN_HEAVY_GUNSHIP,
	IMP_HEAVY_CORVETTE,
	IMP_SYSTEM_PATROL_CRAFT,
	REB_CORELLIAN_CORVETTE,
	REB_CORELLIAN_GUNSHIP,
	REB_CORELLIAN_HEAVY_GUNSHIP,
	REB_HEAVY_CORVETTE,
	REB_SYSTEM_PATROL_CRAFT,
	REB_AGRAVE_PICKET,
}

squadclass[eBomber] = 
{
	IMP_I7_HOWLRUNNER,
	IMP_ASSAULT_GUNBOAT,
	IMP_TIE_BOMBER,
	IMP_TIE_DEFENDER,
	IMP_ASSAULT_TRANSPORT,
	IMP_OMICRON_TRANSPORT,
	IMP_SKIPRAY_BLASTBOAT,
	IMP_ESCORT_TRANSPORT,
	REB_B_WING,
	REB_E_WING,
	REB_Y_WING,
	REB_X_WING,
	REB_XJ_WING,
	REB_ASSAULT_TRANSPORT,
	REB_SKIPRAY_BLASTBOAT,
	REB_ESCORT_TRANSPORT,
}

squadclass[eCarrier] = 
{
	IMP_IMPERATOR_DESTROYER,
	IMP_IMPERATOR_II_DESTROYER,
	IMP_IMPERATOR_III_DESTROYER,
	IMP_HARROW_DESTROYER,
	IMP_VICTORY_I_DESTROYER,
	IMP_VICTORY_II_DESTROYER,
	IMP_ESCORT_CARRIER,
	IMP_GOLAN_III_PLATFORM,
	IMP_MODULAR_TAKSFORCE_CRUISER,
	IMP_EXECUTOR_SSD,
	IMP_TITAN_CRUISER,
	REB_GOLAN_III_PLATFORM,
	REB_DEFENDER_DESTROYER,
	REB_MC80_DESTROYER,
	REB_MC80A_DESTROYER,
	REB_MC80B2_DESTROYER,
	REB_MC80B_DESTROYER,
	REB_MC90_DESTROYER,
	REB_MC80C_CRUISER,
	REB_MEDIATOR_CRUISER,
	REB_BULWARK_CRUISER,
	REB_QUASAR_FIRE,
	REB_REPUBLIC_DESTROYER,
	REB_NEBULA_DESTROYER,
	REB_CC9600_FRIGATE,
	REB_BALRUS_CRUISER,
	IMP_CORONA_FRIGATE,
	REB_CORONA_FRIGATE,
	REB_HOME_ONE_CRUISER,
	BEN_ESCORT_CARRIER,
	
}

squadclass[eAntiDestroyer] = 
{
	IMP_ALLEGIANCE_DESTROYER,
	IMP_DOMINATOR_DESTROYER,
	IMP_IMPERATOR_DESTROYER,
	IMP_IMPERATOR_II_DESTROYER,
	IMP_IMPERATOR_III_DESTROYER,
	IMP_HARROW_DESTROYER,
	IMP_VICTORY_I_DESTROYER,
	IMP_VICTORY_II_DESTROYER,
	IMP_DREADNAUGHT,
	IMP_ENFORCER_CRUISER,
	IMP_TYRANT_MISSILE_CRUISER,
	IMP_EXECUTOR_SSD,
	IMP_VENGENCE_SDD,
	IMP_TIE_BOMBER,
	IMP_I7_HOWLRUNNER,
	IMP_TIE_BOMBER,
	IMP_TIE_DEFENDER,
	IMP_ASSAULT_TRANSPORT,
	IMP_OMICRON_TRANSPORT,
	IMP_ESCORT_TRANSPORT,
	IMP_EIDOLON_CRUISER,
	IMP_TITAN_CRUISER,
	REB_BULWARK2_CRUISER,
	REB_DEFENDER_DESTROYER,
	REB_MC80_DESTROYER,
	REB_MC80A_DESTROYER,
	REB_MC80B2_DESTROYER,
	REB_MC80B_DESTROYER,
	REB_MC90_DESTROYER,
	REB_ASSAULT_FRIGATE,
	REB_DREADNAUGHT,
	REB_MC_40_DESTROYER,
	REB_BULWARK_CRUISER,
	REB_MC80C_CRUISER,
	REB_MEDIATOR_CRUISER,
	REB_B_WING,
	REB_E_WING,
	REB_Y_WING,
	REB_X_WING,
	REB_XJ_WING,
	REB_ASSAULT_TRANSPORT,
	REB_ESCORT_TRANSPORT,
	REB_EIDOLON_CRUISER,
	REB_REPUBLIC_DESTROYER,
	REB_NEBULA_DESTROYER,
	REB_BALRUS_CRUISER,
	REB_HOME_ONE_CRUISER,
}

squadclass[eAntiCruiser] = 
{
	IMP_ALLEGIANCE_DESTROYER,
	IMP_IMPERATOR_II_DESTROYER,
	IMP_IMPERATOR_III_DESTROYER,
	IMP_HARROW_DESTROYER,
	IMP_DREADNAUGHT,
	IMP_ALLEGIANCE_DESTROYER,
	IMP_TYRANT_MISSILE_CRUISER,
	IMP_EXECUTOR_SSD,
	IMP_VENGENCE_SDD,
	IMP_I7_HOWLRUNNER,
	IMP_TIE_BOMBER,
	IMP_TIE_DEFENDER,
	IMP_ASSAULT_TRANSPORT,
	IMP_OMICRON_TRANSPORT,
	IMP_ESCORT_TRANSPORT,
	IMP_TITAN_CRUISER,
	REB_BULWARK2_CRUISER,
	REB_DEFENDER_DESTROYER,
	REB_MC80A_DESTROYER,
	REB_MC80B2_DESTROYER,
	REB_MC80B_DESTROYER,
	REB_MC90_DESTROYER,
	REB_DREADNAUGHT,
	REB_MC_40_DESTROYER,
	REB_BULWARK_CRUISER,
	REB_MC80C_CRUISER,
	REB_MEDIATOR_CRUISER,
	REB_B_WING,
	REB_E_WING,
	REB_Y_WING,
	REB_X_WING,
	REB_XJ_WING,
	REB_ASSAULT_TRANSPORT,
	REB_ESCORT_TRANSPORT,
	REB_REPUBLIC_DESTROYER,
	REB_NEBULA_DESTROYER,
	REB_HOME_ONE_CRUISER,
}

--looks like relic is lame, implement these in build instead

--squadclass[eGravWell] = 
--{
--	IMP_IMMOBILIZER_CRUISER,
--	IMP_DOMINATOR_DESTROYER,
--	IMP_GRAV_WELL_MINE,
--	IMP_TYRANT_MISSILE_CRUISER,
--
--	REB_GRAV_WELL_MINE,
--}

--squadclass[eRepair] = 
--{
--	IMP_MODULAR_TASKFORCE_CRUISER,
--	IMP_REPAIR_DROID,
--	
--	REB_REPAIR_DROID,
--}

--
-- FUNCTIONS TO ADD SQUADRON TYPES TO CLASS SYSTEM
--

function FastAddToClass( tbl, classid )
	for a,b in tbl do
		AddToClass( b, classid )
	end
end

function ClassInitialize()

	for i=0, sg_maxClasses do
		if (squadclass[i]) then
			FastAddToClass( squadclass[i], i )
		end
	end
	
	-- debug: name all the classes to be displayed on screen
	AddClassName( eMotherShip, "Motherships")
	AddClassName( eCollector, "Collectors")
	AddClassName( eDropOff, "DropOffs")
	AddClassName( eFighter, "Fighters")
	AddClassName( eFrigate, "Frigates")
	AddClassName( eCorvette, "Corvettes")
	AddClassName( eCapital, "Capital")
	AddClassName( eAntiFighter, "AntiFighter")
	AddClassName( eAntiCorvette, "AntiCorvette")
	AddClassName( eAntiFrigate, "AntiFrigate")
	AddClassName( ePlatform, "Platform")
	AddClassName( eRefinery, "Refinery")
	AddClassName( eHyperspaceGate, "HypGates")
	AddClassName( eShield, "Shields")
	AddClassName( eCapture, "Capture")
	AddClassName( eSubSystemAttackers, "SubSysKillas")
	AddClassName( eBattleCruiser, "BattleCruiser")
	AddClassName( eSuperCapital, "SuperCapital")
	AddClassName( eDestroyer, "Destroyer")
	AddClassName( eHeavyCorvette, "HeavyCorvette")
	AddClassName( eHeavyFrigate, "HeavyFrigate")
	AddClassName( eBomber, "Bomber")
	AddClassName( eCarrier, "Carrier")
	AddClassName( eAntiDestroyer, "AntiDestroyer")
	AddClassName( eAntiCruiser, "AntiCruiser")
	--AddClassName( eGravWell, "GravWell")
	--AddClassName( eRepair, "Repair")
	
	
end
