///////////////////////////////////////////////////////////////////// // // 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. WaveSchedule { StartingCurrency 450 // 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 6 // 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 yes // 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 sniper mission. This spawns sniper(s) at periodic intervals, it will not spawn more snipers unless its conditions are met, and all previous snipers from this mission are dead. { Objective Sniper InitialCooldown 10 // Amount of time once a wave starts before the mission becomes active. Where spawnbot_mission_sniper // Entity at which to spawn. BeginAtWave 4 // The mission becomes active on this wave. RunForThisManyWaves 1 // It remains active for this many waves. CooldownTime 35 // This is the time, in seconds, between when Sniper Missions are allowed to spawn, should their spawning conditions be met. DesiredCount 2 // Number of snipers to spawn each time this mission's criteria are met. TFBot { Class Sniper Skill Expert Name Sniper } } 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 20 // Amount of time once a wave starts before the mission becomes active. Where spawnbot_mission_spy // Entity at which to spawn. BeginAtWave 3 // The mission becomes active on this wave. RunForThisManyWaves 1 // It remains active for this many waves. CooldownTime 15 // This is the time, in seconds, between when Sniper Missions are allowed to spawn, should their spawning conditions be met. DesiredCount 4 // Number of spies to spawn each time this mission's criteria are met. TFBot { Class Spy Skill Expert Name Spy } } ///////////////// //WAVES ///////////////// //WAVE 1 ///////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // This wave consists of 3 squads with a total of 630 cash split between them. // The first squad consists of 60 Scouts, Soldiers, Pyros, Demomen, Heavies, and Medics. // The second squad consists of 60 Buff Banner Soldiers, Conch Soldiers, and Backup Soldiers. // The final squad consists of 2 new enemies: Austrailium Scouts and Brazilium Scouts. // This squad has 40 total robots, and the Scouts themselves have different traits depending on their type. // Austrailium Scouts deal more damage and have more health, but move and attack slower, while Brazilium Scouts move and attack faster, but deal less damage and have lower health. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Wave { StartWaveOutput // Output which occurs at moment the wave begins. { Target wave_start_relay // Name of the entity in the map to target. Action Trigger // Input to give the targeted entity. } DoneOutput // Output which occurrs at moment the wave is completed. { Target wave_finished_relay // Name of the entity in the map to target. Action trigger // Input to give the targeted entity. } Checkpoint Yes // Sets a checkpoint at the end of this wave. WaveSpawn { Where spawnbot // Entity at which to spawn. TotalCount 60 // The total number of individual bots that will spawn. MaxActive 6 // The maximum number of bots, from this WaveSpawn, that can be alive in the world at any moment. SpawnCount 6 // Defines the number of bots to spawn at a time as a group. Name Wave1_Squad1 WaitBeforeStarting 0 // Amount of time to wait before spawning the first bot. WaitBetweenSpawns 10 // Amount of time to wait between spawning each group (defined by the spawncount) of bots. TotalCurrency 180 // Amount of money dropped by all of the bots in the WaveSpawn. Money is divided equally between each bot. Squad { TFBot { Name "Scout" Class Scout Skill Normal } TFBot { Name "Soldier" Class Soldier Skill Normal } TFBot { Name "Pyro" Class Pyro Skill Normal } TFBot { Name "Demoman" Class Demoman Skill Normal } TFBot { Name "Heavy" Class Heavyweapons Skill Normal } TFBot { Name "Medic" Class Medic Skill Normal } } } WaveSpawn { Where spawnbot // Entity at which to spawn. TotalCount 60 // The total number of individual bots that will spawn. MaxActive 12 // The maximum number of bots, from this WaveSpawn, that can be alive in the world at any moment. SpawnCount 6 // Defines the number of bots to spawn at a time as a group. WaitBeforeStarting 20 // Amount of time to wait before spawning the first bot. WaitBetweenSpawns 10 // Amount of time to wait between spawning each group (defined by the spawncount) of bots. WaitForAllDead Wave1_Squad1 Name Wave1_Squad2 TotalCurrency 180 // Amount of money dropped by all of the bots in the WaveSpawn. Money is divided equally between each bot. Squad { TFBot { Template T_TFBot_Soldier_Extended_Buff_Banner } TFBot { Template T_TFBot_Soldier_Extended_Concheror } TFBot { Template T_TFBot_Soldier_Extended_Battalion } } } WaveSpawn { Where spawnbot // Entity at which to spawn. TotalCount 40 // The total number of individual bots that will spawn. MaxActive 8 // The maximum number of bots, from this WaveSpawn, that can be alive in the world at any moment. SpawnCount 4 // Defines the number of bots to spawn at a time as a group. WaitBeforeStarting 40 // Amount of time to wait before spawning the first bot. WaitBetweenSpawns 0 // Amount of time to wait between spawning each group (defined by the spawncount) of bots. WaitForAllDead Wave1_Squad2 Name Wave1_Squad3 TotalCurrency 270 // Amount of money dropped by all of the bots in the WaveSpawn. Money is divided equally between each bot. Squad { TFBot { Name "Australium Scout" Class Scout Skill Expert Scale 1.25 Health 250 Item "Captain Space Mann" ClassIcon scout_austrailium // Icon to use in the wave telegraph. If not specified, standard icon is used. CharacterAttributes { "damage bonus" 1 "move speed penalty" 1 "fire rate penalty" 1 "clip size penalty" 1 } ItemAttributes { ItemName "Captain Space Mann" "attach particle effect" 354 } } TFBot { Name "Brazilium Scout" Class Scout Skill Expert Scale 1.25 Health 62 Item "Captain Space Mann" ClassIcon scout_brazilium // Icon to use in the wave telegraph. If not specified, standard icon is used. CharacterAttributes { "damage penalty" 1 "move speed bonus" 1 "fire rate bonus" 1 "clip size bonus" 1 } ItemAttributes { ItemName "Captain Space Mann" "attach particle effect" 352 } } } } } }