//Malware Malfunction //An Advanced mission for the map Apex by botrot. https://steamcommunity.com/id/BotRot //Features custom Tanks using the TankExtensions VScript library; credits to lite //Wave 1: $700; Wave 2: $700; Wave 3: $750; Wave 4: $850; Wave 5: $800; Wave 6: $1000; Wave 7: $700; //Total Mission Money (including starting money): $6700 #base robot_standard.pop #base robot_giant.pop WaveSchedule { PrecacheModel "models/bots/boss_bot/tank_drill.mdl" //preloads drill tank drill model PrecacheModel "models/props_mvm/tankdozer.mdl" //preloads tankdozer model PrecacheModel "models/props_mvm/tankdozer_breakable1.mdl" //preloads tankdozer breakable model PrecacheModel "models/props_mvm/tankdozer_breakable2.mdl" //preloads tankdozer breakable model //Initial Money $800 StartingCurrency 800 CanBotsAttackWhileInSpawnRoom No RespawnWaveTime 4 Advanced 1 //Custom Bot Templates Templates { //Offense Classes T_TFBot_Pyro_Phlog { ClassIcon pyro_phlog Name "Phlogiston Pyro" Class Pyro Skill Normal Attributes SpawnWithFullCharge Item "the phlogistinator" Item "pyro's boron beanie" ItemAttributes { ItemName "the phlogistinator" "airblast disabled" 0 } } //Defense Classes T_TFBot_Giant_Heavyweapons_RapidFire { Class Heavyweapons Name "Giant Rapid Fire Heavy" ClassIcon heavy_spammer Skill Expert Health 5000 WeaponRestrictions PrimaryOnly MaxVisionRange 1200 Attributes MiniBoss Item "Upgradeable tf_weapon_minigun" ItemAttributes { ItemName "Upgradeable TF_WEAPON_MINIGUN" "fire rate bonus" 0.7 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.3 "override footstep sound set" 2 } } //Support Classes T_TFBot_Medic_Kritz { Class Medic Name "Kritz Medic" Skill Expert ClassIcon medic_kritz WeaponRestrictions SecondaryOnly Attributes SpawnWithFullCharge Attributes IgnoreEnemies Item "the kritzkrieg" Item "Titanium Tyrolean" ItemAttributes { ItemName "The Kritzkrieg" "ubercharge rate bonus" 999 "uber duration bonus" 999 } CharacterAttributes { "heal rate bonus" 2 "bot medic uber health threshold" 999 } } T_TFBot_Sniper_Silent { Name "Urban Professional Sniper" Class Sniper Skill Hard MaxVisionRange 2500 Item "the hitman's heatmaker" Item "Liquidator's Lid" Item "the shahanshah" ItemAttributes { ItemName "the shahanshah" "dmg bonus while half dead" 2 "dmg penalty while half alive" 0.5 } ItemAttributes { ItemName "the hitman's heatmaker" "sniper fires tracer HIDDEN" 1 "lunchbox adds minicrits" 3 "damage penalty on bodyshot" 1 "sniper charge per sec" 1.25 "silent killer" 1 } } T_TFBot_Spy_Honor { ClassIcon spy Name "Spy of Dishonor" Class Spy Skill Expert Item "the enforcer" Item "the big earner" Item "cosa nostra cap" Item "the made man" } } //Support Robot Missions Mission { Objective DestroySentries Where spawnbot_mission_sentry_buster BeginAtWave 1 InitialCooldown 0 CooldownTime 40 DesiredCount 1 TFBot { Template T_TFBot_SentryBuster Attributes DisableDodge CharacterAttributes { "damage force reduction" 0 "airblast vulnerability multiplier" 0 "airblast vertical vulnerability multiplier" 0 } } } Mission { Objective Spy Where spawnbot BeginAtWave 1 RunForThisManyWaves 1 InitialCooldown 35 CooldownTime 50 DesiredCount 3 TFBot { Template T_TFBot_Spy_Honor } } Mission { Objective Engineer Where spawnbot BeginAtWave 2 RunForThisManyWaves 1 InitialCooldown 30 CooldownTime 40 DesiredCount 1 TFBot { Template T_TFBot_Engineer_Sentry_Teleporter TeleportWhere spawnbot TeleportWhere spawnbot_left TeleportWhere spawnbot_right TeleportWhere spawnbot_all TeleportWhere spawnbot_mission_sentry_buster Item "The Jag" Health 600 //Rottenburg Engineer health CharacterAttributes { "kill forces attacker to laugh" 1 } } } Mission { Objective Spy Where spawnbot_all BeginAtWave 4 RunForThisManyWaves 2 InitialCooldown 10 CooldownTime 50 DesiredCount 2 TFBot { Template T_TFBot_Spy_Honor } } Mission { Objective Engineer Where spawnbot BeginAtWave 4 RunForThisManyWaves 1 InitialCooldown 30 CooldownTime 40 DesiredCount 1 TFBot { Template T_TFBot_Engineer_Sentry_Teleporter TeleportWhere spawnbot TeleportWhere spawnbot_left TeleportWhere spawnbot_right TeleportWhere spawnbot_mission_sentry_buster Health 600 //Rottenburg Engineer health Item "The Jag" CharacterAttributes { "kill forces attacker to laugh" 1 } } } Mission { Objective Engineer Where spawnbot BeginAtWave 6 RunForThisManyWaves 1 InitialCooldown 30 CooldownTime 45 DesiredCount 1 TFBot { Template T_TFBot_Engineer_Sentry_Teleporter TeleportWhere spawnbot TeleportWhere spawnbot_left TeleportWhere spawnbot_right TeleportWhere spawnbot_all TeleportWhere spawnbot_mission_sentry_buster Health 600 //Rottenburg Engineer health Item "The Jag" CharacterAttributes { "kill forces attacker to laugh" 1 } } } Mission { Objective Sniper Where spawnbot_mission_sniper BeginAtWave 7 RunForThisManyWaves 1 InitialCooldown 35 CooldownTime 45 DesiredCount 2 TFBot { Template T_TFBot_Sniper_Silent } } Mission { Objective Spy Where spawnbot BeginAtWave 7 RunForThisManyWaves 1 InitialCooldown 45 CooldownTime 45 DesiredCount 2 TFBot { Template T_TFBot_Spy_Honor } } //Wave 1 //Total Money: $700, $800 with bonus from A+ rating Wave { StartWaveOutput { Target wave_start_relay Action Trigger } InitWaveOutput //loads custom tank scripts { Target gamerules Action RunScriptCode Param " IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/teletank`, getroottable()) TankExt.StartingPathNames([ `boss_path_lb_1` `boss_path_la_1` `boss_path_ra_1` `boss_path_rb_1` ]) TankExt.SetValueOverrides({ TELETANK_UBER_DURATION_MULT = 0.6 }) " } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name wave1a TotalCount 1 SpawnCount 1 WaitBeforeStarting 25 TotalCurrency 300 Tank { Health 27000 Speed 75 Name "teletank" ClassIcon tank_tele StartingPathTrackNode "boss_path_rb_1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFA Teleporter Tank has been deployed with 27k health!`) " } } WaveSpawn { Name wave1a TotalCurrency 100 TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 60 Where spawnbot TFBot { Template T_TFBot_Giant_Soldier_Crit Tag "bot_teletank" Tag "default" } } WaveSpawn { Name wave1a TotalCurrency 100 TotalCount 14 MaxActive 14 SpawnCount 7 WaitBeforeStarting 1 WaitBetweenSpawns 5 Where spawnbot TFBot { Template T_TFBot_Sniper_Huntsman Tag "default" } } WaveSpawn { Name wave1support TotalCurrency 100 TotalCount 30 MaxActive 6 SpawnCount 3 WaitBeforeStarting 3 WaitBetweenSpawns 10 Support 1 Where spawnbot_all RandomChoice { TFBot { Class Pyro Name "Backburner Pyro" Skill Easy Item "the backburner" ClassIcon pyro_backburner_nys Tag "bot_teletank" } TFBot { Class Pyro Name "Backburner Pyro" Skill Easy Item "the backburner" ClassIcon pyro_backburner_nys Tag "bot_teletank" } TFBot { Name "SMG Sniper" Class Sniper Skill Normal Item "The Cleaner's Carbine" Tag "bot_teletank" ClassIcon sniper_carbine WeaponRestrictions SecondaryOnly ItemAttributes { ItemName "the cleaner's carbine" "minicritboost on kill" 8 } } } } WaveSpawn { Name wave1support TotalCurrency 100 TotalCount 30 MaxActive 6 SpawnCount 6 WaitBeforeStarting 10 WaitBetweenSpawns 10 Support 1 Where spawnbot TFBot { Class Soldier Skill Easy Item "The Liberty Launcher" Name "Liberty Soldier" Tag "bot_teletank" Tag "flanker" } } } //Wave 2 //Total Money: $700, $800 with bonus from A+ rating Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name wave2a TotalCurrency 100 TotalCount 40 MaxActive 10 SpawnCount 5 WaitBeforeStarting 0 WaitBetweenSpawns 1 Where spawnbot TFBot { Class Demoman Skill Easy Item "The Iron Bomber" } } WaveSpawn { Name wave2a TotalCurrency 100 TotalCount 28 MaxActive 7 SpawnCount 7 WaitBeforeStarting 1 WaitBetweenSpawns 3 Where spawnbot_all TFBot { Name "Bonk Scatter Scout" Class Scout Skill Normal Item "Bonk! Atomic Punch" Item "Bonk Helm" ClassIcon scout_bonk_scatter_nys2 CharacterAttributes { "deploy time increased" 0.5 } } } WaveSpawn { Name wave2a TotalCurrency 100 TotalCount 6 MaxActive 6 SpawnCount 3 WaitBeforeStarting 10 WaitBetweenSpawns 40 Where spawnbot_right Squad { TFBot { Template T_TFBot_Heavyweapons_Heater MaxVisionRange 1200 Name "Giant Heater Heavy" ClassIcon heavy_heater_nys_giant Tag "default" ItemAttributes { ItemName "The Huo Long Heatmaker" "damage bonus" 1.2 "damage penalty" 1 } } TFBot { Template T_TFBot_Medic_QuickFix Skill Expert Attributes SpawnWithFullCharge ClassIcon medic_pop ItemAttributes { ItemName "TF_WEAPON_SYRINGEGUN_MEDIC" "damage penalty" 1 } } TFBot { Template T_TFBot_Medic_QuickFix Skill Expert Attributes SpawnWithFullCharge ClassIcon medic_pop ItemAttributes { ItemName "TF_WEAPON_SYRINGEGUN_MEDIC" "damage penalty" 1 } } } } WaveSpawn { Name wave2b WaitForAllDead wave2a TotalCurrency 100 TotalCount 30 MaxActive 10 SpawnCount 10 WaitBeforeStarting 1 WaitBetweenSpawns 0 Where spawnbot Squad { TFBot { Class Heavyweapons Skill Easy Name "Heavy" Tag "default" } TFBot { Template T_TFBot_Medic_QuickFix Skill Expert Attributes SpawnWithFullCharge ClassIcon medic_pop ItemAttributes { ItemName "TF_WEAPON_SYRINGEGUN_MEDIC" "damage penalty" 1 } } } } WaveSpawn { Name wave2b WaitForAllDead wave2a TotalCurrency 100 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 25 Where spawnbot_left TFBot { Template T_TFBot_Giant_Soldier_Spammer Tag "default" } } WaveSpawn { Name wave2b WaitForAllDead wave2a TotalCurrency 100 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 30 Where spawnbot_right TFBot { Template T_TFBot_Giant_Soldier_Spammer Tag "default" } } WaveSpawn { Name wave2b WaitForAllSpawned wave2a TotalCurrency 50 TotalCount 36 MaxActive 6 SpawnCount 3 WaitBeforeStarting 15 WaitBetweenSpawns 6 Where spawnbot_right TFBot { ClassIcon scout_cleaver Name "Guillotine Scout" Class Scout Skill Normal Attributes AlwaysFireWeapon Item "the flying guillotine" WeaponRestrictions SecondaryOnly Tag "flanker" ItemAttributes { ItemName "the flying guillotine" "effect bar recharge rate increased" 0.5 "fire rate penalty" 1.25 } } } WaveSpawn { Name wave2b WaitForAllDead wave2a TotalCurrency 50 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 45 Where spawnbot_right TFBot { Template T_TFBot_Giant_Soldier_Spammer_Reload Attributes AlwaysCrit Tag "default" } } } //Wave 3 //Total Money: $750, $850 with bonus from A+ rating Wave { StartWaveOutput { Target wave_start_relay Action Trigger } InitWaveOutput //loads custom tank scripts { Target gamerules Action RunScriptCode Param " IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/fireringtank`, getroottable()) IncludeScript(`tankextensions/drilltank`, getroottable()) TankExt.StartingPathNames([ `boss_path_lb_1` `boss_path_la_1` `boss_path_ra_1` `boss_path_rb_1` ]) " } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name wave3a TotalCurrency 100 TotalCount 40 MaxActive 10 SpawnCount 5 WaitBeforeStarting 0 WaitBetweenSpawns 3 Where spawnbot_right TFBot { Class Soldier Skill Normal } } WaveSpawn { Name wave3a TotalCurrency 100 TotalCount 30 MaxActive 6 SpawnCount 3 WaitBeforeStarting 1 WaitBetweenSpawns 3 Where spawnbot_all TFBot { Name "Samurai Demoknight" Class Demoman Skill Hard WeaponRestrictions MeleeOnly ClassIcon demoknight_samurai Item "ali baba's wee booties" Item "The Tide Turner" Item "The Half-Zatoichi" Item "Demo Kabuto" Item "The Menpo" ItemAttributes { ItemName "The Tide Turner" "attack not cancel charge" 1 } } } WaveSpawn { Name wave3a TotalCount 1 SpawnCount 1 WaitBeforeStarting 15 TotalCurrency 150 Tank { TriggerDestroyBuildingFix 1 // Fixes trigger entities destroying buildings on touch if parented to the tank Health 28000 Speed 75 Name "fireringtank" ClassIcon tank_fire_lite StartingPathTrackNode "boss_path_la_1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFA Fire Ring Tank has been deployed with 28k health!`) " } } WaveSpawn { Name wave3a TotalCurrency 50 TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 35 WaitBetweenSpawns 6 Where spawnbot_left TFBot { Template T_TFBot_Giant_Demoman Item "The Tide Turner" ClassIcon demo_infinite Tag "default" } } WaveSpawn { Name wave3b WaitForAllDead wave3a TotalCount 1 SpawnCount 1 WaitBeforeStarting 10 TotalCurrency 200 Tank { Health 26000 Speed 75 Name "drilltank" ClassIcon tank_drill_lite StartingPathTrackNode "boss_path_la_1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFA Drill Tank has been deployed with 26k health!`) " } } WaveSpawn { Name wave3b WaitForAllDead wave3a TotalCurrency 50 TotalCount 4 MaxActive 4 SpawnCount 1 WaitBeforeStarting 15 WaitBetweenSpawns 10 Where spawnbot_left TFBot { Template T_TFBot_Giant_Demoman Item "The Tide Turner" ClassIcon demo_infinite Tag "default" } } WaveSpawn { Name wave3support WaitForAllSpawned wave3a TotalCurrency 50 TotalCount 20 MaxActive 8 SpawnCount 4 WaitBeforeStarting 10 WaitBetweenSpawns 6 Where spawnbot_all Support 1 RandomChoice { TFBot { Name "Shortstop Scout" Class Scout Skill Easy Item "The Shortstop" } TFBot { Name "Shortstop Scout" Class Scout Skill Easy Item "The Shortstop" } TFBot { Name "Shortstop Scout" Class Scout Skill Easy Item "The Shortstop" Tag "flanker" } } } WaveSpawn { Name wave3support WaitForAllSpawned wave3a TotalCurrency 50 TotalCount 20 MaxActive 5 SpawnCount 5 WaitBeforeStarting 15 WaitBetweenSpawns 10 Where spawnbot_left Support 1 TFBot { ClassIcon pyro_flare_infinite Name "Rapid Flare Pyro" Class Pyro Skill Hard Item "the flare gun" Item "old guadalajara" Tag "flanker" WeaponRestrictions SecondaryOnly ItemAttributes { ItemName "the flare gun" "fire rate bonus" 0.4 "reload time decreased" 0.2 "Projectile speed increased" 0.75 } } } } //Wave 4 //Total Money: $850, $950 with bonus from A+ rating Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name wave4a TotalCurrency 100 TotalCount 3 MaxActive 3 SpawnCount 3 WaitBeforeStarting 0 Where spawnbot_left Squad { TFBot { Template T_TFBot_Giant_Heavyweapons_Natascha ClassIcon heavy_natascha_nys Name "Giant Natascha Heavy" MaxVisionRange 1200 Tag "default" ItemAttributes { ItemName "Natascha" "damage penalty" 1 "damage bonus" 1.25 } } TFBot { Template T_TFBot_Medic_Kritz } TFBot { Template T_TFBot_Medic_Kritz } } } WaveSpawn { Name wave4a TotalCurrency 100 TotalCount 3 MaxActive 3 SpawnCount 3 WaitBeforeStarting 25 Where spawnbot_right Squad { TFBot { Template T_TFBot_Giant_Heavyweapons_Natascha ClassIcon heavy_natascha_nys Name "Giant Natascha Heavy" MaxVisionRange 1200 Tag "default" ItemAttributes { ItemName "Natascha" "damage penalty" 1 "damage bonus" 1.25 } } TFBot { Template T_TFBot_Medic_Kritz } TFBot { Template T_TFBot_Medic_Kritz } } } WaveSpawn { Name wave4a TotalCurrency 50 TotalCount 10 MaxActive 5 SpawnCount 5 WaitBeforeStarting 13 WaitBetweenSpawns 15 Where spawnbot TFBot { Template T_TFBot_Pyro_Phlog Skill Hard Tag "focus" } } WaveSpawn { Name wave4a TotalCurrency 50 TotalCount 12 MaxActive 6 SpawnCount 6 WaitBeforeStarting 13 WaitBetweenSpawns 15 Where spawnbot TFBot { Class Soldier Skill Normal Tag "focus" } } WaveSpawn { Name wave4b WaitForAllDead wave4a TotalCurrency 100 TotalCount 36 MaxActive 12 SpawnCount 6 WaitBeforeStarting 3 WaitBetweenSpawns 5 Where spawnbot RandomChoice { TFBot { Template T_TFBot_Pyro_Phlog } TFBot { Template T_TFBot_Pyro_Phlog Skill Hard } } } WaveSpawn { Name wave4b WaitForAllDead wave4a TotalCurrency 100 TotalCount 24 MaxActive 8 SpawnCount 4 WaitBeforeStarting 4 WaitBetweenSpawns 5 Where spawnbot Squad { NoWaitForFormation 1 // Prevents squad leader from waiting for squad members TFBot { Template T_TFBot_Soldier_Extended_Concheror Skill Hard Item "the direct hit" ClassIcon soldier_directhit_conch_lite Tag "focus" CharacterAttributes { "deploy time increased" 0.5 } } TFBot { Class Soldier Skill Normal Tag "focus" } } } WaveSpawn { Name wave4b WaitForAllDead wave4a TotalCurrency 100 TotalCount 16 MaxActive 8 SpawnCount 4 WaitBeforeStarting 10 WaitBetweenSpawns 10 Where spawnbot_left Where spawnbot_right TFBot { Template T_TFBot_Heavy_IronFist_Airblast ClassIcon heavy_steelfist_pusher Tag "default" } } WaveSpawn { Name wave4c WaitForAllSpawned wave4b TotalCurrency 100 TotalCount 3 MaxActive 3 SpawnCount 3 WaitBeforeStarting 0 Where spawnbot_left Squad { TFBot { Template T_TFBot_Giant_Heavyweapons_Natascha ClassIcon heavy_natascha_nys Name "Giant Natascha Heavy" MaxVisionRange 1200 Tag "default" ItemAttributes { ItemName "Natascha" "damage penalty" 1 "damage bonus" 1.25 } } TFBot { Template T_TFBot_Medic_Kritz } TFBot { Template T_TFBot_Medic_Kritz } } } WaveSpawn { Name wave4c WaitForAllSpawned wave4b TotalCurrency 100 TotalCount 3 MaxActive 3 SpawnCount 3 WaitBeforeStarting 15 Where spawnbot_right Squad { TFBot { Template T_TFBot_Giant_Heavyweapons_Natascha ClassIcon heavy_natascha_nys Name "Giant Natascha Heavy" Tag "default" MaxVisionRange 1200 ItemAttributes { ItemName "Natascha" "damage penalty" 1 "damage bonus" 1.25 } } TFBot { Template T_TFBot_Medic_Kritz } TFBot { Template T_TFBot_Medic_Kritz } } } WaveSpawn { Name wave4c WaitForAllSpawned wave4b TotalCurrency 50 TotalCount 10 MaxActive 10 SpawnCount 10 WaitBeforeStarting 15 Where spawnbot_right TFBot { Class Soldier Skill Normal Tag "focus" } } } //Wave 5 //Total Money: $800, $900 with bonus from A+ rating Wave { StartWaveOutput { Target wave_start_relay Action Trigger } InitWaveOutput //loads custom tank scripts { Target gamerules Action RunScriptCode Param " IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/tankdozer`, getroottable()) TankExt.StartingPathNames([ `boss_path_lb_1` `boss_path_la_1` `boss_path_ra_1` `boss_path_rb_1` ]) TankExt.SetValueOverrides({ TANKDOZER_SENTRY_HEALTH = 4000 TANKDOZER_SENTRY_DEFAULTUPGRADE = 1 }) " } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name wave5a TotalCurrency 100 TotalCount 30 MaxActive 12 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 0.5 Where spawnbot_right Squad { TFBot { Class Pyro Name "Backburner Pyro" Skill Expert Item "the backburner" ClassIcon pyro_backburner_nys ItemAttributes { ItemName "the backburner" "airblast disabled" 1 } Tag "default" } TFBot { Template T_TFBot_Medic_QuickUber Name "Quick Uber Medic" Item "Prussian Pickelhaube" } } } WaveSpawn { Name wave5a TotalCurrency 100 TotalCount 3 MaxActive 3 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 12 Where spawnbot_left TFBot { Template T_TFBot_Giant_Scout MaxVisionRange 1200 Item "Upgradeable tf_weapon_scattergun" Tag "default" ItemAttributes { ItemName "Upgradeable tf_weapon_scattergun" "faster reload rate" -0.8 "fire rate penalty" 1.15 } CharacterAttributes { "mod weapon blocks healing" 1 } } } WaveSpawn { Name wave5b WaitForAllSpawned wave5a TotalCurrency 50 TotalCount 3 MaxActive 3 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 15 Where spawnbot_left TFBot { Template T_TFBot_Giant_Soldier_Extended_Battalion ClassIcon soldier_infinite_backup Name "Giant Rapid Backup Soldier" Tag "default" ItemAttributes { ItemName "TF_WEAPON_ROCKETLAUNCHER" "faster reload rate" -0.8 "fire rate bonus" 0.5 "Projectile speed increased" 0.65 } CharacterAttributes { "deploy time increased" 0.5 } } } WaveSpawn { Name wave5b WaitForAllSpawned wave5a TotalCurrency 50 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 10 Where spawnbot_left TFBot { Template T_TFBot_Giant_Soldier_Extended_Battalion ClassIcon soldier_infinite_backup Name "Giant Rapid Backup Soldier" Tag "default" ItemAttributes { ItemName "TF_WEAPON_ROCKETLAUNCHER" "faster reload rate" -0.8 "fire rate bonus" 0.5 "Projectile speed increased" 0.65 } CharacterAttributes { "deploy time increased" 0.5 } } } WaveSpawn { Name wave5b WaitForAllSpawned wave5a TotalCurrency 50 TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 26 WaitBetweenSpawns 15 Where spawnbot_left TFBot { Template T_TFBot_Giant_Demo_Burst Name "Giant Burst Fire Demoman" Tag "default" } } WaveSpawn { Name wave5b WaitForAllSpawned wave5a TotalCurrency 50 TotalCount 30 MaxActive 8 SpawnCount 2 WaitBeforeStarting 15 WaitBetweenSpawns 0.5 Where spawnbot_left TFBot { //based from Cataclysm, Coaltown Expert mission Template T_TFBot_Sniper_Huntsman ClassIcon sniper_bow_multi Name "Quick Draw Bowman" Item "the fruit shoot" Attributes AlwaysCrit ItemAttributes { ItemName "The Huntsman" "damage penalty" 0.075 "faster reload rate" 0.4 } } } WaveSpawn { Name wave5ctank WaitForAllSpawned wave5b TotalCount 1 SpawnCount 1 WaitBeforeStarting 15 TotalCurrency 100 Tank { Health 32000 Speed 60 Name "tankdozer" ClassIcon tankdozer_lite_sentry StartingPathTrackNode "boss_path_rb_1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFA Tankdozer has been deployed with 32k health!`) ClientPrint(null,3,`\x0799CCFFHINT: Its sentry gun and armor can be destroyed with enough firepower!`) ClientPrint(null,3,`\x0799CCFFSentry Gun HP: 4000`) " } } WaveSpawn { Name wave5c WaitForAllSpawned wave5b TotalCurrency 100 TotalCount 2 MaxActive 2 SpawnCount 2 WaitBeforeStarting 25 Where spawnbot_right TFBot { Template T_TFBot_Giant_Scout MaxVisionRange 1200 Item "Upgradeable tf_weapon_scattergun" Tag "default" ItemAttributes { ItemName "Upgradeable tf_weapon_scattergun" "faster reload rate" -0.8 "fire rate penalty" 1.15 } CharacterAttributes { "mod weapon blocks healing" 1 } } } WaveSpawn { Name wave5c WaitForAllSpawned wave5b TotalCurrency 50 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 35 Where spawnbot_left TFBot { Template T_TFBot_Giant_Soldier_Extended_Battalion ClassIcon soldier_infinite_backup Name "Giant Rapid Backup Soldier" Tag "default" ItemAttributes { ItemName "TF_WEAPON_ROCKETLAUNCHER" "faster reload rate" -0.8 "fire rate bonus" 0.5 "Projectile speed increased" 0.65 } CharacterAttributes { "deploy time increased" 0.5 } } } WaveSpawn { Name wave5support WaitForAllSpawned wave5ctank TotalCurrency 50 TotalCount 40 MaxActive 8 SpawnCount 4 WaitBeforeStarting 5 WaitBetweenSpawns 8 Where spawnbot_all Support 1 RandomChoice { TFBot { Class Heavyweapons Skill Easy Name "Heavy" } TFBot { Class Heavyweapons Skill Easy Name "Heavy" } TFBot { Class Heavyweapons Skill Easy Name "Heavy" } TFBot { Class Heavyweapons Skill Normal Name "Heavy" } } } } //Wave 6 //Total Money: $1000, $1100 with bonus from A+ rating Wave { StartWaveOutput { Target wave_start_relay Action Trigger } InitWaveOutput //loads custom tank scripts { Target gamerules Action RunScriptCode Param " IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/ubertank`, getroottable()) TankExt.StartingPathNames([ `boss_path_lb_1` `boss_path_la_1` `boss_path_ra_1` `boss_path_rb_1` ]) " } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name wave6a TotalCurrency 100 TotalCount 4 MaxActive 4 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 15 Where spawnbot_left TFBot { //Full damage Giant Black Box Soldier but reduced heal on hit and faster reload Class Soldier ClassIcon soldier_blackbox_lite_giant Name "Giant Crit Heal Soldier" Health 4200 Item "The Black Box" Skill Expert Attributes MiniBoss WeaponRestrictions PrimaryOnly Attributes HoldFireUntilFullReload Attributes AlwaysCrit Tag "default" ItemAttributes { ItemName "The Black Box" "fire rate bonus" 0.001 "clip size upgrade atomic" 0 "faster reload rate" 1.4 "blast radius increased" 1.25 "Projectile speed increased" 0.9 "projectile spread angle penalty" 4 "heal on hit for rapidfire" 250 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 "override footstep sound set" 3 } } } WaveSpawn { Name wave6a TotalCurrency 100 TotalCount 8 MaxActive 4 SpawnCount 2 WaitBeforeStarting 1 WaitBetweenSpawns 15 Where spawnbot_right TFBot { Template T_TFBot_Giant_Demoman Item "The Tide Turner" ClassIcon demo_infinite Tag "default" } } WaveSpawn { Name wave6a TotalCurrency 100 TotalCount 28 MaxActive 8 SpawnCount 4 WaitBeforeStarting 1 WaitBetweenSpawns 3 Where spawnbot TFBot { Name "Bonk Scatter Scout" Class Scout Skill Easy Item "Bonk! Atomic Punch" Item "Bonk Helm" ClassIcon scout_bonk_scatter_nys2 CharacterAttributes { "deploy time increased" 0.5 } } } WaveSpawn { Name wave6a2 TotalCount 1 SpawnCount 1 WaitBeforeStarting 30 TotalCurrency 100 Tank { Health 15000 Speed 75 Name "ubertank|0|-1" ClassIcon tank_uber_lite StartingPathTrackNode "boss_path_lb_1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name wave6a2 TotalCount 1 SpawnCount 1 WaitBeforeStarting 31 TotalCurrency 100 Tank { Health 15000 Speed 75 Name "ubertank|0|-1" ClassIcon tank_uber_lite StartingPathTrackNode "boss_path_rb_1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFTwo Uber Tanks have been deployed with 15k health EACH!`) ClientPrint(null,3,`\x0799CCFFHINT: Destroy all following robots to deactivate the tanks' Uber!`) ClientPrint(null,3,`\x0799CCFFBonk Scouts, Giant Soldiers and Demomen`) " } } WaveSpawn //Dummy wavespawn used to trigger Uber deactivation when first subwave is all destroyed { WaitForAllDead wave6a Support Limited FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " EntFire(`ubertank*`,`CallScriptFunction`,`ToggleUber`) " } } WaveSpawn { Name wave6b WaitForAllSpawned wave6a TotalCurrency 100 TotalCount 35 MaxActive 10 SpawnCount 5 WaitBeforeStarting 20 WaitBetweenSpawns 5 Where spawnbot_all TFBot { Template T_TFBot_Soldier_Extended_Buff_Banner Skill Hard Item "the direct hit" ClassIcon soldier_directhit_buff_lite Tag "default" CharacterAttributes { "deploy time increased" 0.5 } } } WaveSpawn { Name wave6b WaitForAllSpawned wave6a TotalCurrency 100 TotalCount 28 MaxActive 8 SpawnCount 4 WaitBeforeStarting 20 WaitBetweenSpawns 5 Where spawnbot_all TFBot { Template T_TFBot_Soldier_Extended_Concheror Skill Hard Item "the direct hit" ClassIcon soldier_directhit_conch_lite Tag "default" CharacterAttributes { "deploy time increased" 0.5 } } } WaveSpawn { Name wave6b WaitForAllSpawned wave6a TotalCurrency 100 TotalCount 9 MaxActive 6 SpawnCount 3 WaitBeforeStarting 50 WaitBetweenSpawns 40 Where spawnbot_left Squad { TFBot { Template T_TFBot_Giant_Heavyweapons_RapidFire Tag "default" } TFBot { Template T_TFBot_Medic_QuickUber Name "Quick Uber Medic" Item "Prussian Pickelhaube" } TFBot { Template T_TFBot_Medic_QuickUber Name "Quick Uber Medic" Item "Prussian Pickelhaube" } } } WaveSpawn { Name wave6b WaitForAllSpawned wave6a TotalCurrency 100 TotalCount 6 MaxActive 6 SpawnCount 3 WaitBeforeStarting 100 WaitBetweenSpawns 40 Where spawnbot_right Squad { TFBot { Template T_TFBot_Giant_Heavyweapons_RapidFire Tag "default" } TFBot { Template T_TFBot_Medic_QuickUber Name "Quick Uber Medic" Item "Prussian Pickelhaube" } TFBot { Template T_TFBot_Medic_QuickUber Name "Quick Uber Medic" Item "Prussian Pickelhaube" } } } WaveSpawn { Name wave6b2 WaitForAllSpawned wave6b TotalCurrency 100 TotalCount 8 MaxActive 8 SpawnCount 8 WaitBeforeStarting 0 Where spawnbot_all TFBot { Template T_TFBot_Soldier_Extended_Concheror Skill Hard Item "the direct hit" ClassIcon soldier_directhit_conch_lite Tag "default" CharacterAttributes { "deploy time increased" 0.5 } } } } //Wave 7 //Total Money: $700, $800 with bonus from A+ rating Wave { StartWaveOutput { Target wave_start_relay Action Trigger } InitWaveOutput //loads custom tank scripts { Target gamerules Action RunScriptCode Param " IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/hammertank`, getroottable()) IncludeScript(`tankextensions/teletank`, getroottable()) IncludeScript(`tankextensions/stickytank`, getroottable()) TankExt.StartingPathNames([ `boss_path_lb_1` `boss_path_la_1` `boss_path_ra_1` `boss_path_rb_1` ]) TankExt.SetValueOverrides({ TELETANK_UBER_DURATION_MULT = 0.6 }) " } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name wave7a TotalCount 1 SpawnCount 1 WaitBeforeStarting 15 TotalCurrency 200 Tank { Health 27500 Speed 75 Name "hammertank" ClassIcon tank_mallet StartingPathTrackNode "boss_path_rb_1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFA Hammer Tank has been deployed with 27.5k health!`) " } } WaveSpawn { Name wave7a TotalCount 1 SpawnCount 1 WaitBeforeStarting 25 TotalCurrency 100 Tank { Health 25000 Speed 75 Name "stickytank" ClassIcon tank_sticky_hellmet StartingPathTrackNode "boss_path_rb_1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFA Stickybomb Tank has been deployed with 25k health!`) " } } WaveSpawn { Name wave7a TotalCount 1 SpawnCount 1 WaitBeforeStarting 35 TotalCurrency 100 Tank { Health 25000 Speed 75 Name "teletank" ClassIcon tank_tele StartingPathTrackNode "boss_path_rb_1" Skin 1 OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFA Teleporter Tank has been deployed with 25k health!`) " } } WaveSpawn { Name wave7a TotalCurrency 100 TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 65 WaitBetweenSpawns 35 Where spawnbot TFBot { Template T_TFBot_Giant_Soldier_Spammer_Reload Name "Giant Burst Stun Soldier" Health 4200 ClassIcon soldier_stun_spammer ItemAttributes { ItemName "TF_WEAPON_ROCKETLAUNCHER" "faster reload rate" 0.4 "rocket specialist" 4 } Tag "bot_teletank" Tag "default" } } WaveSpawn { Name wave7a TotalCurrency 100 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 112 Where spawnbot TFBot { Template T_TFBot_Giant_Soldier_SlowBarrage Health 4200 Attributes AlwaysCrit ClassIcon soldier_barrage_infinite ItemAttributes { ItemName "TF_WEAPON_ROCKETLAUNCHER" "faster reload rate" -1 "blast dmg to self increased" 0 "killstreak tier" 1 } Tag "bot_teletank" Tag "default" } } WaveSpawn { Name wave7support TotalCurrency 50 TotalCount 30 MaxActive 4 SpawnCount 4 WaitBeforeStarting 0 WaitBetweenSpawns 15 Support 1 Where spawnbot_all TFBot { Class Soldier Skill Normal Attributes AlwaysCrit Item "The Liberty Launcher" Tag "bot_teletank" Name "Liberty Soldier" Tag "flanker" } } WaveSpawn { Name wave7support TotalCurrency 50 TotalCount 30 MaxActive 8 SpawnCount 4 WaitBeforeStarting 1 WaitBetweenSpawns 12 Support 1 Where spawnbot_all RandomChoice { TFBot { Class Pyro Name "Backburner Pyro" Skill Easy Item "the backburner" ClassIcon pyro_backburner_nys Tag "bot_teletank" } TFBot { Name "Samurai Demoknight" Class Demoman Skill Hard WeaponRestrictions MeleeOnly ClassIcon demoknight_samurai Item "ali baba's wee booties" Item "The Tide Turner" Item "The Half-Zatoichi" Item "Demo Kabuto" Item "The Menpo" Tag "bot_teletank" ItemAttributes { ItemName "The Tide Turner" "attack not cancel charge" 1 } } } } } }