// Expert "Defense of the Workers" // Made by Haniday (https://steamcommunity.com/id/Haniday/) #base robot_haniday_v.pop //spawnbot //spawnbot_left //spawnbot_right //spawnbot_lower //spawnbot_mission_spy //spawnbot_mission_sniper WaveSchedule { StartingCurrency 800 RespawnWaveTime 6 FixedRespawnWaveTime 1 Advanced 1 CanBotsAttackWhileInSpawnRoom no Templates { T_TFBot_Chief_Demoman_Beanie // Final wave boss { Name "Bomb Beanie" Health 42000 Class Demoman Skill Expert Scale 1.8 CharacterAttributes { "move speed penalty" 0.5 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.3 "override footstep sound set" 2 "airblast vertical vulnerability multiplier" 0.1 "rage giving scale" 0.1 } Attributes MiniBoss Attributes AlwaysCrit Attributes UseBossHealthBar WeaponRestrictions SecondaryOnly ClassIcon demo_sticky_daan Item "Bomb Beanie" ItemAttributes { ItemName "Bomb Beanie" "attach particle effect" 45 } ItemAttributes { ItemName "TF_WEAPON_GRENADELAUNCHER" "is_passive_weapon" 1 "override projectile type" 27 } ItemAttributes { ItemName "TF_WEAPON_PIPEBOMBLAUNCHER" "stickybomb charge rate" 0.001 "projectile range increased" 0.35 "reload time decreased" -0.8 "fire rate penalty" 1.1 "max pipebombs decreased" -7 } } } Mission // Sentry Buster { Objective "DestroySentries" BeginAtWave 1 Where spawnbot InitialCooldown 40 // 20 CooldownTime 30 // 20 TFBot { Template T_TFBot_SentryBuster } } Mission // Sniper #1 { Objective "Sniper" BeginAtWave 1 RunForThisManyWaves 1 Where spawnbot_mission_sniper InitialCooldown 100 CooldownTime 60 DesiredCount 4 TFBot { Template T_TFBot_Sniper_Sydney_Sleeper } } Mission // Sniper #2 { Objective "Sniper" BeginAtWave 5 RunForThisManyWaves 1 Where spawnbot_mission_sniper InitialCooldown 40 CooldownTime 40 DesiredCount 4 TFBot { Template T_TFBot_Sniper Skill Expert } } Mission // Spy #1 { Objective "Spy" BeginAtWave 2 RunForThisManyWaves 1 Where spawnbot_mission_spy InitialCooldown 60 CooldownTime 60 DesiredCount 4 TFBot { Template T_TFBot_Spy } } Mission // Spy #2 { Objective "Spy" BeginAtWave 5 RunForThisManyWaves 1 Where spawnbot_mission_spy InitialCooldown 60 CooldownTime 60 DesiredCount 2 TFBot { Template T_TFBot_Spy } } Wave // Wave 1: 900$ { StartWaveOutput { Target bombpath_arrows_clear_relay_ironman Action Trigger } DoneOutput { Target bombpath_wavefinished Action Trigger } WaveSpawn // W1_S1a: Pyros, 2 every 15s, 4 max, 20 total. { TotalCurrency 100 Name "W1_S1a" // "W1_Support1" Where spawnbot_left Where spawnbot_lower TotalCount 20 MaxActive 4 SpawnCount 2 //Support 1 WaitBetweenSpawns 15 TFBot { Template T_TFBot_Pyro Skill Easy } } WaveSpawn // W1_S1b: Soldiers, 3 every 6s, 6 max, 12 total. { TotalCurrency 50 Name "W1_S1b" Where spawnbot_left Where spawnbot_right TotalCount 12 MaxActive 6 SpawnCount 3 WaitBeforeStarting 10 WaitBetweenSpawns 6 TFBot { Template T_TFBot_Soldier Skill Easy } } WaveSpawn // W1_S1c: 10 Soldiers Mob, 10 total. { TotalCurrency 100 Name "W1_S1c" Where spawnbot_left Where spawnbot_right TotalCount 10 MaxActive 10 SpawnCount 5 WaitForAllDead "W1_S1b" WaitBeforeStarting 5 //WaitBetweenSpawns 2 TFBot { Template T_TFBot_Soldier BehaviorModifiers Push } } WaveSpawn // W1_S2a: Giant Rapid Fire Demomen, 2 max, 2 total. { TotalCurrency 250 Name "W1_S2a" Where spawnbot_left //Where spawnbot_right TotalCount 2 MaxActive 2 SpawnCount 2 // 1 WaitForAllDead "W1_S1c" WaitBeforeStarting 12 //WaitBetweenSpawns 2 TFBot { Template T_TFBot_Giant_Demoman_Spammer_Type2 } } WaveSpawn // W1_S2b: Soldiers Squad, spawns 4 bots with a 2s delay. { TotalCurrency 50 Name "W1_S2b" Where spawnbot_left Where spawnbot_right TotalCount 8 MaxActive 8 SpawnCount 4 WaitForAllSpawned "W1_S2a" WaitBeforeStarting 2 WaitBetweenSpawns 2 Squad { ShouldPreserveSquad 1 TFBot { Template T_TFBot_Soldier Skill Easy } TFBot { Template T_TFBot_Soldier Skill Easy } TFBot { Template T_TFBot_Soldier Skill Easy } TFBot { Template T_TFBot_Soldier Skill Easy } } } WaveSpawn // W1_Support1: Hyper League Scouts, 1 every 1s, 8 max, Support { TotalCurrency 100 Name "W1_Support1" // "W1_Support2" Where spawnbot_left Where spawnbot_right //Where spawnbot_lower //Where spawnbot TotalCount 10 MaxActive 8 SpawnCount 1 Support 1 WaitForAllDead "W1_S2a" WaitBeforeStarting 12 WaitBetweenSpawns 1 TFBot { Template T_TFBot_Scout_Sandman_FastCharge } } WaveSpawn // W1_S2c: Giant Rapid Fire Demomen, 2 max, 2 total. { TotalCurrency 250 Name "W1_S2c" Where spawnbot_right TotalCount 2 MaxActive 2 SpawnCount 2 WaitForAllDead "W1_S2a" WaitBeforeStarting 20 TFBot { Template T_TFBot_Giant_Demoman_Spammer_Type2 } } } Wave // Wave 2: 1000$ { StartWaveOutput { Target bombpath_arrows_clear_relay_ironman Action Trigger } DoneOutput { Target bombpath_wavefinished Action Trigger } WaveSpawn // W2_S1a: Conch Soldier + Scouts Squad, 4 every 3s, 16 max, 24 total. { TotalCurrency 150 Name "W2_S1a" Where spawnbot_left Where spawnbot_right TotalCount 24 MaxActive 16 SpawnCount 4 WaitBeforeStarting 10 WaitBetweenSpawns 3 Squad { TFBot { Template T_TFBot_Soldier_Extended_Concheror } TFBot { Template T_TFBot_Scout Tag bot_squad_member } TFBot { Template T_TFBot_Scout Tag bot_squad_member } TFBot { Template T_TFBot_Scout Tag bot_squad_member } } } WaveSpawn // W2_S2a: Tank 18K HP, left side { TotalCurrency 100 Name "W2_S2a" TotalCount 1 MaxActive 1 SpawnCount 1 WaitForAllDead "W2_S1a" Tank { Name "W1_tank_left" Health 18000 StartingPathTrackNode "boss_path_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn // W2_S2b: Tank 18K HP, right side { TotalCurrency 100 Name "W2_S2b" TotalCount 1 MaxActive 1 SpawnCount 1 WaitForAllDead "W2_S1a" Tank { Name "W1_tank_right" Health 18000 StartingPathTrackNode "boss_path2_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn // W2_S2c: Soldier Mob, 16 total. { TotalCurrency 100 Name "W2_S2c" Where spawnbot_left Where spawnbot_right TotalCount 16 // 10 MaxActive 16 // 10 SpawnCount 8 // 5 WaitForAllSpawned "W2_S2b" WaitBeforeStarting 15 TFBot { Template T_TFBot_Soldier BehaviorModifiers Push //Skill Easy //Tag nav_prefer_flank_left } } WaveSpawn // W2_S3a: Huntsmen + Scouts Squad, 3 every 3s, 12 max, 48 total. { TotalCurrency 250 Name "W2_S3a" Where spawnbot_left Where spawnbot_right TotalCount 48 MaxActive 12 SpawnCount 3 WaitForAllDead "W2_S2c" WaitBeforeStarting 20 WaitBetweenSpawns 3 Squad { TFBot { Template T_TFBot_Sniper_Huntsman } TFBot { Template T_TFBot_Scout Tag bot_squad_member } TFBot { Template T_TFBot_Scout Tag bot_squad_member } } } WaveSpawn // W2_S3b: Giant Pyros, 2 every 10s, 4 max, 8 total. { TotalCurrency 300 Name "W2_S3b" Where spawnbot_left Where spawnbot_right TotalCount 8 MaxActive 4 SpawnCount 2 WaitForAllDead "W2_S2c" WaitBeforeStarting 40 WaitBetweenSpawns 10 //Squad TFBot { Template T_TFBot_Giant_Pyro } } } Wave // Wave 3: 1050$ { StartWaveOutput { Target bombpath_arrows_clear_relay_ironman Action Trigger } DoneOutput { Target bombpath_wavefinished Action Trigger } WaveSpawn // W3_S1a: Spies, 2 every 5s, 6 max, 24 total. { TotalCurrency 100 Name "W3_S1a" Where spawnbot_mission_spy TotalCount 24 MaxActive 6 SpawnCount 2 Support Limited WaitBeforeStarting 12 WaitBetweenSpawns 2 TFBot { Template T_TFBot_Spy } } WaveSpawn // W3_S1b: Soldiers + Quick-Fix Medics, 4 every 8s, 8 max, 24 total. { TotalCurrency 150 Name "W3_S1b" Where spawnbot_left Where spawnbot_right TotalCount 24 MaxActive 8 SpawnCount 4 WaitBetweenSpawns 8 Squad { TFBot { Template T_TFBot_Soldier Skill Hard } TFBot { Template T_TFBot_Medic_QuickFix } } } WaveSpawn // W3_S1c: Heavies, 2 every 3s, 4 max, 20 total. { TotalCurrency 50 Name "W3_S1c" Where spawnbot_left Where spawnbot_right TotalCount 20 MaxActive 4 SpawnCount 2 WaitBetweenSpawns 3 TFBot { Template T_TFBot_Heavyweapons } } WaveSpawn // W3_S2a: Crit Bat Scouts, 2 every 1s, 8 max, 40 total. { TotalCurrency 150 Name "W3_S2a" Where spawnbot_left Where spawnbot_right Where spawnbot_lower TotalCount 40 MaxActive 8 SpawnCount 2 WaitForAllDead "W3_S1b" WaitBeforeStarting 20 WaitBetweenSpawns 1 TFBot { Template T_TFBot_Scout_Melee Attributes AlwaysCrit } } WaveSpawn // W3_S2b: Pyros, 2 every 3s, 6 max, 30 total. { TotalCurrency 150 Name "W3_S2b" Where spawnbot_left Where spawnbot_right TotalCount 30 MaxActive 6 SpawnCount 2 WaitForAllDead "W3_S1b" WaitBeforeStarting 20 WaitBetweenSpawns 3 TFBot { Template T_TFBot_Pyro } } WaveSpawn // W3_S3a: Giant Deflector Heavy + Quick-Fix Medic + Crit Soldiers, 4 every 20s, 8 max, 16 total. { TotalCurrency 450 Name "W3_S3a" Where spawnbot_left Where spawnbot_right TotalCount 16 MaxActive 8 SpawnCount 4 WaitForAllDead "W3_S1b" WaitBeforeStarting 40 WaitBetweenSpawns 20 Squad { ShouldPreserveSquad 1 TFBot { Template T_TFBot_Giant_Heavyweapons_Deflector } TFBot { Template T_TFBot_Soldier_Crit ItemAttributes { ItemName "TF_WEAPON_ROCKETLAUNCHER" "damage bonus" 1.0 "reload time decreased" -0.8 "fire rate bonus" 0.6 } } TFBot { Template T_TFBot_Soldier_Crit ItemAttributes { ItemName "TF_WEAPON_ROCKETLAUNCHER" "damage bonus" 1.0 "reload time decreased" -0.8 "fire rate bonus" 0.6 } } TFBot { Template T_TFBot_Medic_QuickFix_BigHeal } } } } Wave // Wave 4: 1050$ { StartWaveOutput { Target bombpath_arrows_clear_relay_ironman Action Trigger } DoneOutput { Target bombpath_wavefinished Action Trigger } WaveSpawn // W4_Support1: Heavies, 2 every 2s, 4 max, Support. { TotalCurrency 100 Name "W4_Support1" Where spawnbot_left Where spawnbot_right TotalCount 10 MaxActive 4 SpawnCount 2 Support 1 WaitBetweenSpawns 2 Squad { FormationSize 1000 TFBot { Template T_TFBot_Heavyweapons Skill Easy } TFBot { Template T_TFBot_Heavyweapons Skill Easy } } } WaveSpawn // W4_Support2: Bat Scouts or Baseball Scouts, 2 every 2s, 4 max, Support. { TotalCurrency 100 Name "W4_Support2" Where spawnbot_left Where spawnbot_right TotalCount 10 MaxActive 4 SpawnCount 2 Support 1 WaitBeforeStarting 10 WaitBetweenSpawns 2 RandomChoice { TFBot { Template T_TFBot_Scout_Melee SKill Hard } TFBot { Template T_TFBot_Scout_Sandman_FastCharge //Attributes AlwaysCrit } } } WaveSpawn // W4_Support3: Quick-Fix Medics or Pyros, 2 every 2s, 4 max, Support. { TotalCurrency 100 Name "W4_Support3" Where spawnbot_left Where spawnbot_right TotalCount 10 MaxActive 4 SpawnCount 2 Support 1 WaitBeforeStarting 20 WaitBetweenSpawns 2 RandomChoice { TFBot { Template T_TFBot_Medic_QuickFix // T_TFBot_Medic_QuickFix_BigHeal } TFBot { Template T_TFBot_Pyro Skill Easy } } } // 12 MaxActive support robots WaveSpawn // W4_S1a: Giant Super Scout, 1 every 4s, 6 max, 12 total. { TotalCurrency 200 Name "W4_S1a" Where spawnbot_left Where spawnbot_right TotalCount 12 MaxActive 6 SpawnCount 1 WaitBeforeStarting 50 WaitBetweenSpawns 4 TFBot { Template T_TFBot_Giant_Scout_Fast } } WaveSpawn // W4_S2a: Giant Charged Soldier + Uber Medic, 2 every 10s, 4 max, 8 total. { TotalCurrency 200 Name "W4_S2a" Where spawnbot_left Where spawnbot_right TotalCount 8 MaxActive 4 SpawnCount 2 WaitForAllDead "W4_S1a" WaitBeforeStarting 20 WaitBetweenSpawns 10 Squad { TFBot { Template T_TFBot_Giant_Soldier_Charged ItemAttributes { ItemName "The Original" "damage bonus" 1.5 "reload time decreased" 0.2 "fire rate penalty" 2.0 "Projectile speed decreased" 0.5 } } TFBot { Template T_TFBot_Medic_Uber CharacterAttributes { "bot medic uber health threshold" 100 } } } } WaveSpawn // W4_S3a: Giant Charged Soldier Squad, 2 every 5s, 6 max, 12 total. { TotalCurrency 350 Name "W4_S3a" Where spawnbot_left Where spawnbot_right TotalCount 12 MaxActive 6 SpawnCount 2 WaitForAllDead "W4_S2a" WaitBeforeStarting 20 WaitBetweenSpawns 5 Squad { TFBot { Template T_TFBot_Giant_Soldier_Charged ItemAttributes { ItemName "The Original" "damage bonus" 1.5 "reload time decreased" 0.2 "fire rate penalty" 2.0 "Projectile speed decreased" 0.5 } } TFBot { Template T_TFBot_Giant_Soldier_Charged ItemAttributes { ItemName "The Original" "damage bonus" 1.5 "reload time decreased" 0.2 "fire rate penalty" 2.0 "Projectile speed decreased" 0.5 } } } } } Wave // Wave 5: 1100$ { StartWaveOutput { Target bombpath_arrows_clear_relay_ironman Action Trigger } DoneOutput { Target bombpath_wavefinished Action Trigger } WaveSpawn // W5_Support1: Bat Scouts, 2 every 1s, 6 max, Support. { Name "W5_Support1" Where spawnbot_left Where spawnbot_right TotalCount 10 MaxActive 6 SpawnCount 2 Support 1 WaitBetweenSpawns 1 TFBot { Template T_TFBot_Scout_Melee } } WaveSpawn // W5_S1a: Chief Bomb Beanie { TotalCurrency 1100 Name "W5_S1a" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 20 TFBot { Template T_TFBot_Chief_Demoman_Beanie } } } }