#base robot_giant.pop #base robot_standard.pop #base robot_pixelbitie.pop // w1: intro + tank // w2: giant + cola // w3: giant scouts // w4: milk tanks // w5: helicopter // w6: baseballs, engineer, homing, huntsmen // w7: combat tank (rocket + fire) // w8: everything, combat tank (homing rocket + laser), JOHN BASEBALL WaveSchedule { StartingCurrency 400 RespawnWaveTime 5 CanBotsAttackWhileInSpawnRoom no Advanced 1 CustomWeapon { wideshotbatter { OriginalItemName "TF_WEAPON_GRENADELAUNCHER" "mult projectile count" 7 "custom kill icon" "taunt_scout" // bonk "custom item model" "models/weapons/c_models/c_wooden_bat/c_wooden_bat.mdl" "custom projectile model" "models/weapons/w_models/w_baseball.mdl" "override projectile type extra" "stunball" "spread angle pattern" "0 21 0|0 14 0|0 -14 0|0 -21 0|0 0 0|0 7 0|0 -7 0" "faster reload rate" 0.01 "fire rate bonus" 4 "fuse bonus" 3 "no self effect" 1 "explosion particle" "~" "no explosion particles" 1 "damage bonus" 2 "blast radius increased" 0.0001 "custom projectile size" 2.4 "no self blast dmg" 1 "no explosion particles" 1 "dmg taken from self reduced" 0.001 } } PointTemplates { bossname1 { OnSpawnOutput { Target "upper_text" Action "Display" Delay 0.1 } OnSpawnOutput { Target "text_lower" Action "Display" Delay 1 } game_text { "origin" "1984 1984 99999" "targetname" "upper_text" "message" "MAJOR LEAGUE BATTER" "x" "-1" "y" "0.4" "spawnflags" "1" "effect" "2" "channel" "2" "color" "255 255 255" "fxtime" "0.2" "fadeout" "1" //"fadein" "0" "holdtime" "5" } game_text { "origin" "1984 1984 99999" "targetname" "text_lower" "message" "JOHN BASEBALL" "x" "-1" "y" "0.45" "channel" "1" "spawnflags" "1" "color" "255 255 255" "fadein" "0.2" "fadeout" "1" "holdtime" "3.8" } } bosslogic { OnSpawnOutput { Target "upper_text" Action "Display" Delay 0.1 } OnSpawnOutput { Target "text_lower" Action "Display" Delay 1 } OnSpawnOutput { Target "layer_text" Action "Display" Delay 3.5 } game_text { "origin" "1984 1984 99999" "targetname" "upper_text" "message" "THE BATTER WHO PIERCED THE HEAVENS" "x" "-1" "y" "0.4" "spawnflags" "1" "effect" "2" "channel" "2" "color" "255 255 255" "fxtime" "0.2" "fadeout" "1" //"fadein" "0" "holdtime" "5" } game_text { "origin" "1984 1984 99999" "targetname" "text_lower" "message" "JOHN BASEBALL EX" "x" "-1" "y" "0.45" "channel" "1" "spawnflags" "1" "color" "255 255 255" "fadein" "0.2" "fadeout" "1" "holdtime" "3.8" } game_text { "origin" "1984 1984 99999" "targetname" "layer_text" "message" "JOHN BASEBALL EX" "x" "-1" "y" "0.45" "channel" "4" "spawnflags" "1" "color" "255 0 0" "fadein" "0.2" "fadeout" "1" "holdtime" "3" } } } ClassLimit { Soldier 0 Pyro 0 Heavyweapons 0 Demoman 0 Engineer 0 Medic 0 Sniper 0 Spy 0 } ////////////////////////////////////////// ////////////////////////////////////////// //// WAVE 1 //// ////////////////////////////////////////// ////////////////////////////////////////// // Total money: 600 // Accumulated money : 1000 // Accumulated money + bonus: 1100 Mission { Objective Sniper Where spawnbot_left Where spawnbot_right BeginAtWave 1 RunForThisManyWaves 1 CooldownTime 25 InitialCooldown 25 DesiredCount 2 TFBot { Template T_TFBot_Sniper } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutput { Target bignet // gamerules or tf_gamerules, depending on the map Action RunScriptCode Param " IncludeScript(`popextensions_main`, getroottable()) IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`bonkening_dispensers`) " } Explanation { Line "{yellow} Welcome to the Bonk Plant excursion event of 1971" Line "{yellow} Only SCOUTS are allowed to join!" } WaitWhenDone 65 Checkpoint Yes ////////////////////////// // W1Support // ////////////////////////// WaveSpawn { TotalCurrency 100 Name "w1_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 15 SpawnCount 1 MaxActive 2 WaitBetweenSpawns 7 WaitBeforeStarting 1 Support 1 TFBot { Class Heavy Skill Easy } } ////////////////////////// // W1A // ////////////////////////// WaveSpawn { TotalCurrency 200 Name "w1_a" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 60 SpawnCount 1 MaxActive 18 WaitBetweenSpawns 7 WaitBeforeStarting 0 Squad { TFBot { Template T_TFBot_Scout_Bonk Tag "popext_disband_squad" } TFBot { Template T_TFBot_Scout_Bonk } TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ } TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ } TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast } TFBot { Template T_TFBot_Heavyweapons_Shotgun } } } ////////////////////////// // W1B // ////////////////////////// WaveSpawn { TotalCurrency 200 Name "w1_b" TotalCount 1 SpawnCount 1 MaxActive 1 WaitBetweenSpawns 5 WaitBeforeStarting 0 WaitForAllSpawned w1_a FirstSpawnOutput { Target boss_spawn_relay Action Trigger } Tank { Health 10000 Speed 75 Name "tankboss" StartingPathTrackNode "tank_path_b_1" // a - forward middle -> left (slowest) // b - middle -> right // c - left -> left // d - right -> right (fastest) OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { TotalCurrency 100 Name "w1_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 20 SpawnCount 3 MaxActive 12 WaitBetweenSpawns 8 WaitBeforeStarting 10 WaitForAllSpawned w1_a Support 1 TFBot { Class Scout Skill Easy } } } ////////////////////////////////////////// ////////////////////////////////////////// //// WAVE 2 //// ////////////////////////////////////////// ////////////////////////////////////////// // Total money: 600 // Accumulated money : 1600 // Accumulated money + bonus: 1800 Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutput { Target bignet // gamerules or tf_gamerules, depending on the map Action RunScriptCode Param " IncludeScript(`popextensions_main`, getroottable()) IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`bonkening_dispensers`) " } WaitWhenDone 65 Checkpoint Yes ////////////////////////// // W2Support // ////////////////////////// WaveSpawn { TotalCurrency 50 Name "w2_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 10 SpawnCount 1 MaxActive 2 WaitBetweenSpawns 7 WaitBeforeStarting 0 Support 1 TFBot { Class Pyro Skill Easy } } ////////////////////////// // W2A // ////////////////////////// WaveSpawn { TotalCurrency 300 Name "w2_a" Where spawnbot Where spawnbot_left Where spawnbot_right TotalCount 20 SpawnCount 1 MaxActive 20 WaitBetweenSpawns 12 WaitBeforeStarting 0 Squad { TFBot { Template T_TFBot_Giant_Soldier Tag "popext_disband_squad" } TFBot { Class Pyro Skill Easy } TFBot { Class Pyro Skill Easy } TFBot { Class Pyro Skill Easy } TFBot { Class Pyro Skill Easy } } } ////////////////////////// // W2B // ////////////////////////// WaveSpawn { TotalCurrency 100 Name "w2_b" Where spawnbot_left Where spawnbot_right TotalCount 30 SpawnCount 6 MaxActive 12 WaitBetweenSpawns 7 WaitBeforeStarting 15 WaitForAllSpawned w2_a TFBot { Class Scout Skill Easy Name "Cola Scout" Item "Crit-a-Cola" Item "Bonk Helm" ClassIcon scout_cola ItemAttributes { ItemName "Bonk Helm" "set item tint rgb" 8208497 } ItemAttributes { ItemName "Crit-a-Cola" "effect bar recharge rate increased" 0.33 } } } WaveSpawn { TotalCurrency 100 Name "w2_b" Where spawnbot TotalCount 12 SpawnCount 1 MaxActive 6 WaitBetweenSpawns 7 WaitBeforeStarting 12 WaitForAllSpawned w2_a Squad { TFBot { Template T_TFBot_Heavyweapons_Fist } TFBot { Template T_TFBot_Medic } } } ////////////////////////// // W2C // ////////////////////////// WaveSpawn { TotalCurrency 50 Name "w2_c" Where spawnbot TotalCount 4 SpawnCount 1 MaxActive 4 WaitBetweenSpawns 1 WaitBeforeStarting 2 WaitForAllSpawned w2_b Squad { TFBot { Template T_TFBot_Giant_Soldier } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } } } } ////////////////////////////////////////// ////////////////////////////////////////// //// WAVE 3 //// ////////////////////////////////////////// ////////////////////////////////////////// // Total money: 600 // Accumulated money : 2200 // Accumulated money + bonus: 2500 // W/ optimal + bonus (-2100) : 400 Mission { Objective Sniper Where spawnbot_left Where spawnbot_right BeginAtWave 3 RunForThisManyWaves 1 CooldownTime 25 InitialCooldown 25 DesiredCount 2 TFBot { Template T_TFBot_Sniper } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutput { Target bignet // gamerules or tf_gamerules, depending on the map Action RunScriptCode Param " IncludeScript(`popextensions_main`, getroottable()) IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`bonkening_dispensers`) " } WaitWhenDone 65 Checkpoint Yes ////////////////////////// // W3Support // ////////////////////////// WaveSpawn { TotalCurrency 75 Name "w3_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 15 SpawnCount 1 MaxActive 4 WaitBetweenSpawns 5 WaitBeforeStarting 1 Support 1 TFBot { ClassIcon soldier_crit_normal Name "Charged Soldier" Class Soldier Skill Expert WeaponRestrictions PrimaryOnly Attributes "AlwaysCrit" ItemAttributes { ItemName "the original" "Projectile speed increased" 0.5 "fire rate bonus" 2 "faster reload rate" 0.5 } Item "the original" } } WaveSpawn { TotalCurrency 75 Name "w3_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 10 SpawnCount 1 MaxActive 2 WaitBetweenSpawns 7 WaitBeforeStarting 1 Support 1 TFBot { Template T_TFBot_Scout_Bonk } } ////////////////////////// // W3A // ////////////////////////// WaveSpawn { TotalCurrency 75 Name "w3_a" Where spawnbot TotalCount 2 SpawnCount 1 MaxActive 2 WaitBetweenSpawns 15 WaitBeforeStarting 0 TFBot { Template T_TFBot_Giant_Scout_Bonk } } WaveSpawn { TotalCurrency 75 Name "w3_a" Where spawnbot_left Where spawnbot_right TotalCount 15 SpawnCount 5 MaxActive 10 WaitBetweenSpawns 5 WaitBeforeStarting 1 TFBot { Template T_TFBot_Pyro_Flaregun } } ////////////////////////// // W3B // ////////////////////////// WaveSpawn { TotalCurrency 75 Name "w3_b" Where spawnbot TotalCount 2 SpawnCount 1 MaxActive 2 WaitBetweenSpawns 15 WaitBeforeStarting 15 WaitForAllSpawned w3_a TFBot { Template T_TFBot_Giant_Scout } } WaveSpawn { TotalCurrency 75 Name "w3_b" Where spawnbot_left Where spawnbot_right TotalCount 15 SpawnCount 5 MaxActive 10 WaitBetweenSpawns 5 WaitBeforeStarting 5 WaitForAllSpawned w3_a TFBot { Class Pyro Skill Hard WeaponRestrictions MeleeOnly Item "Sharpened Volcano Fragment" ClassIcon pyro_volcano } } ////////////////////////// // W3C // ////////////////////////// WaveSpawn { TotalCurrency 75 Name "w3_c" Where spawnbot TotalCount 2 SpawnCount 1 MaxActive 2 WaitBetweenSpawns 20 WaitBeforeStarting 15 WaitForAllSpawned w3_b TFBot { Template T_TFBot_Giant_Scout_Fast } } WaveSpawn { TotalCurrency 75 Name "w3_c" Where spawnbot_left Where spawnbot_right TotalCount 15 SpawnCount 5 MaxActive 10 WaitBetweenSpawns 8 WaitBeforeStarting 5 WaitForAllSpawned w3_b TFBot { Template T_TFBot_ScorchShot_FastShot ClassIcon pyro_scorch } } } ////////////////////////////////////////// ////////////////////////////////////////// //// WAVE 4 //// ////////////////////////////////////////// ////////////////////////////////////////// // Total money: 600 // Accumulated money : 2800 // Accumulated money + bonus: 3200 // W/ optimal + bonus (-2100) : 1100 Mission { Objective Sniper Where spawnbot_left Where spawnbot_right BeginAtWave 4 RunForThisManyWaves 1 CooldownTime 25 InitialCooldown 15 DesiredCount 2 TFBot { Template T_TFBot_Sniper } } Mission { Objective Sniper Where spawnbot_left Where spawnbot_right BeginAtWave 1 RunForThisManyWaves 1 CooldownTime 25 InitialCooldown 25 DesiredCount 2 TFBot { Template T_TFBot_Sniper } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutput { Target bignet // gamerules or tf_gamerules, depending on the map Action RunScriptCode Param " IncludeScript(`popextensions_main`, getroottable()) IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/frontlinecart`, getroottable()) IncludeScript(`bonkening_dispensers`) " } WaitWhenDone 65 Checkpoint Yes ////////////////////////// // W4Support // ////////////////////////// WaveSpawn { TotalCurrency 75 Name "w4_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 16 SpawnCount 2 MaxActive 4 WaitBetweenSpawns 8 WaitBeforeStarting 30 Support 1 TFBot { Template T_TFBot_Demoman_Knight Attributes AlwaysCrit } } ////////////////////////// // W4A // ////////////////////////// WaveSpawn { TotalCurrency 75 Name "w4_a" Where spawnbot_left Where spawnbot_right TotalCount 18 SpawnCount 1 MaxActive 18 WaitBetweenSpawns 0.2 WaitBeforeStarting 0 TFBot { Name "Milk Scout" Class Scout Skill Expert ClassIcon scout_milk WeaponRestrictions SecondaryOnly Item "Mad Milk" Attributes AlwaysFireWeapon ItemAttributes { ItemName "Mad Milk" "effect bar recharge rate increased" -2 } } } ////////////////////////// // W4B // ////////////////////////// WaveSpawn { TotalCurrency 200 Name "w4_b" TotalCount 10 SpawnCount 1 MaxActive 10 WaitBetweenSpawns 8 WaitBeforeStarting 4 WaitForAllDead w4_a FirstSpawnOutput { Target boss_spawn_relay Action Trigger } Tank { Health 1650 Speed 110 Name "frontlinecart|milk" StartingPathTrackNode "tank_path_a_1" ClassIcon tank_small_turret_milk // a - forward middle -> left (slowest) // b - middle -> right // c - left -> left // d - right -> right (fastest) OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { TotalCurrency 100 Name "w4_b" Where spawnbot TotalCount 5 SpawnCount 1 MaxActive 4 WaitBetweenSpawns 20 WaitBeforeStarting 4 WaitForAllDead w4_a TFBot { Template T_TFBot_Giant_Pyro } } WaveSpawn { TotalCurrency 100 Name "w4_b" Where spawnbot_left Where spawnbot_right TotalCount 34 SpawnCount 1 MaxActive 10 WaitBetweenSpawns 7 WaitBeforeStarting 4 WaitForAllDead w4_a Squad { TFBot { Class Soldier Skill Normal } TFBot { Class Demoman Skill Normal } } } ////////////////////////// // W4C // ////////////////////////// WaveSpawn { TotalCurrency 50 Name "w4_c" Where spawnbot_left Where spawnbot_right TotalCount 14 SpawnCount 14 MaxActive 14 WaitBetweenSpawns 1 WaitBeforeStarting 2 WaitForAllDead w4_b TFBot { Name "Milk Scout" Class Scout Skill Expert ClassIcon scout_milk WeaponRestrictions SecondaryOnly Item "Mad Milk" Attributes AlwaysFireWeapon ItemAttributes { ItemName "Mad Milk" "effect bar recharge rate increased" -2 } } } } ////////////////////////////////////////// ////////////////////////////////////////// //// WAVE 5 //// ////////////////////////////////////////// ////////////////////////////////////////// // Total money: 600 // Accumulated money : 3400 // Accumulated money + bonus: 3900 // W/ optimal + bonus (-2100) : 1800 Mission { Objective Sniper Where spawnbot_left Where spawnbot_right BeginAtWave 5 RunForThisManyWaves 1 CooldownTime 25 InitialCooldown 29 DesiredCount 4 TFBot { Template T_TFBot_Sniper } } Mission { Objective Spy Where spawnbot BeginAtWave 5 RunForThisManyWaves 1 CooldownTime 40 InitialCooldown 34 DesiredCount 6 TFBot { Template T_TFBot_Spy } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutput { Target bignet // gamerules or tf_gamerules, depending on the map Action RunScriptCode Param " IncludeScript(`popextensions_main`, getroottable()) IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/helicopter`, getroottable()) TankExt.CreatePaths({ heli_path = [ Vector(5245, 4227, 1016) // tank_path_1 Vector(5136, 4896, 1184) // tank_path_2 Vector(4032, 3472, 1104) // tank_path_3 Vector(3800, 3448, 1016) // tank_path_4 Vector(3304, 3424, 976) // tank_path_5 Vector(1552, 3424, 960) // tank_path_6 Vector(192, 3424, 944) // tank_path_7 Vector(224, 3936, 768) // tank_path_8 Vector(-320, 3920, 656) // tank_path_9 ] }) IncludeScript(`bonkening_dispensers`) " } WaitWhenDone 65 Checkpoint Yes ////////////////////////// // W5Support // ////////////////////////// WaveSpawn { TotalCurrency 100 Name "w5_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 40 SpawnCount 4 MaxActive 8 WaitBetweenSpawns 8 WaitBeforeStarting 16 Support 1 TFBot { Class Scout Skill Easy Name "Cola Scout" Item "Crit-a-Cola" Item "Bonk Helm" ClassIcon scout_cola ItemAttributes { ItemName "Bonk Helm" "set item tint rgb" 8208497 } ItemAttributes { ItemName "Crit-a-Cola" "effect bar recharge rate increased" 0.33 } } } WaveSpawn { TotalCurrency 50 Name "w5_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 12 SpawnCount 2 MaxActive 2 WaitBetweenSpawns 10 WaitBeforeStarting 20 Support 1 TFBot { Template T_TFBot_Scout_Bonk } } WaveSpawn { TotalCurrency 50 Name "w5_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 12 SpawnCount 1 MaxActive 2 WaitBetweenSpawns 5 WaitBeforeStarting 24 Support 1 TFBot { Template T_TFBot_Scout_Sandman Name "Mid League Scout" ItemAttributes { ItemName "The Sandman" "effect bar recharge rate increased" 0.5 } } } ////////////////////////// // W5B // ////////////////////////// WaveSpawn { TotalCurrency 400 Name "w5_b" TotalCount 4 SpawnCount 1 MaxActive 4 WaitBetweenSpawns 30 WaitBeforeStarting 0 FirstSpawnOutput { Target boss_spawn_relay Action Trigger } Tank { Health 10000 Speed 75 Name "helicopter" StartingPathTrackNode "heli_path_1" ClassIcon helicopter_blue_nys_nomiplod OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } } ////////////////////////////////////////// ////////////////////////////////////////// //// WAVE 6 //// ////////////////////////////////////////// ////////////////////////////////////////// // Total money: 600 // Accumulated money : 4000 // Accumulated money + bonus: 4600 // W/ optimal + bonus (-2100) : 2500 Mission { Objective Sniper Where spawnbot_left Where spawnbot_right BeginAtWave 6 RunForThisManyWaves 1 CooldownTime 25 InitialCooldown 25 DesiredCount 2 TFBot { Template T_TFBot_Sniper_Sydney_Sleeper } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutput { Target bignet // gamerules or tf_gamerules, depending on the map Action RunScriptCode Param " IncludeScript(`popextensions_main`, getroottable()) IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`bonkening_dispensers`) " } WaitWhenDone 65 Checkpoint Yes ////////////////////////// // W6Support // ////////////////////////// WaveSpawn { TotalCurrency 75 Name "w6_support" Where spawnbot_left Where spawnbot_right TotalCount 15 SpawnCount 1 MaxActive 4 WaitBetweenSpawns 4 WaitBeforeStarting 1 Support 1 TFBot { Template T_TFBot_Demo_Burst Attributes AlwaysCrit } } ////////////////////////// // W6A // ////////////////////////// WaveSpawn { TotalCurrency 125 Name "w6_a" Where spawnbot TotalCount 50 SpawnCount 1 MaxActive 15 WaitBetweenSpawns 4 WaitBeforeStarting 0 Squad { TFBot { Template T_TFBot_Scout_Sandman_FastCharge Tag "popext_disband_squad" } TFBot { Template T_TFBot_Scout_Sandman_FastCharge } TFBot { Template T_TFBot_Scout_Sandman_FastCharge } TFBot { Template T_TFBot_Scout_Sandman_FastCharge } TFBot { Template T_TFBot_Sniper_Huntsman_Spammer ClassIcon sniper_bow_multi Health 800 } } } ////////////////////////// // W6B // ////////////////////////// WaveSpawn { TotalCurrency 150 Name "w6_b" Where spawnbot TotalCount 16 SpawnCount 1 MaxActive 16 WaitBetweenSpawns 9 WaitBeforeStarting 9 WaitForAllSpawned w6_a Squad { TFBot { Template T_TFBot_Giant_Scout_Baseball Tag "popext_disband_squad" } TFBot { Template T_TFBot_Pyro_Flaregun } TFBot { Template T_TFBot_Pyro_Flaregun } TFBot { Template T_TFBot_Pyro_Flaregun } } } ////////////////////////// // W6C // ////////////////////////// WaveSpawn { TotalCurrency 150 Name "w6_c" Where spawnbot TotalCount 35 SpawnCount 1 MaxActive 15 WaitBetweenSpawns 4 WaitBeforeStarting 8 WaitForAllSpawned w6_b Squad { TFBot { Template T_TFBot_Scout_Sandman_FastCharge Tag "popext_disband_squad" } TFBot { Template T_TFBot_Scout_Sandman_FastCharge } TFBot { Template T_TFBot_Scout_Sandman_FastCharge } TFBot { Template T_TFBot_Soldier_Homing_VS } TFBot { Template T_TFBot_Soldier_Homing_VS } } } ////////////////////////// // W6D // ////////////////////////// WaveSpawn { TotalCurrency 100 Name "w6_d" Where spawnbot TotalCount 10 SpawnCount 1 MaxActive 10 WaitBetweenSpawns 8 WaitBeforeStarting 8 WaitForAllSpawned w6_c Squad { TFBot { Template T_TFBot_Giant_Scout_Baseball Tag "popext_disband_squad" } TFBot { Template T_TFBot_Scout_Sandman_FastCharge } TFBot { Template T_TFBot_Soldier_Homing_VS } TFBot { Template T_TFBot_Soldier_Homing_VS } TFBot { Template T_TFBot_Sniper_Huntsman_Spammer ClassIcon sniper_bow_multi Health 800 } } } } ////////////////////////////////////////// ////////////////////////////////////////// //// WAVE 7 //// ////////////////////////////////////////// ////////////////////////////////////////// // Total money: 800 // Accumulated money : 4800 // Accumulated money + bonus: 5500 // W/ optimal + bonus (-2100) : 3400 Mission { Objective Sniper Where spawnbot_left Where spawnbot_right BeginAtWave 7 RunForThisManyWaves 1 CooldownTime 25 InitialCooldown 25 DesiredCount 2 TFBot { Template T_TFBot_Sniper_Sydney_Sleeper } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutput { Target bignet // gamerules or tf_gamerules, depending on the map Action RunScriptCode Param " IncludeScript(`popextensions_main`, getroottable()) IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/combattank`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/rocketpod`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/fireball`, getroottable()) IncludeScript(`bonkening_dispensers`) " } WaitWhenDone 65 Checkpoint Yes ////////////////////////// // W7Support // ////////////////////////// WaveSpawn { TotalCurrency 100 Name "w7_support" Where spawnbot_left Where spawnbot_right TotalCount 20 SpawnCount 2 MaxActive 4 WaitBetweenSpawns 7 WaitBeforeStarting 1 Support 1 TFBot { Template T_TFBot_Soldier_Extended_Concheror } } WaveSpawn { TotalCurrency 100 Name "w7_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 20 SpawnCount 1 MaxActive 2 WaitBetweenSpawns 6 WaitBeforeStarting 1 Support 1 TFBot { Class Scout Skill Hard Attributes AlwaysCrit WeaponRestrictions SecondaryOnly ClassIcon scout_pistol_nys Name "Pistol Scout" } } ////////////////////////// // W7A // ////////////////////////// WaveSpawn { TotalCurrency 350 Name "w7_a" Where spawnbot TotalCount 18 SpawnCount 1 MaxActive 12 WaitBetweenSpawns 25 WaitBeforeStarting 0 Squad { TFBot { Template T_TFBot_Giant_Heavyweapons } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } TFBot { Template T_TFBot_Medic } } } ////////////////////////// // W7B // ////////////////////////// WaveSpawn { TotalCurrency 200 Name "w7_b" TotalCount 1 SpawnCount 1 MaxActive 1 WaitBetweenSpawns 5 WaitBeforeStarting 5 WaitForAllDead w7_a FirstSpawnOutput { Target boss_spawn_relay Action Trigger } Tank { Health 40000 Speed 60 Name "combattank_bomb|rocketpod|fireball" StartingPathTrackNode "tank_path_a_1" ClassIcon tank_combat_dragon_fury_rocket // a - forward middle -> left (slowest) // b - middle -> right // c - left -> left // d - right -> right (fastest) OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { TotalCurrency 50 Name "w7_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 16 SpawnCount 4 MaxActive 12 WaitBetweenSpawns 10 WaitBeforeStarting 0 WaitForAllDead w7_a Support 1 TFBot { Class Scout Skill Hard Attributes AlwaysCrit WeaponRestrictions SecondaryOnly ClassIcon scout_pistol_nys Name "Pistol Scout" } } } ////////////////////////////////////////// ////////////////////////////////////////// //// WAVE 8 //// ////////////////////////////////////////// ////////////////////////////////////////// // Total money: 800 // Accumulated money : 6200 Mission { Objective Sniper Where spawnbot_left Where spawnbot_right BeginAtWave 8 RunForThisManyWaves 1 CooldownTime 25 InitialCooldown 5 DesiredCount 2 TFBot { Template T_TFBot_Sniper_Sydney_Sleeper } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } InitWaveOutput { Target bignet // gamerules or tf_gamerules, depending on the map Action RunScriptCode Param " IncludeScript(`popextensions_main`, getroottable()) IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/combattank`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/rocketpod`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/railgun`, getroottable()) IncludeScript(`tankextensions/helicopter`, getroottable()) IncludeScript(`tankextensions/frontlinecart`, getroottable()) TankExt.CreatePaths({ heli_path = [ Vector(5245, 4227, 1016) // tank_path_1 Vector(5136, 4896, 1184) // tank_path_2 Vector(4032, 3472, 1104) // tank_path_3 Vector(3800, 3448, 1016) // tank_path_4 Vector(3304, 3424, 976) // tank_path_5 Vector(1552, 3424, 960) // tank_path_6 Vector(192, 3424, 944) // tank_path_7 Vector(224, 3936, 768) // tank_path_8 Vector(-320, 3920, 656) // tank_path_9 ] }) PrecacheSound(`THEBONKENING_FINAL.mp3`) // chunks of code taken from lotus: mud ::LocalMusic <- { Cleanup = function() { for (local i = 1; i <= Constants.Server.MAX_PLAYERS; i++) { local player = PlayerInstanceFromIndex(i) if (player == null) continue if (player.IsFakeClient()) continue EmitSoundEx({ sound_name = `THEBONKENING_FINAL.mp3`, filter_type = 4, entity = player, channel = 6, flags = 4 }) // stops the music } delete ::LocalMusic } OnGameEvent_recalculate_holidays = function(_) { if (GetRoundState() == 3) Cleanup() } OnGameEvent_mvm_wave_complete = function(_) { Cleanup() } OnGameEvent_mvm_begin_wave = function(params) { for (local i = 1; i <= Constants.Server.MAX_PLAYERS; i++) { local player = PlayerInstanceFromIndex(i) if (player == null) continue if (player.IsFakeClient()) continue EmitSoundEx({ sound_name = `THEBONKENING_FINAL.mp3`, filter_type = 4, entity = player, channel = 6, flags = 1}) } } } __CollectGameEventCallbacks(LocalMusic) IncludeScript(`bot_paint.nut`) EntFire(`bombpath_clearall_relay`, `Trigger`, null, 5) EntFire(`bombpath_arrows_clear_relay`, `Trigger`, null, 5) EntFire(`bombpath_right_relay`, `Trigger`, null, 10) IncludeScript(`bonkening_dispensers`) " } WaitWhenDone 65 Checkpoint Yes ////////////////////////// // W8Support // ////////////////////////// WaveSpawn { TotalCurrency 100 Name "w8_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 10 SpawnCount 1 MaxActive 4 WaitBetweenSpawns 4 WaitBeforeStarting 25 WaitForAllSpawned w8_a Support 1 TFBot { Class Pyro Skill Normal Name "Dragon Fury Pyro" ClassIcon pyro_dragon_fury_swordstone WeaponRestrictions PrimaryOnly MaxVisionRange 800 Item "The Dragon's Fury" } } WaveSpawn { TotalCurrency 0 Name "w8_support" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 10 SpawnCount 2 MaxActive 4 WaitBetweenSpawns 10 WaitBeforeStarting 0 WaitForAllDead w8_c Support 1 TFBot { Class Pyro Skill Normal Name "Dragon Fury Pyro" ClassIcon pyro_dragon_fury_swordstone WeaponRestrictions PrimaryOnly MaxVisionRange 800 Item "The Dragon's Fury" } } ////////////////////////// // W8A // ////////////////////////// WaveSpawn { TotalCurrency 125 Name "w8_a" Where spawnbot_left Where spawnbot Where spawnbot_right TotalCount 40 SpawnCount 1 MaxActive 15 WaitBetweenSpawns 4 WaitBeforeStarting 0 Squad { TFBot { Template T_TFBot_Soldier_RocketPush Tag "popext_disband_squad" } TFBot { Template T_TFBot_Soldier_RocketPush } TFBot { Class Scout Skill Normal } TFBot { Class Scout Skill Normal } TFBot { Class Scout Skill Normal } } } WaveSpawn { TotalCurrency 75 Name "w8_a_heavies" Where spawnbot_left Where spawnbot_right TotalCount 12 SpawnCount 1 MaxActive 4 WaitBetweenSpawns 6 WaitBeforeStarting 1 WaitForAllDead w7_a TFBot { Class Heavy Skill Normal Name "Natascha Heavy" ClassIcon heavy_natascha_nys Item "Natascha" } } ////////////////////////// // W8B // ////////////////////////// WaveSpawn { TotalCurrency 50 Name "w8_b" Where spawnbot_left TotalCount 6 SpawnCount 1 MaxActive 4 WaitBetweenSpawns 25 WaitBeforeStarting 4 WaitForAllSpawned w8_a Squad { TFBot { Template T_TFBot_Giant_Demo_RapidFire } TFBot { ClassIcon medic_shield_qf Name "Extended Shield Medic" Class Medic Skill Expert WeaponRestrictions SecondaryOnly Attributes "SpawnWithFullCharge" Attributes "ProjectileShield" Attributes "IgnoreEnemies" Tag "popext_specialfire{ duration = 30 delay = 3}" ItemAttributes { ItemName tf_weapon_syringegun_medic "damage penalty" 0.1 } ItemAttributes { ItemName "the quick-fix" "ubercharge rate bonus" 0.1 "generate rage on heal" 2 "increase buff duration" 5 } Item "the quick-fix" } } } WaveSpawn { TotalCurrency 150 Name "w8_b" Where spawnbot_right TotalCount 6 SpawnCount 1 MaxActive 4 WaitBetweenSpawns 25 WaitBeforeStarting 4 WaitForAllSpawned w8_a Squad { TFBot { Template T_TFBot_Giant_Demo_RapidFire } TFBot { ClassIcon medic_shield_qf Name "Extended Shield Medic" Class Medic Skill Expert WeaponRestrictions SecondaryOnly Attributes "SpawnWithFullCharge" Attributes "ProjectileShield" Attributes "IgnoreEnemies" Tag "popext_specialfire{ duration = 30 delay = 3}" ItemAttributes { ItemName tf_weapon_syringegun_medic "damage penalty" 0.1 } ItemAttributes { ItemName "the quick-fix" "ubercharge rate bonus" 0.1 "generate rage on heal" 2 "increase buff duration" 5 } Item "the quick-fix" } } } WaveSpawn { TotalCurrency 100 Name "w7_b" TotalCount 2 SpawnCount 1 MaxActive 2 WaitBetweenSpawns 30 WaitBeforeStarting 0 WaitForAllSpawned w8_a FirstSpawnOutput { Target boss_spawn_relay Action Trigger } Tank { Health 10000 Speed 75 Name "helicopter_crit" StartingPathTrackNode "heli_path_1" ClassIcon helicopter_blue_nys_nomiplod IsCrit 1 OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } ////////////////////////// // W8C // ////////////////////////// WaveSpawn { TotalCurrency 100 Name "w8_c" Where spawnbot TotalCount 5 SpawnCount 1 MaxActive 2 WaitBetweenSpawns 22 WaitBeforeStarting 45 WaitForAllSpawned w8_a TFBot { Template T_TFBot_Giant_Scout_FAN } } WaveSpawn { Name "w8_music_retrigger" // literally to extend the song playtime TotalCount 1 Spawncount 1 MaxActive 1 WaitBeforeStarting 9999 //60 actually lets not do this WaitForAllSpawned w8_a Support Limited FirstSpawnOutput { Target bignet // gamerules or tf_gamerules, depending on the map Action RunScriptCode Param " for (local i = 1; i <= Constants.Server.MAX_PLAYERS; i++) { local player = PlayerInstanceFromIndex(i) if (player == null) continue if (player.IsFakeClient()) continue EmitSoundEx({ sound_name = `THEBONKENING_FINAL.mp3`, filter_type = 4, entity = player, channel = 6, flags = 4 }) // stops the music } for (local i = 1; i <= Constants.Server.MAX_PLAYERS; i++) { local player = PlayerInstanceFromIndex(i) if (player == null) continue if (player.IsFakeClient()) continue EmitSoundEx({ sound_name = `THEBONKENING_FINAL.mp3`, filter_type = 4, entity = player, channel = 6, flags = 1 , delay = -19.6}) } " } } WaveSpawn { TotalCurrency 50 Name "w8_c_tanks" TotalCount 1 SpawnCount 1 MaxActive 1 WaitBetweenSpawns 5 WaitBeforeStarting 80 WaitForAllSpawned w8_a FirstSpawnOutput { Target boss_spawn_relay Action Trigger } Tank { Health 12000 Speed 100 Name "combattank_bomb|rocketpod_homing|railgun" StartingPathTrackNode "tank_path_c_1" ClassIcon tank_combat_railgun_homingburst // a - forward middle -> left (slowest) // b - middle -> right // c - left -> left // d - right -> right (fastest) OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { TotalCurrency 50 Name "w8_c_tanks" TotalCount 1 SpawnCount 1 MaxActive 1 WaitBetweenSpawns 5 WaitBeforeStarting 80 WaitForAllSpawned w8_a FirstSpawnOutput { Target boss_spawn_relay Action Trigger } Tank { Health 12000 Speed 100 Name "combattank_bomb|rocketpod_homing|railgun" StartingPathTrackNode "tank_path_d_1" ClassIcon tank_combat_railgun_homingburst // a - forward middle -> left (slowest) // b - middle -> right // c - left -> left // d - right -> right (fastest) OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } ////////////////////////// // W8D // ////////////////////////// WaveSpawn { TotalCurrency 50 Name "w8_d" Where spawnbot_left Where spawnbot_right TotalCount 12 SpawnCount 3 MaxActive 9 WaitBetweenSpawns 10 WaitBeforeStarting 4 WaitForAllDead w8_c_tanks TFBot { Template T_TFBot_Scout_Bonk Attributes AlwaysCrit } } WaveSpawn { TotalCurrency 50 Name "w8_d" TotalCount 3 SpawnCount 1 MaxActive 3 WaitBetweenSpawns 10 WaitBeforeStarting 5 WaitForAllDead w8_c_tanks FirstSpawnOutput { Target boss_spawn_relay Action Trigger } Tank { Health 3000 Speed 150 Name "frontlinecart|milk" StartingPathTrackNode "tank_path_a_1" ClassIcon tank_small_turret_milk // a - forward middle -> left (slowest) // b - middle -> right // c - left -> left // d - right -> right (fastest) OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { TotalCurrency 100 Name "w8_d" Where spawnbot TotalCount 1 SpawnCount 1 MaxActive 1 WaitBetweenSpawns 22 WaitBeforeStarting 3 WaitForAllDead w8_c_tanks FirstSpawnWarningSound "mvm/giant_heavy/giant_heavy_entrance.wav" TFBot { Class Scout Name "John Baseball" ClassIcon scout_stun_giant_armored Skill Expert Health 25000 Item "Batter's Helmet" Item "The Sandman" Item "The Bigg Mann on Campus" Item "MNC Mascot Outfit" WeaponRestrictions MeleeOnly Attributes MiniBoss Attributes UseBossHealthBar Attributes AlwaysCrit Tag "paint|52|16711680" Tag "paint|30076|16711680" Tag "paint|347|16711680" SpawnTemplate bossname1 ItemAttributes { ItemName "The Sandman" "effect bar recharge rate increased" 0.003 } CharacterAttributes { "damage force reduction" 0.7 "airblast vulnerability multiplier" 0.7 "override footstep sound set" 5 "move speed penalty" 0.225 "attach particle effect" 3083 "damage bonus" 30 } } } } Wave // Wave # { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } InitWaveOutput { Target bignet // gamerules or tf_gamerules, depending on the map Action RunScriptCode Param " IncludeScript(`popextensions_main`, getroottable()) IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`bonkening_dispensers`) " } WaveSpawn { Name "" WaitForAllDead "" Where spawnbot_chief TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 0 FirstSpawnWarningSound "mvm/giant_heavy/giant_heavy_entrance.wav" TFBot { Class Scout Name "John Baseball EX" SpawnTemplate bosslogic ClassIcon scout_stun_armored_hyper Skill Expert Attributes UseBossHealthBar Health 80000 Action Mobber Item "Batter's Helmet" Item "TF_WEAPON_GRENADELAUNCHER" Item "The Sandman" Item "The Bigg Mann on Campus" Item "MNC Mascot Outfit" WeaponRestrictions MeleeOnly Attributes MiniBoss UseHumanAnimations 1 Tag "paint|52|16711680" Tag "paint|30076|16711680" Tag "paint|347|16711680" // ItemAttributes // { // ItemName "TF_WEAPON_GRENADELAUNCHER" // "mult projectile count" 5 // "custom kill icon" "taunt_scout" // bonk // "custom item model" "models/weapons/c_models/c_wooden_bat/c_wooden_bat.mdl" // "custom projectile model" "models/weapons/w_models/w_baseball.mdl" // "override projectile type extra" "stunball" // "custom weapon fire sound" "weapons\bat_baseball_hit1.wav" // "faster reload rate" 0.01 // "fire rate bonus" 4 // "fuse bonus" 3 // "no self effect" 1 // "explosion particle" "~" // "no explosion particles" 1 // "damage bonus" 2 // "Blast radius increased" 0.001 // "custom projectile size" 2.4 // "projectile spread angle penalty" 2 // "no self blast dmg" 1 // "dmg taken from self reduced" 0.001 // } CharacterAttributes { "damage force reduction" 0.7 "airblast vulnerability multiplier" 0.7 "override footstep sound set" 5 "move speed penalty" 0.75 } EventChangeAttributes { batter_1 { Item "wideshotbatter" WeaponRestrictions PrimaryOnly Attributes SuppressFire FireWeapon //makes them not do dumb aiming :> { Delay 0 Type "Primary" IfSeeTarget 1 Duration 0.1 Cooldown 3.8 //gburst demo reload interval is 4.706, (1.24 + 0.6 * 10) * 0.65 } ItemAttributes { ItemName "The Sandman" "effect bar recharge rate increased" 9999 "is_passive_weapon" 1 "attach particle effect" 1 "custom weapon fire sound" "weapons\bat_baseball_hit1.wav" } CharacterAttributes { "damage force reduction" 0.7 "airblast vulnerability multiplier" 0.7 "override footstep sound set" 5 "move speed penalty" 0.75 } } } } } } }