WaveSchedule
{
	StartingCurrency 10000
	RespawnWaveTime 0

	PlayerItemEquipSpawnTemplate
	{
		Name "redbotbuilding_gunslinger"
		ItemName "The Gunslinger"
	}
	PlayerSpawnTemplate
	{
		Name "prevent_redbotbuilding"
		Class Engineer
	}
	SpawnTemplate "redbotbuilding"
	PointTemplates
	{
		prevent_redbotbuilding
		{
			OnSpawnOutput
			{
				Target "key"
				Action SetParent
				Param "!activator"
				Delay 0.01
			}
			trigger_multiple
			{
				"targetname" "notamini"
				"mins" "-96 -96 -96"
				"maxs" "96 96 96"
				"startdisabled" "1"
				"filtername" "filter_red_sentrygun"
				"spawnflags" "64"
				"onstarttouch" "!activator,addoutput,targetname normalsentry,0,-1"
			}
			trigger_brush
			{
				"targetname" "key"
				"onuse" "notamini,kill,,0,-1"
			}
		}
		redbotbuilding_gunslinger
		{
			OnParentKilledOutput
			{
				Target "gunslingercount"
				Action Subtract
				Param 1
			}
			OnSpawnOutput
			{
				Target "gunslingercount"
				Action Add
				Param 1
			}
			OnParentKilledOutput
			{
				Target "switchofffix"
				Action cancelpending
				Delay 0.01
			}
			OnSpawnOutput
			{
				Target "switchofffix"
				Action Trigger
			}
			logic_relay
			{
				"targetname" "switchofffix"
				"ontrigger" "@c@!activator,use,,0.02,-1"
			}
			OnSpawnOutput
			{
				Target "disablenbuild"
				Action trigger
			}
			func_nobuild
			{
				"targetname" "nbuild"
				"mins" "-96 -96 -96"
				"maxs" "96 96 96"
				"teamnum" "2"
				"allowdispenser" "1"
				"allowteleporters" "1"
			}
			trigger_multiple
			{
				"targetname" "buildbot"
				"mins" "-96 -96 -96"
				"maxs" "96 96 96"
				"startdisabled" "1"
				"filtername" "filter_red_sentrygun"
				"spawnflags" "64"
				"onstarttouch" "!activator,kill,,0,-1"
				"onstarttouch" "spawnredbot,forcespawnatentityorigin,!activator,0,-1"
				"onstarttouch" "spawnbot_build,enable,,0,-1"
				"onstarttouch" "sentrygun_teleparticle,start,,0.01,-1"
				"onstarttouch" "sentrygun_teleparticle,fireuser1,,0.01,-1"
				"onstarttouch" "sentrygun_point,kill,,0.05,-1"
			}
		}
		redbotbuilding
		{
			NoFixup 1
			func_door
			{
				"targetname" "triggerrefresh"
				"rendermode" "10"
				"spawnflags" "4108"
				"speed" "1"
				"wait" "0.05"
				"onfullyclosed" "!self,open,,0,-1"
			}
			logic_relay
			{
				"targetname" "disablenbuild"
				"startdisabled" "1"
				"ontrigger" "nbuild&*,disable,,0,-1"
				"onspawn" "triggerrefresh,open,,0,-1"
				"onspawn" "wave_start_*,addoutput,ontrigger nbuild&*:disable::0:-1"
				"onspawn" "wave_start_*,addoutput,ontrigger disablenbuild:enable::0:-1"
				"onspawn" "wave_finished_*,addoutput,ontrigger nbuild&*:enable::0:-1"
				"onspawn" "wave_finished_*,addoutput,ontrigger disablenbuild:disable::0.01:-1"
			}
			filter_activator_class
			{
				"targetname" "filter_sentrygun"
				"filterclass" "obj_sentrygun"
			}
			filter_activator_name
			{
				"targetname" "filter_mini"
				"negated" "1"
				"filtername" "normalsentry"
			}
			filter_multi
			{
				"targetname" "filter_red_sentrygun"
				"filter01" "filter_mini"
				"filter02" "filter_sentrygun"
				"filter03" "filter_red"
			}
			env_entity_maker
			{
				"targetname" "spawnredbot"
				"entitytemplate" "redbotspawnhere"
			}
			trigger_multiple
			{
				"origin" "576 4064 1280"
				"mins" "-9999 -9999 -9999"
				"maxs" "9999 9999 9999"
				"filtername" "filter_red_sentrygun"
				"parentname" "triggerrefresh"
				"spawnflags" "64"
				"onstarttouch" "notamini&*,enable,,0,-1"
				"onstarttouch" "notamini&*,disable,,0.01,-1"
				"onstarttouch" "buildbot&*,enable,,0.01,-1"
				"onstarttouch" "buildbot&*,disable,,0.02,-1"
			}
			filter_tf_bot_has_tag
			{
				"targetname" "filter_buildbot"
				"require_all_tags" "1"
				"tags" "bot_build"
			}
			math_counter
			{
				"targetname" "builtbotcounter"
				"max" "4" // max red bot buildings
				"outvalue" "builtbotcompare,setvaluecompare,,0,-1"
			}
			logic_compare
			{
				"targetname" "builtbotcompare"
				"comparevalue" "4" // max red bot buildings
				"onlessthan" "disablenbuild,enable,,0,-1"
				"onlessthan" "disablenbuild,trigger,,0.01,-1"
				"onequalto" "disablenbuild,disable,,0,-1"
				"onequalto" "nbuild&*,enable,,0,-1"
			}
			
			math_counter
			{
				"targetname" "gunslingercount"
				"max" "10"
				"outvalue" "gunslingercompare,setvaluecompare,,0,-1"
			}
			logic_compare
			{
				"targetname" "gunslingercompare"
				"comparevalue" "0"
				"onequalto" "redbuilt,$suicide,,0,-1"
			}

			info_player_teamspawn
			{
				"targetname" "spawnbot_build"
				"origin" "64 256 768"
				"startdisabled" "1"
				"teamnum" "3"
			}
			trigger_multiple
			{
				"targetname" "sentrygun_tele"
				"parentname" "triggerrefresh"
				"origin" "64 256 768"
				"mins" "-128 -128 -128"
				"maxs" "128 128 128"
				"filtername" "filter_buildbot"
				"spawnflags" "1"
				"onstarttouch" "spawnbot_build,disable,,0,-1"
				"onstarttouch" "sentrygun_point,teleport,,0,-1"
				"onstarttouch" "!activator,addoutput,targetname redbot,0,-1"
				"onendtouch" "!activator,addoutput,targetname redbuilt,0,-1"
			}
		}
		redbotspawnhere
		{
			KeepAlive 1
			NoFixup 1
			point_teleport
			{
				"targetname" "sentrygun_point"
				"origin" "0 0 5"
				"target" "redbot"
			}
			info_particle_system
			{
				"targetname" "sentrygun_teleparticle"
				"effect_name" "teleported_red"
				"onuser1" "!self,kill,,1,-1"
				"onuser1" "!self,addoutput,targetname ,0,-1"
			}
		}
		builtbot
		{
			OnSpawnOutput
			{
				Target builtbotcounter
				Action Add
				Param 1
			}
			OnParentKilledOutput
			{
				Target builtbotcounter
				Action Subtract
				Param 1
			}
			OnParentKilledOutput
			{
				Target !activator
				Action AddOutput
				Param "targetname "
			}
		}
	}

	Wave
	{
		StartWaveOutput
		{
			Target wave_start_relay
			Action Trigger
		}
		DoneOutput
		{
			Target wave_finished_relay
			Action Trigger
		}
		WaveSpawn // ignore this wavespawn, prevents wave from ending
		{
			Where spawnbot
			TotalCount 1
			WaitBeforeStarting 9999
			TFBot { Class Scout ClassIcon hellmet_blank }
		}
		WaveSpawn // allows you to choose what bot engineers can build, can vary for each wave
		{
			Where spawnbot_build
			WaitBetweenSpawns 0.1
			SpawnCount 1
			MaxActive 4 // max red bot buildings
			Support 1
			RandomChoice { RandomChoice {
			TFBot
			{
				Class Scout
				Skill Expert
				Action Mobber
				AddCond { Name TF_COND_REPROGRAMMED }

				SpawnTemplate "builtbot"
				Tag bot_build
			}
			TFBot
			{
				Class Soldier
				Skill Expert
				Action Mobber
				AddCond { Name TF_COND_REPROGRAMMED }

				SpawnTemplate "builtbot"
				Tag bot_build
			}
			}}
		}
	}
}