// mission by randomguy #base robot_standard.pop #base robot_giant.pop #base robot_gatebot.pop #base robot_randomguy_new.pop #base robot_gatebot_modular_disabledodge.pop WaveSchedule { CanBotsAttackWhileInSpawnRoom no RespawnWaveTime 4 StartingCurrency 600 Advanced 1 AddSentryBusterWhenDamageDealtExceeds 3000 AddSentryBusterWhenKillCountExceeds 15 CustomNavFile mvm_crown_rc1_unfucked // PACKED NAV!!! HERETIC!!! Templates { GateBotDisableDodge // AndDontKillYourself { // Only used for indev due to 90% of the impact being pre-gate. // ^ and this only works pre-gate... unless the bot spawns post-gate. // There's probably some esoteric lua/vscript magic to just do this instead of remaking each template. Don't care. FireInput { Target !self Action RunScriptCode Param self.AddBotAttribute(Constants.FTFBotAttributeType.DISABLE_DODGE) // Or use 16 as value // Param self.AddBotAttribute(Constants.FTFBotAttributeType.IGNORE_ENEMIES) Delay -1 } // EventChangeAttributes // { // Default // { // Attributes DisableDodge // CharacterAttributes // { // "rocket jump damage reduction" 0 // "cancel falling damage" 1 // } // } // RevertGateBotsBehavior // { // Attributes DisableDodge // CharacterAttributes // { // "rocket jump damage reduction" 0 // "cancel falling damage" 1 // } // } // } } // Genuinely mad this didn't work with rafmod's AddTemplate // Seelpit came up with another solution, which half-works which is good enough for testing. T_TFGateBot_Pyro_AlwaysFire { Class Pyro EventChangeAttributes { Default { Tag bot_gatebot // having these will cause bots to run towards gates Tag nav_prefer_gate1_flank // having these will cause bots to run towards gates BehaviorModifiers push // having these will cause bots to run towards gates Attributes IgnoreFlag // having these will cause bots to run towards gates Item "MvM GateBot Light Pyro" Attributes AlwaysFireWeapon Skill Easy } RevertGateBotsBehavior { Item "MvM GateBot Light Pyro" ItemAttributes // turn off light hat { ItemName "MvM GateBot Light Pyro" "item style override" 1 } Attributes AlwaysFireWeapon Skill Easy } } } T_TFGateBot_Sniper_Huntsman_Spammer { Class Sniper Name "Rapid Fire Bowman" scale 1.5 Health 1200 ClassIcon sniper_bow_multi EventChangeAttributes { Default { Tag nav_prefer_gate1_flank // having these will cause bots to run towards gates Tag bot_gatebot // having these will cause bots to run towards gates BehaviorModifiers push // having these will cause bots to run towards gates Attributes IgnoreFlag // having these will cause bots to run towards gates Item "MvM GateBot Light Sniper" Item "The Huntsman" // Item "Rifleman's Regalia" Skill Hard Tag bot_giant ItemAttributes { ItemName "The Huntsman" "fire rate bonus" 0.6 } CharacterAttributes { "head scale" 0.7 "move speed bonus" 0.85 // "health regen" 1 } } RevertGateBotsBehavior { Item "MvM GateBot Light Sniper" ItemAttributes // turn off light hat { ItemName "MvM GateBot Light Sniper" "item style override" 1 } Item "The Huntsman" // Item "Rifleman's Regalia" Skill Hard Tag bot_giant ItemAttributes { ItemName "The Huntsman" "fire rate bonus" 0.6 } CharacterAttributes { "head scale" 0.7 "move speed bonus" 0.85 // "health regen" 1 } } } } T_TFGateBot_Sniper_Huntsman { Class Sniper Name Bowman ClassIcon sniper_bow EventChangeAttributes { Default { Tag nav_prefer_gate1_flank // having these will cause bots to run towards gates Tag bot_gatebot // having these will cause bots to run towards gates BehaviorModifiers push // having these will cause bots to run towards gates Attributes IgnoreFlag // having these will cause bots to run towards gates Item "MvM GateBot Light Sniper" Item "The Huntsman" WeaponRestrictions PrimaryOnly Skill Hard Item "The Huntsman" // Item "Rifleman's Regalia" ItemAttributes { ItemName "The Huntsman" "damage penalty" 0.5 } } RevertGateBotsBehavior { Item "MvM GateBot Light Sniper" ItemAttributes // turn off light hat { ItemName "MvM GateBot Light Sniper" "item style override" 1 } // Didn't work for some reason. Shrug. WeaponRestrictions PrimaryOnly Skill Hard Item "The Huntsman" // Item "Rifleman's Regalia" ItemAttributes { ItemName "The Huntsman" "damage penalty" 0.5 } } } } T_TFGateBot_Giant_Heavyweapons { Class Heavy Name "Giant Heavy" Health 5000 ClassIcon heavy_giant EventChangeAttributes { Default { BehaviorModifiers push // having these will cause bots to run towards gates Attributes IgnoreFlag // having these will cause bots to run towards gates Tag nav_prefer_gate1_flank // having these will cause bots to run towards gates Tag bot_gatebot // having these will cause bots to run towards gates Item "MvM GateBot Light Heavy" Skill Expert WeaponRestrictions PrimaryOnly MaxVisionRange 1200 Attributes MiniBoss Tag bot_giant ItemAttributes { ItemName TF_WEAPON_MINIGUN "damage bonus" 1.5 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.3 "override footstep sound set" 2 } } RevertGateBotsBehavior { Item "MvM GateBot Light Heavy" ItemAttributes // turn off light hat { ItemName "MvM GateBot Light Heavy" "item style override" 1 } Skill Expert WeaponRestrictions PrimaryOnly MaxVisionRange 1200 Attributes MiniBoss Tag bot_giant ItemAttributes { ItemName TF_WEAPON_MINIGUN "damage bonus" 1.5 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.3 "override footstep sound set" 2 } } } } T_TFGateBot_Giant_Soldier_Extended_Buff_Banner { Class Soldier Name "Giant Buff Banner Soldier" Health 3800 ClassIcon soldier_buff_giant EventChangeAttributes { Default { Tag bot_gatebot // having these will cause bots to run towards gates Tag nav_prefer_gate1_flank // having these will cause bots to run towards gates BehaviorModifiers push // having these will cause bots to run towards gates Attributes IgnoreFlag // having these will cause bots to run towards gates Item "MvM GateBot Light Soldier" Tag bot_giant Skill Expert WeaponRestrictions PrimaryOnly Attributes HoldFireUntilFullReload Attributes MiniBoss Tag bot_giant Attributes SpawnWithFullCharge Item "The Buff Banner" CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 "override footstep sound set" 3 "increase buff duration" 9.0 } } RevertGateBotsBehavior { Item "MvM GateBot Light Soldier" ItemAttributes // turn off light hat { ItemName "MvM GateBot Light Soldier" "item style override" 1 } Tag bot_giant Skill Expert WeaponRestrictions PrimaryOnly Attributes HoldFireUntilFullReload Attributes MiniBoss Tag bot_giant Attributes SpawnWithFullCharge Item "The Buff Banner" CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 "override footstep sound set" 3 "increase buff duration" 9.0 } } } } T_TFGateBot_Giant_Soldier_Extended_Backup { Class Soldier Name "Giant Backup Soldier" Health 3800 ClassIcon soldier_backup_giant EventChangeAttributes { Default { Tag bot_gatebot // having these will cause bots to run towards gates Tag nav_prefer_gate1_flank // having these will cause bots to run towards gates BehaviorModifiers push // having these will cause bots to run towards gates Attributes IgnoreFlag // having these will cause bots to run towards gates Item "MvM GateBot Light Soldier" Tag bot_giant Skill Expert WeaponRestrictions PrimaryOnly Attributes HoldFireUntilFullReload Attributes MiniBoss Tag bot_giant Attributes SpawnWithFullCharge Item "The Battalion's Backup" CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 "override footstep sound set" 3 "increase buff duration" 9.0 } } RevertGateBotsBehavior { Item "MvM GateBot Light Soldier" ItemAttributes // turn off light hat { ItemName "MvM GateBot Light Soldier" "item style override" 1 } Tag bot_giant Skill Expert WeaponRestrictions PrimaryOnly Attributes HoldFireUntilFullReload Attributes MiniBoss Tag bot_giant Attributes SpawnWithFullCharge Item "The Battalion's Backup" CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 "override footstep sound set" 3 "increase buff duration" 9.0 } } } } T_TFGateBot_Soldier_Mangler_Charged_Burst { Class Soldier Name "Jumbo Burst Charged Mangler" ClassIcon soldier_mangler_burst Health 1200 Scale 1.5 EventChangeAttributes { Default { Tag bot_gatebot // having these will cause bots to run towards gates Tag nav_prefer_gate1_flank // having these will cause bots to run towards gates BehaviorModifiers push // having these will cause bots to run towards gates Attributes IgnoreFlag // having these will cause bots to run towards gates Item "MvM GateBot Light Soldier" Item "The Cow Mangler 5000" Skill Expert WeaponRestrictions PrimaryOnly Attributes AlwaysCrit // Does nothing with what this bot does, more for indication. Attributes SuppressFire Tag bot_giant FireWeapon // Periodically fires weapon { Delay 6 // Time before the first fire input starts (Default: 10) Cooldown 0.5 // Time between each fire input (Default: 10) Repeats 0 // How many times should bot use the fire input in total (Default: 0 - Infinite) IfSeeTarget 1 // When set to 1, this task activates only when the bot can see the target player (Default 0 - Always activate) Duration 0.1 // How long should the button be pressed (Default: 0.1) Type Secondary // Type of fire input. } ItemAttributes { ItemName "The Cow Mangler 5000" "faster reload rate" 0.8 "mult projectile count" 3 // anti console spam listen server "ignores other projectiles" 1 "no self effect" 1 "projectile spread angle penalty" 5 } CharacterAttributes { "move speed bonus" 0.85 "head scale" 0.7 "damage force reduction" 0.5 "airblast vulnerability multiplier" 0.5 } } RevertGateBotsBehavior { Item "MvM GateBot Light Soldier" ItemAttributes // turn off light hat { ItemName "MvM GateBot Light Soldier" "item style override" 1 } Item "The Cow Mangler 5000" Skill Expert WeaponRestrictions PrimaryOnly Attributes AlwaysCrit // Does nothing with what this bot does, more for indication. Attributes SuppressFire Tag bot_giant FireWeapon // Periodically fires weapon { Delay 6 // Time before the first fire input starts (Default: 10) Cooldown 0.5 // Time between each fire input (Default: 10) Repeats 0 // How many times should bot use the fire input in total (Default: 0 - Infinite) IfSeeTarget 1 // When set to 1, this task activates only when the bot can see the target player (Default 0 - Always activate) Duration 0.1 // How long should the button be pressed (Default: 0.1) Type Secondary // Type of fire input. } ItemAttributes { ItemName "The Cow Mangler 5000" "faster reload rate" 0.7 // 0.8 "mult projectile count" 3 "ignores other projectiles" 1 "no self effect" 1 "projectile spread angle penalty" 5 } CharacterAttributes { "move speed bonus" 0.85 "head scale" 0.7 "damage force reduction" 0.5 "airblast vulnerability multiplier" 0.5 } } } } T_TFGateBot_Soldier_Mangler_Charged_Burst_Giant { Class Soldier Name "Giant Burst Charged Mangler" ClassIcon soldier_mangler_burst Health 3800 EventChangeAttributes { Default { Tag bot_gatebot // having these will cause bots to run towards gates Tag nav_prefer_gate1_flank // having these will cause bots to run towards gates BehaviorModifiers push // having these will cause bots to run towards gates Attributes IgnoreFlag // having these will cause bots to run towards gates Item "MvM GateBot Light Soldier" Item "The Cow Mangler 5000" Skill Expert WeaponRestrictions PrimaryOnly Attributes AlwaysCrit // Does nothing with what this bot does, more for indication. Attributes SuppressFire Attributes MiniBoss Tag bot_giant FireWeapon // Periodically fires weapon { Delay 7 // Time before the first fire input starts (Default: 10) Cooldown 0.5 // Time between each fire input (Default: 10) Repeats 0 // How many times should bot use the fire input in total (Default: 0 - Infinite) IfSeeTarget 1 // When set to 1, this task activates only when the bot can see the target player (Default 0 - Always activate) Duration 0.1 // How long should the button be pressed (Default: 0.1) Type Secondary // Type of fire input. } ItemAttributes { ItemName "The Cow Mangler 5000" "faster reload rate" -1 // 0.5 // 0.7 // "mult projectile count" 3 // anti console spam listen server "mult projectile count" 4 "ignores other projectiles" 1 "no self effect" 1 "projectile spread angle penalty" 3 // 5 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 "override footstep sound set" 3 } } RevertGateBotsBehavior { Item "MvM GateBot Light Soldier" ItemAttributes // turn off light hat { ItemName "MvM GateBot Light Soldier" "item style override" 1 } Item "The Cow Mangler 5000" Skill Expert WeaponRestrictions PrimaryOnly Attributes AlwaysCrit // Does nothing with what this bot does, more for indication. Attributes SuppressFire Attributes MiniBoss Tag bot_giant FireWeapon // Periodically fires weapon { Delay 7 // Time before the first fire input starts (Default: 10) Cooldown 0.5 // Time between each fire input (Default: 10) Repeats 0 // How many times should bot use the fire input in total (Default: 0 - Infinite) IfSeeTarget 1 // When set to 1, this task activates only when the bot can see the target player (Default 0 - Always activate) Duration 0.1 // How long should the button be pressed (Default: 0.1) Type Secondary // Type of fire input. } ItemAttributes { ItemName "The Cow Mangler 5000" "faster reload rate" -1 // 0.7 "mult projectile count" 3 // anti console spam listen server "ignores other projectiles" 1 "no self effect" 1 "projectile spread angle penalty" 5 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 "override footstep sound set" 3 } } } } T_TFGateBot_Soldier_Normal_DirectHit_BuffBanner { Class Soldier Name "Direct Hit Buff Soldier" ClassIcon soldier_directhit_buff_lite EventChangeAttributes { Default { BehaviorModifiers push // having these will cause bots to run towards gates Attributes IgnoreFlag // having these will cause bots to run towards gates Tag nav_prefer_gate1_flank // having these will cause bots to run towards gates Tag bot_gatebot // having these will cause bots to run towards gates Item "MvM GateBot Light Soldier" Item "The Direct Hit" Skill Normal Attributes SpawnWithFullCharge Item "The Buff Banner" CharacterAttributes { "increase buff duration" 9.0 "deploy time increased" 0.5 } } RevertGateBotsBehavior { Item "MvM GateBot Light Soldier" ItemAttributes // turn off light hat { ItemName "MvM GateBot Light Soldier" "item style override" 1 } Item "The Direct Hit" Skill Normal Attributes SpawnWithFullCharge Item "The Buff Banner" CharacterAttributes { "increase buff duration" 9.0 "deploy time increased" 0.5 } } } } T_TFGateBot_Pyro_DF_Expert { Class Pyro ClassIcon pyro_dragon_fury_swordstone // custom icon Name "Dragonic Fury" EventChangeAttributes { Default { Tag bot_gatebot // having these will cause bots to run towards gates Tag nav_prefer_gate1_flank // having these will cause bots to run towards gates BehaviorModifiers push // having these will cause bots to run towards gates Attributes IgnoreFlag // having these will cause bots to run towards gates Item "MvM GateBot Light Pyro" Skill Expert MaxVisionRange 600 Item "The Dragon's Fury" } RevertGateBotsBehavior { Item "MvM GateBot Light Pyro" ItemAttributes // turn off light hat { ItemName "MvM GateBot Light Pyro" "item style override" 1 } Skill Expert MaxVisionRange 600 Item "The Dragon's Fury" } } } } Mission { Objective Spy InitialCooldown 5 Where spawnbot_all_0 Where spawnbot_all_1 BeginAtWave 1 RunForThisManyWaves 1 CooldownTime 40 DesiredCount 2 TFBot { Template T_TFBot_Spy } } Mission { Objective Sniper Where spawnbot_flank_0 Where spawnbot_flank_1 BeginAtWave 3 RunForThisManyWaves 1 InitialCooldown 25 CooldownTime 40 DesiredCount 2 TFBot { Template T_TFBot_Sniper } } Mission { Objective Engineer Where spawnbot_all_0 Where spawnbot_all_1 BeginAtWave 0 RunForThisManyWaves 1 InitialCooldown 60 CooldownTime 60 DesiredCount 1 TFBot { Template T_TFBot_Engineer_Sentry_Teleporter } } Mission { Objective DestroySentries Where spawnbot_all_0 Where spawnbot_all_1 InitialCooldown 30 CooldownTime 30 BeginAtWave 1 RunForThisManyWaves 10 TFBot { Template T_TFBot_SentryBuster } } // // Starting Currency: 600 // // +----------+----------+----------+ // | Wave | Currency | A+ | // +----------+----------+----------+ // | Wave 1 | 950 | 950 | // | Wave 2 | 950 | 1050 | // | Wave 3 | 1150 | 1250 | // | Wave 4 | 800 | 900 | // | Wave 5 | 1000 | 1100 | // +----------+----------+----------+ // | Total | 4750 | 5250 | // +----------+----------+----------+ // // WAVE 1 //////////CURRENCY 950/////////////////////////////////// Wave { StartWaveOutput { Target wave_start_relay_notimer Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutPut { Target wave_start_relay_notimer Action RunScriptCode Param " IncludeScript(`mvm_crown_changes_randomguy`) " } WaveSpawn { Name stage1 Where spawnbot_left_0 Where spawnbot_left_1 TotalCount 24 // 10 // 18 // 30 MaxActive 8 // 6 // 8 // 10 SpawnCount 1 // 2 // 3 // 5 WaitBeforeStarting 5 WaitBetweenSpawns 2 // 10 // 7 TotalCurrency 150 RandomSpawn 1 // Squad // { TFBot { Template T_TFGateBot_Sniper_Huntsman // T_TFGateBot_Sniper_Huntsman_Spammer AddTemplate GateBotDisableDodge } // TFBot // { // Template T_TFGateBot_Pyro_AlwaysFire // } // TFBot // { // Template T_TFGateBot_Pyro_AlwaysFire // } // TFBot // { // Template T_TFGateBot_Pyro_AlwaysFire // } // TFBot // { // Template T_TFGateBot_Pyro_AlwaysFire //// } // } } WaveSpawn { Name stage1 Where spawnbot_all_0 // main_0 Where spawnbot_all_1 // main_1 TotalCount 28 // 35 // 45 MaxActive 12 // 15 // 10 SpawnCount 4 // 5 WaitBeforeStarting 0 WaitBetweenSpawns 5 TotalCurrency 200 // RandomSpawn 1 RandomChoice { TFBot { Class Demoman Skill Normal // ClassIcon demo_sticky_daan // Custom icon // Item "Bomb Beanie" // WeaponRestrictions SecondaryOnly // ItemAttributes // { // ItemName TF_WEAPON_GRENADELAUNCHER // is_passive_weapon 1 // "override projectile type" 27 // Fires nothing // } ClassIcon demo_sticky_split } TFBot { // Class Demoman // Skill Normal // ClassIcon demo_sticky_daan // Custom icon // Item "Bomb Beanie" // WeaponRestrictions SecondaryOnly // Item "The Quickiebomb Launcher" // ItemAttributes // { // ItemName TF_WEAPON_GRENADELAUNCHER // is_passive_weapon 1 // "override projectile type" 27 // Fires nothing // } // enough of this dumb 8 stickies crap Template T_TFBot_Demoman_Stickybomb ClassIcon demo_sticky_split } } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 // Dead stage1 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 24 // 36 MaxActive 12 // 18 SpawnCount 4 // 6 WaitBeforeStarting 10 WaitBetweenSpawns 5 TotalCurrency 200 RandomSpawn 1 TFBot { Template T_TFGateBot_Soldier_Normal // niper_Huntsman AddTemplate GateBotDisableDodge } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 // Dead stage1 Where spawnbot_flank_0 Where spawnbot_flank_1 TotalCount 2 MaxActive 2 SpawnCount 2 WaitBeforeStarting 25 // 15 WaitBetweenSpawns 0 TotalCurrency 100 RandomSpawn 1 Squad { TFBot { Template T_TFBot_Giant_Pyro Attributes AlwaysFireWeapon Tag bot_giant } TFBot { Template T_TFBot_Medic_QuickUber } } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 // Dead stage1 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 30 WaitBetweenSpawns 0 TotalCurrency 50 RandomSpawn 1 TFBot { Template T_TFBot_Giant_Scout // _Bonk_Improved // _SlowCharge WeaponRestrictions MeleeOnly ClassIcon scout_bat_nys Name "Giant Bat Scout" } } WaveSpawn { Name stage3 WaitForAllDead stage2 // Spawned stage2 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 5 // 27 MaxActive 5 // 9 SpawnCount 5 // 9 WaitBeforeStarting 0 // 5 TotalCurrency 75 // 150 Squad { TFBot { Template T_TFBot_Giant_Pyro Attributes AlwaysFireWeapon Tag bot_giant } TFBot { Template T_TFBot_Medic_Kritz } TFBot { Template T_TFBot_Medic_Kritz } TFBot { Template T_TFBot_Soldier_Extended_Concheror } TFBot { Template T_TFBot_Soldier_Extended_Concheror } } } WaveSpawn { Name stage3 WaitForAllDead stage2 // Spawned stage2 Where spawnbot_left_0 Where spawnbot_left_1 TotalCount 5 MaxActive 5 SpawnCount 5 WaitBeforeStarting 15 TotalCurrency 75 // 150 Squad { TFBot { Template T_TFBot_Giant_Pyro Attributes AlwaysFireWeapon Tag bot_giant } TFBot { Template T_TFBot_Medic_QuickUber } TFBot { Template T_TFBot_Medic_QuickUber } TFBot { Template T_TFBot_Soldier_Extended_Concheror } TFBot { Template T_TFBot_Soldier_Extended_Concheror } } } WaveSpawn { Name supportbutimadeitnotlol WaitForAllSpawned stage2 Where spawnbot_flank_0 Where spawnbot_flank_1 TotalCount 12 MaxActive 8 SpawnCount 2 WaitBeforeStarting 15 WaitBetweenSpawns 4 TotalCurrency 100 Squad { TFBot { // Template T_TFBot_Heavy_Plasma ClassIcon heavy_atomic_v2 Skill Normal Name "Plasma Heavy" Class HeavyWeapons // Item "the bubble pipe" Item "the mk 50" ItemAttributes { ItemName tf_weapon_minigun "attach particle effect" 704 "override projectile type" 13 "energy weapon penetration" 1 } } TFBot { // Template T_TFBot_Medic_Bigheal_Improved Template T_TFBot_Medic_QuickFix Attributes SpawnWithFullCharge CharacterAttributes { "bot medic uber health threshold" 1987 "ubercharge rate bonus" 0.01 } ClassIcon medic_pop Name "Pre-Popping Quick-Fix Medic" } } } } // WAVE 2 //////////CURRENCY 950/////////////////////////////////// Wave { StartWaveOutput { Target wave_start_relay_notimer Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutPut { Target wave_start_relay_notimer Action RunScriptCode Param " IncludeScript(`mvm_crown_changes_randomguy`) " } WaveSpawn { Name stage1 Where spawnbot_left_0 Where spawnbot_left_1 TotalCount 4 // 2 // 4 // 3 MaxActive 4 // 2 // 4 // 3 SpawnCount 2 // 1 // 2 // 1 WaitBeforeStarting 10 WaitBetweenSpawns 25 // 15 TotalCurrency 150 RandomSpawn 1 Squad { TFBot { Template T_TFGateBot_Giant_HeavyWeapons AddTemplate GateBotDisableDodge } TFBot { Template T_TFBot_Medic_Bigheal_Improved } } } WaveSpawn { Name stage1 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 45 MaxActive 15 SpawnCount 5 WaitBeforeStarting 0 WaitBetweenSpawns 5 TotalCurrency 100 RandomSpawn 1 TFBot { Template T_TFBot_Sniper_Huntsman // _Bleed } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 // Dead stage1 Where spawnbot_all_0 Where spawnbot_all_1 TotalCount 48 // 54 // 63 MaxActive 18 // 21 SpawnCount 6 // 7 WaitBeforeStarting 20 // 15 WaitBetweenSpawns 6 TotalCurrency 150 RandomSpawn 0 TFBot { Template T_TFGateBot_HeavyWeapons_Shotgun AddTemplate GateBotDisableDodge } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 Where spawnbot_flank_0 Where spawnbot_flank_1 TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 20 WaitBetweenSpawns 25 TotalCurrency 50 RandomSpawn 0 TFBot { Template T_TFBot_Giant_Soldier_Crit Tag bot_giant } } WaveSpawn { // Name stage2 WaitForAllSpawned stage1 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 20 // 10 WaitBetweenSpawns 6 TotalCurrency 100 FirstSpawnWarningSound mvm/mvm_tank_start.wav Tank { Health 20000 // 25000 Speed 75 Name tankboss Skin 0 // 0 - Normal skin, 1 - final wave skin StartingPathTrackNode tank_path_1 // if this is not here have fun with the hatch tank OnKilledOutput // output sent when the Tank is killed (almost never used) { Target tank_died_relay Action Trigger } OnBombDroppedOutput // output sent when the Tank drops its bomb once it reaches the end of its path { Target boss_deploy_relay Action Trigger } } } // WaveSpawn // { // Name stage3 // WaitForAllSpawned stage2 // Where spawnbot_all_0 // Where spawnbot_all_1 // TotalCount 24 // 32 // MaxActive 14 // 16 // SpawnCount 6 // 8 // WaitBeforeStarting 10 // WaitBetweenSpawns 8 // TotalCurrency 200 // RandomSpawn 1 // TFBot // { // Template T_TFGateBot_Soldier_Normal // _DirectHit // AddTemplate GateBotDisableDodge // } // } // get out you do nothing but pad the wave WaveSpawn { Name stage4a WaitForAllDead stage2 // stage3 // Spawned stage3 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 2 // 1 // 2 MaxActive 2 // 1 // 2 SpawnCount 2 // 1 // 2 WaitBeforeStarting 0 // 10 WaitBetweenSpawns 0 TotalCurrency 200 RandomSpawn 0 Squad { TFBot { Template T_TFBot_Giant_Soldier_Spammer_Reload Tag bot_giant } // TFBot // { // Template T_TFBot_Giant_Medic_Kritz // _Regen // } TFBot { Template T_TFBot_Medic_Bigheal_Improved } } } WaveSpawn { Name stage4b WaitForAllDead stage2 // stage3 // Spawned stage3 // WaitForAllDead stage4a Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 2 // 1 // 4 // 2 MaxActive 2 // 1 // 4 // 2 SpawnCount 2 // 1 // 4 // 2 WaitBeforeStarting 15 // 10 // 20 // 0 // 30 // 50 WaitBetweenSpawns 0 // damn some of these commented out values really are an enigma. TotalCurrency 200 RandomSpawn 0 Squad { TFBot { Template T_TFBot_Giant_HeavyWeapons Tag bot_giant // Skill Easy //Dumbass. } // TFBot // { // Template T_TFBot_Giant_Medic_Regen // } // TFBot // { // Template T_TFBot_Medic_QuickUber // } // TFBot // { // Template T_TFBot_Medic_QuickUber // } // TFBot // { // Template T_TFBot_Medic_QuickUber // } TFBot { Template T_TFBot_Medic_Bigheal_Improved } } } WaveSpawn { Name stage4_s WaitForAllDead stage2 // stage3 // Spawned stage3 Where spawnbot_left_0 Where spawnbot_left_1 TotalCount 100 // 24 MaxActive 12 SpawnCount 3 WaitBeforeStarting 5 // 15 WaitBetweenSpawns 4 // 5 TotalCurrency 100 RandomSpawn 0 Support 1 TFBot { // Class Demoman // Skill Normal Template T_TFBot_Demoman_Knight } } // WaveSpawn // { // Name support // WaitForAllSpawned stage4_s // Where spawnbot_main_0 // Where spawnbot_main_1 // TotalCount 100 // 24 // MaxActive 12 // SpawnCount 3 // WaitBeforeStarting 5 // WaitBetweenSpawns 5.5 // Support 1 // TotalCurrency 100 // TFBot // { // Class Pyro // Skill Easy // } // } } // WAVE 3 //////////CURRENCY 1150/////////////////////////////////// Wave { StartWaveOutput { Target wave_start_relay_notimer Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutPut { Target wave_start_relay_notimer Action RunScriptCode Param " IncludeScript(`mvm_crown_changes_randomguy`) " } WaveSpawn { Name stage1 Where spawnbot_left_0 Where spawnbot_left_1 TotalCount 6 MaxActive 4 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 15 TotalCurrency 210 RandomSpawn 1 Squad { TFBot { Template T_TFGateBot_Giant_Demo_Burst AddTemplate GateBotDisableDodge } TFBot { Template T_TFBot_Medic_QuickUber } } } WaveSpawn { Name stage1a Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 42 MaxActive 12 SpawnCount 2 // 6 WaitBeforeStarting 5 // changed to stream spawn so it gets spawnblocked less WaitBetweenSpawns 1.66 // 5 TotalCurrency 160 RandomSpawn 1 TFBot { Class Soldier ClassIcon heavy_shotgun Skill Normal Name "Medium Shotgun" WeaponRestrictions SecondaryOnly MaxVisionRange 600 } } WaveSpawn { Name stage1 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 6 MaxActive 2 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 80 RandomSpawn 1 Squad { TFBot { // Template T_TFGateBot_Heavy_IronFist_Crit // _Airblast Template T_TFGateBot_Pyro_DF_Expert AddTemplate GateBotDisableDodge } TFBot { Template T_TFBot_Medic_QuickUber } } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 16 MaxActive 12 SpawnCount 2 WaitBeforeStarting 15 WaitBetweenSpawns 4 TotalCurrency 160 RandomSpawn 1 Squad { TFBot { // Template T_TFBot_Heavy_EvictionNotice // Name "Eviction Gauntlet" // Skill Expert // Health 900 // Scale 1.5 // Tag bot_giant // WeaponRestrictions MeleeOnly // CharacterAttributes // { // "health regen" 1 // } // Attributes AlwaysCrit Template T_TFBot_Pyro_DragonFury // Heavyweapons_Fist // Attributes AlwaysCrit // Tag bot_giant } TFBot { Template T_TFBot_Medic_QuickUber } } } WaveSpawn { Name stage2g WaitForAllSpawned stage1 Where spawnbot_flank_0 Where spawnbot_flank_1 TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 20 TotalCurrency 141 RandomSpawn 1 TFBot { Template T_TFBot_Giant_Soldier_Spammer Tag bot_giant } } WaveSpawn { Name stage2g WaitForAllSpawned stage1 Where spawnbot_flank_0 Where spawnbot_flank_1 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 20 WaitBetweenSpawns 15 TotalCurrency 33 RandomSpawn 1 TFBot { Template T_TFGateBot_Giant_Scout_FAN // ast AddTemplate GateBotDisableDodge } } WaveSpawn { Name stage2g WaitForAllSpawned stage1 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 20 WaitBetweenSpawns 15 TotalCurrency 33 RandomSpawn 1 TFBot { Template T_TFGateBot_Giant_Scout_FAN // ast AddTemplate GateBotDisableDodge } } WaveSpawn { Name stage2g WaitForAllSpawned stage1 Where spawnbot_left_0 Where spawnbot_left_1 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 20 WaitBetweenSpawns 15 TotalCurrency 33 RandomSpawn 1 TFBot { Template T_TFGateBot_Giant_Scout_FAN // ast AddTemplate GateBotDisableDodge } } // WaveSpawn //you suck get out // { // Name stage3 // WaitForAllDead stage2 // Where spawnbot_main_0 // Where spawnbot_main_1 // TotalCount 16 //32 // MaxActive 16 // SpawnCount 8 // WaitBeforeStarting 5 // WaitBetweenSpawns 5 // TotalCurrency 160 // RandomSpawn 1 // RandomChoice // { // TFBot // { // Template T_TFGateBot_Heavy_Easy_Fix // } // TFBot // { // Template T_TFGateBot_Heavy_Easy_Fix // } // TFBot // { // Template T_TFGateBot_Heavy_Easy_Fix // } // TFBot // { // Template T_TFGateBot_Heavy_Easy_Fix // } // TFBot // { // Template T_TFGateBot_Heavy_Hard // } // } // } WaveSpawn { Name stage4 WaitForAllSpawned stage2g // 3 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 9 MaxActive 9 // 6 SpawnCount 3 WaitBeforeStarting 15 // 10 WaitBetweenSpawns 25 TotalCurrency 300 Squad { TFBot { Template T_TFBot_Giant_Demo_Burst Attributes AlwaysCrit ClassIcon demo_burst Tag bot_giant } TFBot { Template T_TFBot_Medic // _Armor } TFBot { Template T_TFBot_Medic // _Armor } } } WaveSpawn { Name support WaitForAllSpawned stage2 // 3 WaitForAllDead stage1a // Wait for these commons to die too. Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 100 MaxActive 11 // 16 SpawnCount 1 WaitBeforeStarting 15 WaitBetweenSpawns 0.5 Support 1 TotalCurrency 100 // RandomChoice // { // TFBot // { // Template T_TFBot_HeavyWeapons_HeavyWeight_Champ // } // TFBot // { // Class Heavyweapons // Name "Steelweight Champ" // Skill Expert // ClassIcon heavy_steelfist_nys // WeaponRestrictions MeleeOnly // Item "Fists of Steel" // Item "The U-clank-a" // } // } TFBot { Class Scout Skill Easy } } } // WAVE 4 //////////CURRENCY 800/////////////////////////////////// Wave { StartWaveOutput { Target wave_start_relay_notimer Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutPut { Target wave_start_relay_notimer Action RunScriptCode Param " IncludeScript(`mvm_crown_changes_randomguy`) " } WaveSpawn { Name giant Where spawnbot_tank_0 Where spawnbot_main_1 TotalCount 2 // 3 MaxActive 2 // 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 60 TotalCurrency 90 RandomSpawn 1 TFBot { Template T_TFBot_Giant_Soldier_Spammer_Reload Tag bot_giant } } WaveSpawn { Name giant Where spawnbot_tank_0 Where spawnbot_main_1 TotalCount 2 // 3 MaxActive 2 // 1 SpawnCount 1 WaitBeforeStarting 20 WaitBetweenSpawns 60 TotalCurrency 90 RandomSpawn 1 TFBot { Template T_TFBot_Giant_HeavyWeapons // _ShotGun Tag bot_giant } } WaveSpawn { Name giant Where spawnbot_tank_0 Where spawnbot_main_1 TotalCount 2 // 3 MaxActive 2 // 1 SpawnCount 1 WaitBeforeStarting 40 WaitBetweenSpawns 60 TotalCurrency 90 RandomSpawn 1 TFBot { Template T_TFBot_Giant_Pyro_DragonFury Tag bot_giant } } WaveSpawn { Name stage1 Where spawnbot_left_0 Where spawnbot_main_1 TotalCount 42 MaxActive 18 SpawnCount 6 WaitBeforeStarting 0 WaitBetweenSpawns 5 TotalCurrency 130 RandomSpawn 1 TFBot { Template T_TFGateBot_Soldier_Normal AddTemplate GateBotDisableDodge } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 20 MaxActive 10 SpawnCount 2 WaitBeforeStarting 10 WaitBetweenSpawns 3 TotalCurrency 100 Squad { TFBot { Template T_TFGateBot_Soldier_Mangler_Charged_Burst // Heavy_IronFist_Airblast AddTemplate GateBotDisableDodge } TFBot { // Template T_TFBot_Medic_Armor // Name "Armored Quick Uber Medic" // ItemAttributes // { // ItemName TF_WEAPON_MEDIGUN // "uber duration bonus" -4 // } // ^ dumb crap. Template T_TFBot_Medic_QuickUber } } } WaveSpawn { Name stage3 WaitForAllSpawned stage2 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 40 MaxActive 16 SpawnCount 8 WaitBeforeStarting 10 WaitBetweenSpawns 6 TotalCurrency 100 RandomSpawn 1 TFBot { // Template T_TFBot_Demoman_Golf // ^ consider if too easy Template T_TFBot_Demoman_Knight Attributes AlwaysCrit } } WaveSpawn { Name stage4 WaitForAllDead giant Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 4 // 6 MaxActive 4 // 6 SpawnCount 2 // 3 WaitBeforeStarting 0 // 20 WaitBetweenSpawns 25 // 20 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Giant_HeavyWeapons_Deflector // HealOnAll_Hyper Tag bot_giant } TFBot { Template T_TFBot_Giant_Medic_Uber // T_TFBot_Giant_Medic_QuickUber // T_TFBot_Medic_Kritz_Giant_Randomguy ClassIcon medic_uber_giant Tag bot_giant } // TFBot // { // Template T_TFBot_Giant_Medic // } } } WaveSpawn { Name supooop WaitForAllSpawned stage3 Where spawnbot_all_0 Where spawnbot_all_1 TotalCount 100 MaxActive 10 SpawnCount 2 WaitBeforeStarting 10 WaitBetweenSpawns 1.5 // 1 TotalCurrency 100 RandomSpawn 1 Support 1 TFBot { Class Demoman Skill Normal } } } // WAVE 5 //////////CURRENCY 1000/////////////////////////////////// Wave { StartWaveOutput { Target wave_start_relay_notimer Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutPut { Target wave_start_relay_notimer Action RunScriptCode Param " IncludeScript(`mvm_crown_changes_randomguy`) ::InfinUberMedics <- { //Made with help from ficool2, fellen and Seelpit. Cleanup = function() //Delete this when we're done. { delete ::InfinUberMedics } OnGameEvent_recalculate_holidays = function(_) { if (GetRoundState() == 3) Cleanup() } OnGameEvent_mvm_wave_complete = function(_) { Cleanup() } function CheckUberTag(hBot) { if (!hBot.HasBotTag(`bot_infinuber`)) return //ClientPrint(null, 3, `Bot found with proper tag! Applying think...`) hBot.ValidateScriptScope() hBot.GetScriptScope().UnUberOnUberThink <- UnUberOnUberThink AddThinkToEnt(hBot, `UnUberOnUberThink`) } function OnGameEvent_post_inventory_application(params) { local TF_BOT_TYPE = 1337 local hBot = GetPlayerFromUserID(params.userid) if (!hBot.IsBotOfType(TF_BOT_TYPE)) return //ClientPrint(null,3,`Post inventory application executing.`) EntFireByHandle(hBot, `RunScriptCode`, `InfinUberMedics.CheckUberTag(self)`, -1, null, null) } UnUberOnUberThink = function() { self.RemoveCond(5); if (NetProps.GetPropInt(self, `m_lifeState`) != 0) { //ClientPrint(null,3,`Bot with tag died! Removing think...`) AddThinkToEnt(self, null); NetProps.SetPropString(self, `m_iszScriptThinkFunction`, ``); } return 0.1; } } __CollectGameEventCallbacks(InfinUberMedics) " } WaveSpawn { Where spawnbot_tank_0 Where spawnbot_flank_1 TotalCount 9999 MaxActive 2 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 10 TotalCurrency 9999 Support 1 TFBot { Name "InfinUber Medic" Class Medic ClassIcon medic_uber_infinite Attributes SpawnWithFullCharge Tag bot_infinuber ItemAttributes // Infinite prepop; does not pop itself thanks to its tag. { ItemName tf_weapon_medigun "uber duration bonus" -99 "bot medic uber health threshold" 9999 } } } WaveSpawn { Name stage1 Where spawnbot_tank_0 Where spawnbot_main_1 TotalCount 6 // 4 // 6 MaxActive 6 // 2 // 3 SpawnCount 3 // 2 // 3 WaitBeforeStarting 0 WaitBetweenSpawns 25 // 0 TotalCurrency 150 // Squad // { // TFBot // { // Template T_TFGateBot_Giant_Soldier_Extended_Buff_Banner // ClassIcon soldier_banner_trio // } TFBot { Template T_TFGateBot_Soldier_Mangler_Charged_Burst_Giant AddTemplate GateBotDisableDodge } // TFBot // { // Template T_TFGateBot_Giant_Soldier_Extended_Backup // ClassIcon soldier_banner_trio // } // TFBot // { // Template T_TFGateBot_Giant_Soldier_Extended_Concheror // ClassIcon soldier_banner_trio // } // } } WaveSpawn { Name stage1 Where spawnbot_all_0 Where spawnbot_main_1 TotalCount 18 MaxActive 6 SpawnCount 2 WaitBeforeStarting 5 WaitBetweenSpawns 4 TotalCurrency 50 RandomSpawn 1 TFBot { Class Scout Skill Normal } } WaveSpawn { Name stage1 Where spawnbot_all_0 Where spawnbot_main_1 TotalCount 16 // 18 MaxActive 6 SpawnCount 2 WaitBeforeStarting 15 WaitBetweenSpawns 4 TotalCurrency 50 RandomSpawn 1 TFBot { Template T_TFBot_Pyro_FlareGun } } WaveSpawn { Name stage1 Where spawnbot_all_0 Where spawnbot_main_1 TotalCount 14 // 18 MaxActive 6 SpawnCount 2 WaitBeforeStarting 25 WaitBetweenSpawns 4 TotalCurrency 50 RandomSpawn 1 TFBot { // Template T_TFBot_Heavy_Tom // Class Soldier // Skill Normal // Item "The Direct Hit" // ClassIcon soldier_directhit_lite Template T_TFGateBot_Soldier_Normal_DirectHit_BuffBanner AddTemplate GateBotDisableDodge } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 18 MaxActive 12 SpawnCount 6 WaitBeforeStarting 10 WaitBetweenSpawns 20 TotalCurrency 150 RandomSpawn 1 Squad { TFBot { Template T_TFBot_Heavyweapons_Heater Tag bot_giant } TFBot { Template T_TFBot_Sniper_Huntsman_Spammer_Improved Tag bot_giant } TFBot { Template T_TFBot_Sniper_Huntsman_Spammer_Improved Tag bot_giant } TFBot { Template T_TFBot_Sniper_Huntsman_Spammer_Improved Tag bot_giant } TFBot { Class Pyro Skill Easy Attributes AlwaysFireWeapon Scale 1.5 Health 650 Name "Jumbo Pyro" Classicon pyro_armored2 Tag bot_giant } TFBot { Class Pyro Skill Easy Attributes AlwaysFireWeapon Scale 1.5 Health 650 Name "Jumbo Pyro" Classicon pyro_armored2 Tag bot_giant } } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 Where spawnbot_left_0 Where spawnbot_left_1 TotalCount 24 MaxActive 8 SpawnCount 4 WaitBeforeStarting 10 WaitBetweenSpawns 6 TotalCurrency 150 RandomSpawn 1 TFBot { Template T_TFGateBot_Soldier_Extended_Battalion_Hard AddTemplate GateBotDisableDodge } } WaveSpawn { Name stage3 WaitForAllSpawned stage2 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 64 MaxActive 16 SpawnCount 4 WaitBeforeStarting 10 WaitBetweenSpawns 3 TotalCurrency 200 RandomSpawn 1 Support Limited TFBot { Template T_TFBot_Demoman_Knight_Persian // Attributes AlwaysCrit } } WaveSpawn { Name stage3 WaitForAllSpawned stage2 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 15 TotalCurrency 66 RandomSpawn 1 TFBot { Template T_TFBot_Giant_HeavyWeapons_Deflector Tag bot_giant } } WaveSpawn { Name stage3 WaitForAllSpawned stage2 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 55 WaitBetweenSpawns 15 TotalCurrency 34 RandomSpawn 1 Squad { TFBot { Template T_TFBot_Giant_HeavyWeapons_Deflector Attributes AlwaysCrit ClassIcon heavy_deflector_giant Tag bot_giant } TFBot { Template T_TFBot_Giant_Medic_Uber Tag bot_giant } } } WaveSpawn { Name stage3 WaitForAllSpawned stage2 Where spawnbot_main_0 Where spawnbot_main_1 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 4 TotalCurrency 100 FirstSpawnWarningSound mvm/mvm_tank_start.wav Tank { Health 30000 // 35000 Speed 75 Name tankboss Skin 1 // 0 - Normal skin, 1 - final wave skin StartingPathTrackNode tank_path_1 // if this is not here have fun with the hatch tank OnKilledOutput // output sent when the Tank is killed (almost never used) { Target tank_died_relay Action Trigger } OnBombDroppedOutput // output sent when the Tank drops its bomb once it reaches the end of its path { Target boss_deploy_relay Action Trigger } } } } // WAVE test //////////CURRENCY 1150/////////////////////////////////// Wave { StartWaveOutput { Target wave_start_relay_notimer Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name stage1 Where spawnbot_left_0 Where spawnbot_left_1 TotalCount 222 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 TFBot { Template T_TFGateBot_Giant_Pyro_AlwaysFire } } WaveSpawn { Name stage1 Where spawnbot_tank_0 Where spawnbot_left_1 TotalCount 222 MaxActive 20 SpawnCount 1 WaitBeforeStarting 0 Support 1 TFBot { Class Scout BehaviorModifiers Push CharacterAttributes { "Health regen" -3 } } } } }