// Advanced "Urban Obstruction"
// Made by Haniday

#base robot_haniday_v.pop
#base robot_gatebot.pop

WaveSchedule
{
	StartingCurrency 1200
	RespawnWaveTime 5
	Advanced 1
	CanBotsAttackWhileInSpawnRoom no

	// TODO: Add sentry Buster Mission

	Wave // Wave 1: 1100$
	{
		StartWaveOutput
		{
			Target wave_start_relay
			Action Trigger
		}
		InitWaveOutput
		{
			Target holograms_3way_relay
			Action Trigger
		}

		WaveSpawn	// W1_S1a: 2 Bat Scouts coming from upper to spawn the bomb
		{
			TotalCurrency 25
			Name "W1_S1a"
			Where spawnbot_upper0	// If they spawned in "main", the other bots coming ftom "upper" couldn't take the bomb
			Where spawnbot_upper1
			Where spawnbot_upper2
			TotalCount 2
			SpawnCount 2
			Support Limited
			TFBot
			{
				Template T_TFBot_Scout_Melee
			}
		}

		WaveSpawn	// W1_S1b: Bat scouts, 2 max, Support
		{
			TotalCurrency 25
			Name "W1_S1b"
			Where spawnbot_main0	// After the scouts above spawned, the others will start spawning in "main"
			Where spawnbot_main1	// All of this could be simplified by putting a "IgnoreFlag" on the scouts
			Where spawnbot_main2
			TotalCount 10
			MaxActive 2
			SpawnCount 2
			Support 1
			WaitForAllSpawned "W1_S1a"
			WaitBeforeStarting 5
			WaitBetweenSpawns 20
			TFBot
			{
				Template T_TFBot_Scout_Melee
				//Attributes IgnoreFlag
			}
		}

		WaveSpawn	// W1_S2a: Scouts, 6 max, 30 total
		{
			TotalCurrency 50
			Name "W1_S2a"
			Where spawnbot_upper0
			Where spawnbot_upper1
			Where spawnbot_upper2
			TotalCount 30
			MaxActive 6
			SpawnCount 2
			WaitForAllSpawned "W1_S1a"
			WaitBeforeStarting 10
			WaitBetweenSpawns 2
			TFBot
			{
				Template T_TFBot_Scout
			}
		}

		WaveSpawn	// W1_S2b: GateBot Soldiers, 6 max, 24 total
		{
			TotalCurrency 100
			Name "W1_S2b"
			Where spawnbot_upper0
			Where spawnbot_upper1
			Where spawnbot_upper2
			TotalCount 24
			MaxActive 6
			SpawnCount 6
			WaitForAllSpawned "W1_S1a"
			WaitBeforeStarting 10
			WaitBetweenSpawns 10
			TFBot
			{
				Template T_TFGateBot_Soldier_Normal
			}
		}

		WaveSpawn	// W1_S2c: Giant FAN Scout, 1 max, 2 total
		{
			TotalCurrency 100
			Name "W1_S2c"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 2
			MaxActive 1
			WaitForAllSpawned "W1_S1a"
			WaitBeforeStarting 40
			WaitBetweenSpawns 5
			TFBot
			{
				Template T_TFBot_Giant_Scout_FAN
			}
		}

		WaveSpawn	// W1_S3a: Crit Giant Barrage Soldiers + Ãœber Medics, 6 max, 6 total
		{
			TotalCurrency 100
			Name "W1_S3a"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 6
			SpawnCount 3
			WaitForAllDead "W1_S2b"
			WaitBeforeStarting 10
			WaitBetweenSpawns 6
			Squad
			{
				TFBot
				{
					Template T_TFGateBot_Giant_Soldier_SlowCritBarrage
				}

				TFBot
				{
					Template T_TFBot_Medic_Uber
				}

				TFBot
				{
					Template T_TFBot_Medic_Uber
				}
			}
		}

		WaveSpawn	// W1_S3b: Crit Heavy + Quick-Fix Medic, 10 max, 40 total
		{
			TotalCurrency 100
			Name "W1_S3b"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 40
			MaxActive 10
			SpawnCount 2
			WaitForAllSpawned "W1_S3a"
			WaitBetweenSpawns 1
			Squad
			{
				TFBot
				{
					Template T_TFBot_Heavyweapons
					Skill Easy
					Attributes AlwaysCrit
				}

				TFBot
				{
					Template T_TFBot_Medic_QuickFix
				}
			}
		}

		WaveSpawn	// W1_S3c: Giant Burst Fire Soldier + Ãœber Medic, 3 max, 3 total
		{
			TotalCurrency 200
			Name "W1_S3c"
			Where spawnbot_upper0
			Where spawnbot_upper1
			Where spawnbot_upper2
			TotalCount 6
			SpawnCount 2
			WaitForAllDead "W1_S3a"
			WaitBeforeStarting 30
			WaitBetweenSpawns 5
			Squad
			{
				TFBot
				{
					Template T_TFBot_Giant_Soldier_BurstFire
				}

				TFBot
				{
					Template T_TFBot_Medic_Uber
				}
			}
		}
	}

	Wave // Wave 2: 1000$
	{
		StartWaveOutput
		{
			Target wave_start_relay
			Action Trigger
		}
		InitWaveOutput
		{
			Target holograms_3way_relay
			Action Trigger
		}

		WaveSpawn	// W2_S1a: Crit Hyper League Scouts, 2 max, Support
		{
			TotalCurrency 50
			Name "W2_S1a"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 10
			MaxActive 2
			SpawnCount 2
			Support 1
			WaitBeforeStarting 30
			WaitBetweenSpawns 30
			TFBot
			{
				Template T_TFBot_Scout_Sandman_FastCharge
				Attributes AlwaysCrit
			}
		}

		WaveSpawn	// W2_S1b: Giant Super Scout, 1 max, 3 total
		{
			TotalCurrency 150
			Name "W2_S1b"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 3
			MaxActive 1
			WaitBeforeStarting 5
			WaitBetweenSpawns 10
			TFBot
			{
				Template T_TFBot_Giant_Scout_Fast
			}
		}

		WaveSpawn	// W2_S1c: GateBot Demomen, 6 max, 30 total
		{
			TotalCurrency 50
			Name "W2_S1c"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 30
			MaxActive 6
			SpawnCount 2
			WaitBetweenSpawns 1
			TFBot
			{
				Template T_TFGateBot_Demoman_Hard
			}
		}

		WaveSpawn	// W2_S1d: GateBot Soldiers, 5 max, 20 total 
		{
			TotalCurrency 50
			Name "W2_S1d"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			Where spawnbot_upper0
			RandomSpawn 1
			TotalCount 20
			MaxActive 5
			SpawnCount 5
			WaitBeforeStarting 10
			WaitBetweenSpawns 5
			TFBot
			{
				Template T_TFGateBot_Soldier_Normal
			}
		}

		WaveSpawn	// W2_S1e: Crit FAN Scouts, 10 max, 20 total
		{
			TotalCurrency 100
			Name "W2_S1e"
			Where spawnbot_upper0
			Where spawnbot_upper1
			Where spawnbot_upper2
			TotalCount 20
			MaxActive 10
			SpawnCount 2
			WaitForAllSpawned "W2_S1d"
			WaitBeforeStarting 20
			WaitBetweenSpawns 0.5
			TFBot
			{
				Template T_TFBot_Scout_FAN
				Attributes AlwaysCrit
			}
		}

		WaveSpawn	// W2_S2a: Giant Heavy Heater + Giant Medic + Extended Conch Soldiers, 5 total
		{
			TotalCurrency 100
			Name "W2_S2a"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 5
			SpawnCount 5
			WaitForAllSpawned "W2_S1e"
			WaitBeforeStarting 6
			Squad
			{
				TFBot
				{
					Template T_TFBot_Giant_Heavyweapons_Heater
				}

				TFBot
				{
					Template T_TFBot_Giant_Medic_Type2
				}

				TFBot
				{
					Template T_TFBot_Soldier_Extended_Concheror
					Tag bot_squad_member
				}

				TFBot
				{
					Template T_TFBot_Soldier_Extended_Concheror
					Tag bot_squad_member
				}

				TFBot
				{
					Template T_TFBot_Soldier_Extended_Concheror
					Tag bot_squad_member
				}
			}
		}

		WaveSpawn	// W2_S2b: Giant Super Scouts, 2 total
		{
			TotalCurrency 100
			Name "W2_S2b"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 2
			SpawnCount 2
			WaitForAllDead "W2_S2a"
			TFBot
			{
				Template T_TFBot_Giant_Scout_Fast
			}
		}

		WaveSpawn	// W2_S3a: Crit GateBot FAN Scouts, 12 max, 30 total
		{
			TotalCurrency 50
			Name "W2_S3a"
			Where spawnbot_upper0
			Where spawnbot_upper1
			Where spawnbot_upper2
			TotalCount 34
			MaxActive 12
			SpawnCount 2
			WaitForAllDead "W2_S2b"
			WaitBeforeStarting 10
			WaitBetweenSpawns 0.5
			TFBot
			{
				Template T_TFGateBot_Scout_FAN_Crit
			}
		}

		WaveSpawn	// W2_S3b: Extended Conch Soldiers, 6 max, 20 total
		{
			TotalCurrency 50
			Name "W2_S3b"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 20
			MaxActive 6
			SpawnCount 1
			WaitForAllDead "W2_S3a"
			WaitBeforeStarting 10
			WaitBetweenSpawns 2
			TFBot
			{
				Template T_TFBot_Soldier_Extended_Concheror
			}
		}

		WaveSpawn	// W2_S3c: Giant Heavy Heater + Giant Medic, 4 total
		{
			TotalCurrency 200
			Name "W2_S3c"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 4
			SpawnCount 2
			WaitForAllDead "W2_S3a"
			WaitBeforeStarting 30
			WaitBetweenSpawns 30
			Squad
			{
				TFBot
				{
					Template T_TFBot_Giant_Heavyweapons_Heater
				}

				TFBot
				{
					Template T_TFBot_Giant_Medic_Type2
				}
			}
		}
	}

	Wave // Wave 3: 900$
	{
		StartWaveOutput
		{
			Target wave_start_relay
			Action Trigger
		}
		InitWaveOutput
		{
			Target holograms_3way_relay
			Action Trigger
		}

		WaveSpawn	// W3_S1a: Crit Pyros, 10 max, 40 total
		{
			TotalCurrency 50
			Name "W3_S1a"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 40
			MaxActive 10
			SpawnCount 5
			WaitBetweenSpawns 2
			TFBot
			{
				Template T_TFBot_Pyro
				Skill Hard
				Attributes AlwaysCrit
				ItemAttributes
				{
					ItemName "TF_WEAPON_FLAMETHROWER"
					"airblast disabled" 1
				}
			}
		}

		WaveSpawn	// W3_S1b: Crit Fast Scorch-Shot Pyros, 6 max, 20 total
		{
			TotalCurrency 50
			Name "W3_S1b"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 20
			MaxActive 6
			SpawnCount 3
			WaitBetweenSpawns 6
			TFBot
			{
				Template T_TFBot_Pyro_ScorchShot_Fast
				Attributes AlwaysCrit
			}
		}

		WaveSpawn	// W3_S1c: GateBot Giant FAN Scouts, 1 max, 2 total
		{
			TotalCurrency 50
			Name "W3_S1c"
			Where spawnbot_upper0
			Where spawnbot_upper1
			Where spawnbot_upper2
			TotalCount 2
			MaxActive 1
			WaitBeforeStarting 30
			WaitBetweenSpawns 5
			TFBot
			{
				Template T_TFGateBot_Giant_Scout_FAN
			}
		}

		WaveSpawn	// W3_S1d: Giant FAN Scouts, 1 max, 2 total
		{
			TotalCurrency 50
			Name "W3_S1d"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 2
			MaxActive 1
			WaitBeforeStarting 30
			WaitBetweenSpawns 5
			RandomChoice
			{
				TFBot
				{
					Template T_TFGateBot_Giant_Scout_FAN
				}

				TFBot
				{
					Template T_TFBot_Giant_Scout_FAN
				}
			}
		}

		WaveSpawn	// W3_S2a: Giant Deflector Heavy + Giant Medics, 3 total
		{
			TotalCurrency 200
			Name "W3_S2a"
			Where spawnbot_main0
			Where spawnbot_main1
			Where spawnbot_main2
			TotalCount 3
			SpawnCount 3
			WaitForAllDead "W3_S1a"
			WaitBeforeStarting 20
			Squad
			{
				TFBot // This is why GateBot templates suck
				{
					Name "Giant Deflector Heavy"
					Health 5000
					Class Heavyweapons
					ClassIcon heavy_deflector
					EventChangeAttributes
					{
						Default
						{
							Tag bot_gatebot
							Tag nav_prefer_gate1_flank
							Attributes IgnoreFlag
							BehaviorModifiers Push

							CharacterAttributes
							{
								"move speed penalty"				0.5
								"damage force reduction"			0.3
								"airblast vulnerability multiplier" 0.3
								"override footstep sound set"		2
							}

							Skill Expert
							Tag bot_giant
							Attributes MiniBoss
							Attributes AlwaysCrit
							MaxVisionRange 1200
							WeaponRestrictions PrimaryOnly
							Item "MvM GateBot Light Heavy"
							Item "Deflector"
							ItemAttributes
							{
								ItemName "Deflector"
								"damage bonus"			1.5
								"attack projectiles"	2
							}
						}
						RevertGateBotsBehavior
						{
							CharacterAttributes
							{
								"move speed penalty"				0.5
								"damage force reduction"			0.3
								"airblast vulnerability multiplier" 0.3
								"override footstep sound set"		2
							}

							Skill Expert
							Tag bot_giant
							Attributes MiniBoss
							Attributes AlwaysCrit
							MaxVisionRange 1200
							WeaponRestrictions PrimaryOnly
							Item "MvM GateBot Light Heavy"
							ItemAttributes
							{
								ItemName "MvM GateBot Light Heavy"
								"item style override" 1
							}
							Item "Deflector"
							ItemAttributes
							{
								ItemName "Deflector"
								"damage bonus"			1.5
								"attack projectiles"	2
							}
						}
					}
				}

				TFBot
				{
					Template T_TFBot_Giant_Medic
				}

				TFBot
				{
					Template T_TFBot_Giant_Medic
				}
			}
		}
	}
}