Resource icon

Official Population Files for MvM April2017

Tumby

aa
May 12, 2013
1,084
1,192
Official Population Files for MvM - DirectDownload + HowTo

This download includes every Population file that can be currently found in the game. Population files are used to determine the different robots and waves in the Mann versus Machine gamemode.

If you want to extract the files yourself, first download GCFScape ( http://nemesis.thewavelength.net/?p=26 ). This software will allow you to open VPK files, which are basically like ZIP archives.
Now, navigate to your installation of TF2. This can easily be done by right clicking the game in Steam and clicking Properties -> Local Files -> Browse Local Files...
Here, open the tf folder and look for the file tf2_misc_dir.vpk. Open that using GCFScape. A new window will appear, which will allow you to browse the different files inside the VPK. This VPK in particular is mostly storing text-based files.
Now doubleclick the folder scripts and inside that population and there you have it!

When making your own Population files, store them directly in tf/scripts/population or tf/custom/[anyfoldername]/scripts/population. All these filepaths are considered identical to the game. The only difference is the order in which they load, causing things to override if neccessary.
 

Tumby

aa
May 12, 2013
1,084
1,192
A "preview" of the "first" 3 Population files. I don't want to include more here, as it gets rather heavy for the browser.

Code:
// This .pop file defines a Population, and is usually owned and
// controlled by the tf_populator entity.
//
// Populations consist of one or more Populators.  
// All Populators in a .pop file run simultaneously unless stated otherwise.
// For example, if you have three PeriodicSpawn populators, all three
// will be spawning entities according to their parameters.
//
// In general, Populators contain one Spawner.  When a Spawner is invoked,
// it actually spawns one or more entities into the world.

// NOTE: This particular .pop file is for documentation purposes, and
// tries to show all available features, not necessarily a useful population.
//

// Available Global Options (specified outside Populators):
//
// StartingCurrency   <amount>
//     Specifies the amount of currency that players should start with
//

// Templates are specified in a separate block of Templates, and then referenced
// inside WaveSpawn or TFBot entries.

// Available Populators:
//
// RandomPlacement
//     A RandomPlacement Populator is invoked once at the start
//     of each round, and spawns entities at random locations
//     throughout the map. For example, a RandomPlacement might
//     place random Sentry guns throughout a map.
//
// PeriodicSpawn
//     A PeriodicSpawn Populator invokes its Spawner periodically.
//     For example, a PeriodicSpawn might spawn a TFBot every 30 seconds.
//
// WaveSpawn
//     A WaveSpawn Populator spawns a "wave" of N entities, and has
//     the special property that only ONE WaveSpawn at a time in a
//     .pop file is active - the first one. Once that WaveSpawn is
//     finished, it shuts off and the next WaveSpawn in the file
//     becomes active, and so on.
//


// Available Spawners:
//
// TFBot
//     Spawns TFBots of a specified class and skill.
//
// SentryGun
//     Spawns unowned Sentry guns at a specified upgrade level.
//
// RandomChoice
//     Contains a set of spawners and invokes one at random.
//
// Squad
//     Contains a set of spawners, all are invoked and collected into a "squad".
//
// Mob
//     Spawns N instances of the spawner it contains, ie: 15 TFBots.
//


ExamplePopulation
{
   // Global options
   StartingCurrency         100     // Players start with 100 bucks
   RespawnWaveTime           12     // Override default respawn time as if it was being set with entity i/o
   CanBotsAttackWhileInSpawnRoom   no     // Default if omitted is "yes".  Set to "no" to prevent bots from attacking while invulnerable in their spawn rooms
   AddSentryBusterWhenDamageDealtExceeds 3000 // Default is ommited is 3000 points of damage inflicted by your sentry gun. Set this to override the threshold at which a Sentry Buster will be dispatched.
   AddSentryBusterWhenKillCountExceeds 15   // Default is ommited is 15 kills inflicted by your sentry gun. Set this to override the threshold at which a Sentry Buster will be dispatched.
   Advanced   1               // Flags this experienced as difficult.  Things like achievements look for this.
   
   Templates
   {
     // A template for a TFBot entry that creates a Natascha wielding Heavy.
     T_TFBot_NataschaHeavy
     {
       Class HeavyWeapons
       Skill Easy
       Attributes RemoveOnDeath
       Item "Natascha"
       Item "Football Helmet"
     }
   
     // A template for a WaveSpawn creates 5 Natascha wielding Heavies.
     //   - Note that you can reference other templates inside templates.
     //   - In this example, the wave spawn template overrides the skill of the Heavies to be Normal (which the Template has initialized as Easy)
     T_WaveSpawn_Heavies
     {
       TotalCount 5
       MaxActive 1
       WaveDoneWhen AllDead     

       TFBot
       {
         Template T_TFBot_NataschaHeavy
         Skill Normal   
       }
     }
     
     // A template for a WaveSpawn that creates Pyros, and drops lots of money.
     T_WaveSpawn_MoneyPyros
     {
       Template T_WaveSpawn_Heavies
       
       TotalCurrency 2000
       
       // WARNING NOTE: This block overrides the entire TFBot block in T_WaveSpawn_Heavies.
       // i.e. this will NOT result in Pyros wielding natachas & helmets & being restricted to melee only.
       TFBot
       {
         Class Pyro
       }
     }
   }

   // A "mission" defines a set of TFBots that the "AI Director" can send in to accomplish certain context-specific goals   
   Mission
   {
     Objective Sniper               // The mission objective. Available missions:
                           //  "Sniper" (add harassing snipers)
                           //  "Spy" (add harassing spies)
                           //  "DestroySentries" (send in bots who focus on killing overly successful sentry guns)
                           //  "Engineer" (add harassing engineers who will build sentry nests on bot_hint_sentrygun entities)

     Where spawn_sniper_mission           // Where the mission bots will spawn

     TeleportWhere                 // For Engineer missions. When the bot builds a teleporter, that teleporter will become a spawn point for bots with a Where name matching this TeleportWhere name.

     BeginAtWave 4                 // The wave number (1 to N) at which this mission becomes active
     RunForThisManyWaves 3             // How many waves this mission is active. This example would have snipers active for waves 4, 5, and 6
     
     CooldownTime 90                 // The minimum time between spawning mission sorties
     DesiredCount 2                 // How many copies of the spawner should be sent in

     TFBot                     // The mission payload
     {
       Class Sniper
       Skill Hard
       Name Sniper
     }
   }

   
   // this populator places 30 idling, bat-wielding Scouts scattered throughout the map
   RandomPlacement
   {
     Count 30         // the number of times to invoke the given spawner
     
     MinimumSeparation 750   // the minimum distance between entities spawned
     
     TFBot           // a Spawner that spawns a TFBot
     {
       Name "Badass Bot"         // (player) name, which will be displayed in-game.  will default to the class name if not specified.
       Class Scout             // class can be: Scout, Soldier, Demoman, Heavyweapons, Pyro, Medic, Sniper, Spy, Engineer
       Skill Easy             // skill can be: Easy, Normal, Hard, or Expert
       Health <value>           // if specified, overrides the normal starting health of this bot
       Scale <value>           // if specified, sets the model scale of this bot (overrides the default scale for minibosses)
       Item <item definition name>     // if specified, gives the bot the item. Multiple items can be listed. Each item will remove any
                       // existing item in its loadout slot, so if you specify multiple items in the same loadout slot,
                       // only the last one will be left on the bot.
       Attributes RemoveOnDeath     // attributes can be:
                       //     RemoveOnDeath (kick this bot from the game when it dies)
                       //     Aggressive (make this bot "aggressive" - behavior dependant)
                       //     SuppressFire (don't allow this bot to fire its weapon)
                       //     DisableDodge (don't allow this bot to dodge left/right in combat)
                       //     BecomeSpectatorOnDeath (send this bot to the spectator team when it dies)
                       //     RetainBuildings (any buildings built by this bot should not blow up if this bot is removed)
                       //     SpawnWithFullCharge (any weapons that build up a charge over time will spawn fully charged)
                       //     AlwaysCrit (all shots will be critical hits)
                       //     HoldFireUntilFullReload (dont fire until our weapon is fully reloaded after a barrage - for rocket launchers, grenade launchers, shotguns, etc)
                       //     DefensiveBuffHigh (takes 90% less damage, has a particle effect)
                       //     AlwaysFireWeapon (constantly fire our weapon)
                       
       WeaponRestrictions MeleeOnly   // if specified, restricts the weapons this bot is allowed to use. Restrictions can be: MeleeOnly, PrimaryOnly, or SecondaryOnly
       BehaviorModifiers Idler       // if specified, sets this bot's initial behavior. Allowed values:
                       //     Idler (stands around idle until a player gets close or injures them)
                       //     Mobber   (picks a random player and chases them down, regardless of where they run)
       CharacterAttributes         // same attributes as those listed in items_master.txt
       {
         "move speed bonus"       "3"
         "dmg from sentry reduced"   "0.8"
       }                       
       Tag <custom tag>         // if specified, adds the given custom tag (no internal spaces) to the bot's set of tags. Bots will pay attention to func_nav_avoid or func_nav_prefer entities with matching tags.
       MaxVisionRange <range>       // if specified, sets the farthest range at which this bot can see enemies
     }
   }


   // this populator places 10 level three sentry guns scattered throughout the map, but only on navigation areas marked as SENTRY_SPOT
   RandomPlacement
   {
     Count 10
     
     MinimumSeparation 750
     
     NavAreaFilter SENTRY_SPOT       // when collecting potential nav areas to spawn, only consider areas that have the SENTRY_SPOT flag
     
     SentryGun               // a Spawner that spawns a Sentry gun
     {
       Level 3               // ... a level 3 Sentry gun (can be 1 or 2 as well)
     }
   }

   
   // every 60 to 90 seconds, spawn either a melee-only mob of TFBots that chase down the players
   // or spawn a squad of 4 TFBots that move together and attack the players
   PeriodicSpawn
   {
     Where Behind             // find a nearby hidden spot behind the players to spawn

     When                 // specify how often our Spawner is invoked. In this case, we pick a random
     {                   // interval between 60 and 90 seconds.  Alternatively, we could also say
       MinInterval 60           // "When 30" to invoke our Spawner every 30 seconds.
       MaxInterval 90
     }
     
     // our Spawner is a RandomChoice, which picks at random from the Spawners it contains
     RandomChoice
     {
       Squad     // choice 1: a Squad Spawner which, in this case, creates a squad of 4 TFBots: Soldier, Pyro, Demoman, and Heavyweapons
       {
         FormationSize 125   // the size of the formation (for a circle formation, this is the radius)

         TFBot
         {
           Class Soldier
           Skill Easy
         }

         TFBot
         {
           Class Pyro
           Skill Easy
         }

         TFBot
         {
           Class Demoman
           Skill Easy
         }

         TFBot
         {
           Class HeavyWeapons
           Skill Easy
         }
       }

       Mob     // choice 2: a Mob Spawner which will create a mob of 15 bat-wielding Scout mobbers
       {
         Count 15

         TFBot
         {
           Class Scout
           WeaponRestrictions MeleeOnly         
           BehaviorModifiers Mobber
         }
       }
       
       Mob     // choice 3: a Mob Spawner which will create a mob of 15 fist-wielding Heavy mobbers
       {
         Count 15

         TFBot
         {
           Class HeavyWeapons
           WeaponRestrictions MeleeOnly         
           BehaviorModifiers Mobber
         }
       }
       
       Mob     // choice 4: a Mob Spawner which will create a mob of 15 axe-wielding Pyro mobbers
       {
         Count 15

         TFBot
         {
           Class Pyro
           WeaponRestrictions MeleeOnly         
           BehaviorModifiers Mobber
         }
       }
       
       Mob     // choice 5: a Mob Spawner which will create a mob of 15 knife-wielding Spy mobbers
       {
         Count 15

         TFBot
         {
           Class Spy
           WeaponRestrictions MeleeOnly
           BehaviorModifiers Mobber
         }
       }
     }
   }


   // every 30 seconds, throw in a Spy or a Sniper to keep the players on their toes
   PeriodicSpawn
   {
     Where Anywhere             // find a nearby hidden spot spawn

     When 30                 // spawn every 30 seconds

     RandomChoice
     {     
       TFBot
       {
         Class Sniper
         Skill Normal
         Attributes RemoveOnDeath       
       }

       TFBot
       {
         Class Spy
         Skill Normal
         Attributes RemoveOnDeath       
       }
     }
   }
   
   // a single wave can contain multiple WaveSpawns
   Wave
   {
     Description "Lots of bad guys in this wave!"   // the given description text will be displayed in the HUD when the prior Wave is counting down its 'WaitWhenDone' timer, and thereafter.
     Sound "Announcer.IncomingMob"       // the given sound will be played when this Wave starts
     WaitWhenDone 25           // specifies a delay, in seconds, to wait after this wave is "done"

     StartWaveOutput           // when this Wave becomes active, fire an output to the given target entity
     {
       Target MyNamedEntity       // the mapper-specified name of an entity
       Action OnTrigger       // the action to send to the entity
     }

     DoneOutput           // when this Wave is done, after the WaitWhenDone timer elapses
     {
       Target MyNamedEntity
       Action OnTrigger
     }

     WaveSpawn
     {
       Name "FIRST WAVE"           // Name of the wave. Not required, but if another wave is waiting for this wave, this wave needs a name.
       Where wave_spawn_here         // Defines where this wave will spawn into the environment.
                         // In this case, an entity name of "wave_spawn_here" was given.
                         // All entities in the map with that name will be collected
                         // and one picked at random as the location to spawn from.
                         // Alternatively, these special Where locations can be used:
                         // AHEAD   (spawns wave somewhere nearby ahead of the players, just out of sight)
                         // BEHIND   (spawns wave somewhere nearby behind the players, just out of sight)
                         // ANYWHERE (spawns wave somewhere nearby the players, just out of sight)
       
       TotalCount 16             // defines the total number of times the Spawner will be invoked in this wave
       MaxActive 8               // defines the maximum number of entities from this WaveSpawn that can be alive at the same time
       SpawnCount 4             // defines the number of entities to spawn at a time as a group. Default is 1.   
       TotalCurrency 200           // Total amount of currency dropped by this wave. Should be cleanly divisible by TotalCount, so bots all drop the same amount.
   
       WaitBeforeStarting 5         // specifies the duration in seconds to wait once this WaveSpawn becomes active
                         // and the first time its Spawner is invoked
                         
       Support 1               // Marks this WaveSpawn as a Support wave. Support waves will keep running until all
                         // non-Support waves are finished, even after the TotalCount is reached. Support waves
                         // will not drop any more currency after TotalCurrency is reached.
                         
       RandomSpawn 1             // Marks the WaveSpawn as wanting to select a new "Where" spawn location for every bot that spawns.
                         // The default is 0, which spawns the entire SpawnCount group at the same location.
                         // The next group will pick a random "Where" spawn location for the entire group to use.
                         
       WaitBetweenSpawns 0           // specifies a delay, in seconds, between spawning SpawnCount groups of entities
       
       // ***NOTE: Any of the sound and text warnings as well as the outputs below can be omitted. They are all listed here for completeness.
       
       StartWaveWarningSound "Player.YouAreIt"         // when this WaveSpawn becomes active (which might be before it starts spawning), emit this sound to all players
       StartWaveOutput                     // when this WaveSpawn becomes active, fire an output to the given target entity
       {
         Target MyNamedEntity       // the mapper-specified name of an entity
         Action OnTrigger         // the action to send to the entity
       }
       
       FirstSpawnWarningSound "Player.YouAreIt"       // when this WaveSpawn first invokes its Spawner, emit this sound to all players
       FirstSpawnOutput                   // when this WaveSpawn first invokes its Spawner, fire an output to the given target entity
       {
         Target MyNamedEntity
         Action OnTrigger
       }
   
       LastSpawnWarningSound "Player.YouAreIt"         // when this WaveSpawn invokes its Spawner for the last time, emit this sound to all players
       LastSpawnOutput                     // when this WaveSpawn invokes its Spawner for the last time, fire an output to the given target entity
       {
         Target MyNamedEntity
         Action OnTrigger
       }
   
       DoneWarningSound "Player.YouAreIt"           // when this WaveSpawn relinquishes control to the next WaveSpawn, emit this sound to all players
       DoneOutput                       // when this WaveSpawn relinquishes control to the next WaveSpawn, fire an output to the given target entity
       {
         Target MyNamedEntity
         Action OnTrigger
       }
   
       // the Spawner for this WaveSpawn will pick one of three TFBots at random each time it is invoked
       RandomChoice
       {
         TFBot
         {
           Class Medic
           Skill Easy
           Attributes RemoveOnDeath
         }
         TFBot
         {
           Class Soldier
           Skill Easy
           Attributes RemoveOnDeath
         }
         TFBot
         {
           Class Demoman
           Skill Easy
           Attributes RemoveOnDeath
         }
       }
     }
     
     // the next wave spits out 10 Heavies and waits for them to all die
     WaveSpawn
     {
       Name "HEAVY WAVE"
       Where wave_spawn_here
       
       TotalCount 10
       MaxActive 10
       WaitForAllSpawned "FIRST WAVE"                 // waits for the wave spawn named "FIRST WAVE" to say it is done spawning all of its TFBots before starting
   
       TFBot
       {
         Class Heavyweapons
         Skill Easy
         Attributes RemoveOnDeath
       }
     }
     
     // the last wave brings a horde of Pyros that come out in groups of 10
     WaveSpawn
     {
       Where wave_spawn_here
       
       TotalCount 30
       MaxActive 10
   
       TFBot
       {
         Class Pyro
         Skill Normal
         Attributes RemoveOnDeath
       }
     }

     WaveSpawn
     {
       TotalCurrency 25     // the total amount of currency dropped by all the Tanks in this wave
       TotalCount 1

       Tank
       {
         Health 50000
         Speed 75
         Name "Sherman"
         Skin 0                   // 0 - normal skin, 1 - final wave skin
         StartingPathTrackNode "boss_path_1"     // if this is omitted, the Tank will find the path_track with no previous node and start there

         OnKilledOutput               // output sent when the Tank is killed
         {
           Target tank_died_relay
           Action Trigger   
         }

         OnBombDroppedOutput             // output sent when the Tank drops its bomb once it reaches the end of its path
         {
           Target bomb_dropped_relay
           Action Trigger   
         }
       }
     }

   } // end Wave
}

Code:
#base robot_giant.pop
#base robot_standard.pop

WaveSchedule
{

   StartingCurrency     1200
   RespawnWaveTime      2
   CanBotsAttackWhileInSpawnRoom no

   Mission // sentry buster
   {
     Objective DestroySentries

     InitialCooldown 20
     Where spawnbot
     BeginAtWave 1
     RunForThisManyWaves 9

     CooldownTime 40   

  TFBot
       {
         Template T_TFBot_SentryBuster
  }
   }
   Mission // Spy - wave 3
   {
     Objective Spy  

     InitialCooldown 30
     Where spawnbot_mission_spy
     BeginAtWave 3
     RunForThisManyWaves 1
     CooldownTime 30
     DesiredCount 4

     TFBot
     {
       Class Spy
       Skill Expert
       Name Spy
     }
   }   
   Mission // Spy - wave 5
   {
     Objective Spy  

     InitialCooldown 30
     Where spawnbot_mission_spy
     BeginAtWave 5
     RunForThisManyWaves 1
     CooldownTime 30
     DesiredCount 4

     TFBot
     {
       Class Spy
       Skill Expert
       Name Spy
     }
   }   
   Mission // Sniper - wave 3
   {
     Objective Sniper

     InitialCooldown 40
     Where spawnbot_mission_sniper
     BeginAtWave 3
     RunForThisManyWaves 1
     CooldownTime 20
     DesiredCount 4

     TFBot
     {
       Class Sniper
       Skill Hard
       Name Sniper
       MaxVisionRange 3000
     }
   }
   Mission // Sniper - wave 4
   {
     Objective Sniper

     InitialCooldown 30
     Where spawnbot_mission_sniper
     BeginAtWave 4
     RunForThisManyWaves 1
     CooldownTime 20
     DesiredCount 2

     TFBot
     {
       Class Sniper
       Skill Hard
       Name Sniper
       MaxVisionRange 3000
     }
   }
   Mission // Engineer - wave 2
   {
     Objective Engineer  

     InitialCooldown 60
     Where spawnbot
     BeginAtWave 2
     RunForThisManyWaves 1
     CooldownTime 30
     DesiredCount 1

     TFBot
     {
       Template T_TFBot_Engineer_Sentry_Teleporter
     }
   }   
   Mission // Engineer - wave 4
   {
     Objective Engineer  

     InitialCooldown 60
     Where spawnbot
     BeginAtWave 4
     RunForThisManyWaves 1
     CooldownTime 20
     DesiredCount 1

     TFBot
     {
       Template T_TFBot_Engineer_Sentry_Teleporter
     }
   }   
   Mission // Engineer - wave 5
   {
     Objective Engineer  

     InitialCooldown 50
     Where spawnbot
     BeginAtWave 5
     RunForThisManyWaves 1
     CooldownTime 30
     DesiredCount 1

     TFBot
     {
       Template T_TFBot_Engineer_Sentry_Teleporter
     }
   }   
   
   //WAVE 1 //Currency 700 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay
         Action Trigger
       }
     DoneOutput           
       {
         Target wave_finished_relay
         Action trigger
       }
     WaitWhenDone 65
     Checkpoint Yes
     
     WaveSpawn //WAVE 01a: 27 total, 9 active, Scout (melee only)
     {
       Name "wave01a"
       Where spawnbot
       TotalCount 27
       MaxActive 9
       SpawnCount 9
       WaitBeforeStarting 4
       WaitBetweenSpawns 7
       TotalCurrency 200     
     
       TFBot
       {
         Class Scout
         Skill Easy
         WeaponRestrictions MeleeOnly
       }
     }
     WaveSpawn //WAVE 01b: 20 total, 5 active, Pyro
     {
       Name "wave01b"
       Where spawnbot
       TotalCount 20
       MaxActive 6
       SpawnCount 2
       WaitBeforeStarting 15
       WaitBetweenSpawns 10
       TotalCurrency 200     
     
       TFBot
       {
         Class Pyro
         Skill Easy
       }
     }
     WaveSpawn //WAVE 01c: 50 total, 10 active, Scout (WAITFORALLSPAWNED "WAVE01A")
     {
       Name "wave01c"
       Where spawnbot
       TotalCount 50
       MaxActive 10
       SpawnCount 5
       WaitForAllSpawned "wave01a"
       WaitBeforeStarting 0
       WaitBetweenSpawns 5
       TotalCurrency 200     
     
       TFBot
       {
         Class Scout
         Skill Easy
       }
     }
     WaveSpawn //WAVE 01d: 30 total, 15 active, Heavyweapons (WAITFORALLSPAWNED "WAVE01B")
     {
       Name "wave01d"
       Where spawnbot
       TotalCount 30
       MaxActive 15
       SpawnCount 5
       WaitForAllSpawned "wave01b"
       WaitBeforeStarting 0
       WaitBetweenSpawns 2
       TotalCurrency 100     
     
       TFBot
       {
         Class Heavyweapons
         Skill Easy
       }
     }
   }   
   //WAVE 2 //Currency 800 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay
         Action Trigger
       }
     DoneOutput           
       {
         Target wave_finished_relay
         Action trigger
       }
     WaitWhenDone 65
     Checkpoint Yes
     
     // Engineer mission - 1 active

     WaveSpawn //WAVE 02a: 27 total, 3 active, Demoman (Eyelander, Charge'n Targe)
     {
       Name "wave02a"
       Where spawnbot
       TotalCount 27
       MaxActive 3
       SpawnCount 3
       WaitBeforeStarting 0
       WaitBetweenSpawns 10
       TotalCurrency 200   

       Support 1
     
       TFBot
       {
         Template T_TFBot_Demoman_Knight
       }
     }
     WaveSpawn //WAVE 02b: 28 total, 4 active, Soldier
     {
       Name "wave02b"
       Where spawnbot
       TotalCount 28
       MaxActive 4
       SpawnCount 4
       WaitBeforeStarting 0
       WaitBetweenSpawns 10
       TotalCurrency 200   

       TFBot
       {
         Class Soldier
         Skill Easy
       }
     }
     WaveSpawn //WAVE 02c: [GIANT] 4 total, 4 active, Soldier (Slow crit)
     {
       Name "wave02c"
       Where spawnbot
       TotalCount 4
       MaxActive 4
       SpawnCount 1
       WaitBeforeStarting 45
       WaitBetweenSpawns 25
       TotalCurrency 150   

       TFBot
       {
         Template T_TFBot_Giant_Soldier_Crit
       }
     }
     WaveSpawn //WAVE 02d: 50 total, 10 active, Scout (1/3 melee only, WAITFORALLSPAWNED "WAVE02C")
     {
       Name "wave02d"
       Where spawnbot
       TotalCount 50
       MaxActive 10
       SpawnCount 10
       WaitForAllSpawned "wave02c"
       WaitBeforeStarting 20
       WaitBetweenSpawns 8
       TotalCurrency 250   
       
       RandomChoice
       {
         TFBot
         {
           Class Scout
           Skill Easy
         }
         TFBot
         {
           Class Scout
           Skill Easy
         }
         TFBot
         {
           Class Scout
           Skill Easy
           WeaponRestrictions MeleeOnly
         }
       }
     }
   }
   //WAVE 3 //Currency 800 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay
         Action Trigger
       }
     DoneOutput           
       {
         Target wave_finished_relay
         Action trigger
       }
     WaitWhenDone 65
     Checkpoint Yes
     
     // Spy mission - 4 active   
     // Sniper mission - 4 active   

     WaveSpawn //WAVE 03a: [GIANT] 20 total, 5 active, Giant Pyro squad (uber medic and heavyweapons)
     {
       Name "wave03a"
       Where spawnbot
       TotalCount 20
       MaxActive 20
       SpawnCount 5
       WaitBeforeStarting 0
       WaitBetweenSpawns 20
       TotalCurrency 200   

       Squad
       {
         TFBot
         {
           Template T_TFBot_Giant_Pyro
         }
         TFBot
         {
           Template T_TFBot_Medic_QuickUber
         }
         TFBot
         {
           Class Heavyweapons
           Skill Easy
         }
         TFBot
         {
           Class Heavyweapons
           Skill Easy
         }
         TFBot
         {
           Class Heavyweapons
           Skill Easy
         }
       }
     }
     WaveSpawn //WAVE 03b: 24 total, 12 active, Soldier (WAITFORALLSPAWNED "WAVE03A")
     {
       Name "wave03b"
       Where spawnbot
       TotalCount 24
       MaxActive 12
       SpawnCount 6
       WaitForAllSpawned "wave03a"
       WaitBeforeStarting 15
       WaitBetweenSpawns 3
       TotalCurrency 200   

       TFBot
       {
         Class Soldier
         Skill Easy
       }
     }
     WaveSpawn //WAVE 03c: 30 total, 10 active, Heavyweapons (WAITFORALLDEAD "WAVE03A")
     {
       Name "wave03c"
       Where spawnbot
       TotalCount 30
       MaxActive 10
       SpawnCount 5
       WaitForAllDead "wave03a"
       WaitBeforeStarting 0
       WaitBetweenSpawns 7
       TotalCurrency 200   

       TFBot
       {
         Class Heavyweapons
         Skill Easy
       }
     }
     WaveSpawn //WAVE 03d: 10(20) total, 4(8) active, Scout + quickfix medic (WAITFORALLDEAD "WAVE03B")
     {
       Name "wave03d"
       Where spawnbot
       TotalCount 20
       MaxActive 8
       SpawnCount 2
       WaitForAllDead "wave03b"
       WaitBeforeStarting 0
       WaitBetweenSpawns 3
       TotalCurrency 200   
       
       Squad
       {
         TFBot
         {
           Class Scout
           Skill Easy
         }
         TFBot
         {
           Template T_TFBot_Medic_QuickFix
         }
       }
     }
   }
   //WAVE 4 //Currency 600 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay
         Action Trigger
       }
     DoneOutput           
       {
         Target wave_finished_relay
         Action trigger
       }
     WaitWhenDone 65
     Checkpoint Yes

     // Sniper mission - 2 active   
     // Engineer mission - 1 active
     
     WaveSpawn //WAVE 04a: [TANK]  
     {
       Name "wave04a"
       TotalCount 2
       WaitBeforeStarting 0
       WaitBetweenSpawns 50
       TotalCurrency 300
       
       FirstSpawnOutput   
       {
          Target boss_spawn_relay   
          Action Trigger   
       }

       Tank
       {
         Health 20000
         Speed 75
         Name "tankboss"
         StartingPathTrackNode "boss_path_a1"

         OnKilledOutput   
         {
           Target boss_dead_relay
           Action Trigger   
         }
         
         OnBombDroppedOutput   
         {
           Target boss_deploy_relay
           Action Trigger   
         }
       }
     }
     WaveSpawn //WAVE 04b: [GIANT] 5(25) total, 3(15) active, Demoman + soldiers
     {
       Name "wave04b"
       Where spawnbot
       TotalCount 25
       MaxActive 15
       SpawnCount 5
       WaitBeforeStarting 15
       WaitBetweenSpawns 35
       TotalCurrency 200   
       
       Squad
       {
         TFBot
         {
           Template T_TFBot_Giant_Demoman
         }
         TFBot
         {
           Class Soldier
           Skill Easy
         }
         TFBot
         {
           Class Soldier
           Skill Easy
         }
         TFBot
         {
           Class Soldier
           Skill Easy
         }
         TFBot
         {
           Class Soldier
           Skill Easy
         }
       }
     }
     WaveSpawn //WAVE 04c: 35 total, 5 active, Scout (bonk)
     {
       Name "wave04c"
       Where spawnbot
       TotalCount 35
       MaxActive 5
       SpawnCount 5
       WaitBeforeStarting 60
       WaitBetweenSpawns 10
       TotalCurrency 200   
       
       TFBot
       {
         Class Scout
         Skill Easy
       }
     }
   }
   //WAVE 5 //Currency 500 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay
         Action Trigger
       }
     DoneOutput           
       {
         Target wave_finished_relay
         Action trigger
       }
     WaitWhenDone 65
     Checkpoint Yes
     
     // Spy mission - 4 active   
     // Engineer mission - 1 active

     WaveSpawn //WAVE 05a: 45 total, 18 active, Heavyweapons (melee only, fast movement)
     {
       Name "wave05a"
       Where spawnbot
       TotalCount 45
       MaxActive 18
       SpawnCount 2
       WaitBeforeStarting 0
       WaitBetweenSpawns 3
       TotalCurrency 200   
       
       Support 1
       
       RandomChoice
       {
         TFBot
         {
           Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast
         }
         TFBot
         {
           Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast
         }
         TFBot
         {
           Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast
         }
         TFBot
         {
           Class Heavyweapons
           Skill Easy
         }
       }
     }
     WaveSpawn //WAVE 05b: 15 total, 5 active, Heavyweapons (Steel gauntlet)
     {
       Name "wave05b"
       Where spawnbot
       TotalCount 15
       MaxActive 5
       SpawnCount 1
       WaitBeforeStarting 0
       WaitBetweenSpawns 8
       TotalCurrency 200   

       TFBot
       {
         Template T_TFBot_Heavyweapons_Fist
       }
     }
     WaveSpawn //WAVE 05c: [GIANT] 2 total, 2 active, Heavyweapons
     {
       Name "wave05c"
       Where spawnbot
       TotalCount 2
       MaxActive 2
       SpawnCount 1
       WaitForAllSpawned "wave05b"
       WaitBeforeStarting 0
       WaitBetweenSpawns 40
       TotalCurrency 100   

       TFBot
       {
         Template T_TFBot_Giant_Heavyweapons
       }
     }
   }
   //WAVE 6 //Currency 500 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay
         Action Trigger
       }
     DoneOutput           
       {
         Target wave_finished_relay
         Action trigger
       }
     WaitWhenDone 65
     Checkpoint Yes
     
     WaveSpawn //WAVE 06a: 55 total, 5 active, Soldier
     {
       Name "wave06ab"
       Where spawnbot
       TotalCount 55
       MaxActive 10
       SpawnCount 5
       WaitBeforeStarting 0
       WaitBetweenSpawns 10
       TotalCurrency 400   
       
       TFBot
       {
         Class Soldier
         Skill Easy
       }
     }
     WaveSpawn //WAVE 06b: [GIANT] 8 total, 4 active, Soldier (slow crit)
     {
       Name "wave06ab"
       Where spawnbot
       TotalCount 8
       MaxActive 4
       SpawnCount 1
       WaitBeforeStarting 0
       WaitBetweenSpawns 20
       TotalCurrency 400   
       
       TFBot
       {
         Template T_TFBot_Giant_Soldier_Crit
       }
     }
     WaveSpawn //WAVE 06c: 50 total, 10 active, Sniper (Huntsman WAITFORALLDEAD "WAVE06AB")
     {
       Name "wave06c"
       Where spawnbot
       TotalCount 50
       MaxActive 10
       SpawnCount 5
       WaitForAllDead "wave06ab"
       WaitBeforeStarting 0
       WaitBetweenSpawns 5
       TotalCurrency 400   
       
       Support 1
       
       TFBot
       {
         Template T_TFBot_Sniper_Huntsman
       }
     }
     WaveSpawn //WAVE 06d: [GIANT] 2(8) total, 2(8) active, Heavyweapons (WAITFORALLDEAD "WAVE06AB")
     {
       Name "wave06d"
       Where spawnbot
       TotalCount 8
       MaxActive 8
       SpawnCount 4
       WaitForAllDead "wave06ab"
       WaitBeforeStarting 10
       WaitBetweenSpawns 30
       TotalCurrency 400   
       
       Squad
       {
         TFBot
         {
           Template T_TFBot_Giant_Heavyweapons
         }
         TFBot
         {
           Template T_TFBot_Medic_QuickFix
         }
         TFBot
         {
           Template T_TFBot_Medic_QuickFix
         }
         TFBot
         {
           Template T_TFBot_Medic_QuickFix
         }
       }
     }
     WaveSpawn //WAVE 06e: [FINAL TANK]  (WAITFORALLDEAD "WAVE06AB")
     {
       Name "wave06e"
       TotalCount 1
       WaitForAllDead "wave06ab"
       WaitBeforeStarting 30
       WaitBetweenSpawns 0
       TotalCurrency 0
       
       FirstSpawnOutput   
       {
          Target boss_spawn_relay   
          Action Trigger   
       }

       Tank
       {
         Health 30000
         Speed 75
         Name "tankboss"
         Skin 1
         StartingPathTrackNode "boss_path_1"

         OnKilledOutput   
         {
           Target boss_dead_relay
           Action Trigger   
         }
         
         OnBombDroppedOutput   
         {
           Target boss_deploy_relay
           Action Trigger   
         }
       }
     }
   }
}

