// Advanced "Bot Beating" // Made by Haniday (https://steamcommunity.com/id/Haniday/) #base robot_haniday_v.pop //spawnbot //spawnbot_invasion //spawnbot_main //spawnbot_mission_sentrybuster //spawnbot_mission_sniper //spawnbot_mission_sniper_tertiary //spawnbot_mission_spy //spawnbot_secondary //spawnbot_tertiary WaveSchedule { StartingCurrency 1200 RespawnWaveTime 6 Advanced 1 CanBotsAttackWhileInSpawnRoom no Templates // Randly decided to add custom bots { T_TFBot_Soldier_Crit_Type2 { Template T_TFBot_Soldier_Crit ItemAttributes { ItemName "TF_WEAPON_ROCKETLAUNCHER" "damage bonus" 1.0 // 2.0 "reload time decreased" -0.8 "fire rate bonus" 0.6 } } T_TFBot_Soldier_Cowmangler { Name "Soldier" Class Soldier Skill Hard WeaponRestrictions PrimaryOnly ClassIcon soldier_cowmangler // Custom icon Item "The Cow Mangler 5000" Item "Lord Cockswain's Pith Helmet" } T_TFBot_Soldier_Cowmangler_Support { Template T_TFBot_Soldier_Cowmangler Skill Expert MaxVisionRange 4500 ItemAttributes { ItemName "The Cow Mangler 5000" "reload time decreased" -1.0 } } T_TFBot_Scout_FanOWar { Template T_TFBot_Scout_Melee Name "Fan-O-War Scout" ClassIcon scout_fanowar // Custom icon Item "The Fan O'War" } T_TFBot_Giant_Scout_Bleeding { Template T_TFBot_Giant_Scout Name "Boston Basher Scout" WeaponRestrictions MeleeOnly ClassIcon scout_basher_lite Item "Ye Oiled Baker Boy" Item "The Boston Basher" ItemAttributes { ItemName "The Boston Basher" "hit self on miss" 0 "bleeding duration" 15 "melee range multiplier" 1.2 } } T_TFBot_Chief_Heavyweapons_Boxing { Name "Super Heavyweight Champ" Health 30000 Class Heavyweapons Skill Expert Scale 1.8 CharacterAttributes { "health regen" 50 // 100 "move speed penalty" 0.5 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.3 "airblast vertical vulnerability multiplier" 0.1 "override footstep sound set" 2 } Attributes MiniBoss Attributes UseBossHealthBar WeaponRestrictions MeleeOnly ClassIcon heavy_champ_giant Item "The Killing Gloves of Boxing" Item "Pugilist's Protector" ItemAttributes { ItemName "The Killing Gloves of Boxing" "fire rate bonus" 0.6 "damage bonus" 1.5 } } } Mission // Sentry Buster { Objective "DestroySentries" BeginAtWave 1 RunForThisManyWaves 4 Where spawnbot_mission_sentrybuster InitialCooldown 40 // 30 CooldownTime 30 // 20 TFBot { Template T_TFBot_SentryBuster } } Mission // Spy #1 { Objective "Spy" BeginAtWave 1 RunForThisManyWaves 1 Where spawnbot_mission_spy InitialCooldown 100 CooldownTime 60 DesiredCount 2 TFBot { Template T_TFBot_Spy } } Mission // Spy #2 { Objective "Spy" BeginAtWave 2 RunForThisManyWaves 1 Where spawnbot_mission_spy InitialCooldown 100 CooldownTime 60 DesiredCount 2 TFBot { Template T_TFBot_Spy } } //Mission // Spy #3 //{ // Objective "Spy" // BeginAtWave 5 // RunForThisManyWaves 1 // Where spawnbot_mission_spy // InitialCooldown 120 // CooldownTime 100 // DesiredCount 4 // TFBot // { // Template T_TFBot_Spy // } //} Mission // Engineer #1 { Objective "Engineer" BeginAtWave 2 RunForThisManyWaves 2 Where spawnbot InitialCooldown 90 CooldownTime 80 DesiredCount 2 TFBot { Template T_TFBot_Engineer_Sentry_Teleporter TeleportWhere spawnbot_main TeleportWhere spawnbot_invasion TeleportWhere spawnbot_mission_sentrybuster //TeleportWhere spawnbot_mission_spy } } Mission // Sniper #1 { Objective "Sniper" BeginAtWave 4 RunForThisManyWaves 1 Where spawnbot_mission_sniper Where spawnbot_mission_sniper_tertiary InitialCooldown 60 CooldownTime 60 DesiredCount 2 TFBot { Template T_TFBot_Soldier_Cowmangler_Support } } //Mission // Sniper #2 //{ // Objective "Sniper" // BeginAtWave 5 // RunForThisManyWaves 1 // Where spawnbot_mission_sniper // Where spawnbot_mission_sniper_tertiary // InitialCooldown 100 // CooldownTime 80 // DesiredCount 4 // TFBot // { // Template T_TFBot_Sniper // Skill Expert // } //} Wave // Wave 1: 1100$ { StartWaveOutput { Target wave_start_relay_1timedbomb //wave_start_relay_1timedbomb //wave_start_relay_2timedbomb //wave_start_relay_3timedbomb Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn // W1_S1a: Demomen Invasion, 16 max, 50 total { TotalCurrency 200 // 300 Name "W1_S1a" Where spawnbot_invasion RandomSpawn 1 TotalCount 50 // 60 MaxActive 16 SpawnCount 2 WaitBetweenSpawns 2 TFBot { Template T_TFBot_Demoman } } WaveSpawn // W1_S1b: Crit Bonk Scouts, 4 max, 20 total { TotalCurrency 50 Name "W1_S1b" Where spawnbot_tertiary TotalCount 20 MaxActive 4 SpawnCount 2 WaitBeforeStarting 10 WaitBetweenSpawns 5 TFBot { Template T_TFBot_Scout_Bonk Attributes AlwaysCrit } } WaveSpawn // W1_S2a: Giant Rapid Fire Demoman, 1 total { TotalCurrency 150 Name "W1_S2a" Where spawnbot_main RandomSpawn 1 TotalCount 1 WaitForAllDead "W1_S1a" WaitBeforeStarting 15 TFBot { Template T_TFBot_Giant_Demoman_Spammer } } WaveSpawn // W1_S2b: Soldiers + Extended Buff Banner Soldier, 12 max, 36 total { TotalCurrency 300 // 200 Name "W1_S2b" Where spawnbot_main RandomSpawn 1 TotalCount 36 MaxActive 12 // 15 SpawnCount 3 WaitForAllSpawned "W1_S2a" WaitBeforeStarting 8 WaitBetweenSpawns 5 Squad { TFBot { Template T_TFBot_Soldier_Extended_Buff_Banner } TFBot { Template T_TFBot_Soldier } TFBot { Template T_TFBot_Soldier } } } WaveSpawn // W1_S2c: Crit Bonk Scouts, 6 max, 20 total { TotalCurrency 200 Name "W1_S2c" Where spawnbot_tertiary TotalCount 20 MaxActive 6 SpawnCount 6 WaitForAllSpawned "W1_S2a" WaitBeforeStarting 15 WaitBetweenSpawns 5 TFBot { Template T_TFBot_Scout_Bonk Attributes AlwaysCrit } } WaveSpawn // W1_S3a: Giant Rapid Fire Demomen, 2 total { TotalCurrency 200 Name "W1_S3a" Where spawnbot TotalCount 2 WaitForAllDead "W1_S2a" WaitBeforeStarting 30 TFBot { Template T_TFBot_Giant_Demoman_Spammer_Type2 } } } Wave // Wave 2: 1000$ { StartWaveOutput { Target wave_start_relay_1timedbomb Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn // W2_S1a: Soldiers, 15 max, 40 total { TotalCurrency 150 Name "W2_S1a" Where spawnbot_main RandomSpawn 1 TotalCount 40 MaxActive 15 SpawnCount 5 WaitBetweenSpawns 2 TFBot { Template T_TFBot_Soldier } } WaveSpawn // W2_S1b: Tank 30K HP, 1 total { TotalCurrency 150 Name "W2_S1b" TotalCount 1 WaitBeforeStarting 20 Tank { Name "W2_tank1" Health 30000 StartingPathTrackNode "boss_path_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn // W2_S2a: Crit Giant Burst Fire Soldier + Giant Medic, 2 max, 4 total { TotalCurrency 100 // 200 Name "W2_S2a" Where spawnbot_tertiary Where spawnbot TotalCount 4 MaxActive 2 SpawnCount 2 WaitForAllSpawned "W2_S1a" WaitBeforeStarting 15 Squad { TFBot { Template T_TFBot_Giant_Soldier_BurstFire Attributes AlwaysCrit } TFBot { Template T_TFBot_Giant_Medic } } } WaveSpawn // W2_S2b: Tank 30K HP, 1 total { TotalCurrency 200 // 300 Name "W2_S2b" TotalCount 1 WaitForAllSpawned "W2_S2a" WaitBeforeStarting 10 Tank { Name "W2_tank2" Health 35000 StartingPathTrackNode "boss_path_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } // Honestly 3 different WaveSpawns works better than having a single RandomChoice WaveSpawn // W2_S3a: Scouts Invasion, 5 max, 30 total { TotalCurrency 100 Name "W2_S3a" Where spawnbot_invasion RandomSpawn 1 TotalCount 30 MaxActive 5 SpawnCount 5 WaitForAllSpawned "W2_S2b" WaitBeforeStarting 15 // 5 WaitBetweenSpawns 5 TFBot { Template T_TFBot_Scout Skill Easy } } WaveSpawn // W2_S3b: Soldiers Invasion, 5 max, 40 total { TotalCurrency 200 Name "W2_S3b" Where spawnbot_invasion RandomSpawn 1 TotalCount 40 MaxActive 5 SpawnCount 1 WaitForAllSpawned "W2_S2b" WaitBeforeStarting 18 // 8 WaitBetweenSpawns 1 TFBot { Template T_TFBot_Soldier } } WaveSpawn // W2_S3c: Huntsmen, 5 max, 30 total { TotalCurrency 100 Name "W2_S3c" Where spawnbot_invasion RandomSpawn 1 TotalCount 30 MaxActive 5 SpawnCount 5 WaitForAllSpawned "W2_S2b" WaitBeforeStarting 20 // 10 WaitBetweenSpawns 2 TFBot { Template T_TFBot_Sniper_Huntsman } } } Wave // Wave 3: 900$ { StartWaveOutput { Target wave_start_relay_1timedbomb Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn // W3_S1a: Pyros, 12 max, 24 total { TotalCurrency 50 Name "W3_S1a" Where spawnbot_main TotalCount 24 MaxActive 12 SpawnCount 2 WaitBetweenSpawns 2 TFBot { Template T_TFBot_Pyro Skill Easy } } WaveSpawn // W3_S1b: Pyros, 16 max, 22 total { TotalCurrency 50 Name "W3_S1b" Where spawnbot TotalCount 22 MaxActive 16 SpawnCount 16 WaitForAllDead "W3_S1a" WaitBeforeStarting 5 WaitBetweenSpawns 10 TFBot { Template T_TFBot_Pyro Skill Hard } } WaveSpawn // W3_S1c: Giant Heavy Heater + Über Medic, 4 total { TotalCurrency 200 Name "W3_S1c" Where spawnbot_main TotalCount 4 SpawnCount 2 WaitForAllSpawned "W3_S1b" WaitBetweenSpawns 15 Squad { TFBot { Template T_TFBot_Giant_Heavyweapons_Heater } TFBot { Template T_TFBot_Medic_Uber_Fast } } } WaveSpawn // W3_S2a: Pyros + Heavy, 12 max, 24 total { TotalCurrency 100 Name "W3_S2a" Where spawnbot_main TotalCount 24 MaxActive 12 SpawnCount 3 WaitForAllDead "W3_S1c" WaitBeforeStarting 10 WaitBetweenSpawns 3 Squad { TFBot { Template T_TFBot_Heavyweapons } TFBot { Template T_TFBot_Pyro } TFBot { Template T_TFBot_Pyro } } } WaveSpawn // W3_S2b: Giant Super Scouts, 3 max, 6 total { TotalCurrency 100 Name "W3_S2b" Where spawnbot Where spawnbot_secondary TotalCount 6 MaxActive 3 SpawnCount 3 WaitForAllSpawned "W3_S2a" WaitBeforeStarting 10 WaitBetweenSpawns 12 TFBot { Template T_TFBot_Giant_Scout_Fast } } WaveSpawn // W3_S3a: Heavies, 12 max, 24 total { TotalCurrency 100 Name "W3_S3a" Where spawnbot_main TotalCount 24 MaxActive 12 SpawnCount 2 WaitForAllSpawned "W3_S2b" WaitBetweenSpawns 2 TFBot { Template T_TFBot_Heavyweapons } } WaveSpawn // W3_S3b: Giant Heavy + Über Medic, 4 total { TotalCurrency 200 Name "W3_S3b" Where spawnbot_main TotalCount 4 SpawnCount 2 WaitForAllSpawned "W3_S2b" WaitBeforeStarting 10 WaitBetweenSpawns 15 Squad { TFBot { Template T_TFBot_Giant_Heavyweapons } TFBot { Template T_TFBot_Medic_Uber_Fast } } } WaveSpawn // W3_S3c: Giant Super Scouts, 3 total { TotalCurrency 100 Name "W3_S3c" Where spawnbot_secondary TotalCount 3 WaitForAllDead "W3_S3b" WaitBeforeStarting 10 WaitBetweenSpawns 2 TFBot { Template T_TFBot_Giant_Scout_Fast } } } Wave // Wave 4: 800$ { StartWaveOutput { Target wave_start_relay_1timedbomb Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn // W4_S1a: Direct Hit Soldiers + Buff Banner Soldier, 16 max, 32 total { TotalCurrency 100 Name "W4_S1a" Where spawnbot TotalCount 32 MaxActive 16 SpawnCount 4 WaitBetweenSpawns 3 Squad { TFBot { Template T_TFBot_Soldier_Extended_Buff_Banner } TFBot { Template T_TFBot_Soldier_DirectHit } TFBot { Template T_TFBot_Soldier_DirectHit } TFBot { Template T_TFBot_Soldier_DirectHit } } } WaveSpawn // W4_S1b: Bonk Scouts, 4 max, 8 total { TotalCurrency 50 Name "W4_S1b" Where spawnbot_tertiary TotalCount 8 MaxActive 4 SpawnCount 2 Support Limited WaitBeforeStarting 5 WaitBetweenSpawns 5 TFBot { Template T_TFBot_Scout_Bonk } } WaveSpawn // W4_S1c: Tank 40K HP, 1 total { TotalCurrency 150 Name "W4_S1c" TotalCount 1 WaitBeforeStarting 30 // 20 Tank { Name "W4_tank1" Health 40000 StartingPathTrackNode "boss_path_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn // W4_S2a: Crit Giant Deflector Heavy + Giant Medics, 3 max, 6 total { TotalCurrency 100 Name "W4_S2a" Where spawnbot TotalCount 6 MaxActive 3 SpawnCount 3 WaitForAllDead "W4_S1c" WaitBeforeStarting 20 // 10 Squad { TFBot { Template T_TFBot_Giant_Heavyweapons_Deflector Attributes AlwaysCrit } TFBot { Template T_TFBot_Giant_Medic } TFBot { Template T_TFBot_Giant_Medic } } } WaveSpawn // W4_S2b: Fan O'War Scouts, 12 max, 32 total { TotalCurrency 100 Name "W4_S2b" Where spawnbot_main RandomSpawn 1 TotalCount 32 MaxActive 12 SpawnCount 2 WaitForAllDead "W4_S1c" WaitBeforeStarting 13 WaitBetweenSpawns 2 TFBot { Template T_TFBot_Scout_FanOWar } } WaveSpawn // W4_S3a: Giant Bleading Scout, 2 max, 6 total { TotalCurrency 100 Name "W4_S3a" Where spawnbot Where spawnbot_tertiary TotalCount 6 MaxActive 2 SpawnCount 2 WaitForAllDead "W4_S2a" WaitBeforeStarting 10 WaitBetweenSpawns 20 TFBot { Template T_TFBot_Giant_Scout_Bleeding } } WaveSpawn // W4_S3b: Persian Demoknights, 6 max, 30 total { TotalCurrency 50 Name "W4_S3b" Where spawnbot_main RandomSpawn 1 TotalCount 30 MaxActive 6 SpawnCount 3 //Support 1 WaitForAllDead "W4_S2a" WaitBeforeStarting 15 WaitBetweenSpawns 2 TFBot { Template T_TFBot_Demoman_Knight_Type2 } } WaveSpawn // W4_S3c: ScorchShot Pyros, 6 max, Support { TotalCurrency 50 Name "W4_S3c" Where spawnbot_invasion RandomSpawn 1 TotalCount 10 MaxActive 6 SpawnCount 6 Support 1 WaitForAllDead "W4_S2b" WaitBeforeStarting 22 TFBot { Template T_TFBot_Pyro_ScorchShot // T_TFBot_Scout_Bonk } } WaveSpawn // W4_S4a: Giant Boxing Heavies, 2 total { TotalCurrency 100 // 200 Name "W4_S4a" Where spawnbot TotalCount 2 WaitForAllDead "W4_S3a" WaitBeforeStarting 10 WaitBetweenSpawns 30 TFBot { Template T_TFBot_Chief_Heavyweapons_Boxing } } } // TODO: Create a 5th wave when I'm feeling creative enough }