global function initFrontierDefenseData
void function initFrontierDefenseData()
{
	useCustomFDLoad = true //Respawn Routes for this map are quite bad ngl
	AddCallback_RegisterCustomFDContent( RegisterCustomFDContent )
    PlaceFDShop( < 1767, -4959, 2244> )
	SetFDDropshipSpawn( < 3820, -4181, 2242 > )
	SetFDGroundSpawn( < 3184, -3844, 2377 >, < 0, -45, 0 > )

	AddWaveAnnouncement( "fd_introEasy" )
	AddWaveAnnouncement( "fd_waveTypeTitanReg" )
	AddWaveAnnouncement( "fd_waveComboNukeCloak" )
	AddWaveAnnouncement( "fd_waveTypeReapers" )
	AddWaveAnnouncement( "fd_finalWaveStartGeneric" )

	int reaperrain = 0

	/*
	 __      __                 _
	 \ \    / /__ _ __ __ ___  / |
	  \ \/\/ // _` |\ V // -_) | |
	   \_/\_/ \__,_| \_/ \___| |_|

	*/
    array<WaveSpawnEvent> wave1
	WaveSpawn_SmokeWall( wave1, < 5583, -2836, 2236 >, 0.6 )
	WaveSpawn_SmokeWall( wave1, < 5794, -4925, 2237 >, 0.6 )
	WaveSpawn_SmokeWall( wave1, < 3864, -6135, 2237 >, 0.6 )
	WaveSpawn_SmokeWall( wave1, < 4533, -2242, 2114 >, 0.6 )
	WaveSpawn_SmokeWall( wave1, < 3973, -3914, 2235 >, 0.6 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 6779, -2872, 2236 >, 0.0, "", 0.5, "fd_waveTypeInfantry" )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 6497, -3399, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 6954, -3714, 2236 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 6169, -4616, 2236 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 7252, -4815, 2242 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave1, 6 )

	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 6997, -6491, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 6247, -3950, 2245 >, 0.0, "", 0.4 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 6348, -1941, 2242 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 5933, -1584, 2242 >, 0.0, "", 0.2 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 7342, -1539, 2408 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave1, 6 )

	WaveSpawn_InfantrySpawn( wave1, "Stalker", < 8577, -2695, 2245 >, 0.0, "", 0.2, "fd_waveTypeStalkers" )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 8173, -3006, 2245 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave1, "Stalker", < 8056, -4362, 2135 >, 0.0, "", 0.4 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 7511, -4658, 2222 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave1, "Stalker", < 9726, -5123, 2021 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave1, 6 )

	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 9108, -5068, 2085 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave1, "Stalker", < 5183, -5068, 2085 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 4701, -4435, 2013 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 4541, -2687, 2086 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 5462, -1485, 2236 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave1, 6 )

	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 6042, -3143, 2243 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave1, "Stalker", < 3903, -1883, 2304 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave1, "Stalker", < 6777, -5414, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave1, "Stalker", < 5751, -5479, 2234 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave1, "Stalker", < 5788, -6606, 2242 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave1, 6 )

	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 7568, -4097, 2172 >, 0.0, "", 0.2 )
	WaveSpawn_InfantrySpawn( wave1, "Stalker", < 4642, -5330, 2242 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave1, "PodGrunt", < 4411, -4855, 2242 >, 0.0, "" )
    WaveSpawnEvents.append( wave1 )

	/*
	 __      __                 ___
	 \ \    / /__ _ __ __ ___  |_  )
	  \ \/\/ // _` |\ V // -_)  / /
	   \_/\_/ \__,_| \_/ \___| /___|

	*/
	array<WaveSpawnEvent> wave2
	WaveSpawn_InfantrySpawn( wave2, "PodGrunt", < 4642, -5330, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 6042, -3143, 2243 >, 0.0, "", 0.6 )
	WaveSpawn_InfantrySpawn( wave2, "PodGrunt", < 5788, -6606, 2242 >, 0.0, "", 0.7 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 7568, -4097, 2172 >, 0.0, "", 0.8 )
	WaveSpawn_InfantrySpawn( wave2, "PodGrunt", < 6779, -2872, 2236 >, 0.0, "", 0.9 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 6348, -1941, 2242 >, 0.0, "", 1.0 )
	WaveSpawn_TitanSpawn( wave2, "Monarch", < 8495, -4790, 2100 >, 180, "", 0.5 )
	WaveSpawn_TitanSpawn( wave2, "Monarch", < 9321, -4211, 2045 >, 180, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave2, 6 )

	WaveSpawn_InfantrySpawn( wave2, "PodGrunt", < 6954, -3714, 2236 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 6497, -3399, 2242 >, 0.0, "", 0.6 )
	WaveSpawn_InfantrySpawn( wave2, "PodGrunt", < 8056, -4362, 2135 >, 0.0, "", 0.7 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 4541, -2687, 2086 >, 0.0, "", 0.8 )
	WaveSpawn_InfantrySpawn( wave2, "PodGrunt", < 6777, -5414, 2242 >, 0.0, "", 0.9 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 8577, -2695, 2245 >, 0.0, "", 1.0 )
	WaveSpawn_TitanSpawn( wave2, "Legion", < 9321, -4211, 2045 >, 180, "", 0.5 )
	WaveSpawn_TitanSpawn( wave2, "Legion", < 10154, -3282, 2027 >, 180, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave2, 6 )

	WaveSpawn_InfantrySpawn( wave2, "PodGrunt", < 4701, -4435, 2013 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 6997, -6491, 2242 >, 0.0, "", 0.6 )
	WaveSpawn_InfantrySpawn( wave2, "PodGrunt", < 9108, -5068, 2085 >, 0.0, "", 0.7 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 4411, -4855, 2242 >, 0.0, "", 0.8 )
	WaveSpawn_InfantrySpawn( wave2, "PodGrunt", < 7252, -4815, 2242 >, 0.0, "", 0.9 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 7342, -1539, 2408 >, 0.0, "", 1.0 )
	WaveSpawn_TitanSpawn( wave2, "Ion", < 11097, -4024, 1934 >, 180, "", 0.5 )
	WaveSpawn_TitanSpawn( wave2, "Ion", < 11204, -4969, 1884 >, 180, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave2, 6 )

	WaveSpawn_InfantrySpawn( wave2, "PodGrunt", < 7511, -4658, 2222 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 6169, -4616, 2236 >, 0.0, "", 0.6 )
	WaveSpawn_InfantrySpawn( wave2, "PodGrunt", < 5933, -1584, 2242 >, 0.0, "", 0.7 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 8173, -3006, 2245 >, 0.0, "", 0.8 )
	WaveSpawn_InfantrySpawn( wave2, "PodGrunt", < 5751, -5479, 2234 >, 0.0, "", 0.9 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 3903, -1883, 2304 >, 0.0, "", 1.0 )
	WaveSpawn_TitanSpawn( wave2, "Ronin", < 10254, -6570, 1976 >, 180, "", 0.5 )
	WaveSpawn_TitanSpawn( wave2, "Ronin", < 10338, -6098, 1956 >, 180, "" )
	WaveSpawn_WaitEnemyAliveAmount( wave2, 6 )

	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 5462, -1485, 2236 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 5183, -5068, 2085 >, 0.0, "", 0.6 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 6247, -3950, 2245 >, 0.0, "", 0.7 )
	WaveSpawn_InfantrySpawn( wave2, "Stalker", < 9726, -5123, 2021 >, 0.0, "", 0.8 )
	WaveSpawn_TitanSpawn( wave2, "Sniper", < -412, -6711, 2084 >, 0.0, "", 0.5 )
	WaveSpawn_TitanSpawn( wave2, "Sniper", < -480, -1603, 2088 >, 0.0, "", 2.5 )
	WaveSpawn_ReaperSpawn( wave2, "Reaper", < -1605, -6286, 2034 >, 0, "", 0.8 )
	WaveSpawn_ReaperSpawn( wave2, "Reaper", < -1700, -2687, 1987 >, 0, "", 0.8 )
	WaveSpawn_ReaperSpawn( wave2, "Reaper", < -1942, -2210, 1974 >, 0, "", 0.8 )
	WaveSpawn_ReaperSpawn( wave2, "Reaper", < -1136, -6756, 2057 >, 0, "", 0.8 )
	WaveSpawn_ReaperSpawn( wave2, "Reaper", < -1425, -1635, 2002 >, 0, "", 0.8 )
	WaveSpawn_ReaperSpawn( wave2, "Reaper", < -624, -6285, 2080 >, 0, "" )
    WaveSpawnEvents.append( wave2 )

	/*
	 __      __                 ____
	 \ \    / /__ _ __ __ ___  |__ /
	  \ \/\/ // _` |\ V // -_)  |_ \
	   \_/\_/ \__,_| \_/ \___| |___/

	*/
	array<WaveSpawnEvent> wave3
	WaveSpawn_TitanSpawn( wave3, "Tone", < 8495, -4790, 2100 >, 180, "", 1.0 )
	WaveSpawn_TitanSpawn( wave3, "Monarch", < 10254, -6570, 1976 >, 180, "", 1.0 )
	WaveSpawn_TitanSpawn( wave3, "Tone", < 9321, -4211, 2045 >, 180, "", 1.0 )
	WaveSpawn_TitanSpawn( wave3, "Monarch", < 10338, -6098, 1956 >, 180, "", 2.5 )
	WaveSpawn_ReaperSpawn( wave3, "Reaper", < 9794, -3250, 2084 >, 0, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave3, "Reaper", < 10045, -4569, 1993 >, 0, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave3, "Reaper", < 9485, -4206, 2044 >, 0, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave3, "Reaper", < 7829, -6582, 2242 >, 0, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave3, "Reaper", < 6786, -5415, 2242 >, 0, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave3, "Reaper", < 6868, -2607, 2242 >, 0, "", 2.5 )
	WaveSpawn_InfantrySpawn( wave3, "CloakDrone", < 9934, -3615, 4000 >, 180, "", 0.5, "fd_waveTypeCloakDrone" )
	WaveSpawn_InfantrySpawn( wave3, "CloakDrone", < 9784, -4432, 4000 >, 180, "", 2.5 )
	WaveSpawn_InfantrySpawn( wave3, "PodGrunt", < 8008, -1635, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "PodGrunt", < 8524, -2702, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "PodGrunt", < 8294, -2214, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "PodGrunt", < 7748, -1536, 2238 >, 0.0, "" )
	WaveSpawn_WaitEnemyAliveAmount( wave3, 8 )

	WaveSpawn_Announce( wave3, "PreNukeTitan", 0.0 )
	WaveSpawn_ReaperSpawn( wave3, "Reaper", < -1605, -6286, 2034 >, 0, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave3, "Reaper", < -1425, -1635, 2002 >, 0, "", 0.6 )
	WaveSpawn_ReaperSpawn( wave3, "Reaper", < -1136, -6756, 2057 >, 0, "", 0.7 )
	WaveSpawn_ReaperSpawn( wave3, "Reaper", < -1700, -2687, 1987 >, 0, "", 0.8 )
	WaveSpawn_ReaperSpawn( wave3, "Reaper", < -1942, -2210, 1974 >, 0, "", 0.9 )
	WaveSpawn_ReaperSpawn( wave3, "Reaper", < -624, -6285, 2080 >, 0, "", 2.5 )
	WaveSpawn_InfantrySpawn( wave3, "PodGrunt", < 8606, -2966, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "PodGrunt", < 8271, -1544, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "PodGrunt", < 8661, -1957, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "PodGrunt", < 8484, -1826, 2242 >, 0.0, "", 2.5 )
	WaveSpawn_InfantrySpawn( wave3, "CloakDrone", < 9934, -3615, 4000 >, 180, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "CloakDrone", < 9784, -4432, 4000 >, 180, "", 2.5 )
	WaveSpawn_TitanSpawn( wave3, "Legion", < 11097, -4024, 1934 >, 180, "", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Legion", < 11204, -4969, 1884 >, 180, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave3, 8 )

	WaveSpawn_BossTitanSpawn_Random( wave3, [ eFD_Bosses.Viper, eFD_Bosses.Ash ], < 823.805, -2381.59, 2078.3 >, 0, "", 7.8 )
	WaveSpawn_SmokeWall( wave3, < 8113, -3451, 2233 >,	0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 5752, -2898, 2236 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 5800, -4864, 2236 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 9134, -3256, 2176 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 6534, -4256, 2236 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 8711, -6121, 2180 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 9778, -5758, 2035 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 6204, -4586, 2236 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 9404, -3631, 2110 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 10370, -3825, 1945 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 8524, -4331, 2086 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 5905, -6298, 2241 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 8940, -6724, 2116 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 8622, -3919, 2163 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 5503, -4644, 2236 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 9076, -5864, 2079 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 9516, -6777, 2017 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 10034, -4537, 1995 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 8508, -4908, 2113 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 5756, -5591, 2229 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 9295, -6475, 2059 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 7740, -5451, 2242 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 8349, -5821, 2237 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 7095, -3480, 2242 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 6496, -2977, 2290 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 7053, -5648, 2242 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 6390, -5694, 2242 >, 0.5, 180 )
	WaveSpawn_SmokeWall( wave3, < 4749, -6165, 2242 >, 3.0, 180 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 9245, -6489, 2060 >, 180, "northForestThroughDebris", 0.5, "fd_incTitansNukeClump" )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 9336, -2261, 2106 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 9905, -6100, 1981 >, 180, "northForestThroughDebris", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 11282, -5322, 1909 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 10358, -5975, 1948 >, 180, "northForestThroughDebris", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 9784, -4432, 2007 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 9816, -6601, 2002 >, 180, "northForestThroughDebris", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 10833, -5919, 1925 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 10818, -6493, 1916 >, 180, "northForestThroughDebris", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 10417, -6471, 1955 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 11318, -5970, 1957 >, 180, "northForestThroughDebris", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 9934, -3615, 2022 >, 180, "northForestThroughTown", 2.5 )
	WaveSpawn_InfantrySpawn( wave3, "CloakDrone", < 9934, -3615, 4000 >, 180, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "CloakDrone", < 9784, -4432, 4000 >, 180, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "CloakDrone", < 9934, -3615, 4000 >, 180, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "CloakDrone", < 9784, -4432, 4000 >, 180, "", 2.5 )
	WaveSpawn_InfantrySpawn( wave3, "PodGrunt", < 8484, -1826, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "Stalker", < 8008, -1635, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "PodGrunt", < 8271, -1544, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "Stalker", < 8606, -2966, 2242 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave3, 8 )

	WaveSpawn_TitanSpawn( wave3, "Nuke", < 9245, -6489, 2060 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 9336, -2261, 2106 >, 180, "northForestThroughDebris", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 9905, -6100, 1981 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 11282, -5322, 1909 >, 180, "northForestThroughDebris", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 10358, -5975, 1948 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 9784, -4432, 2007 >, 180, "northForestThroughDebris", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 9816, -6601, 2002 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 10833, -5919, 1925 >, 180, "northForestThroughDebris", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 10818, -6493, 1916 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 10417, -6471, 1955 >, 180, "northForestThroughDebris", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 11318, -5970, 1957 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Nuke", < 9934, -3615, 2022 >, 180, "northForestThroughDebris", 2.5 )
	WaveSpawn_InfantrySpawn( wave3, "CloakDrone", < 9934, -3615, 4000 >, 180, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "CloakDrone", < 9784, -4432, 4000 >, 180, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "CloakDrone", < 9934, -3615, 4000 >, 180, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "CloakDrone", < 9784, -4432, 4000 >, 180, "", 2.5 )
	WaveSpawn_InfantrySpawn( wave3, "PodGrunt", < 8661, -1957, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "Stalker", < 8524, -2702, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "PodGrunt", < 7748, -1536, 2238 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave3, "Stalker", < 8294, -2214, 2242 >, 0.0, "", 5.0 )
	WaveSpawn_TitanSpawn( wave3, "Sniper", < -412, -6711, 2084 >, 0.0, "", 0.5 )
	WaveSpawn_TitanSpawn( wave3, "Sniper", < -480, -1603, 2088 >, 0, "" )
    WaveSpawnEvents.append( wave3 )

	/*
	 __      __                 _ _
	 \ \    / /__ _ __ __ ___  | | |
	  \ \/\/ // _` |\ V // -_) |_  _|
	   \_/\_/ \__,_| \_/ \___|   |_|

	*/
	array<WaveSpawnEvent> wave4
	WaveSpawn_Announce( wave4, "EliteTitans", 0.0 )
	WaveSpawn_TitanSpawn( wave4, "Legion", < -2020, -6257, 2011 >, 0, "", 0.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave4, "Legion", < -1652, -5669, 2021 >, 0, "", 2.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave4, "Ion", < -353, -1731, 2093 >, 0, "", 0.5 )
	WaveSpawn_TitanSpawn( wave4, "Ion", < 517, -2248, 2082 >, 0, "", 2.5 )
	WaveSpawn_InfantrySpawn( wave4, "PodGrunt", < 8484, -1826, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave4, "Spectre", < 8524, -2702, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave4, "PodGrunt", < 7748, -1536, 2238 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave4, "Spectre", < 8008, -1635, 2242 >, 0.0, "", 5.0 )
	WaveSpawn_TitanSpawn( wave4, "Sniper", < -412, -6711, 2084 >, 0.0, "", 0.5 )
	WaveSpawn_TitanSpawn( wave4, "Sniper", < -480, -1603, 2088 >, 0.0, "", 2.5 )
	WaveSpawn_InfantrySpawn( wave4, "Stalker", < 233, -4389, 2304 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave4, "Stalker", < 183, -5512, 2304 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave4, 8 )

	WaveSpawn_TitanSpawn( wave4, "Tone", < 8084, -4370, 2132 >, 180, "", 0.5 )
	WaveSpawn_TitanSpawn( wave4, "Tone", < 8007, -5207, 2190 >, 180, "", 2.5 )
	WaveSpawn_ReaperSpawn( wave4, "TickReaper", < 6775, -5415, 2242 >, -135, "", 0.5, "fd_waveTypeReaperTicks" )
	WaveSpawn_ReaperSpawn( wave4, "TickReaper", < 5522, -1508, 2236 >, -90, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave4, "TickReaper", < 3591, -1639, 2242 >, -90, "", 2.5 )
	WaveSpawn_TitanSpawn( wave4, "Tone", < -431, -1724, 2090 >, 0, "", 0.5 )
	WaveSpawn_TitanSpawn( wave4, "Tone", < -1003, -3029, 2024 >, 0, "", 2.5 )
	WaveSpawn_TitanSpawn( wave4, "Ion", < -1273, -6676, 2050 >, 0, "", 0.5 )
	WaveSpawn_TitanSpawn( wave4, "Ion", < -1623, -5591, 2027 >, 0, "", 2.5 )
	WaveSpawn_ReaperSpawn( wave4, "TickReaper", < 6775, -5415, 2242 >, -135, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave4, "TickReaper", < 5522, -1508, 2236 >, -90, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave4, "TickReaper", < 3591, -1639, 2242 >, -90, "", 2.5 )
	WaveSpawn_InfantrySpawn( wave4, "Stalker", < 233, -4389, 2304 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave4, "Stalker", < 183, -5512, 2304 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave4, 8 )

	WaveSpawn_InfantrySpawn( wave4, "Spectre", < 8661, -1957, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave4, "PodGrunt", < 8294, -2214, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave4, "Spectre", < 8606, -2966, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave4, "PodGrunt", < 8271, -1544, 2242 >, 0.0, "", 2.5 )
	WaveSpawn_TitanSpawn( wave4, "Ion", < 8495, -4790, 2100 >, 180, "", 0.5 )
	WaveSpawn_TitanSpawn( wave4, "Ion", < 9321, -4211, 2045 >, 180, "", 1.5 )
	WaveSpawn_TitanSpawn( wave4, "Tone", < 9321, -4211, 2045 >, 180, "", 0.5 )
	WaveSpawn_TitanSpawn( wave4, "Tone", < 10154, -3282, 2027 >, 180, "", 1.5 )
	WaveSpawn_TitanSpawn( wave4, "Scorch", < 11097, -4024, 1934 >, 180, "", 0.5 )
	WaveSpawn_TitanSpawn( wave4, "Scorch", < 11204, -4969, 1884 >, 180, "", 1.5 )
	WaveSpawn_TitanSpawn( wave4, "Monarch", < 10254, -6570, 1976 >, 180, "", 0.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave4, "Monarch", < 10338, -6098, 1956 >, 180, "", 2.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_InfantrySpawn( wave4, "Stalker", < 233, -4389, 2304 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave4, "Stalker", < 183, -5512, 2304 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave4, 0 )

	WaveSpawn_TitanSpawn( wave4, "Legion", < -1355, -2128, 2005 >, 0, "", 5.0 )
	WaveSpawn_TitanSpawn( wave4, "Ronin", < -1580, -2545, 1994 >, 0, "", 5.0, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 2.0, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 1.8, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 1.6, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 1.4, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 1.2, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 1.0, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 0.8, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 0.6, "", 600.0 )
	for( reaperrain = 0; reaperrain < 16; reaperrain++ )
	{
		WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", RandomFloatRange( 0.1, 0.5 ), "", 600.0 )
		WaveSpawn_WaitEnemyAliveAmount( wave4, 24 )
	}
	WaveSpawn_TitanSpawn( wave4, "Ronin", < -1580, -2545, 1995 >, 0, "", 0.3, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave4, "Ronin", < -1580, -2097, 1995 >, 0, "", 0.3, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	for( reaperrain = 0; reaperrain < 16; reaperrain++ )
	{
		WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", RandomFloatRange( 0.1, 0.5 ), "", 600.0 )
		WaveSpawn_WaitEnemyAliveAmount( wave4, 24 )
	}
	WaveSpawn_TitanSpawn( wave4, "Ion", < -1580, -2545, 1995 >, 0, "", 0.3, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave4, "Ion", < -1580, -2097, 1995 >, 0, "", 0.3, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	for( reaperrain = 0; reaperrain < 16; reaperrain++ )
	{
		WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", RandomFloatRange( 0.1, 0.5 ), "", 600.0 )
		WaveSpawn_WaitEnemyAliveAmount( wave4, 24 )
	}
	WaveSpawn_TitanSpawn( wave4, "Scorch", < -1580, -2545, 1995 >, 0, "", 0.3, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave4, "Scorch", < -1580, -2097, 1995 >, 0, "", 0.6, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 0.8, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 1.0, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 1.2, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 1.4, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 1.6, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 1.8, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 2.0, "", 600.0 )
	WaveSpawn_ReaperSpawn( wave4, "Reaper", < -1412, -2284, 1993 >, 0, "", 0.5, "", 600.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave4, 4 )

	WaveSpawn_InfantrySpawn( wave4, "Spectre", < 7252, -4815, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave4, "PodGrunt", < 6497, -3399, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave4, "Spectre", < 6779, -2872, 2236 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave4, "PodGrunt", < 6169, -4616, 2236 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave4, "Spectre", < 6954, -3714, 2236 >, 0.0, "", 2.5 )
	WaveSpawn_ReaperSpawn( wave4, "TickReaper", < 6775, -5415, 2242 >, -135, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave4, "TickReaper", < 5522, -1508, 2236 >, -90, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave4, "TickReaper", < 3591, -1639, 2242 >, -90, "", 2.5 )
	WaveSpawn_InfantrySpawn( wave4, "Stalker", < 233, -4389, 2304 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave4, "Stalker", < 183, -5512, 2304 >, 0.0, "", 2.5 )
	WaveSpawn_TitanSpawn( wave4, "Northstar", < -412, -6711, 2084 >, 0.0, "", 0.5 )
	WaveSpawn_TitanSpawn( wave4, "Northstar", < -480, -1603, 2088 >, 0, "" )

    WaveSpawnEvents.append( wave4 )

	/*
	 __      __                 ___
	 \ \    / /__ _ __ __ ___  | __|
	  \ \/\/ // _` |\ V // -_) |__ \
	   \_/\_/ \__,_| \_/ \___| |___/

	*/
	array<WaveSpawnEvent> wave5
	WaveSpawn_Announce( wave5, "MediumWave", 0.0 )
	WaveSpawn_TitanSpawn( wave5, "Ronin", < 9245, -6489, 2060 >, 180, "northForestThroughTown", 0.2 )
	WaveSpawn_TitanSpawn( wave5, "Monarch", < 9336, -2261, 2106 >, 180, "northForestThroughTown", 0.3 )
	WaveSpawn_TitanSpawn( wave5, "Ronin", < 9905, -6100, 1981 >, 180, "northForestLongUnderpass", 0.6, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Monarch", < 11282, -5322, 1909 >, 180, "northForestThroughTown", 0.7 )
	WaveSpawn_TitanSpawn( wave5, "Ronin", < 10358, -5975, 1948 >, 180, "northForestThroughTown", 0.4 )
	WaveSpawn_TitanSpawn( wave5, "Monarch", < 9784, -4432, 2007 >, 180, "northForestLongUnderpass", 0.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Ronin", < 9816, -6601, 2002 >, 180, "northForestLongUnderpass", 0.8, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Monarch", < 10833, -5919, 1925 >, 180, "northForestLongUnderpass", 0.2, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Ronin", < 10818, -6493, 1916 >, 180, "northForestThroughTown", 1.0 )
	WaveSpawn_TitanSpawn( wave5, "Monarch", < 10417, -6471, 1955 >, 180, "northForestLongUnderpass", 1.0, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Ronin", < 11318, -5970, 1957 >, 180, "northForestLongUnderpass", 0.4, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Monarch", < 9934, -3615, 2022 >, 180, "northForestThroughTown", 0.8 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 5120, -4779, 1986 >, 0.0, "", 0.6 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 4765, -4527, 2010 >, 0.0, "", 1.5 )
	WaveSpawn_ReaperSpawn( wave5, "TickReaper", < 6035, -3184, 2243 >, 35, "" )
	WaveSpawn_WaitEnemyAliveAmount( wave5, 6 )

	WaveSpawn_Announce( wave5, "PreArcTitan", 0.0 )
	WaveSpawn_TitanSpawn( wave5, "Tone", < 9245, -6489, 2060 >, 180, "northForestThroughTown", 0.6 )
	WaveSpawn_TitanSpawn( wave5, "Ion", < 9336, -2261, 2106 >, 180, "northForestThroughTown", 1.0 )
	WaveSpawn_TitanSpawn( wave5, "Tone", < 9905, -6100, 1981 >, 180, "northForestThroughTown", 1.2 )
	WaveSpawn_TitanSpawn( wave5, "Ion", < 11282, -5322, 1909 >, 180, "northForestThroughTown", 1.5 )
	WaveSpawn_TitanSpawn( wave5, "Tone", < 10358, -5975, 1948 >, 180, "northForestThroughTown", 1.5 )
	WaveSpawn_TitanSpawn( wave5, "Ion", < 9784, -4432, 2007 >, 180, "northForestThroughTown", 0.8 )
	WaveSpawn_TitanSpawn( wave5, "Tone", < 9816, -6601, 2002 >, 180, "northForestThroughTown", 0.6 )
	WaveSpawn_TitanSpawn( wave5, "Ion", < 10833, -5919, 1925 >, 180, "northForestThroughTown", 0.4 )
	WaveSpawn_TitanSpawn( wave5, "Tone", < 10818, -6493, 1916 >, 180, "northForestLongUnderpass", 2.0, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Ion", < 10417, -6471, 1955 >, 180, "northForestLongUnderpass", 2.0, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Tone", < 11318, -5970, 1957 >, 180, "northForestLongUnderpass", 1.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Ion", < 9934, -3615, 2022 >, 180, "northForestLongUnderpass", 1.2, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 4984, -1991, 2165 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 5437, -1868, 2236 >, 0.0, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave5, "TickReaper", < 6833, -2650, 2242 >, 180, "" )
	WaveSpawn_WaitEnemyAliveAmount( wave5, 6 )

	WaveSpawn_TitanSpawn( wave5, "Legion", < 9245, -6489, 2060 >, 180, "northForestLongUnderpass", 1.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Scorch", < 9336, -2261, 2106 >, 180, "northForestThroughTown", 1.0 )
	WaveSpawn_TitanSpawn( wave5, "Legion", < 9905, -6100, 1981 >, 180, "northForestLongUnderpass", 0.8, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Scorch", < 11282, -5322, 1909 >, 180, "northForestThroughTown", 0.6 )
	WaveSpawn_TitanSpawn( wave5, "Legion", < 10358, -5975, 1948 >, 180, "northForestThroughTown", 1.2 )
	WaveSpawn_TitanSpawn( wave5, "Scorch", < 9784, -4432, 2007 >, 180, "northForestThroughTown", 0.8 )
	WaveSpawn_TitanSpawn( wave5, "Legion", < 9816, -6601, 2002 >, 180, "northForestThroughTown", 1.4 )
	WaveSpawn_TitanSpawn( wave5, "Scorch", < 10833, -5919, 1925 >, 180, "northForestThroughTown", 0.6 )
	WaveSpawn_TitanSpawn( wave5, "Legion", < 10818, -6493, 1916 >, 180, "northForestLongUnderpass", 2.0, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Scorch", < 10417, -6471, 1955 >, 180, "northForestLongUnderpass", 1.8, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Legion", < 11318, -5970, 1957 >, 180, "northForestLongUnderpass", 1.4, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Scorch", < 9934, -3615, 2022 >, 180, "northForestLongUnderpass", 0.6, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 3543, -1595, 2244 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 2928, -1864, 2304 >, 0.0, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave5, "TickReaper", < 5130, -4887, 1986 >, 135, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave5, 6 )

	WaveSpawn_TitanSpawn( wave5, "ArcTitan", < 9245, -6489, 2060 >, 180, "northForestThroughTown", 0.5, "fd_waveTypeTitanArc" )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 9336, -2261, 2106 >, 180, "trenchDebrisMain", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "ArcTitan", < 9905, -6100, 1981 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 11282, -5322, 1909 >, 180, "trenchDebrisMain", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "ArcTitan", < 10358, -5975, 1948 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 9784, -4432, 2007 >, 180, "trenchDebrisMain", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "ArcTitan", < 9816, -6601, 2002 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 10833, -5919, 1925 >, 180, "trenchDebrisMain", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "ArcTitan", < 10818, -6493, 1916 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 10417, -6471, 1955 >, 180, "trenchDebrisMain", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "ArcTitan", < 11318, -5970, 1957 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 9934, -3615, 2022 >, 180, "trenchDebrisMain", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 4643, -5283, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 4381, -4825, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave5, "TickReaper", < 5980, -5529, 2258 >, -65, "", 5.0 )
	WaveSpawn_InfantrySpawn( wave5, "CloakDrone", < 9934, -3615, 4000 >, 180, "", 1.5, "fd_incCloakDroneClump" )
	WaveSpawn_InfantrySpawn( wave5, "CloakDrone", < 9784, -4432, 4000 >, 180, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave5, 6 )

	WaveSpawn_TitanSpawn( wave5, "Nuke", < 10833, -5919, 1925 >, 180, "", 0.6 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 10818, -6493, 1916 >, 180, "", 0.8 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 9816, -6601, 2002 >, 180, "", 0.4 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 10358, -5975, 1948 >, 180, "", 0.6 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 11282, -5322, 1909 >, 180, "", 0.2 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 10417, -6471, 1955 >, 180, "", 0.4 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 11318, -5970, 1957 >, 180, "", 0.8 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 9905, -6100, 1981 >, 180, "", 3.5 )
	WaveSpawn_TitanSpawn( wave5, "Ronin", < -959, -4208, 2096 >, 0, "", 0.4 )
	WaveSpawn_TitanSpawn( wave5, "Ronin", < -1741, -4984, 2016 >, 0, "", 0.8 )
	WaveSpawn_TitanSpawn( wave5, "Tone", < -1188, -5954, 2083 >, 0, "", 0.2 )
	WaveSpawn_TitanSpawn( wave5, "Tone", < -618, -2785, 2002 >, 0, "", 0.6 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < -1712, -3176, 1987 >, 0, "", 6.5 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 612, -5513, 2304 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 175, -4574, 2304 >, 0.0, "", 5.0 )
	WaveSpawn_ReaperSpawn( wave5, "TickReaper", < 7168, -4750, 2242 >, 0, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave5, "TickReaper", < 5590, -1948, 2236 >, -90, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave5, "TickReaper", < 6515, -2554, 2242 >, -90, "", 0.5 )
	WaveSpawn_ReaperSpawn( wave5, "TickReaper", < 4055, -2955, 2239 >, -145, "", 2.0 )
	WaveSpawn_InfantrySpawn( wave5, "CloakDrone", < 9336, -2261, 4000 >, 180, "", 2.0 )
	WaveSpawn_InfantrySpawn( wave5, "CloakDrone", < 9245, -6489, 4000 >, 180, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave5, 0 )

	WaveSpawn_Announce( wave5, "TitanfallBlock", 0.0 )
	WaveSpawn_TitanfallBlock( wave5, true, 5.0 )
	WaveSpawn_TitanSpawn( wave5, "Ronin", < 9816, -6601, 2002 >, 180, "northForestLongUnderpass", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Ronin", < 11318, -5970, 1957 >, 180, "northForestLongUnderpass", 0.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Ronin", < 9784, -4432, 2007 >, 180, "northForestLongUnderpass", 2.5 )
	WaveSpawn_TitanSpawn( wave5, "Monarch", < 11282, -5322, 1909 >, 180, "northForestLongUnderpass", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Monarch", < 9934, -3615, 2022 >, 180, "northForestLongUnderpass",	0.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Monarch", < 10818, -6493, 1916 >, 180, "northForestLongUnderpass", 2.5 )
	WaveSpawn_TitanSpawn( wave5, "Tone", < 9816, -6601, 2002 >, 180, "northForestLongUnderpass", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Tone", < 9245, -6489, 2060 >, 180, "northForestLongUnderpass", 0.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Tone", < 10358, -5975, 1948 >, 180, "northForestLongUnderpass", 2.5 )
	WaveSpawn_TitanSpawn( wave5, "Ion", < 11318, -5970, 1957 >, 180, "northForestLongUnderpass", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Ion", < 10358, -5975, 1948 >, 180, "northForestLongUnderpass", 0.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Ion", < 9905, -6100, 1981 >, 180, "northForestLongUnderpass", 2.5 )
	WaveSpawn_TitanSpawn( wave5, "Legion", < 9934, -3615, 2022 >, 180, "northForestLongUnderpass", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Legion", < 9336, -2261, 2106 >, 180, "northForestLongUnderpass", 0.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Legion", < 11282, -5322, 1909 >, 180, "northForestLongUnderpass", 2.5 )
	WaveSpawn_TitanSpawn( wave5, "Scorch", < 10833, -5919, 1925 >, 180, "northForestLongUnderpass", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Scorch", < 9784, -4432, 2007 >, 180, "northForestLongUnderpass", 0.5, "", 0.0, eFDSD.ALL, eFDTT.TITAN_ELITE )
	WaveSpawn_TitanSpawn( wave5, "Scorch", < 9245, -6489, 2060 >, 180, "northForestLongUnderpass", 2.5 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 9336, -2261, 2106 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 10417, -6471, 1955 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "Nuke", < 10833, -5919, 1925 >, 180, "northForestThroughTown", 2.5 )
	WaveSpawn_TitanSpawn( wave5, "ArcTitan", < 9905, -6100, 1981 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "ArcTitan", < 10818, -6493, 1916 >, 180, "northForestThroughTown", 0.5 )
	WaveSpawn_TitanSpawn( wave5, "ArcTitan", < 10417, -6471, 1955 >, 180, "northForestThroughTown", 2.0 )
	WaveSpawn_InfantrySpawn( wave5, "CloakDrone", < 9934, -3615, 4000 >, 180, "", 2.0 )
	WaveSpawn_InfantrySpawn( wave5, "CloakDrone", < 9784, -4432, 4000 >, 180, "", 2.0 )
	WaveSpawn_InfantrySpawn( wave5, "CloakDrone", < 9336, -2261, 4000 >, 180, "", 2.0 )
	WaveSpawn_InfantrySpawn( wave5, "CloakDrone", < 9245, -6489, 4000 >, 180, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave5, 0, eFDHT.TITAN )

	WaveSpawn_Announce( wave5, "NoMoreEnemyTitans", 5.0 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 3564, -2178, 2228 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 5143, -3353, 2243 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 6184, -4624, 2236 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 6446, -5761, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 5811, -6395, 2242 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave5, 6 )

	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 1100, -5717, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 631, -5605, 2304 >, 0.0, "", 0.4 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 59, -5253, 2304 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 191, -4407, 2304 >, 0.0, "", 0.2 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 1045, -4073, 2243 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave5, 6 )

	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 3972, -3030, 2240 >, 0.0, "", 0.2 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 3412, -2701, 2210 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 6290, -3837, 2261 >, 0.0, "", 0.4 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 4660, -5317, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 4323, -4812, 2242 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave5, 6 )

	WaveSpawn_InfantrySpawn( wave5, "Spectre", < -1356, -2120, 2005 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < -1887, -2254, 1977 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < -1638, -2574, 1991 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < -1853, -3004, 1979 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < -1300, -3379, 2033 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave5, 6 )

	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 6591, -2785, 2236 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 7011, -3315, 2242 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 6467, -3325, 2242 >, 0.0, "", 0.5 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 6475, -3822, 2236 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 7081, -5121, 2242 >, 0.0, "", 5.0 )
	WaveSpawn_WaitEnemyAliveAmount( wave5, 6 )

	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 5003, -4755, 1986 >, 0.0, "", 0.2 )
	WaveSpawn_InfantrySpawn( wave5, "Stalker", < 4642, -5330, 2242 >, 0.0, "", 0.3 )
	WaveSpawn_InfantrySpawn( wave5, "Spectre", < 4702, -4413, 2007 >, 0.0, "" )

    WaveSpawnEvents.append( wave5 )
}

void function RegisterCustomFDContent()
{
	array<entity> dropshipSpawns = GetEntArrayByClass_Expensive( "info_spawnpoint_dropship_start" )
	foreach ( entity dropshipSpawn in dropshipSpawns )
		dropshipSpawn.Destroy()

	AddFDCustomShipStart( < 2171, -3772, 2625 >, < 0, -45, 0 >, TEAM_MILITIA )
	AddFDCustomShipStart( < 3037, -5548, 2625 >, < 0, 45, 0 >, TEAM_MILITIA )
	AddFDCustomShipStart( < 8487, -5720, 2625 >, < 0, 180, 0 >, TEAM_IMC )
	AddFDCustomShipStart( < 9482, -3540, 2625 >, < 0, 180, 0 >, TEAM_IMC )

	SpawnFDHeavyTurret( < 2628, -5387, 2226 >, < 0, 45, 0 >, < 2540, -5300, 2226 >, < 0, -90, 0 > )

	AddStationaryAIPosition( < 1808, -1942, 2167 >, eStationaryAIPositionTypes.SNIPER_TITAN )
	AddStationaryAIPosition( < 4503, -6460, 2242 >, eStationaryAIPositionTypes.SNIPER_TITAN )
	AddStationaryAIPosition( < 5025, -3465, 2253 >, eStationaryAIPositionTypes.SNIPER_TITAN )
	AddStationaryAIPosition( < 1934, -6668, 2261 >, eStationaryAIPositionTypes.SNIPER_TITAN )
	AddStationaryAIPosition( < 3619, -2267, 2230 >, eStationaryAIPositionTypes.SNIPER_TITAN )
	AddStationaryAIPosition( < 9411, -6612, 2054 >, eStationaryAIPositionTypes.SNIPER_TITAN )
	AddStationaryAIPosition( < 7512, -4631, 2220 >, eStationaryAIPositionTypes.SNIPER_TITAN )

	AddStationaryAIPosition( < 6203, -3819, 2259 >, eStationaryAIPositionTypes.LAUNCHER_REAPER )
	AddStationaryAIPosition( < 6393, -1907, 2242 >, eStationaryAIPositionTypes.LAUNCHER_REAPER )
	AddStationaryAIPosition( < 3738, -6496, 2236 >, eStationaryAIPositionTypes.LAUNCHER_REAPER )
	AddStationaryAIPosition( < 3996, -2976, 2239 >, eStationaryAIPositionTypes.LAUNCHER_REAPER )
	AddStationaryAIPosition( < 6365, -5278, 2376 >, eStationaryAIPositionTypes.LAUNCHER_REAPER )
	AddStationaryAIPosition( < 3866, -1926, 2304 >, eStationaryAIPositionTypes.LAUNCHER_REAPER )
	AddStationaryAIPosition( < 4650, -5335, 2242 >, eStationaryAIPositionTypes.LAUNCHER_REAPER )
	AddStationaryAIPosition( < 6879, -1677, 2408 >, eStationaryAIPositionTypes.LAUNCHER_REAPER )
	AddStationaryAIPosition( < 4461, -6723, 2242 >, eStationaryAIPositionTypes.LAUNCHER_REAPER )

	AddOutOfBoundsTriggerWithParams( < 5584, -4354, 3053 >, 200, 256 )

	routes[ "townInfantryCrossroad" ] <- []
	routes[ "townInfantryCrossroad" ].append( < 6756, -3414, 2236 > )
	routes[ "townInfantryCrossroad" ].append( < 4888, -3853, 2264 > )
	routes[ "townInfantryCrossroad" ].append( < 2896, -4846, 2242 > )

	routes[ "trenchCloseInfantry" ] <- []
	routes[ "trenchCloseInfantry" ].append( < 4644, -5091, 2242 > )
	routes[ "trenchCloseInfantry" ].append( < 3815, -4471, 2376 > )
	routes[ "trenchCloseInfantry" ].append( < 3453, -5208, 2376 > )
	routes[ "trenchCloseInfantry" ].append( < 2846, -5137, 2236 > )

	routes[ "trenchDebrisMain" ] <- []
	routes[ "trenchDebrisMain" ].append( < 5751, -6467, 2242 > )
	routes[ "trenchDebrisMain" ].append( < 3922, -6140, 2246 > )
	routes[ "trenchDebrisMain" ].append( < 2895, -5200, 2236 > )

	routes[ "trenchRampsMain" ] <- []
	routes[ "trenchRampsMain" ].append( < 4635, -2001, 2125 > )
	routes[ "trenchRampsMain" ].append( < 2765, -2884, 2195 > )
	routes[ "trenchRampsMain" ].append( < 2254, -4602, 2226 > )

	routes[ "dropPodsInfantry" ] <- []
	routes[ "dropPodsInfantry" ].append( < 6228, -1779, 2242 > )
	routes[ "dropPodsInfantry" ].append( < 4635, -2001, 2125 > )
	routes[ "dropPodsInfantry" ].append( < 2765, -2884, 2195 > )
	routes[ "dropPodsInfantry" ].append( < 2254, -4602, 2226 > )

	routes[ "parkingLotInfantry" ] <- []
	routes[ "parkingLotInfantry" ].append( < 7974, -2288, 2232 > )
	routes[ "parkingLotInfantry" ].append( < 7165, -2677, 2416 > )
	routes[ "parkingLotInfantry" ].append( < 6486, -1863, 2242 > )
	routes[ "parkingLotInfantry" ].append( < 5166, -2778, 2240 > )
	routes[ "parkingLotInfantry" ].append( < 4575, -3832, 1961 > )
	routes[ "parkingLotInfantry" ].append( < 4575, -3832, 1961 > )
	routes[ "parkingLotInfantry" ].append( < 3815, -4471, 2376 > )
	routes[ "parkingLotInfantry" ].append( < 3453, -5208, 2376 > )
	routes[ "parkingLotInfantry" ].append( < 2846, -5137, 2236 > )

	routes[ "debrisFieldHouse" ] <- []
	routes[ "debrisFieldHouse" ].append( < 7466, -5550, 2242 > )
	routes[ "debrisFieldHouse" ].append( < 5751, -6467, 2242 > )
	routes[ "debrisFieldHouse" ].append( < 3922, -6140, 2246 > )
	routes[ "debrisFieldHouse" ].append( < 2895, -5200, 2236 > )

	routes[ "northForestThroughDebris" ] <- []
	routes[ "northForestThroughDebris" ].append( < 9222, -6150, 2059 > )
	routes[ "northForestThroughDebris" ].append( < 7466, -5550, 2242 > )
	routes[ "northForestThroughDebris" ].append( < 5751, -6467, 2242 > )
	routes[ "northForestThroughDebris" ].append( < 3922, -6140, 2246 > )
	routes[ "northForestThroughDebris" ].append( < 2895, -5200, 2236 > )

	routes[ "northForestThroughTown" ] <- []
	routes[ "northForestThroughTown" ].append( < 9068, -3852, 2114 > )
	routes[ "northForestThroughTown" ].append( < 7009, -3527, 2242 > )
	routes[ "northForestThroughTown" ].append( < 4907, -3848, 2264 > )
	routes[ "northForestThroughTown" ].append( < 2897, -4723, 2236 > )

	routes[ "westBackyardMain" ] <- []
	routes[ "westBackyardMain" ].append( < -1220, -2642, 2008 > )
	routes[ "westBackyardMain" ].append( < 1061, -2242, 2132 > )
	routes[ "westBackyardMain" ].append( < 2203, -2846, 2092 > )
	routes[ "westBackyardMain" ].append( < 2201, -4551, 2226 > )

	routes[ "eastBackyardMain" ] <- []
	routes[ "eastBackyardMain" ].append( < -1571, -5894, 2038 > )
	routes[ "eastBackyardMain" ].append( < 1192, -6540, 2238 > )
	routes[ "eastBackyardMain" ].append( < 2914, -5157, 2236 > )

	routes[ "backyardInfantry" ] <- []
	routes[ "backyardInfantry" ].append( < 153, -5021, 2304 > )
	routes[ "backyardInfantry" ].append( < 623, -4959, 2304 > )
	routes[ "backyardInfantry" ].append( < 2192, -5150, 2226 > )

	routes[ "northForestLongUnderpass" ] <- []
	routes[ "northForestLongUnderpass" ].append( < 11603, -2329, 1886 > )
	routes[ "northForestLongUnderpass" ].append( < 5320, -5811, 2264 > )
	routes[ "northForestLongUnderpass" ].append( < 4947, -4670, 1986 > )
	routes[ "northForestLongUnderpass" ].append( < 4549, -2408, 2115 > )
	routes[ "northForestLongUnderpass" ].append( < 3415, -2581, 2195 > )
	routes[ "northForestLongUnderpass" ].append( < 2147, -2901, 2086 > )
	routes[ "northForestLongUnderpass" ].append( < 2240, -4533, 2226 > )
}