Code:
#base robot_giant.pop
#base robot_standard.pop

WaveSchedule
{

   StartingCurrency     1500
   RespawnWaveTime      2
   CanBotsAttackWhileInSpawnRoom no

   Mission // sentry buster
   {
     Objective DestroySentries

     InitialCooldown 20
     Where spawnbot
     BeginAtWave 1
     RunForThisManyWaves 9

     CooldownTime 20   

  TFBot
       {
         Template T_TFBot_SentryBuster
  }
   }
   Mission // Spy - wave 1
   {
     Objective Spy  

     InitialCooldown 90
     Where spawnbot_mission_spy
     BeginAtWave 1
     RunForThisManyWaves 1
     CooldownTime 60
     DesiredCount 4

     TFBot
     {
       Class Spy
       Skill Expert
       Name Spy
     }
   }   
   Mission // Spy - wave 7
   {
     Objective Spy  

     InitialCooldown 5
     Where spawnbot_mission_spy
     BeginAtWave 7
     RunForThisManyWaves 1
     CooldownTime 35
     DesiredCount 10

     TFBot
     {
       Class Spy
       Skill Expert
       Name Spy
     }
   }   
   Mission // Sniper - wave 1
   {
     Objective Sniper

     InitialCooldown 120
     Where spawnbot_mission_sniper
     BeginAtWave 1
     RunForThisManyWaves 1
     CooldownTime 60
     DesiredCount 2

     TFBot
     {
       Class Sniper
       Skill Hard
       Name Sniper
       MaxVisionRange 3000
     }
   }
   Mission // Sniper - wave 5
   {
     Objective Sniper

     InitialCooldown 60
     Where spawnbot_mission_sniper
     BeginAtWave 5
     RunForThisManyWaves 1
     CooldownTime 10
     DesiredCount 4

     TFBot
     {
       Template T_TFBot_Sniper_Sydney_Sleeper
       Item "The Razorback"
       Name "Sydney sniper"
       MaxVisionRange 3000
     }
   }
   Mission // Sniper - wave 6
   {
   
     Objective Sniper

     InitialCooldown 60
     Where spawnbot_mission_sniper
     BeginAtWave 6
     RunForThisManyWaves 1
     CooldownTime 30
     DesiredCount 2

     TFBot
     {
       Class Sniper
       Skill Hard
       Name Sniper
       MaxVisionRange 3000
     }
   }
   Mission // Sniper - wave 7
   {
     Objective Sniper

     InitialCooldown 20
     Where spawnbot_mission_sniper
     BeginAtWave 7
     RunForThisManyWaves 1
     CooldownTime 20
     DesiredCount 6

     TFBot
     {
       Template T_TFBot_Sniper
     }
   }
   Mission // Engineer - wave 1-4
   {
     Objective Engineer  

     InitialCooldown 60
     Where spawnbot
     BeginAtWave 1
     RunForThisManyWaves 4
     CooldownTime 60
     DesiredCount 1

     TFBot
     {
       Template T_TFBot_Engineer_Sentry_Teleporter
     }
   }   
   Mission // Engineer - wave 5
   {
     Objective Engineer  

     InitialCooldown 60
     Where spawnbot
     BeginAtWave 5
     RunForThisManyWaves 1
     CooldownTime 11
     DesiredCount 1

     TFBot
     {
       Template T_TFBot_Engineer_Sentry_Teleporter
     }
   }   
   
   //WAVE 1 //Currency 1300 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay
         Action Trigger
       }
     DoneOutput           
       {
         Target wave_finished_relay
         Action trigger
       }
     WaitWhenDone 65
     Checkpoint Yes
     
     // Spy mission - 4 active   
     // Sniper mission - 2 active   

     WaveSpawn //WAVE 01a: 36 total, 18 active, Scout (bonk) + crit soldier
     {
       Name "wave01a"
       Where spawnbot
       TotalCount 36
       MaxActive 18
       SpawnCount 6
       WaitBeforeStarting 4
       WaitBetweenSpawns 5
       TotalCurrency 300     
     
       Squad
       {
         TFBot
         {
           Class Scout
           Skill Easy
         }
         TFBot
         {
           Class Scout
           Skill Easy
         }
         TFBot
         {
           Template T_TFBot_Scout_Bonk
         }
         TFBot
         {
           Template T_TFBot_Scout_Bonk
         }
         TFBot
         {
           Template T_TFBot_Scout_Bonk
         }
         TFBot
         {
           Class Soldier
           Skill Expert
           Attributes AlwaysCrit
           ItemAttributes
           {
             ItemName "TF_WEAPON_ROCKETLAUNCHER"
             "faster reload rate" -0.8
             "fire rate bonus" 0.6   
           }
         }
       }
     }
     WaveSpawn //WAVE 01b: [GIANT] 4 total, 3 active, Soldier (rapid fire)
     {
       Name "wave01b"
       Where spawnbot
       TotalCount 4
       MaxActive 4
       SpawnCount 1
       WaitBeforeStarting 45
       WaitBetweenSpawns 60
       TotalCurrency 300     
     
       TFBot
       {
         Template T_TFBot_Giant_Soldier_Spammer
       }
     }
     WaveSpawn //WAVE 01c: 40 total, 20 active, Heavy (crit) + uber medic + 3 Pyros (WAITFORALLDEAD "WAVE01A")
     {
       Name "wave01c"
       Where spawnbot
       TotalCount 40
       MaxActive 20
       SpawnCount 5
       WaitForAllDead "wave01a"
       WaitBeforeStarting 30
       WaitBetweenSpawns 15
       TotalCurrency 350     
     
       Squad
       {
         TFBot
         {
           Class Heavyweapons
           Skill Easy
           Attributes AlwaysCrit
         }
         TFBot
         {
           Template T_TFBot_Medic_QuickUber
         }
         TFBot
         {
           Class Pyro
           Skill Easy
         }
         TFBot
         {
           Class Pyro
           Skill Easy
         }
         TFBot
         {
           Class Pyro
           Skill Easy
         }
       }
     }
     WaveSpawn //WAVE 01d: 40 total, 22 active, Scout (crit bats) (WAITFORALLSPAWNED "WAVE01C")
     {
       Name "wave01d"
       Where spawnbot
       TotalCount 40
       MaxActive 22
       SpawnCount 8
       WaitForAllSpawned "wave01c"
       WaitBeforeStarting 0
       WaitBetweenSpawns 0
       TotalCurrency 350     
     
       TFBot
       {
         Class Scout
         Skill Easy
         WeaponRestrictions MeleeOnly
         Attributes AlwaysCrit
       }
     }
   }   
   //WAVE 2 //Currency 1500 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay
         Action Trigger
       }
     DoneOutput           
       {
         Target wave_finished_relay
         Action trigger
       }
     WaitWhenDone 65
     Checkpoint Yes
     

     WaveSpawn //WAVE 02a: 48 total, 12 active, Sniper (huntsman)
     {
       Name "wave02a"
       Where spawnbot
       TotalCount 48
       MaxActive 12
       SpawnCount 6
       WaitBeforeStarting 0
       WaitBetweenSpawns 2
       TotalCurrency 250     
     
       TFBot
       {
         Template T_TFBot_Sniper_Huntsman
       }
     }
     WaveSpawn //WAVE 02b: [TANK]  
     {
       Name "wave02b"
       TotalCount 1
       WaitBeforeStarting 25
       TotalCurrency 300
       
       FirstSpawnOutput   
       {
          Target boss_spawn_relay   
          Action Trigger   
       }

       Tank
       {
         Health 40000
         Speed 75
         Name "tankboss"
         StartingPathTrackNode "boss_path_a1"

         OnKilledOutput   
         {
           Target boss_dead_relay
           Action Trigger   
         }
         
         OnBombDroppedOutput   
         {
           Target boss_deploy_relay
           Action Trigger   
         }
       }
     }
     WaveSpawn //WAVE 02c: [GIANT] 3 total, 3 active, Super Scout
     {
       Name "wave02c"
       Where spawnbot
       TotalCount 3
       MaxActive 3
       SpawnCount 1
       WaitBeforeStarting 45
       WaitBetweenSpawns 30
       TotalCurrency 100   
       
       TFBot
       {
         Template T_TFBot_Giant_Scout_Fast
       }
     }
     WaveSpawn //WAVE 02d: [GIANT] 1(2) total, 1(2) active, Heavyweapons + Giant medic (WAITFORALLSPAWNED "WAVE02A")
     {
       Name "wave02d"
       Where spawnbot
       TotalCount 2
       MaxActive 2
       SpawnCount 2
       WaitForAllSpawned "Wave02a"
       WaitBeforeStarting 0
       WaitBetweenSpawns 0
       TotalCurrency 150     
     
       Squad
       {
         TFBot
         {
           Template T_TFBot_Giant_Heavyweapons_Deflector
         }
         TFBot
         {
           Template T_TFBot_Giant_Medic
         }
       }
     }
     WaveSpawn //WAVE 02e: 40 total, 10 active, Soldier (WAITFORALLDEAD "WAVE02B")
     {
       Name "wave02ef"
       Where spawnbot
       TotalCount 40
       MaxActive 10
       SpawnCount 10
       WaitForAllDead "Wave02b"
       WaitBeforeStarting 3
       WaitBetweenSpawns 5
       TotalCurrency 300     
     
       TFBot
       {
         Class Soldier
         Skill Hard
       }
     }
     WaveSpawn //WAVE 02f: [GIANT] 5(10) total, 5(10) active, Soldier (slow crit + uber medic) (WAITFORALLDEAD "WAVE02B")
     {
       Name "wave02ef"
       Where spawnbot
       TotalCount 10
       MaxActive 10
       SpawnCount 2
       WaitForAllDead "Wave02b"
       WaitBeforeStarting 10
       WaitBetweenSpawns 20
       TotalCurrency 400     
     
       Squad
       {
         TFBot
         {
           Template T_TFBot_Giant_Soldier_Crit
         }
         TFBot
         {
           Template T_TFBot_Medic_QuickUber
         }
       }
     }
     WaveSpawn //WAVE 02g: [GIANT] 3 total, 3 active, Super Scout (WAITFORALLSPAWNED "WAVE02EF")
     {
       Name "wave02c"
       Where spawnbot
       TotalCount 3
       MaxActive 3
       SpawnCount 3
       WaitForAllSpawned "wave02ef"
       WaitBeforeStarting 0
       WaitBetweenSpawns 30
       TotalCurrency 100   
       
       TFBot
       {
         Template T_TFBot_Giant_Scout_Fast
       }
     }
   }   
   //WAVE 3 //Currency 1300 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay
         Action Trigger
       }
     DoneOutput           
       {
         Target wave_finished_relay
         Action trigger
       }
     WaitWhenDone 65
     Checkpoint Yes
     

     WaveSpawn //WAVE 03a: 10(20) total, 10(20) active, Pyro + uber medic squads
     {
       Name "wave03a"
       Where spawnbot
       TotalCount 20
       MaxActive 20
       SpawnCount 4
       WaitBeforeStarting 0
       WaitBetweenSpawns 2
       TotalCurrency 200     
     
       Squad
       {
         TFBot
         {
           Class Pyro
           Skill Hard
         }
         TFBot
         {
           Template T_TFBot_Medic_QuickUber
         }
       }
     }
     WaveSpawn //WAVE 03a: [GIANT] 1 total, 1 active, Soldier (Burst fire)
     {
       Where spawnbot
       TotalCount 1
       MaxActive 1
       SpawnCount 1
       WaitBeforeStarting 10
       WaitBetweenSpawns 1
       TotalCurrency 50     
     
       TFBot
       {
         Template T_TFBot_Soldier_BurstFire
       }
     }
     WaveSpawn //WAVE 03b: 45 total, 18 active, Sniper (Huntsman crit) (WAITFORALLDEAD "WAVE03A")
     {
       Name "wave03b"
       Where spawnbot
       RandomSpawn 1
       TotalCount 45
       MaxActive 18
       SpawnCount 9
       WaitForAllDead "wave03a"
       WaitBeforeStarting 0
       WaitBetweenSpawns 1
       TotalCurrency 250     
     
       TFBot
       {
         Template T_TFBot_Sniper_Huntsman
         Skill Expert
         Attributes AlwaysCrit
         ItemAttributes
         {
           ItemName "The Huntsman"
           "faster reload rate" 0.2   
         }
       }
     }
     WaveSpawn //WAVE 03c: [GIANT] 12 total, 12 active, Demoman (WAITFORALLDEAD "WAVE03A")
     {
       Name "wave03c"
       Where spawnbot
       TotalCount 12
       MaxActive 12
       SpawnCount 3
       WaitForAllDead "wave03a"
       WaitBeforeStarting 10
       WaitBetweenSpawns 13
       TotalCurrency 200     
     
       TFBot
       {
         Template T_TFBot_Giant_Demo_RapidFire
       }
     }
     WaveSpawn //WAVE 03d: 8(16) total, 5(10) active, Heavyweapons (WAITFORALLDEAD "WAVE03B")
     {
       Name "wave03d"
       Where spawnbot
       TotalCount 16
       MaxActive 10
       SpawnCount 2
       WaitForAllDead "wave03b"
       WaitBeforeStarting 0
       WaitBetweenSpawns 7
       TotalCurrency 200     
     
       Squad
       {
         TFBot
         {
           Class Heavyweapons
           Skill Expert
           Attributes AlwaysCrit
           ItemAttributes
           {
             ItemName "TF_WEAPON_MINIGUN"
             "damage bonus"   1.5
           }
         }
         TFBot
         {
           Template T_TFBot_Medic_QuickUber
         }
       }
     }
     WaveSpawn //WAVE 03e: [TANK] WAITFORALLSPAWNED "WAVE03C")
     {
       Name "wave03e"
       TotalCount 1
       WaitForAllSpawned "wave03c"
       WaitBeforeStarting 0
       TotalCurrency 200
       
       FirstSpawnOutput   
       {
          Target boss_spawn_relay   
          Action Trigger   
       }

       Tank
       {
         Health 30000
         Speed 75
         Name "tankboss"
         StartingPathTrackNode "boss_path_a1"

         OnKilledOutput   
         {
           Target boss_dead_relay
           Action Trigger   
         }
         
         OnBombDroppedOutput   
         {
           Target boss_deploy_relay
           Action Trigger   
         }
       }
     }
     WaveSpawn //WAVE 03f: 66 total, 22 active, Scout (WAITFORALLSPAWNED "WAVE03C")
     {
       Name "wave01a"
       Where spawnbot
       TotalCount 66
       MaxActive 22
       SpawnCount 11
       WaitForAllSpawned "wave03c"
       WaitBeforeStarting 5
       WaitBetweenSpawns 10
       TotalCurrency 200

       Support 1
     
       TFBot
       {
         Class Scout
         Skill Easy
       }
     }
   }
   //WAVE 4 //Currency 1000 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay
         Action Trigger
       }
     DoneOutput           
       {
         Target wave_finished_relay
         Action trigger
       }
     WaitWhenDone 65
     Checkpoint Yes
     

     WaveSpawn //WAVE 04a: 100 total, 14 active, Spy
     {
       Name "wave04a"
       Where spawnbot
       TotalCount 100
       MaxActive 14
       SpawnCount 8
       WaitBeforeStarting 0
       WaitBetweenSpawns 2
       TotalCurrency 300     
     
       TFBot
       {
         Class Spy
         Skill Expert
       }
     }
     WaveSpawn //WAVE 04b: 128 total, 8 active, Scout
     {
       Name "wave04b"
       Where spawnbot
       TotalCount 128
       MaxActive 8
       SpawnCount 8
       WaitBeforeStarting 0
       WaitBetweenSpawns 0
       TotalCurrency 400   

       Support 1
     
       TFBot
       {
         Class Scout
         Skill Hard
         Attributes AlwaysCrit
       }
     }
     WaveSpawn //WAVE 04c: [GIANT] 4(8) total, 4(8) active, Heavyweapons (Flank main right + regular uber duration medic)
     {
       Name "wave04c"
       Where spawnbot
       TotalCount 8
       MaxActive 8
       SpawnCount 2
       WaitForAllSpawned "wave04a"
       WaitBeforeStarting 0
       WaitBetweenSpawns 20
       TotalCurrency 300     
       
       Squad
       {
         TFBot
         {
           Template T_TFBot_Giant_Heavyweapons
           Tag nav_prefer_flank_right
         }
         TFBot
         {
           Template T_TFBot_Medic_QuickUber
           ItemAttributes
           {
             ItemName "TF_WEAPON_MEDIGUN"
             "uber duration bonus" 4
           }
         }
       }
     }
     WaveSpawn //WAVE 04d: [GIANT] 4(8) total, 4(8) active, Heavyweapons (Flank main left + regular uber duration medic)
     {
       Name "wave04c"
       Where spawnbot
       TotalCount 8
       MaxActive 8
       SpawnCount 2
       WaitForAllSpawned "wave04a"
       WaitBeforeStarting 10
       WaitBetweenSpawns 20
       TotalCurrency 300     
       
       Squad
       {
         TFBot
         {
           Template T_TFBot_Giant_Heavyweapons
           Tag nav_prefer_flank_left
         }
         TFBot
         {
           Template T_TFBot_Medic_QuickUber
           ItemAttributes
           {
             ItemName "TF_WEAPON_MEDIGUN"
             "uber duration bonus" 4
           }
         }
       }
     }
   }
   //WAVE 5 //Currency 650 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay
         Action Trigger
       }
     DoneOutput           
       {
         Target wave_finished_relay
         Action trigger
       }
     WaitWhenDone 65
     Checkpoint Yes
     
     // Sniper mission - 4 active   

     WaveSpawn //WAVE 05a: 64 total, 12 active, Heavyweapons (Steel Gauntlet)
     {
       Name "wave05a"
       Where spawnbot
       TotalCount 64
       MaxActive 12
       SpawnCount 4
       WaitBeforeStarting 0
       WaitBetweenSpawns 15
       TotalCurrency 300     
     
       TFBot
       {
         Template T_TFBot_Heavyweapons_Fist
       }
     }
     WaveSpawn //WAVE 05b: 64 total, 12 active, Soldier (Supercharged)
     {
       Name "wave05b"
       Where spawnbot
       TotalCount 64
       MaxActive 6
       SpawnCount 3
       WaitBeforeStarting 10
       WaitBetweenSpawns 15
       TotalCurrency 300     
       
       TFBot
       {
         Class Soldier
         Skill Expert
         Name "Crit Soldier"
         Attributes AlwaysCrit
         ItemAttributes
         {
           ItemName "TF_WEAPON_ROCKETLAUNCHER"
           "damage bonus"   2.0
           "faster reload rate" -0.8
           "fire rate bonus" 0.6
         }
       }
     }
     WaveSpawn //WAVE 05c: 22 total, 2 active, Heavyweapons (Steel Gauntlet) + Uber medic
     {
       Name "wave05c"
       Where spawnbot
       TotalCount 22
       MaxActive 2
       SpawnCount 2
       WaitBeforeStarting 30
       WaitBetweenSpawns 12
       TotalCurrency 50     
     
       Squad
       {
         TFBot
         {
           Template T_TFBot_Heavyweapons_Fist
         }
         TFBot
         {
           Template T_TFBot_Medic_QuickUber
         }
       }
     }
   }
   //WAVE 6 //Currency 1300 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay
         Action Trigger
       }
     DoneOutput           
       {
         Target wave_finished_relay
         Action trigger
       }
     
     WaitWhenDone 65
     Checkpoint Yes
     
     // Sniper mission - 2 active   

     WaveSpawn //WAVE 06a: 32 total, 4 active, Soldier (supercharged)
     {
       Name "wave06abcde"
       Where spawnbot
       TotalCount 32
       MaxActive 4
       SpawnCount 4
       WaitBeforeStarting 0
       WaitBetweenSpawns 0
       TotalCurrency 100     
     
       TFBot
       {
         Class Soldier
         Skill Expert
         Name "Crit Soldier"
         Attributes AlwaysCrit
         ItemAttributes
         {
           ItemName "TF_WEAPON_ROCKETLAUNCHER"
           "damage bonus"   2.0
           "faster reload rate" -0.8
           "fire rate bonus" 0.6
         }
       }
     }
     WaveSpawn //WAVE 06b: 32 total, 4 active, Heavyweapons (supercharged)
     {
       Name "wave06abcde"
       Where spawnbot
       TotalCount 32
       MaxActive 4
       SpawnCount 4
       WaitBeforeStarting 0
       WaitBetweenSpawns 0
       TotalCurrency 100     
     
       TFBot
       {
         Class Heavyweapons
         Skill Expert
         Name "Crit Heavy"
         Attributes AlwaysCrit
       }
     }
     WaveSpawn //WAVE 06c: 32 total, 4 active, Pyros (supercharged)
     {
       Name "wave06abcde"
       Where spawnbot
       TotalCount 32
       MaxActive 4
       SpawnCount 4
       WaitBeforeStarting 0
       WaitBetweenSpawns 0
       TotalCurrency 150     
     
       TFBot
       {
         Class Pyro
         Skill Expert
         Name "Crit Pyro"
         Attributes AlwaysCrit
         ItemAttributes
         {
           ItemName "TF_WEAPON_FLAMETHROWER"
           "damage bonus"   2.0
         }
         CharacterAttributes
         {
           "move speed bonus"   1.5
         }
       }
     }
     WaveSpawn //WAVE 06d: 32 total, 4 active, Scouts (supercharged)
     {
       Name "wave06abcde"
       Where spawnbot
       TotalCount 24
       MaxActive 4
       SpawnCount 4
       WaitBeforeStarting 0
       WaitBetweenSpawns 0
       TotalCurrency 150     
     
       TFBot
       {
         Class Scout
         Skill Expert
         Name "Crit Scout"
         Attributes AlwaysCrit
       }
     }
     WaveSpawn //WAVE 06e: 32 total, 4 active, Demoman (supercharged)
     {
       Name "wave06abcde"
       Where spawnbot
       TotalCount 24
       MaxActive 4
       SpawnCount 4
       WaitBeforeStarting 0
       WaitBetweenSpawns 0
       TotalCurrency 150     
     
       TFBot
       {
         Class Demoman
         Skill Expert
         Name "Crit Demo"
         Attributes AlwaysCrit
         ItemAttributes
         {
           ItemName "TF_WEAPON_GRENADELAUNCHER"
           "Projectile speed increased" 2.0
           "faster reload rate" -0.8
           "damage bonus"   2.0
         }
       }
     }
     WaveSpawn //WAVE 06f: [TANK] WAITFORALLSPAWNED "WAVE06ABCDE")
     {
       Name "wave06f"
       TotalCount 2
       WaitForAllSpawned "wave06abcde"
       WaitBeforeStarting 0
       WaitBetweenSpawns 30
       TotalCurrency 200
       
       FirstSpawnOutput   
       {
          Target boss_spawn_relay   
          Action Trigger   
       }

       Tank
       {
         Health 35000
         Speed 75
         Name "tankboss"
         StartingPathTrackNode "boss_path_a1"

         OnKilledOutput   
         {
           Target boss_dead_relay
           Action Trigger   
         }
         
         OnBombDroppedOutput   
         {
           Target boss_deploy_relay
           Action Trigger   
         }
       }
     }
     WaveSpawn //WAVE 06g: [GIANT] 8 total, 8 active, Super Scout (WAITFORALLSPAWNED "WAVE06ABCDE")
     {
       Name "wave06g"
       Where spawnbot
       TotalCount 8
       MaxActive 8
       SpawnCount 2
       WaitForAllSpawned "wave06abcde"
       WaitBeforeStarting 45
       WaitBetweenSpawns 20
       TotalCurrency 50   
       
       TFBot
       {
         Template T_TFBot_Giant_Scout_Fast
       }
     }
     WaveSpawn //WAVE 06h: [GIANT] 3(6) total, 3(6) active, Heavyweapons (Crit + Giant medic) (WAITFORALLDEAD "WAVE06ABCDE")
     {
       Name "wave06h"
       Where spawnbot
       TotalCount 6
       MaxActive 6
       SpawnCount 2
       WaitForAllDead "wave06abcde"
       WaitBeforeStarting 0
       WaitBetweenSpawns 40
       TotalCurrency 50     
     
       Squad
       {
         TFBot
         {
           Template T_TFBot_Giant_Heavyweapons_Deflector
           Attributes AlwaysCrit
           Item "Witch Hat"
         }
         TFBot
         {
           Template T_TFBot_Giant_Medic
           Item "The Warsworn Helmet"
         }
       }
     }
     WaveSpawn //WAVE 06i: [GIANT] 10 total, 10 active, Soldier (rapid fire) (WAITFORALLSPAWNED "WAVE06H")
     {
       Name "wave06i"
       Where spawnbot
       TotalCount 10
       MaxActive 10
       SpawnCount 2
       WaitForAllSpawned "wave06h"
       WaitBeforeStarting 5
       WaitBetweenSpawns 10
       TotalCurrency 50     
     
       RandomChoice
       {
         TFBot
         {
           Template T_TFBot_Giant_Soldier_Spammer
           Tag special_main_right
         }
         TFBot
         {
           Template T_TFBot_Giant_Soldier_Spammer
           Tag special_main_left
         }
       }
     }
     WaveSpawn //WAVE 06j: [FINAL TANK]  (WAITFORALLSPAWNED "WAVE06H")
     {
       Name "wave06j"
       TotalCount 1
       WaitForAllSpawned "wave06h"
       WaitBeforeStarting 25
       WaitBetweenSpawns 0
       TotalCurrency 200
       
       FirstSpawnOutput   
       {
          Target boss_spawn_relay   
          Action Trigger   
       }

       Tank
       {
         Health 60000
         Speed 75
         Name "tankboss"
         Skin 1
         StartingPathTrackNode "boss_path_1"

         OnKilledOutput   
         {
           Target boss_dead_relay
           Action Trigger   
         }
         
         OnBombDroppedOutput   
         {
           Target boss_deploy_relay
           Action Trigger   
         }
       }
     }
   }
   //WAVE 7 //Currency 0 ///////////////////////////////////////////////////////////////////////////////////////////////////////
   Wave
   {
     StartWaveOutput
       {
         Target wave_start_relay_boss
         Action Trigger
       }
     WaitWhenDone 65
     Checkpoint Yes
     
     // Sniper mission - 6 active   
     // Spy mission - 10 active   

     WaveSpawn //WAVE 07a: [CHIEF SOLDIER]  
     {
       Name "wave07a"
       Where spawnbot
       TotalCount 1
       MaxActive 1
       SpawnCount 1
       WaitBeforeStarting 0
       WaitBetweenSpawns 0
       TotalCurrency 0
       
       TFBot
       {
         Template T_TFBot_Chief_Soldier
       }
     }
   }
}