///////////////////////////////////////////////////////////////////// // // ///////////////////////////////////////////////////////////////////// // // Helpful debug and console commands for developing MVM population scripts: // // sv_cheats 1 // Allows cheat commands. // god // Enables god mode for players. // nb_stop 1 // Stops all bots in place. // nb_blind 1 // Bots will not treat players as threats. // currency_giv // Give player x amount of game currency to be used on upgrades. // tf_populator_health_multiplier x.x // Multiplies health of enemy bots - example: tf_populator_health_multiplier 0.01 will set health of bots to 1% of normal. // tf_mvm_popfile abcd // Will load the .pop file of the specified name - example tf_mvm_popfile mvm_mapname_challenge2 will load mvm_mapname_challenge2.pop in the tf/scripts/population directory. // tf_mvm_jump_to_wave x // Will jump to the specified wave number of the current .pop file - example tf_mvm_jump_to_wave 6 will jump to wave 6. // tf_bot_flag_kill_on_touch 1 // When a bot picks up the flag, they die. // // Item "The Pomson 6000" // Item "TTG Max Pistol - Poker Night" // Item "The Gunslinger" // Item "Honest Halo" // Item "The Stocking Stuffer" // Item "Mining Light" // Item "Festive Wrench 2011" // Item "Spine-Chilling Skull" // Item "Old Guadalajara" // Item "Point and Shoot" // Item "The Wrangler" // Item "The Short Circuit" // Item "The Jag" // ///////////////////////////////////////////////////////////////////// // BEGIN POP FILE ///////////////////////////////////////////////////////////////////// #base robot_giant.pop // This pop file is marked to be included. These are other .pop files that contain templates for TFBots. In our WaveSpawns we can reference the templates in these pop files. #base robot_standard.pop // This pop file is marked to be included. These are other .pop files that contain templates for TFBots. In our WaveSpawns we can reference the templates in these pop files. #base robot_sewer.pop WaveSchedule { StartingCurrency 2000 // How much currency each player starts with. Normally 400 is a good starting point, but increased to 20k for the purpose of this test script. RespawnWaveTime 10 // This is the maximum respawn time, in seconds for players when they die. Starting at 2 seconds, it grows 2 seconds per wave. // In this case, wave 1 will have a respawn time of 2 seconds. Wave 2 - 4 seconds. Wave 3 - 6 seocnds, and so on until it hits the cap of 10 seconds for wave 5 and beyond. CanBotsAttackWhileInSpawnRoom no // Sets the robots to not attack players while they are inside of their respawn room volume. Advanced 1 ///////////////// //MISSIONS ///////////////// // MISSION: Sentry Buster Mission { Objective DestroySentries Where spawnbot CooldownTime 30 TFBot { Template T_TFBot_SentryBuster } } // MISSION: Sniper 01 Mission { Objective Sniper Where spawnbot_mission_sniper_upper BeginAtWave 1 RunForThisManyWaves 1 CooldownTime 60 InitialCooldown 30 DesiredCount 2 TFBot { Class Sniper Skill Expert Name Sniper MaxVisionRange 3000 } } // MISSION: Sniper 02 Mission { Objective Sniper Where spawnbot_mission_sniper BeginAtWave 2 RunForThisManyWaves 1 CooldownTime 60 InitialCooldown 20 DesiredCount 2 TFBot { Template T_TFBot_Sniper_Razorback MaxVisionRange 3000 } } // MISSION: Sniper 03 Mission { Objective Sniper Where spawnbot_mission_sniper_upper BeginAtWave 3 RunForThisManyWaves 1 CooldownTime 60 InitialCooldown 20 DesiredCount 2 TFBot { Template T_TFBot_Sniper_Razorback MaxVisionRange 3000 } } // MISSION: Sniper 05 Mission { Objective Sniper Where spawnbot_mission_sniper_upper BeginAtWave 5 RunForThisManyWaves 1 CooldownTime 60 InitialCooldown 20 DesiredCount 2 TFBot { Template T_TFBot_Sniper_Sydney_Sleeper Item "The Razorback" Name "Sydney sniper" MaxVisionRange 3000 } } // MISSION: Spy 01 Mission { Objective Spy Where spawnbot_mission_spy BeginAtWave 1 RunForThisManyWaves 1 CooldownTime 45 InitialCooldown 45 DesiredCount 3 TFBot { Template T_TFBot_Spy TeleportWhere spawnbot_mission_spy } } // MISSION: Spy 02 Mission { Objective Spy Where spawnbot_mission_spy BeginAtWave 2 RunForThisManyWaves 1 CooldownTime 90 InitialCooldown 30 DesiredCount 1 TFBot { Template T_TFBot_Spy } } // MISSION: Spy 04 Mission { Objective Spy Where spawnbot_mission_spy BeginAtWave 4 RunForThisManyWaves 1 CooldownTime 60 InitialCooldown 5 DesiredCount 2 TFBot { Template T_TFBot_Spy } } // MISSION: Spy 05 Mission { Objective Spy Where spawnbot_mission_spy BeginAtWave 5 RunForThisManyWaves 2 CooldownTime 60 InitialCooldown 30 DesiredCount 1 TFBot { Template T_TFBot_Spy } } // T_TFBot_Engineer_Sentry_Battle -- NOT TELEPORT INTO MAP ENGY AND DOES NOT BUILD A TELEPORTER // T_TFBot_Engineer_Sentry_Tele_Battle -- NOT TELEPORT INTO MAP ENGY // T_TFBot_Engineer_Sentry_Teleporter // MISSION: Engineer 01 Mission // This is a spy mission. This spawns spy(s) at periodic intervals, it will not spawn more spies unless its conditions are met, and all previous spies from this mission are dead. { Objective Engineer InitialCooldown 20 // Amount of time once a wave starts before the mission becomes active. Where spawnbot_mission_engineer_upper // Entity at which to spawn. BeginAtWave 1 // The mission becomes active on this wave. RunForThisManyWaves 1 // It remains active for this many waves. CooldownTime 15 // This is the time, in seconds, between when Sniper Missions are allowed to spawn, should their spawning conditions be met. DesiredCount 1 // Number of spies to spawn each time this mission's criteria are met. TFBot { Template T_TFBot_Engineer_Sentry_Battle Health 125 Item "Festive Frontier Justice" Item "TTG Max Pistol - Poker Night" Item "Festive Wrench 2011" Item "Industrial Festivizer" Item "Pet Robro" CharacterAttributes { "engineer teleporter build rate multiplier" 0.3 "engineer sentry build rate multiplier" 0.3 } } } // MISSION: Engineer 02 Mission // This is a spy mission. This spawns spy(s) at periodic intervals, it will not spawn more spies unless its conditions are met, and all previous spies from this mission are dead. { Objective Engineer InitialCooldown 20 // Amount of time once a wave starts before the mission becomes active. Where spawnbot_mission_engineer_upper // Entity at which to spawn. BeginAtWave 2 // The mission becomes active on this wave. RunForThisManyWaves 2 // It remains active for this many waves. CooldownTime 15 // This is the time, in seconds, between when Sniper Missions are allowed to spawn, should their spawning conditions be met. DesiredCount 2 // Number of spies to spawn each time this mission's criteria are met. TFBot { Template T_TFBot_Engineer_Sentry_Battle Health 125 Item "Festive Frontier Justice" Item "TTG Max Pistol - Poker Night" Item "Festive Wrench 2011" Item "Industrial Festivizer" Item "Pet Robro" CharacterAttributes { "engy building health bonus" 0.5 "engineer teleporter build rate multiplier" 0.3 "engineer sentry build rate multiplier" 0.3 } } } // MISSION: Engineer 03 Mission { Objective Engineer InitialCooldown 20 // Amount of time once a wave starts before the mission becomes active. Where spawnbot_mission_engineer_upper // Entity at which to spawn. BeginAtWave 4 // The mission becomes active on this wave. RunForThisManyWaves 2 // It remains active for this many waves. CooldownTime 35 // This is the time, in seconds, between when Sniper Missions are allowed to spawn, should their spawning conditions be met. DesiredCount 1 // Number of spies to spawn each time this mission's criteria are met. TFBot { Template T_TFBot_Engineer_Sentry_Tele_Battle TeleportWhere spawnbot_mission_engineer_upper Health 175 Item "The Rescue Ranger" Item "TTG Max Pistol - Poker Night" Item "The Southern Hospitality" Item "The Virtual Reality Headset" Item "Googly Gazer" CharacterAttributes { "engy building health bonus" 0.5 "engineer teleporter build rate multiplier" 0.3 "engineer sentry build rate multiplier" 0.6 "engy sentry damage bonus" 1.3 } } } // MISSION: Engineer 04 Mission { Objective Engineer InitialCooldown 20 // Amount of time once a wave starts before the mission becomes active. Where spawnbot // Entity at which to spawn. BeginAtWave 6 // The mission becomes active on this wave. RunForThisManyWaves 5 // It remains active for this many waves. CooldownTime 30 // This is the time, in seconds, between when Sniper Missions are allowed to spawn, should their spawning conditions be met. DesiredCount 2 // Number of spies to spawn each time this mission's criteria are met. TFBot { Template T_TFBot_Engineer_Sentry_Teleporter TeleportWhere spawnbot Health 275 Attributes TeleportToHint Item "The Rescue Ranger" Item "TTG Max Pistol - Poker Night" Item "Golden Wrench" Item "Honest Halo" Item "The Idea Tube" CharacterAttributes { "engineer teleporter build rate multiplier" 0.6 "engineer sentry build rate multiplier" 1 "engy building health bonus" 0.5 "engy sentry damage bonus" 1.5 } } } ///////////////// //WAVES ///////////////// //WAVE 1 ///////////////////////////////////////////////////////////////////////////////////////////////////////// Wave { StartWaveOutput // Output which occurs at moment the wave begins. { Target wave_start_relay // Name of the entity in the map to target. Action Trigger // Input to give the targeted entity. } DoneOutput // Output which occurrs at moment the wave is completed. { Target wave_finished_relay // Name of the entity in the map to target. Action trigger // Input to give the targeted entity. } Checkpoint Yes // Sets a checkpoint at the end of this wave. WaveSpawn { TotalCurrency 200 Name "stage1" Where spawnbot_mission_sniper RandomSpawn 1 TotalCount 12 SpawnCount 2 MaxActive 10 WaitBetweenSpawns 20 WaitBeforeStarting 5 TFBot { Template T_TFBot_Pyro Skill Hard } } WaveSpawn { TotalCurrency 700 Name "stage1" Where spawnbot RandomSpawn 1 TotalCount 35 SpawnCount 5 MaxActive 15 WaitBetweenSpawns 18 WaitBeforeStarting 0 Squad { TFBot { Template T_TFBot_Giant_Demo_RapidFire Item "L4D Hat" } TFBot { Template T_TFBot_Heavyweapons_Fist } TFBot { Template T_TFBot_Heavyweapons_Fist } TFBot { Template T_TFBot_Heavyweapons_Fist } TFBot { Template T_TFBot_Heavyweapons_Fist } } } } //WAVE 2 ///////////////////////////////////////////////////////////////////////////////////////////////////////// Wave { WaitWhenDone 60 Sound "Announcer.IncomingMob" Checkpoint Yes StartWaveOutput // Output which occurs at moment the wave begins. { Target wave_start_relay // Name of the entity in the map to target. Action Trigger // Input to give the targeted entity. } DoneOutput // Output which occurrs at moment the wave is completed. { Target wave_finished_relay // Name of the entity in the map to target. Action trigger // Input to give the targeted entity. } WaveSpawn // Crit Scout Invasion { TotalCurrency 200 Name "stage1" Where spawnbot RandomSpawn 1 TotalCount 48 SpawnCount 12 MaxActive 16 WaitBetweenSpawns 10 WaitBeforeStarting 0 TFBot { Template T_TFBot_Scout_Melee Skill Expert Attributes AlwaysCrit } } WaveSpawn // Crit Scout Invasion Center { TotalCurrency 200 Name "stage1" Where spawnbot RandomSpawn 1 TotalCount 24 SpawnCount 6 MaxActive 8 WaitBetweenSpawns 10 WaitBeforeStarting 0 TFBot { Template T_TFBot_Scout_Melee Skill Expert Attributes AlwaysCrit } } WaveSpawn // Crit Scout Invasion Escalation { TotalCurrency 200 Name "stage2" WaitForAllSpawned "stage1" Where spawnbot RandomSpawn 1 TotalCount 32 SpawnCount 16 MaxActive 16 WaitBetweenSpawns 10 WaitBeforeStarting 0 Squad { TFBot { Template T_TFBot_Scout_Melee Skill Expert Attributes AlwaysCrit } TFBot { Template T_TFBot_Medic_QuickFix } } } WaveSpawn // Crit Scout Invasion Center Escalation { TotalCurrency 200 Name "stage2" WaitForAllSpawned "stage1" Where spawnbot RandomSpawn 1 TotalCount 24 SpawnCount 6 MaxActive 8 WaitBetweenSpawns 10 WaitBeforeStarting 0 Squad { TFBot { Template T_TFBot_Scout_Melee Skill Expert Attributes AlwaysCrit } TFBot { Template T_TFBot_Medic_QuickFix } } } WaveSpawn { TotalCurrency 100 Name "stage2" WaitForAllSpawned "stage1" Where spawnbot RandomSpawn 1 TotalCount 8 SpawnCount 2 MaxActive 4 WaitBetweenSpawns 10 WaitBeforeStarting 10 TFBot { Template T_TFBot_Giant_Soldier_Crit } } } //WAVE 3 ///////////////////////////////////////////////////////////////////////////////////////////////////////// Wave { WaitWhenDone 60 Sound "Announcer.IncomingMob" Checkpoint Yes StartWaveOutput // Output which occurs at moment the wave begins. { Target wave_start_relay // Name of the entity in the map to target. Action Trigger // Input to give the targeted entity. } DoneOutput // Output which occurrs at moment the wave is completed. { Target wave_finished_relay // Name of the entity in the map to target. Action trigger // Input to give the targeted entity. } WaveSpawn { TotalCurrency 100 Name "stage1" Where spawnbot RandomSpawn 1 TotalCount 6 SpawnCount 2 MaxActive 4 WaitBetweenSpawns 10 WaitBeforeStarting 0 TFBot { Template T_TFBot_Giant_Scout_Fast } } WaveSpawn { Where spawnbot_mission_engineer_lower WaitForAllSpawned "stage1" TotalCount 24 MaxActive 12 SpawnCount 4 WaitBeforeStarting 5 WaitBetweenSpawns 15 TotalCurrency 0 Support Limited Squad { TFBot { Template T_TFBot_Engineer_Sentry_Battle ClassIcon short_engineer Health 125 MaxVisionRange 1200 Item "Festive Frontier Justice" Item "The Wrangler" Item "Festive Wrench 2011" Item "Industrial Festivizer" Item "Pet Robro" CharacterAttributes { "engineer teleporter build rate multiplier" 0.3 "engineer sentry build rate multiplier" 0.3 } } TFBot { Template T_TFBot_Medic_QuickUber } TFBot { Template T_TFBot_Heavyweapons_Deflector } TFBot { Template T_TFBot_Engineer_Sentry_Battle Name "Short Circuit Engineer" ClassIcon short_engineer Health 500 MaxVisionRange 3200 Skill Expert WeaponRestrictions SecondaryOnly Attributes AlwaysFireWeapon Attributes Aggressive Item "Festive Frontier Justice" Item "The Short Circuit" Item "Festive Wrench 2011" Item "Spine-Chilling Skull" Item "The Stocking Stuffer" CharacterAttributes { "attack projectiles" 1 "apply look velocity on damage" 100 "apply z velocity on damage" 100 "engineer teleporter build rate multiplier" 0.3 "engineer sentry build rate multiplier" 0.3 "mark for death" 1 "maxammo metal increased" 1.5 "metal regen" 1.5 "damage bonus" 5 "fire rate bonus" 0.5 "energy weapon no drain" 1 } } } } WaveSpawn { TotalCurrency 200 TotalCount 1 WaitForAllSpawned "stage1" Tank { Health 25000 Speed 55 Name "tankboss" StartingPathTrackNode "tank_path_a_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { TotalCurrency 100 Name "stage2" WaitForAllSpawned "stage1" Where spawnbot TotalCount 20 SpawnCount 4 MaxActive 16 WaitBetweenSpawns 10 WaitBeforeStarting 15 RandomChoice { TFBot { Template T_TFBot_Soldier_Buff_Banner Skill Hard Item "The Mantreads" } TFBot { Template T_TFBot_Soldier_Normal_Level_1 Skill Hard } TFBot { Template T_TFBot_Soldier_Normal_Level_1 Skill Hard } TFBot { Template T_TFBot_Soldier_Normal_Level_1 Skill Hard } TFBot { Template T_TFBot_Soldier_AcesEight_Level_1 Skill Hard } TFBot { Template T_TFBot_Soldier_Lucky_Level_1 Skill Hard } TFBot { Template T_TFBot_Soldier_SpaceMarine_Level_1 Skill Hard } } } WaveSpawn // Pyro { TotalCurrency 100 Name "stage2" WaitForAllSpawned "stage1" Where spawnbot TotalCount 20 SpawnCount 4 MaxActive 4 WaitBetweenSpawns 15 WaitBeforeStarting 20 TFBot { Class Pyro Skill Hard WeaponRestrictions PrimaryOnly } } WaveSpawn { TotalCurrency 100 Name "stage2" WaitForAllSpawned "stage1" Where spawnbot RandomSpawn 1 TotalCount 6 SpawnCount 2 MaxActive 4 WaitBetweenSpawns 10 WaitBeforeStarting 20 TFBot { Template T_TFBot_Giant_Scout_Fast } } WaveSpawn { //TotalCurrency 100 Name "stage3" WaitForAllSpawned "stage2" Support 1 // fix the timing issue so these don't just end mid way Where spawnbot TotalCount 36 SpawnCount 6 MaxActive 10 WaitBetweenSpawns 15 WaitBeforeStarting 20 TFBot { Template T_TFBot_Scout_Melee } } WaveSpawn { TotalCurrency 100 Name "stage3" WaitForAllSpawned "stage2" Where spawnbot RandomSpawn 1 TotalCount 32 SpawnCount 8 MaxActive 8 WaitBetweenSpawns 20 WaitBeforeStarting 0 Squad { TFBot { Template T_TFBot_Giant_Heavyweapons Item "The Deus Specs" Item "Iron Curtain" CharacterAttributes { "attach particle effect static" 56 "mod medic killed marked for death" 1 } } TFBot { Template T_TFBot_Medic_QuickUber } TFBot { Template T_TFBot_Medic_QuickUber } TFBot { Template T_TFBot_Medic_QuickUber } } } } //WAVE 4 ///////////////////////////////////////////////////////////////////////////////////////////////////////// Wave { WaitWhenDone 60 Sound "Announcer.IncomingMob" Checkpoint Yes StartWaveOutput { Target bombpath_arrows_clear_relay Action Trigger } DoneOutput { Target bombpath_wavefinished Action Trigger } WaveSpawn { TotalCurrency 200 Name "stage1" Where spawnbot_left TotalCount 8 SpawnCount 8 MaxActive 8 WaitBetweenSpawns 0 WaitBeforeStarting 0 TFBot { Template T_TFBot_Heavyweapons_Deflector } } WaveSpawn { TotalCurrency 50 Name "stage1" Where spawnbot_right TotalCount 8 SpawnCount 8 MaxActive 8 WaitBetweenSpawns 0 WaitBeforeStarting 0 RandomChoice { TFBot { Template T_TFBot_Conjurer_Demoman_Level_1 } TFBot { Template T_TFBot_LochLoad_Demoman_Level_1 } TFBot { Template T_TFBot_Buccaneer_Demoman_Level_1 } } } WaveSpawn { TotalCurrency 50 Name "stage1" Where spawnbot RandomSpawn 1 TotalCount 4 SpawnCount 2 MaxActive 2 WaitBetweenSpawns 20 WaitBeforeStarting 5 TFBot { Template T_TFBot_Giant_Pyro Attributes AlwaysFireWeapon } } WaveSpawn { TotalCurrency 50 Name "stage2" WaitForAllSpawned "stage1" Where spawnbot_left TotalCount 24 SpawnCount 8 MaxActive 8 WaitBetweenSpawns 10 WaitBeforeStarting 15 RandomChoice { TFBot { Template T_TFBot_Conjurer_Demoman_Level_1 } TFBot { Template T_TFBot_LochLoad_Demoman_Level_1 } TFBot { Template T_TFBot_Buccaneer_Demoman_Level_1 } } } WaveSpawn { TotalCurrency 200 Name "stage2" WaitForAllSpawned "stage1" Where spawnbot_right TotalCount 30 SpawnCount 10 MaxActive 12 WaitBetweenSpawns 10 WaitBeforeStarting 15 TFBot { Template T_TFBot_Heavyweapons_Deflector } } WaveSpawn { TotalCurrency 25 Name "stage3" WaitForAllSpawned "stage2" Where spawnbot TotalCount 24 SpawnCount 8 MaxActive 22 WaitBetweenSpawns 20 WaitBeforeStarting 30 RandomChoice { TFBot { Template T_TFBot_Demoman_Knight } TFBot { Template T_TFBot_TavishWoods_Demoman } TFBot { Template T_TFBot_AxeKnight_Demoman } TFBot { Template T_TFBot_PirateKnight_Demoman } } } WaveSpawn { TotalCurrency 100 Name "stage3" WaitForAllSpawned "stage2" Where spawnbot TotalCount 6 SpawnCount 1 MaxActive 3 WaitBetweenSpawns 10 WaitBeforeStarting 0 TFBot { Template T_TFBot_Giant_Demo_RapidFire } } WaveSpawn { TotalCurrency 100 Name "stage3" WaitForAllSpawned "stage2" Where spawnbot TotalCount 2 SpawnCount 2 MaxActive 2 //WaitBetweenSpawns 0 WaitBeforeStarting 0 TFBot { Template T_TFBot_Giant_Pyro Attributes AlwaysFireWeapon } } // Final Push WaveSpawn { TotalCurrency 100 Name "stage4" WaitForAllSpawned "stage3" Where spawnbot TotalCount 18 SpawnCount 4 MaxActive 8 WaitBetweenSpawns 5 WaitBeforeStarting 0 Squad { TFBot { Template T_TFBot_Giant_Demo_RapidFire } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } } } WaveSpawn { TotalCurrency 25 Name "stage4" WaitForAllSpawned "stage3" Where spawnbot TotalCount 12 SpawnCount 3 MaxActive 6 WaitBetweenSpawns 15 WaitBeforeStarting 10 TFBot { Template T_TFBot_Pyro Skill Hard } } WaveSpawn { TotalCurrency 25 Name "stage4" WaitForAllSpawned "stage3" Where spawnbot TotalCount 30 SpawnCount 10 MaxActive 18 WaitBetweenSpawns 10 WaitBeforeStarting 0 TFBot { Class Soldier Skill Hard WeaponRestrictions PrimaryOnly } } } //WAVE 5 ///////////////////////////////////////////////////////////////////////////////////////////////////////// Wave { StartWaveOutput // Output which occurs at moment the wave begins. { Target wave_start_relay // Name of the entity in the map to target. Action Trigger // Input to give the targeted entity. } DoneOutput // Output which occurrs at moment the wave is completed. { Target wave_finished_relay // Name of the entity in the map to target. Action trigger // Input to give the targeted entity. } Checkpoint Yes // Sets a checkpoint at the end of this wave. WaveSpawn { TotalCurrency 200 Name "stage1" Where spawnbot_left TotalCount 8 SpawnCount 2 MaxActive 4 WaitBetweenSpawns 30 WaitBeforeStarting 0 Squad { TFBot { Template T_TFBot_Giant_Soldier_Spammer } TFBot { Template T_TFBot_Medic_QuickUber } } } WaveSpawn { TotalCurrency 200 Name "stage1" Where spawnbot_right TotalCount 8 SpawnCount 2 MaxActive 4 WaitBetweenSpawns 30 WaitBeforeStarting 0 Squad { TFBot { Template T_TFBot_Giant_Soldier_Spammer } TFBot { Template T_TFBot_Medic_QuickUber } } } WaveSpawn { TotalCurrency 100 Name "stage1" Where spawnbot_mission_sniper RandomSpawn 1 TotalCount 30 SpawnCount 5 MaxActive 10 WaitBetweenSpawns 20 WaitBeforeStarting 3 Squad { TFBot { Template T_TFBot_Pyro Attributes AlwaysFireWeapon } TFBot { Template T_TFBot_Pyro } TFBot { Template T_TFBot_Pyro } TFBot { Template T_TFBot_Pyro } TFBot { Template T_TFBot_Pyro } } } WaveSpawn { TotalCurrency 50 TotalCount 1 WaitForAllSpawned "stage1" Tank { Health 35000 Speed 75 Name "tankboss" StartingPathTrackNode "tank_path_a_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { TotalCurrency 100 Name "stage2" WaitForAllSpawned "stage1" Where spawnbot_left TotalCount 25 SpawnCount 5 MaxActive 16 WaitBetweenSpawns 10 WaitBeforeStarting 0 TFBot { Template T_TFBot_Heavyweapons_Deflector } } // Final Push WaveSpawn { TotalCurrency 50 Name "stage3" WaitForAllSpawned "stage2" Where spawnbot_mission_sniper RandomSpawn 1 TotalCount 30 SpawnCount 4 MaxActive 10 WaitBetweenSpawns 20 WaitBeforeStarting 5 TFBot { Template T_TFBot_Pyro Skill Expert } } WaveSpawn { //TotalCurrency 0 Name "stage3" WaitForAllSpawned "stage2" Where spawnbot RandomSpawn 1 TotalCount 8 SpawnCount 1 MaxActive 6 WaitBetweenSpawns 15 WaitBeforeStarting 0 TFBot { Template T_TFBot_Giant_Demo_RapidFire } } WaveSpawn { //TotalCurrency 0 Name "stage3" WaitForAllSpawned "stage2" Where spawnbot RandomSpawn 1 TotalCount 20 SpawnCount 4 MaxActive 12 WaitBetweenSpawns 15 WaitBeforeStarting 0 TFBot { Template T_TFBot_Heavyweapons_Fist } } WaveSpawn { TotalCurrency 25 Name "stage4" WaitForAllSpawned "stage3" Where spawnbot TotalCount 45 SpawnCount 15 MaxActive 18 //WaitBetweenSpawns 0 WaitBeforeStarting 0 RandomChoice { TFBot { Template T_TFBot_Demoman_Knight } TFBot { Template T_TFBot_TavishWoods_Demoman } TFBot { Template T_TFBot_AxeKnight_Demoman } TFBot { Template T_TFBot_PirateKnight_Demoman } } } WaveSpawn { TotalCurrency 50 TotalCount 1 WaitForAllSpawned "stage3" Tank { Health 35000 Speed 75 Name "tankboss" Skin 1 StartingPathTrackNode "tank_path_a_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } } //WAVE 6 ///////////////////////////////////////////////////////////////////////////////////////////////////////// Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } Checkpoint Yes // BEGIN STAGE 1 WaveSpawn // Giant Soldier Rapid Fire { TotalCurrency 200 Name "stage1" Where spawnbot TotalCount 8 // multiple of squad size SpawnCount 4 // must at minimum equal squad size, number must be multiple of squad size MaxActive 8 // multiple of squad size WaitBetweenSpawns 30 Squad { TFBot { Template T_TFBot_Giant_Soldier_Spammer } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } } } // WaveSpawn // Giant Soldier Rapid Fire // { // TotalCurrency 200 // Name "stage2" // WaitForAllSpawned "stage1" // Where spawnbot // TotalCount 8 // multiple of squad size // SpawnCount 4 // must at minimum equal squad size, number must be multiple of squad size // MaxActive 8 // multiple of squad size // WaitBetweenSpawns 30 // Squad // { // TFBot // { // Template T_TFBot_Giant_Soldier_Spammer // } // TFBot // { // Template T_TFBot_Medic // } // TFBot // { // Template T_TFBot_Medic // } // TFBot // { // Template T_TFBot_Medic // } // } // } WaveSpawn // Giant Soldier Rapid Fire { TotalCurrency 200 Name "stage2" WaitForAllSpawned "stage1" Where spawnbot TotalCount 4 // multiple of squad size SpawnCount 4 // must at minimum equal squad size, number must be multiple of squad size MaxActive 4 // multiple of squad size WaitBetweenSpawns 20 Squad { TFBot { Template T_TFBot_Giant_Soldier_Spammer } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } } } WaveSpawn { TotalCurrency 50 Where spawnbot TotalCount 14 SpawnCount 2 MaxActive 4 WaitBetweenSpawns 20 WaitBeforeStarting 15 Support 1 TFBot { Class Pyro Skill Hard } } } //WAVE 7 ///////////////////////////////////////////////////////////////////////////////////////////////////////// Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } Checkpoint Yes // BEGIN STAGE 1 WaveSpawn // Pyro or Pyro Axtinguisher { TotalCurrency 100 Name "stage1" Where spawnbot TotalCount 36 SpawnCount 12 MaxActive 16 WaitBetweenSpawns 30 WaitBeforeStarting 0 TFBot { Class Pyro Skill Easy WeaponRestrictions PrimaryOnly } } WaveSpawn // Giant Soldier { TotalCurrency 300 Name "stage1" Where spawnbot TotalCount 9 SpawnCount 3 //MaxActive 3 WaitBetweenSpawns 30 WaitBeforeStarting 0 RandomSpawn 1 //randomize distribution Squad { TFBot { Template T_TFBot_Giant_Soldier_Spammer } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } } } // BEGIN STAGE 2 WaveSpawn // Heavyweapons { TotalCurrency 200 Name "stage2" WaitForAllSpawned "stage1" Where spawnbot TotalCount 20 SpawnCount 5 MaxActive 10 WaitBetweenSpawns 30 WaitBeforeStarting 30 TFBot { Class Heavyweapons Skill Hard WeaponRestrictions PrimaryOnly } } WaveSpawn // Pyro { TotalCurrency 100 Name "stage2" WaitForAllSpawned "stage1" Where spawnbot TotalCount 8 SpawnCount 3 MaxActive 6 WaitBetweenSpawns 30 WaitBeforeStarting 60 RandomSpawn 1 //randomize distribution TFBot { Class Pyro Skill Expert WeaponRestrictions PrimaryOnly } } // STAGE 3 BEGIN WaveSpawn // Scout { TotalCurrency 100 Name "stage3" WaitForAllSpawned "stage2" Where spawnbot TotalCount 30 SpawnCount 15 MaxActive 22 WaitBetweenSpawns 30 WaitBeforeStarting 40 TFBot { Template T_TFBot_Scout_Melee } } // STAGE 4 BEGIN WaveSpawn { TotalCurrency 100 Name "stage4" WaitForAllSpawned "stage3" TotalCount 1 WaitBeforeStarting 30 Tank { Health 45000 Speed 75 Name "tankboss" StartingPathTrackNode "tank_path_a_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } // STAGE 5 BEGIN WaveSpawn // Scout { TotalCurrency 200 Name "stage5" WaitForAllSpawned "stage4" Where spawnbot TotalCount 30 SpawnCount 6 MaxActive 12 WaitBetweenSpawns 30 WaitBeforeStarting 120 Support 1 // Push bomb while Heavyweapons are active TFBot { Template T_TFBot_Scout_Sandman } } WaveSpawn // Giant Heavyweapons { TotalCurrency 0 Name "stage5" WaitForAllSpawned "stage4" Where spawnbot_left TotalCount 8 SpawnCount 4 //MaxActive 2 WaitBetweenSpawns 35 WaitBeforeStarting 90 Squad { TFBot { Template T_TFBot_Giant_Heavyweapons ClassIcon heavy_cop_giant Name "Giant Heavy Robo Cop" Item "Copper's Hard Top" Item "TTG Badge" Item "Security Shades" CharacterAttributes { "mod stun waist high airborne" 4 } } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } } } WaveSpawn // Giant Heavyweapons { TotalCurrency 0 Name "stage5" WaitForAllSpawned "stage4" Where spawnbot_right TotalCount 8 SpawnCount 4 //MaxActive 2 WaitBetweenSpawns 35 WaitBeforeStarting 90 Squad { TFBot { Template T_TFBot_Giant_Heavyweapons Item "Heavy Do-rag" Item "Security Shades" Item "Gold Botkiller Minigun Mk.I" } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } } } } }