//////////////////////////////////////////////////////////////////// // // 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 850 // 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 4 // 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 2 // 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 - 850 starting, 700 + 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 24 MaxActive 8 SpawnCount 4 WaitBeforeStarting 0 WaitBetweenSpawns 10 TotalCurrency 200 RandomChoice { TFBot { Template Demoknight Skill Easy } TFBot { Template Demoknight Skill Hard } TFBot { Template Demoknight Skill Expert } } } WaveSpawn { Name wave1b Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 32 TotalCurrency 60 TFBot { Template MedicCrossbowGiantNoBleed Health 2800 } } WaveSpawn { Name wave1c Where spawnbot_invasion TotalCount 20 MaxActive 4 SpawnCount 4 WaitBeforeStarting 10 WaitBetweenSpawns 7 TotalCurrency 165 RandomChoice { TFBot { Template SniperHuntsman Skill Easy } TFBot { Template SniperHuntsman Skill Expert } } } WaveSpawn { Name wave1d Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 8 WaitBetweenSpawns 5 WaitForAllDead wave1b TotalCurrency 35 TFBot { Template DemoknightGiant Health 3400 Skill Hard ItemAttributes { ItemName "The Eyelander" "fire rate bonus" 1.2 } } } WaveSpawn { Name wave1e Where spawnbot TotalCount 16 MaxActive 8 SpawnCount 8 WaitBeforeStarting 0 WaitBetweenSpawns 4 WaitForAllDead wave1a TotalCurrency 140 RandomChoice { TFBot { Template SoldierEqualizer Skill Hard Health 200 } TFBot { Template SoldierEscapePlan Skill Hard } TFBot { Template SoldierEqualizer Skill Easy Health 200 } TFBot { Template SoldierEscapePlan Skill Easy } } } WaveSpawn { Name wave1f Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 28 WaitBetweenSpawns 5 WaitForAllSpawned wave1d TotalCurrency 35 TFBot { Template SoldierSamuraiGiant Health 3700 } } // WaveSpawn // { // Name wave1f // Where spawnbot // TotalCount 0 // WaitBeforeStarting 0 // WaitBetweenSpawns 0 // WaitForAllDead wave1e // } // WaveSpawn // { // Name wave1break // Where spawnbot // WaitForAllDead wave1f // FirstSpawnWarningSound "vo\mvm_get_to_upgrade01.mp3" // StartWaveOutput // { // Target break_start_relay // Action Trigger // } // } // WaveSpawn // { // Name wave1breaks // WaitForAllDead wave1f // FirstSpawnWarningSound "vo\announcer_begins_20sec.mp3" // WaitBeforeStarting 5 // } // WaveSpawn // { // Name wave1breaks // WaitForAllDead wave1f // FirstSpawnWarningSound "vo\announcer_begins_10sec.mp3" // WaitBeforeStarting 15 // } // WaveSpawn // { // Name wave1breaks // WaitForAllDead wave1f // FirstSpawnWarningSound "vo\mvm_general_wav_start03.mp3" // WaitBeforeStarting 19 // } // WaveSpawn // { // Name wave1break // WaitForAllDead wave1f // WaitBeforeStarting 25 // TotalCount 0 // DoneOutput // { // Target break_end_relay // Action Trigger // } // } WaveSpawn { Name wave1g Where spawnbot_right TotalCount 18 MaxActive 3 SpawnCount 3 WaitBeforeStarting 12 WaitBetweenSpawns 12 Support 1 TotalCurrency 65 TFBot { Template ScoutBat } } } //Wave 2 - 1650 starting, 750 + 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 wave1g Where spawnbot_right TotalCount 21 MaxActive 3 SpawnCount 3 WaitBeforeStarting 12 WaitBetweenSpawns 12 Support 1 TotalCurrency 75 TFBot { Template ScoutBat } } WaveSpawn { Name wave1h Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 5 WaitBetweenSpawns 25 TotalCurrency 25 TFBot { Template DemoknightSkullcutterGiant } } WaveSpawn { Name wave1ha Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 2 WaitBeforeStarting 33 WaitBetweenSpawns 25 TotalCurrency 50 Squad { TFBot { Template DemoknightSkullcutterGiant } TFBot { Template MedicAmputatorGiant } } } WaveSpawn { Name wave1i Where spawnbot_left TotalCount 15 MaxActive 6 SpawnCount 3 WaitBeforeStarting 6 WaitBetweenSpawns 18 TotalCurrency 150 RandomChoice { TFBot { Template HeavyApocoFist Skill Hard Health 350 ItemAttributes { ItemName "Apoco-Fists" "apply z velocity on damage" -900 } } TFBot { Template HeavyApocoFist Skill Hard Health 300 ItemAttributes { ItemName "Apoco-Fists" "apply z velocity on damage" -750 } } TFBot { Template HeavyApocoFist Skill Easy Health 280 ItemAttributes { ItemName "Apoco-Fists" "apply z velocity on damage" -750 } } } } WaveSpawn { Name wave1j Where spawnbot TotalCount 15 MaxActive 6 SpawnCount 3 WaitBeforeStarting 0 WaitBetweenSpawns 9 TotalCurrency 150 RandomChoice { TFBot { Template DemomanCannonNoKnockback Skill Hard } TFBot { Template DemomanCannonNoKnockback Skill Normal } TFBot { Template DemomanCannon Skill Easy } } } WaveSpawn { Name wave1j2 Where spawnbot TotalCount 5 MaxActive 5 SpawnCount 5 WaitBeforeStarting 0 WaitBetweenSpawns 12 WaitForAllDead wave1j TotalCurrency 50 RandomChoice { TFBot { Template DemomanCannonNoKnockback Skill Normal } TFBot { Template DemomanCannonNoKnockback Skill Easy } TFBot { Template DemomanCannon Skill Easy } } } WaveSpawn { Name wave1h Where spawnbot TotalCount 0 MaxActive 1 SpawnCount 1 WaitForAllSpawned wave1j TotalCurrency 75 TFBot { Template ScoutBat } } WaveSpawn { Name wave1ha Where spawnbot TotalCount 0 MaxActive 1 SpawnCount 1 WaitForAllSpawned wave1j2 TotalCurrency 75 TFBot { Template ScoutBat } } WaveSpawn { Name wave1k Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 12 WaitBetweenSpawns 22 WaitForAllDead wave1h TotalCurrency 75 TFBot { Template SniperHuntsmanGiant Skill Expert } } WaveSpawn { Name wave1ka Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 2 WaitBeforeStarting 5 WaitBetweenSpawns 22 WaitForAllDead wave1ha TotalCurrency 75 Squad { TFBot { Template MedicAmputatorGiant } TFBot { Template SniperHuntsmanGiant Skill Normal } } } WaveSpawn { Name wave1l Where spawnbot_invasion TotalCount 8 MaxActive 4 SpawnCount 4 WaitBeforeStarting 20 WaitBetweenSpawns 9 WaitForAllSpawned wave1j TotalCurrency 75 Squad { TFBot { Template PyroAxtinguisher Skill Hard } TFBot { Template PyroVolcano Skill Hard } TFBot { Template PyroVolcano Skill Easy } TFBot { Template PyroVolcano Skill Hard } } } WaveSpawn { Name wave1l Where spawnbot TotalCount 6 MaxActive 6 SpawnCount 6 WaitBeforeStarting 0 WaitBetweenSpawns 12 WaitForAllDead wave1j2 TotalCurrency 25 RandomChoice { TFBot { Template PyroAxtinguisher Skill Hard } TFBot { Template PyroVolcano Skill Hard } TFBot { Template PyroVolcano Skill Easy } TFBot { Template PyroVolcano Skill Hard } } } } //Wave 3 - 2500 starting, 750 + 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 18 MaxActive 6 SpawnCount 6 WaitBeforeStarting 0 WaitBetweenSpawns 12 TotalCurrency 125 RandomChoice { TFBot { Template MedicCrossbow Skill Easy } TFBot { Template MedicCrossbow } TFBot { Template MedicCrossbow } } } WaveSpawn { Name wave1af Where spawnbot TotalCount 10 MaxActive 2 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 13 TotalCurrency 50 RandomChoice { TFBot { Template T_TFBot_Heavy_IronFist_Airblast Skill Easy ItemAttributes { ItemName "Fists of Steel" "damage bonus" 1.3 } } TFBot { Template T_TFBot_Heavy_IronFist_Airblast ItemAttributes { ItemName "Fists of Steel" "damage bonus" 1.3 } } } } WaveSpawn { Name wave1t Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 25 WaitBetweenSpawns 0 TotalCurrency 100 Tank { Health 19250 Speed 82 Name "boss" StartingPathTrackNode "boss_path_a1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name wave1b Where spawnbot_left TotalCount 16 MaxActive 4 SpawnCount 4 WaitBeforeStarting 5 WaitBetweenSpawns 14 TotalCurrency 75 RandomChoice { TFBot { Template DemoknightCharger Skill Easy } TFBot { Template DemoknightCharger Skill Hard } TFBot { Template DemoknightCharger Skill Hard } } } WaveSpawn { Name wave1c Where spawnbot_right TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 7 WaitBetweenSpawns 40 TotalCurrency 25 TFBot { Template DemomanCannonGiantSlow } } WaveSpawn { Name wave1c1 Where spawnbot_invasion TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 24 WaitBetweenSpawns 24 WaitForAllSpawned wave1a TotalCurrency 15 TFBot { Template DemoknightChargerGiant } } WaveSpawn { Name wave1c2 Where spawnbot TotalCount 2 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 24 WaitForAllDead wave1c1 TotalCurrency 35 TFBot { Template DemomanCannonGiantSlow } } WaveSpawn { Name wave1d Where spawnbot_invasion TotalCount 8 MaxActive 1 SpawnCount 1 WaitBeforeStarting 25 WaitBetweenSpawns 35 Support 1 TotalCurrency 100 TFBot { Template SoldierMarketGarden } } WaveSpawn { Name wave1e Where spawnbot TotalCount 18 MaxActive 9 SpawnCount 9 WaitBeforeStarting 0 WaitBetweenSpawns 18 WaitForAllDead wave1a TotalCurrency 80 TFBot { Template PyroBackScratcher Skill Hard } } WaveSpawn { Name wave1f Where spawnbot TotalCount 12 MaxActive 6 SpawnCount 6 WaitBeforeStarting 0 WaitBetweenSpawns 14 WaitForAllSpawned wave1ca TotalCurrency 70 TFBot { Template Caster } } WaveSpawn { Name wave1f Where spawnbot TotalCount 6 MaxActive 4 SpawnCount 2 WaitBeforeStarting 26 WaitBetweenSpawns 14 WaitForAllDead wave1c TotalCurrency 75 TFBot { Template SniperHuntsmanRapid } } // WaveSpawn // { // Name wave1f // Where spawnbot // TotalCount 0 // WaitBeforeStarting 0 // WaitBetweenSpawns 0 // WaitForAllDead wave1e // } // WaveSpawn // { // Name wave1break // Where spawnbot // WaitForAllDead wave1f // FirstSpawnWarningSound "vo\mvm_get_to_upgrade01.mp3" // StartWaveOutput // { // Target break_start_relay // Action Trigger // } // DoneOutput // 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. // } // } // WaveSpawn // { // Name wave1breaks // WaitForAllDead wave1f // FirstSpawnWarningSound "vo\announcer_begins_20sec.mp3" // WaitBeforeStarting 5 // } // WaveSpawn // { // Name wave1breaks // WaitForAllDead wave1f // FirstSpawnWarningSound "vo\announcer_begins_10sec.mp3" // WaitBeforeStarting 15 // } // WaveSpawn // { // Name wave1breaks // WaitForAllDead wave1f // FirstSpawnWarningSound "vo\mvm_general_wav_start03.mp3" // WaitBeforeStarting 19 // } // WaveSpawn // { // Name wave1break // WaitForAllDead wave1f // WaitBeforeStarting 25 // TotalCount 0 // DoneOutput // { // Target break_end_relay // Action Trigger // } // } } //wave 4 - 3350 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 FireUser3 // Input to give the targeted entity. } DoneOutput { Target wave_finished_relay Action trigger } Checkpoint Yes WaveSpawn { Name wave1g Where spawnbot TotalCount 20 MaxActive 8 SpawnCount 4 WaitBeforeStarting 0 WaitBetweenSpawns 13 TotalCurrency 100 Squad { TFBot { Template PyroFireball } TFBot { Template ScoutMilk } TFBot { Template ScoutBleed } TFBot { Template ScoutBleed } } } WaveSpawn { Name wave1h Where spawnbot_left TotalCount 24 MaxActive 8 SpawnCount 4 WaitBeforeStarting 6 WaitBetweenSpawns 16 TotalCurrency 125 TFBot { Template DemoknightSkullcutter } } WaveSpawn { Name wave1i Where spawnbot TotalCount 2 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 10 TotalCurrency 65 TFBot { Template HeavyPsychicGiant } } WaveSpawn { Name wave1j Where spawnbot_left TotalCount 16 MaxActive 4 SpawnCount 4 WaitBeforeStarting 16 WaitBetweenSpawns 15 WaitForAllSpawned wave1g TotalCurrency 50 RandomChoice { TFBot { Template DemoknightSamuraiThrow Skill Expert } TFBot { Template DemoknightSamuraiThrow Skill Normal } } } WaveSpawn { Name wave1k Where spawnbot TotalCount 32 MaxActive 8 SpawnCount 4 WaitBeforeStarting 16 WaitBetweenSpawns 12 WaitForAllSpawned wave1g TotalCurrency 125 Squad { TFBot { Template SniperHuntsmanFire } TFBot { Template SniperHuntsman Attributes AlwaysCrit ItemAttributes { ItemName "The Huntsman" "damage bonus" 0.43 } } } } WaveSpawn { Name wave1ks Where spawnbot TotalCount 16 MaxActive 4 SpawnCount 4 WaitBeforeStarting 0 WaitBetweenSpawns 22 WaitForAllDead wave1k Support Limited TotalCurrency 25 Squad { TFBot { Template SniperHuntsmanFire } TFBot { Template SniperHuntsman Attributes AlwaysCrit ClassIcon sniper_bow_giant ItemAttributes { ItemName "The Huntsman" "damage bonus" 0.43 } } } } WaveSpawn { Name wave1la Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 28 WaitBetweenSpawns 18 WaitForAllSpawned wave1i TotalCurrency 25 TFBot { Template MedicCrossbowGiantCrit } } WaveSpawn { Name wave1lb Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 10 WaitForAllDead wave1la TotalCurrency 35 TFBot { Template HeavyPsychicGiant } } WaveSpawn { Name wave1l Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 8 WaitBetweenSpawns 18 WaitForAllDead wave1la TotalCurrency 25 TFBot { Template MedicCrossbowGiantCrit } } WaveSpawn { Name wave1m Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 21 WaitBetweenSpawns 18 WaitForAllSpawned wave1l TotalCurrency 125 TFBot { Template MedicCrossbowBurstChief } } } //Wave 5 - 4150 starting, 600 + 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 FireUser4 // Input to give the targeted entity. } DoneOutput { Target wave_finished_relay Action trigger } Checkpoint Yes WaveSpawn { Name wave1a Where spawnbot TotalCount 24 MaxActive 12 SpawnCount 6 WaitBeforeStarting 0 WaitBetweenSpawns 13 TotalCurrency 100 RandomChoice { TFBot { Template SniperPersian Attributes AlwaysCrit Skill Hard Health 150 } TFBot { Template SniperPersian Attributes AlwaysCrit Health 150 } TFBot { Template SniperPersian Attributes AlwaysCrit Skill Easy Health 150 } } } WaveSpawn { Name wave1aa Where spawnbot_right TotalCount 6 MaxActive 1 SpawnCount 1 WaitBeforeStarting 8 WaitBetweenSpawns 16 TotalCurrency 20 TFBot { Template SniperJarate } } WaveSpawn { Name wave1b Where spawnbot_invasion TotalCount 6 MaxActive 2 SpawnCount 2 WaitBeforeStarting 27 WaitBetweenSpawns 15 TotalCurrency 50 TFBot { Template HeavyPsychic Health 530 } } WaveSpawn { Name wave1fa Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 15 WaitBetweenSpawns 32 TotalCurrency 35 TFBot { Template HeavyApocoFistGiant Health 12000 Tag bot_boss Attributes UseBossHealthBar CharacterAttributes { "move speed bonus" 0.45 "rage giving scale" 0.25 "cancel falling damage" 1 } } } WaveSpawn { Name wave1ca1 Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 4 WaitBetweenSpawns 10 TotalCurrency 15 TFBot { Template PyroFireballGiant } } WaveSpawn { Name wave1ca Where spawnbot TotalCount 2 MaxActive 1 SpawnCount 1 WaitBeforeStarting 6 WaitBetweenSpawns 10 WaitForAllDead wave1ca1 TotalCurrency 35 TFBot { Template PyroFireballGiant } } WaveSpawn { Name wave1c Where spawnbot TotalCount 4 MaxActive 2 SpawnCount 2 WaitBeforeStarting 10 WaitBetweenSpawns 21 WaitForAllDead Wave1fa TotalCurrency 30 TFBot { Template PyroBackScratcherGiant } } WaveSpawn { Name wave1d Where spawnbot_invasion TotalCount 3 MaxActive 1 SpawnCount 1 WaitBeforeStarting 28 WaitBetweenSpawns 39 WaitForAllDead wave1ca1 TotalCurrency 50 TFBot { Template ScoutCleaverGiant } } WaveSpawn { Name wave1d Where spawnbot_left TotalCount 8 MaxActive 2 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 12 WaitForAllSpawned wave1b TotalCurrency 75 TFBot { Template SniperHuntsmanExplosiveRapid } } WaveSpawn { Name wave1e Where spawnbot TotalCount 20 MaxActive 5 SpawnCount 5 WaitBeforeStarting 0 WaitBetweenSpawns 10 WaitForAllDead wave1a TotalCurrency 100 RandomChoice { TFBot { Template DemomanCannonCharge Skill Hard ItemAttributes { ItemName "The Loose Cannon" "apply look velocity on damage" -770 "apply z velocity on damage" -410 } } TFBot { Template DemomanCannonCharge Skill Expert } TFBot { Template DemomanCannonCharge Skill Easy ItemAttributes { ItemName "The Loose Cannon" "apply look velocity on damage" -770 "apply z velocity on damage" -410 } } } } WaveSpawn { Name wave1e Where spawnbot TotalCount 10 MaxActive 5 SpawnCount 5 WaitBeforeStarting 6 WaitBetweenSpawns 10 WaitForAllDead wave1b TotalCurrency 50 TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ Skill Hard } } WaveSpawn { Name wave1f Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 34 WaitBetweenSpawns 32 WaitForAllSpawned wave1c TotalCurrency 40 TFBot { Template DemoknightChargerGoldenGiant Health 7700 Tag bot_boss Attributes UseBossHealthBar CharacterAttributes { "move speed bonus" 0.45 "rage giving scale" 0.25 } } } WaveSpawn { Name wave1f Where spawnbot_invasion TotalCount 18 MaxActive 6 SpawnCount 3 WaitBeforeStarting 0 WaitBetweenSpawns 12 WaitForAllDead wave1b TotalCurrency 100 RandomChoice { TFBot { Template DemoknightPersian Attributes AlwaysCrit ItemAttributes { ItemName "The Persian Persuader" "damage bonus" 0.72 } ItemAttributes { ItemName "The Splendid Screen" "charge recharge rate increased" 1.8 "charge impact damage increased" 1.8 "Attack not cancel charge" 1 } } TFBot { Template DemoknightPersian ItemAttributes { ItemName "The Splendid Screen" "charge recharge rate increased" 2.25 "charge impact damage increased" 2.25 "Attack not cancel charge" 1 } } } } // WaveSpawn // { // Name wave1f // Where spawnbot // TotalCount 0 // WaitBeforeStarting 0 // WaitBetweenSpawns 0 // WaitForAllDead wave1e // } // WaveSpawn // { // Name wave1break // Where spawnbot // WaitForAllDead wave1f // FirstSpawnWarningSound "vo\mvm_get_to_upgrade01.mp3" // StartWaveOutput // { // Target break_start_relay // Action Trigger // } // DoneOutput // 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. // } // } // WaveSpawn // { // Name wave1breaks // WaitForAllDead wave1f // FirstSpawnWarningSound "vo\announcer_begins_20sec.mp3" // WaitBeforeStarting 5 // } // WaveSpawn // { // Name wave1breaks // WaitForAllDead wave1f // FirstSpawnWarningSound "vo\announcer_begins_10sec.mp3" // WaitBeforeStarting 15 // } // WaveSpawn // { // Name wave1breaks // WaitForAllDead wave1f // FirstSpawnWarningSound "vo\mvm_general_wav_start03.mp3" // WaitBeforeStarting 19 // } // WaveSpawn // { // Name wave1break // WaitForAllDead wave1f // WaitBeforeStarting 25 // TotalCount 0 // DoneOutput // { // Target break_end_relay // Action Trigger // } // } } //Wave 6 - 4200 starting, 550 + 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 FireUser4 // Input to give the targeted entity. // } // DoneOutput // { // Target wave_finished_relay // Action trigger // } // Checkpoint Yes // WaveSpawn // { // Name wave1g // Where spawnbot // TotalCount 35 // MaxActive 10 // SpawnCount 5 // WaitBeforeStarting 0 // WaitBetweenSpawns 11 // TotalCurrency 150 // Squad // { // TFBot // { // Template SoldierEqualizerStrong // } // TFBot // { // Template Caster // } // TFBot // { // Template Caster // } // TFBot // { // Template Caster // } // TFBot // { // Template Caster // } // } // } // WaveSpawn // { // Name wave1h // Where spawnbot_invasion // TotalCount 24 // MaxActive 6 // SpawnCount 3 // WaitBeforeStarting 12 // WaitBetweenSpawns 21 // Support 1 // TotalCurrency 125 // TFBot // { // Template ScoutBleed // Attributes AlwaysCrit // } // } // WaveSpawn // { // Name wave1i // Where spawnbot // TotalCount 4 // MaxActive 2 // SpawnCount 1 // WaitBeforeStarting 0 // WaitBetweenSpawns 16 // TotalCurrency 100 // TFBot // { // Template DemomanCannonGiantNuke // } // } // WaveSpawn // { // Name wave1tank // Where spawnbot // TotalCount 1 // MaxActive 1 // SpawnCount 1 // WaitBeforeStarting 8 // WaitBetweenSpawns 0 // TotalCurrency 100 // Tank // { // Health 36000 // Speed 82 // Name "boss" // StartingPathTrackNode "boss_path_b1" // OnKilledOutput // { // Target boss_dead_relay // Action Trigger // } // OnBombDroppedOutput // { // Target boss_deploy_relay // Action Trigger // } // } // } // WaveSpawn // { // Name wave1j // Where spawnbot_left // TotalCount 16 // MaxActive 4 // SpawnCount 2 // WaitBeforeStarting 0 // WaitBetweenSpawns 14 // TotalCurrency 100 // TFBot // { // Template DemoknightChargerGolden // } // } // WaveSpawn // { // Name wave1k // Where spawnbot // TotalCount 18 // MaxActive 6 // SpawnCount 6 // WaitBeforeStarting 20 // WaitBetweenSpawns 13 // WaitForAllSpawned wave1g // TotalCurrency 100 // Squad // { // TFBot // { // Template MedicCrossbowBurst // } // TFBot // { // Template SniperHuntsmanFire // Attributes AlwaysCrit // } // TFBot // { // Template SniperHuntsmanFire // Attributes AlwaysCrit // } // } // } // WaveSpawn // { // Name wave1l // Where spawnbot // TotalCount 15 // MaxActive 5 // SpawnCount 5 // WaitBeforeStarting 20 // WaitBetweenSpawns 17 // WaitForAllSpawned wave1i // TotalCurrency 100 // Squad // { // TFBot // { // Template CasterGiant // } // TFBot // { // Template DemomanCannonGiantBurst // } // TFBot // { // Template DemoknightCaber // Attributes AlwaysCrit // Health 500 // ItemAttributes // { // ItemName "The Ullapool Caber" // "damage bonus" 0.4 // } // } // TFBot // { // Template DemoknightCaber // Attributes AlwaysCrit // Health 500 // ItemAttributes // { // ItemName "The Ullapool Caber" // "damage bonus" 0.42 // } // } // TFBot // { // Template DemoknightCaber // Attributes AlwaysCrit // Health 500 // } // } // } // } //Wave 7 - 4850 starting, 400 + 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 FireUser4 // Input to give the targeted entity. } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name wave1t Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 100 Tank { Health 29000 Speed 82 Name "boss" StartingPathTrackNode "boss_path_b1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name wave1m Where spawnbot_invasion TotalCount 12 MaxActive 8 SpawnCount 4 WaitBeforeStarting 0 WaitBetweenSpawns 12 TotalCurrency 50 TFBot { Template SoldierSamurai } } WaveSpawn { Name wave1ma Where spawnbot TotalCount 9 MaxActive 9 SpawnCount 9 WaitBeforeStarting 0 WaitBetweenSpawns 12 WaitForAllDead wave1m TotalCurrency 50 TFBot { Template MedicCrossbow Attributes AlwaysFireWeapon Name "Volley Shoot Crusader" ItemAttributes { ItemName "The Crusader's Crossbow" "damage bonus" 1.55 } } } WaveSpawn { Name wave1mb Where spawnbot_invasion TotalCount 12 MaxActive 8 SpawnCount 4 WaitBeforeStarting 0 WaitBetweenSpawns 12 WaitForAllDead wave1ma TotalCurrency 25 TFBot { Template SoldierSamurai } } WaveSpawn { Name wave1mc Where spawnbot_invasion TotalCount 8 MaxActive 4 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 12 WaitForAllDead wave1mb Support 1 TotalCurrency 50 TFBot { Template SoldierSamurai } } WaveSpawn { Name wave1md Where spawnbot_invasion TotalCount 8 MaxActive 4 SpawnCount 2 WaitBeforeStarting 35 WaitBetweenSpawns 10 TotalCurrency 75 WaitForAllSpawned wave1o RandomChoice { TFBot { Template DemoknightSamurai } TFBot { Template DemoknightSamurai } TFBot { Template DemoknightSamuraiWeak } TFBot { Template DemoknightSamuraiWeak } TFBot { Template DemoknightSamuraiWeak } } } WaveSpawn { Name wave1mdu Where spawnbot_invasion TotalCount 4 MaxActive 1 SpawnCount 1 WaitBeforeStarting 45 WaitBetweenSpawns 18 Support 1 TotalCurrency 15 WaitForAllDead wave1md TFBot { Template DemoknightSamuraiWeak } } WaveSpawn { Name wave1mdu Where spawnbot_invasion TotalCount 4 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 24 Support 1 TotalCurrency 10 WaitForAllDead wave1md TFBot { Template DemoknightSamurai } } WaveSpawn { Name wave1o Where spawnbot TotalCount 4 MaxActive 4 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 18 TotalCurrency 65 Squad { TFBot { Template SniperHuntsmanGiant } TFBot { Template SniperHuntsmanGiant Attributes AlwaysCrit } } } WaveSpawn { Name wave1o2 Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 18 WaitForAllDead wave1o TotalCurrency 35 Squad { TFBot { Template SniperHuntsmanGiant } TFBot { Template SniperHuntsmanGiant Attributes AlwaysCrit } } } WaveSpawn { Name wave1p Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 35 WaitBetweenSpawns 10 WaitForAllDead wave1o TotalCurrency 25 TFBot { Template DemoknightSamuraiChief } } } }