///////////////////////////////////////////////////////////////////// // // Example pop file for the map mvm_example. // // This pop file contains a sampling of wave types used in MVM and is commented. // ///////////////////////////////////////////////////////////////////// // // 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_give x // 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. // ///////////////////////////////////////////////////////////////////// // 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_hillside_event.pop WaveSchedule { StartingCurrency 700 // 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 3 // 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. ///////////////// //MISSIONS ///////////////// Mission // This is a sentry buster mission. It creates sentry busters for any player sentries deemed too dangerous. { Objective DestroySentries InitialCooldown 5 // Amount of time once a wave starts before the mission becomes active. Where spawnbot_mission_sentrybuster // Entity at which to spawn. BeginAtWave 1 // The mission becomes active on this wave. RunForThisManyWaves 11 // It remains active for this many waves. Generally, this is the same as the total number of waves. CooldownTime 35 // This is the time, in seconds, between when Sentry Busters are allowed to spawn, should their spawning conditions be met. TFBot { Template T_TFBot_SentryBuster // This references a template to use for its TFBot. } } 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 Spy InitialCooldown 15 // Amount of time once a wave starts before the mission becomes active. Where spawnbot_mission_spy // Entity at which to spawn. BeginAtWave 1 // The mission becomes active on this wave. RunForThisManyWaves 1 // 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 1 // Number of spies to spawn each time this mission's criteria are met. TFBot { Template T_TFBot_Spy } } 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 Spy InitialCooldown 30 // Amount of time once a wave starts before the mission becomes active. Where spawnbot_mission_spy // Entity at which to spawn. BeginAtWave 4 // The mission becomes active on this wave. RunForThisManyWaves 1 // 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_Spy } } ///////////////// //WAVES ///////////////// //WAVE 1 - 700 starting, 600 + 100 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. } InitWaveOutput // Output which occurs at moment the wave begins. { Target wave_spell_relay // Name of the entity in the map to target. Action FireUser1 // 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 { Name wave1a Where spawnbot TotalCount 10 MaxActive 4 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 9 TotalCurrency 100 TFBot { Template SoldierWhip Skill Hard } } WaveSpawn { Name wave1a Where spawnbot TotalCount 10 MaxActive 4 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 9 TotalCurrency 75 TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast Skill Easy } } WaveSpawn { Name wave1b Where spawnbot TotalCount 8 MaxActive 4 SpawnCount 4 WaitBeforeStarting 0 WaitBetweenSpawns 0 WaitForAllSpawned wave1a TotalCurrency 80 TFBot { Template SniperPersian } } WaveSpawn { Name wave1b Where spawnbot TotalCount 8 MaxActive 4 SpawnCount 4 WaitBeforeStarting 0 WaitBetweenSpawns 0 WaitForAllDead wave1a TotalCurrency 80 TFBot { Template SniperPersian Skill Easy } } WaveSpawn { Name wave1c Where spawnbot_left TotalCount 24 MaxActive 4 SpawnCount 4 WaitBeforeStarting 10 WaitBetweenSpawns 6 TotalCurrency 155 TFBot { Template ScoutBat } } WaveSpawn { Name wave1e Where spawnbot_left TotalCount 5 MaxActive 5 SpawnCount 5 WaitBeforeStarting 0 WaitBetweenSpawns 5 WaitForAllDead wave1c TotalCurrency 30 TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast } } WaveSpawn { Name wave1d Where spawnbot TotalCount 4 MaxActive 4 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 11 WaitForAllDead wave1a TotalCurrency 80 TFBot { Template T_TFBot_Heavyweapons_Fist } } } //Wave 2 - 1250 starting, 650 + 100 Wave { StartWaveOutput { Target wave_start_relay Action trigger } InitWaveOutput // Output which occurs at moment the wave begins. { Target wave_spell_relay // Name of the entity in the map to target. Action FireUser1 // Input to give the targeted entity. } DoneOutput { Target wave_finished_relay Action trigger } Checkpoint Yes WaveSpawn { Name wave1a Where spawnbot_left TotalCount 12 MaxActive 6 SpawnCount 6 WaitBeforeStarting 5 WaitBetweenSpawns 12 TotalCurrency 100 RandomChoice { TFBot { Template Demoknight Skill Expert } TFBot { Template Demoknight Skill Easy } TFBot { Template Demoknight Skill Normal } } } WaveSpawn { Name wave1b Where spawnbot TotalCount 32 MaxActive 8 SpawnCount 4 WaitBeforeStarting 0 WaitBetweenSpawns 9 TotalCurrency 200 RandomChoice { TFBot { Template SniperHuntsman Skill Hard } TFBot { Template SniperHuntsman Skill Easy } TFBot { Template SniperHuntsman Skill Easy } } } WaveSpawn { Name wave1c Where spawnbot_right TotalCount 9 MaxActive 3 SpawnCount 3 WaitBeforeStarting 24 WaitBetweenSpawns 11 TotalCurrency 75 RandomChoice { TFBot { Template SoldierEqualizer Skill Hard ItemAttributes { ItemName "The Equalizer" "damage bonus" 1.08 "special taunt" 0 } } TFBot { Template SoldierEqualizer Skill Easy ItemAttributes { ItemName "The Equalizer" "damage bonus" 1.08 "special taunt" 0 } } } } WaveSpawn { Name wave1d Where spawnbot_left TotalCount 10 MaxActive 2 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 16 Support 1 WaitForAllDead wave1a TotalCurrency 75 RandomChoice { TFBot { Template DemoknightCaber Skill Easy } TFBot { Template DemoknightCaber Skill Expert } } } WaveSpawn { Name wave1e Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 27 WaitForAllDead wave1a TotalCurrency 75 TFBot { Template PyroVolcanoGiant } } WaveSpawn { Name wave1e Where spawnbot_invasion TotalCount 15 MaxActive 6 SpawnCount 3 WaitBeforeStarting 12 WaitBetweenSpawns 20 WaitForAllDead wave1a Support Limited TotalCurrency 75 TFBot { Template PyroAxtinguisher } } WaveSpawn { Name wave1f Where spawnbot_right TotalCount 2 MaxActive 2 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 9 WaitForAllSpawned wave1b TotalCurrency 50 Squad { TFBot { Template SniperHuntsmanRapid Skill Hard } TFBot { Template SniperHuntsmanRapid Skill Easy } } } } //wave 3 - 2000 starting, 700 + 100 Wave { StartWaveOutput { Target wave_start_relay Action trigger } InitWaveOutput // Output which occurs at moment the wave begins. { Target wave_spell_relay // Name of the entity in the map to target. Action FireUser2 // Input to give the targeted entity. } DoneOutput { Target wave_finished_relay Action trigger } Checkpoint Yes WaveSpawn { Name wave1a Where spawnbot TotalCount 25 MaxActive 10 SpawnCount 5 WaitBeforeStarting 0 WaitBetweenSpawns 8 TotalCurrency 150 RandomChoice { TFBot { Template PyroBackScratcher Skill Easy } TFBot { Template PyroBackScratcher Skill Hard } } } WaveSpawn { Name wave1b Where spawnbot_left TotalCount 18 MaxActive 6 SpawnCount 6 WaitBeforeStarting 7 WaitBetweenSpawns 15 TotalCurrency 100 Squad { TFBot { Template MedicCrossbow Skill Hard } TFBot { Template ScoutBleed Skill Hard } ShouldPreserveSquad 1 } } WaveSpawn { Name wave1c Where spawnbot TotalCount 3 MaxActive 2 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 23 TotalCurrency 100 TFBot { Template SniperHuntsmanGiant Skill Normal ItemAttributes { ItemName "The Huntsman" "damage bonus" 0.86 } } } WaveSpawn { Name wave1d Where spawnbot_left TotalCount 18 MaxActive 6 SpawnCount 6 WaitForAllDead wave1b WaitBeforeStarting 0 WaitBetweenSpawns 15 TotalCurrency 100 Squad { TFBot { Template Caster } TFBot { Template ScoutBleed Skill Normal } ShouldPreserveSquad 1 } } WaveSpawn { Name wave1e Where spawnbot TotalCount 12 MaxActive 8 SpawnCount 4 WaitForAllDead wave1a WaitBeforeStarting 0 WaitBetweenSpawns 13 TotalCurrency 75 RandomChoice { TFBot { Template SoldierSamurai Skill Hard } TFBot { Template SoldierSamurai Skill Easy } } } WaveSpawn { Name wave1e Where spawnbot TotalCount 10 MaxActive 2 SpawnCount 2 WaitForAllSpawned wave1a WaitBeforeStarting 18 WaitBetweenSpawns 3 TotalCurrency 75 RandomChoice { TFBot { Template ScoutBleed Skill Normal } TFBot { Template ScoutBleed Skill Hard } } } WaveSpawn { Name wave1f Where spawnbot_invasion TotalCount 8 MaxActive 2 SpawnCount 1 WaitForAllDead wave1a WaitBeforeStarting 0 WaitBetweenSpawns 12 Support 1 TotalCurrency 50 TFBot { Template ScoutMarketGarden } } WaveSpawn { Name wave1g Where spawnbot TotalCount 7 MaxActive 7 SpawnCount 7 WaitForAllDead wave1c WaitBeforeStarting 5 WaitBetweenSpawns 22 TotalCurrency 50 Squad { TFBot { Template DemomanCannonGiantBurst } TFBot { Template Caster } TFBot { Template Caster } TFBot { Template ScoutBat Skill Expert } TFBot { Template ScoutBat Skill Easy } TFBot { Template ScoutBat Skill Expert } TFBot { Template ScoutBat Skill Easy } } } } //wave 4 - 2850 starting, 650 + 100 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. } InitWaveOutput // Output which occurs at moment the wave begins. { Target wave_spell_relay // Name of the entity in the map to target. Action FireUser3 // 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 WaveSpawn { Name wave1a Where spawnbot TotalCount 30 MaxActive 10 SpawnCount 10 WaitBeforeStarting 1 WaitBetweenSpawns 22 TotalCurrency 150 RandomChoice { TFBot { Template DemoknightCharger Skill Expert } TFBot { Template DemoknightCharger Skill Easy } } } WaveSpawn { Name wave1b Where spawnbot_left TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 56 WaitBetweenSpawns 25 TotalCurrency 20 TFBot { Template T_TFBot_Giant_Scout_Fast Tag bot_giant } } WaveSpawn { Name wave1c Where spawnbot_right TotalCount 30 MaxActive 6 SpawnCount 3 WaitBeforeStarting 10 WaitBetweenSpawns 7 TotalCurrency 120 RandomChoice { TFBot { Template SniperHuntsmanFire Skill Expert } TFBot { Template SniperHuntsman Skill Normal } TFBot { Template SniperHuntsman Skill Normal } } } WaveSpawn { Name wave1ds Where spawnbot_left TotalCount 15 MaxActive 3 SpawnCount 3 WaitBeforeStarting 15 WaitBetweenSpawns 10 WaitForAllSpawned wave1a TotalCurrency 50 TFBot { Template Demoknight } } WaveSpawn { Name wave1ds Where spawnbot_left TotalCount 9 MaxActive 3 SpawnCount 3 WaitBeforeStarting 50 WaitBetweenSpawns 7 WaitForAllSpawned wave1a TotalCurrency 55 TFBot { Template Demoknight } } WaveSpawn { Name wave1f Where spawnbot TotalCount 3 MaxActive 2 SpawnCount 1 WaitBeforeStarting 27 WaitBetweenSpawns 25 WaitForAllSpawned wave1a TotalCurrency 80 TFBot { Template DemoknightSkullcutterGiant } } WaveSpawn { Name wave1d Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 23 WaitBetweenSpawns 14 WaitForAllSpawned wave1a TotalCurrency 150 Tank { Health 19000 Speed 82 Name "boss" StartingPathTrackNode "boss_path_a1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name wave1g Where spawnbot_left TotalCount 5 MaxActive 2 SpawnCount 1 WaitBeforeStarting 39 WaitBetweenSpawns 8 WaitForAllSpawned wave1d TotalCurrency 25 TFBot { Template SoldierWhipBuff } } } //wave 5 - 3550 starting, 650 + 100 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. } InitWaveOutput // Output which occurs at moment the wave begins. { Target wave_spell_relay // Name of the entity in the map to target. Action FireUser4 // 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 WaveSpawn { Name wave1a Where spawnbot TotalCount 4 MaxActive 2 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 33 TotalCurrency 70 Squad { TFBot { Template CasterGiant } TFBot { Template Caster } } } WaveSpawn { Name wave1a Where spawnbot TotalCount 9 MaxActive 3 SpawnCount 3 WaitBeforeStarting 18 WaitBetweenSpawns 1 TotalCurrency 30 Squad { TFBot { Template Caster } TFBot { Template Caster } TFBot { Template Caster } } } WaveSpawn { Name wave1b Where spawnbot TotalCount 4 MaxActive 2 SpawnCount 2 WaitBeforeStarting 8 WaitBetweenSpawns 26 TotalCurrency 50 Squad { TFBot { Template MedicCrossbowGiantBurstLow } TFBot { Template DemomanCannon } ShouldPreserveSquad 1 } } WaveSpawn { Name wave1c Where spawnbot TotalCount 24 MaxActive 12 SpawnCount 6 WaitBeforeStarting 16 WaitBetweenSpawns 16 TotalCurrency 100 Squad { TFBot { Template MedicCrossbow } TFBot { Template SoldierWhipBuff } ShouldPreserveSquad 1 } } WaveSpawn { Name wave1samurai Where spawnbot_right TotalCount 6 MaxActive 2 SpawnCount 1 WaitBeforeStarting 6 WaitBetweenSpawns 12 TotalCurrency 50 RandomChoice { TFBot { Template DemoknightSamuraiWeak Skill Expert } TFBot { Template DemoknightSamuraiWeak Skill Easy } } } WaveSpawn { Name wave1d Where spawnbot_left TotalCount 12 MaxActive 8 SpawnCount 4 WaitForAllDead wave1c WaitBeforeStarting 0 WaitBetweenSpawns 10 TotalCurrency 35 Squad { TFBot { Template SoldierEqualizer Skill Expert } TFBot { Template SoldierSamurai Skill Easy Attributes AlwaysCrit } } } WaveSpawn { Name wave1da Where spawnbot_left TotalCount 4 MaxActive 4 SpawnCount 4 WaitForAllDead wave1d WaitBeforeStarting 0 WaitBetweenSpawns 8 TotalCurrency 15 Squad { TFBot { Template SoldierEqualizer Skill Expert } TFBot { Template SoldierSamurai Skill Easy Attributes AlwaysCrit } } } WaveSpawn { Name wave1e Where spawnbot TotalCount 6 MaxActive 6 SpawnCount 3 WaitBeforeStarting 0 WaitBetweenSpawns 14 WaitForAllDead wave1a TotalCurrency 20 Squad { TFBot { Template DemomanCannonNoKnockback } TFBot { Template DemomanCannonNoKnockback } TFBot { Template DemomanCannon } } } WaveSpawn { Name wave1e Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 18 WaitForAllDead wave1b TotalCurrency 80 TFBot { Template HeavyFistGiant } } //Spawns last preferably WaveSpawn { Name wave2g Where spawnbot TotalCount 10 MaxActive 10 SpawnCount 10 WaitForAllDead wave1d WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 50 Squad { TFBot { Template MedicCrossbow } TFBot { Template SoldierWhipBuff } ShouldPreserveSquad 1 } } WaveSpawn { Name wave1j Where spawnbot TotalCount 4 MaxActive 4 SpawnCount 4 WaitBeforeStarting 0 WaitBetweenSpawns 12 WaitForAllDead wave1e TotalCurrency 100 Squad { TFBot { Template DemomanCannonNoKnockback } TFBot { Template DemomanCannonNoKnockback } TFBot { Template DemomanCannon } TFBot { Template HeavyFistGiant } } } WaveSpawn { Name wave1f Where spawnbot TotalCount 3 MaxActive 3 SpawnCount 3 WaitForAllDead wave1a WaitBeforeStarting 13 WaitBetweenSpawns 12 TotalCurrency 50 Squad { TFBot { Template CasterGiant } TFBot { Template Caster } TFBot { Template Caster } } } } //wave 6 - 4250 starting, 500 + 100 Wave { InitWaveOutput // Output which occurs at moment the wave begins. { Target wave_spell_relay // Name of the entity in the map to target. Action FireUser4 // Input to give the targeted entity. } 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 WaveSpawn { Name wave1a Where spawnbot TotalCount 4 MaxActive 4 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 25 TotalCurrency 50 Squad { TFBot { Template SoldierEqualizerGiant Attributes AlwaysCrit ItemAttributes { ItemName "The Equalizer" "damage bonus" 0.93 } } TFBot { Template SoldierEscapePlanGiant } } } WaveSpawn { Name wave1ff Where spawnbot_left TotalCount 10 MaxActive 5 SpawnCount 5 WaitBeforeStarting 10 WaitBetweenSpawns 22 TotalCurrency 40 TFBot { Template SoldierBison ItemAttributes { ItemName "The Righteous Bison" "fire rate bonus" 1.12 } } } WaveSpawn { Name wave1ggg Where spawnbot_right TotalCount 1 MaxActive 1 SpawnCount 1 WaitForAllDead wave1ff WaitBeforeStarting 5 WaitBetweenSpawns 20 TotalCurrency 15 TFBot { Template T_TFBot_Giant_Scout_Baseball Tag bot_giant CharacterAttributes { "move speed bonus" 1.1 } } } WaveSpawn { Name wave1b Where spawnbot TotalCount 16 MaxActive 8 SpawnCount 8 WaitBeforeStarting 4 WaitBetweenSpawns 6 TotalCurrency 35 RandomChoice { TFBot { Template PyroVolcano Attributes AlwaysCrit Skill Normal } TFBot { Template PyroVolcano Skill Expert } TFBot { Template PyroVolcano Skill Hard } } } WaveSpawn { Name wave1bb Where spawnbot_invasion TotalCount 10 MaxActive 5 SpawnCount 5 WaitForAllDead wave1b WaitBeforeStarting 0 WaitBetweenSpawns 10 TotalCurrency 40 TFBot { Template DemoknightSkullcutter ItemAttributes { ItemName "The Skullcutter" } } } WaveSpawn { Name wave1csk Where spawnbot_left TotalCount 12 MaxActive 8 SpawnCount 8 WaitForAllDead wave1bb WaitBeforeStarting 0 WaitBetweenSpawns 16 TotalCurrency 50 TFBot { Template DemoknightSkullcutter ItemAttributes { ItemName "The Skullcutter" } } } WaveSpawn { Name wave1c TotalCount 1 MaxActive 1 SpawnCount 1 WaitForAllDead wave1a WaitBeforeStarting 2 WaitBetweenSpawns 25 TotalCurrency 50 Tank { Health 28600 Speed 82 Name "boss" Skin 1 StartingPathTrackNode "boss_path_b1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name wave1ch Where spawnbot TotalCount 5 MaxActive 5 SpawnCount 5 WaitForAllDead wave1bb WaitBeforeStarting 8 WaitBetweenSpawns 25 TotalCurrency 25 Squad { TFBot { Template SniperHuntsmanGiant ItemAttributes { ItemName "The Huntsman" } } TFBot { Template SniperHuntsmanRapid } TFBot { Template SniperHuntsmanFire } TFBot { Template SniperHuntsmanFire } TFBot { Template SniperHuntsmanFire } } } WaveSpawn { Name wave1d Where spawnbot_left TotalCount 1 MaxActive 1 SpawnCount 1 WaitForAllDead wave1b WaitBeforeStarting 0 WaitBetweenSpawns 20 TotalCurrency 15 TFBot { Template HeavyPsychicGiant } } WaveSpawn { Name wave1g Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitForAllSpawned wave1f WaitBeforeStarting 10 WaitBetweenSpawns 20 TotalCurrency 15 TFBot { Template HeavyPsychicGiant } } WaveSpawn { Name wave1f Where spawnbot_left TotalCount 3 MaxActive 3 SpawnCount 2 WaitForAllDead wave1ch WaitBeforeStarting 10 WaitBetweenSpawns 25 TotalCurrency 50 TFBot { Template SniperHuntsmanGiant ItemAttributes { ItemName "The Huntsman" } } } WaveSpawn { Name wave1f Where spawnbot_left TotalCount 12 MaxActive 6 SpawnCount 3 WaitForAllDead wave1ch WaitBeforeStarting 22 WaitBetweenSpawns 12 TotalCurrency 40 Squad { TFBot { Template SniperHuntsmanFire } TFBot { Template SniperHuntsmanFire } TFBot { Template SniperHuntsmanExplosive } } } WaveSpawn { Name wave1f2 Where spawnbot_left TotalCount 3 MaxActive 1 SpawnCount 1 WaitForAllDead wave1ch WaitBeforeStarting 19 WaitBetweenSpawns 12 TotalCurrency 10 TFBot { Template SniperHuntsmanRapid } } WaveSpawn { Name wave1g Where spawnbot_right TotalCount 15 MaxActive 5 SpawnCount 5 WaitBeforeStarting 6 WaitBetweenSpawns 8 WaitForAllDead wave1bb TotalCurrency 50 TFBot { Template DemomanCannonNoKnockback } } WaveSpawn { Name wave1g Where spawnbot_invasion TotalCount 9 MaxActive 3 SpawnCount 3 WaitForAllDead wave1c WaitBetweenSpawns 25 Support 1 TotalCurrency 5 TFBot { Template DemoknightCaberCharge } } WaveSpawn { Name wave1g Where spawnbot_invasion TotalCount 12 MaxActive 4 SpawnCount 4 WaitForAllDead wave1csk WaitBetweenSpawns 19 Support 1 TotalCurrency 10 TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ } } } //wave 7 - 4750 starting, 400 + 100 Wave { InitWaveOutput // Output which occurs at moment the wave begins. { Target wave_spell_relay // Name of the entity in the map to target. Action FireUser4 // Input to give the targeted entity. } 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 WaveSpawn { Name wave1a Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBetweenSpawns 25 TotalCurrency 3221 TFBot { Template PyroFireballChief } } WaveSpawn { Name wave1a Where spawnbot_invasion TotalCount 14 MaxActive 8 SpawnCount 4 WaitBetweenSpawns 6 WaitBeforeStarting 1 TotalCurrency 200 Support Limited TFBot { Template Caster } } WaveSpawn { Name wave1a Where spawnbot_invasion TotalCount 49 MaxActive 6 SpawnCount 6 WaitBetweenSpawns 35 WaitBeforeStarting 1 TotalCurrency 200 Support 1 Squad { TFBot { Template Caster } TFBot { Template Caster } TFBot { Template Caster } } } } }