#base robot_standard.pop #base robot_giant.pop WaveSchedule { StartingCurrency 1000 RespawnWaveTime 2 CanBotsAttackWhileInSpawnRoom no ForceHoliday 2 NoThrillerTaunt 1 NoCritPumpkin 1 NoHolidayPickups 1 // Output fired when the mission is unloaded or reloaded. Delay must be set to -1 for the output to be fired before another mission loads // Used here to prevent the skybox changes in each wave from carrying over when another mission is loaded. MissionUnloadOutput { Target "player" Action "$displaytextchat" Param "Reload" Delay -1 } Mission // Sentry Busters - all { Objective DestroySentries InitialCooldown 15 Where spawnbot_mission_sentry_buster BeginAtWave 1 RunForThisManyWaves 6 CooldownTime 30 TFBot { Template T_TFBot_SentryBuster } } Mission // Spy Halloween { Objective Spy InitialCooldown 60 Where spawnbot_mission_spy BeginAtWave 3 RunForThisManyWaves 1 CooldownTime 40 DesiredCount 2 TFBot { Class Spy Skill Expert Name "All-Seeing Spy" UseHumanModel 2 Item "Upgradeable TF_WEAPON_KNIFE" Item "Six-Eyed Specs" Item "Spyder" Item "Terror-antula" Item "Creepy Crawlers" ItemAttributes { ItemName "Upgradeable TF_WEAPON_KNIFE" "Paintkit_proto_def_index" 269 "Set_item_texture_wear" 0 } } } Templates { /////////////////////////////////////////////////////////////////// /////////////////////// Winter Bots ///////////////// /////////////////////////////////////////////////////////////////// Winter_Giant_Demoman_Sticky { Class Demoman Name "Giant Stickybomber Demo" ClassIcon demo_sticky_daan Skill Hard Health 3300 Item "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" Item "Thunder Dome" Item "The Shrapnel Shell" Item "Glittering Garland" Item "Stunt Suit" Attributes MiniBoss WeaponRestrictions SecondaryOnly CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.5 "airblast vulnerability multiplier" 0.5 "override footstep sound set" 4 } ItemAttributes { ItemName "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" "Paintkit_proto_def_index" 104 "Set_item_texture_wear" 0 } ItemAttributes { ItemName "Stunt Suit" "item style override" 2 } } Winter_Scout_Milk { Class Scout Name "Grommet Scout" ClassIcon scout_milk Skill Hard Item "Mad Milk" Item "Wipe Out Wraps" Item "Blizzard Britches" Item "Snowwing" WeaponRestrictions SecondaryOnly ItemAttributes { ItemName "Mad Milk" "effect bar recharge rate increased" 0.02 "fire rate bonus" 1.5 } } Winter_Pyro_Neon_Minigiant { Class Pyro Name "Menacing Pyroshark" ClassIcon pyro_neon Scale 1.4 Health 650 Skill Hard Item "The Neon Annihilator" Item "The Blizzard Breather" Item "The Sub Zero Suit" WeaponRestrictions MeleeOnly CharacterAttributes { "health regen" 0 } } Winter_Pyro_Neon { Class Pyro Name "Pyroshark" ClassIcon pyro_neon Skill Hard Item "The Neon Annihilator" Item "The Blizzard Breather" Item "The Sub Zero Suit" WeaponRestrictions MeleeOnly CharacterAttributes { "health regen" 0 } } Winter_Giant_Soldier_Direct { Template T_TFBot_Giant_Soldier Name "Giant Cold War Soldier" ClassIcon soldier_directhit Skill Hard Item "The Direct Hit" Item "Antarctic Parka" Item "Brain Cane" } Winter_Medic_Quickfix { Template T_TFBot_Medic_BigHeal Name "Festive Spirited Medic" Item "The Ebenezer" Item "The Ruffled Ruprecht" Item "The Dead Little Buddy" } Winter_Pyro_M1 { Class Pyro Skill Normal Name "Extra-Layered Pyro" Item "The Head Warmer" Item "EOTL_pyro_sweater" ItemAttributes { ItemName "Upgradeable TF_WEAPON_FLAMETHROWER" "Paintkit_proto_def_index" 248 "Set_item_texture_wear" 0 "airblast disabled" 1 } } Winter_Giant_Medic_Milk_Syringe { Template T_TFBot_Giant_Medic Name "Curative Calcium Medic" ClassIcon medic_syringe_milk2 Skill Hard Health 3500 Item "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" Item "Neckwear Headwear" Item "Scourge of the Sky" Item "Medical Emergency" Action FetchFlag WeaponRestrictions PrimaryOnly ItemAttributes { ItemName "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" "mad milk syringes" 1 } } /////////////////////////////////////////////////////////////////// /////////////////////// Summer Bots ///////////////// /////////////////////////////////////////////////////////////////// Summer_Scout_Bonk { Class Scout ClassIcon scout_bonk Name "Soda Jerk" Skill Hard Item "Bonk! Atomic Punch" Item "Upgradeable TF_WEAPON_SCATTERGUN" Item "Bonk Leadwear" Item "Soda Specs" Item "The Caffeine Cooler" WeaponRestrictions PrimaryOnly ItemAttributes { ItemName "Upgradeable TF_WEAPON_SCATTERGUN" "Paintkit_proto_def_index" 207 "Set_item_texture_wear" 0 "custom_paintkit_seed_lo" 1971720143 "custom_paintkit_seed_hi" 1 } } Summer_Scout_Cola { Class Scout ClassIcon scout_cola_nys Name "Caffei-Nuisance" Skill Hard Item "Crit-a-Cola" Item "Upgradeable TF_WEAPON_SCATTERGUN" Item "Bonk Leadwear" Item "Soda Specs" Item "The Caffeine Cooler" WeaponRestrictions PrimaryOnly ItemAttributes { ItemName "Upgradeable TF_WEAPON_SCATTERGUN" "Paintkit_proto_def_index" 207 "Set_item_texture_wear" 0 "custom_paintkit_seed_lo" 1971720143 "custom_paintkit_seed_hi" 1 "killstreak tier" 2 "killstreak idleeffect" 6 } ItemAttributes { ItemName "Soda Specs" "item style override" 1 } ItemAttributes { ItemName "The Caffeine Cooler" "item style override" 2 } ItemAttributes { ItemName "Bonk Leadwear" "set item tint rgb" 5322826 } } Summer_Giant_Pyro_Dragon { Template T_TFBot_Giant_Pyro Name "Flame-Broiled Fisherman" ClassIcon pyro_dragonfury Item "The Dragon's Fury" Item "Reel Fly Hat" Item "Water Waders" Item "Hook Line and Cinder" MaxVisionRange 500 ItemAttributes { ItemName "The Dragon's Fury" "Paintkit_proto_def_index" 390 "Set_item_texture_wear" 0 } } Summer_Soldier_Parachute { Class Soldier Name "Bunker Buster Soldier" Skill Normal ClassIcon soldier_airstrike_para Item "The Air Strike" Item "The B.A.S.E. Jumper" Item "The Cross-Comm Crash Helmet" Item "The Soldier's Stogie" Item "Flakcatcher" Item "Wavefinder" Attributes Parachute RocketJump 2 ItemAttributes { ItemName "The Air Strike" "Paintkit_proto_def_index" 414 "Set_item_texture_wear" 0 "rocket jump damage reduction" 0.01 } } Summer_Pyro_Gas { Class Pyro Name "Grease Fire Pyro" Skill Normal ClassIcon pyro_gascann Item "The Gas Passer" Item "Connoisseur's Cap" Item "The Frymaster" WeaponRestrictions SecondaryOnly ItemAttributes { ItemName "The Gas Passer" "item_meter_charge_rate" 5 } } Summer_Heavy_Heater { Class Heavyweapons Name "A-Nahuatl-Ator Heavy" Skill Normal ClassIcon heavy_heater_nys Item "The Huo Long Heatmaker" Item "The Aztec Aggressor" Item "Deity's Dress" WeaponRestrictions PrimaryOnly } Summer_Giant_Heavy_Sandvich { Template T_TFBot_Giant_Heavyweapons Name "Giant Picnic Heavy" Attributes UseBossHealthBar Health 5500 Item "Upgradeable TF_WEAPON_MINIGUN" Item "The Robo-Sandvich" Item "Snack Stack" Item "The Sandvich Safe" Item "Graybanns" ClassIcon heavy_robosandvich_nys UseHumanAnimations 1 FireInput { Target !activator Action $SetProp$m_iAmmo$4 Param 1 IfHealthBelow 3000 Repeats 1 //Eat sandvich only *once* Cooldown 15 Delay 0.5 } FireInput { Target !activator Action $SetProp$m_iAmmo$4 Param 0 IfHealthAbove 3001 Repeats 0 Cooldown 2.5 Delay 0.5 } AddCond { Index 55 Duration 5 IfHealthBelow 3000 Repeats 1 Cooldown 2.5 Delay 0.5 } RemoveCond { Index 55 IfHealthAbove 3001 Repeats 0 Cooldown 2.5 Delay 0.5 } ItemAttributes { ItemName "Upgradeable TF_WEAPON_MINIGUN" "provide on active" 1 "mod minigun can holster while spinning" 1 "single wep holster time increased" 0.2 "damage bonus" 1.2 "Paintkit_proto_def_index" 230 "Set_item_texture_wear" 0 "custom_paintkit_seed_lo" 2164184125 "custom_paintkit_seed_hi" 1 } ItemAttributes { ItemName "The Robo-Sandvich" "provide on active" 1 "alt-fire disabled" 1 //fixed by rafmod "lunchbox healing decreased" 20 //20 * 300 = 6000 "gesture speed increase" 0.75 "dmg from ranged reduced" 0.5 "dmg from melee increased" 1.3 //I thought this was cute. "max health additive bonus" 1 //just in case. "always allow taunt" 1 //Prevent some edge cases. } ItemAttributes { ItemName "Graybanns" "set item tint rgb" 5801378 } CharacterAttributes { "never gib" 1 } } Summer_Giant_Demo_Golfer { Template T_TFBot_Giant_Demo_RapidFire Name "Q-School Dropout" Item "Upgradeable TF_WEAPON_GRENADELAUNCHER" Item "Tam O'Shanter" Item "The Tartantaloons" Item "The Gaelic Golf Bag" ItemAttributes { ItemName "Upgradeable TF_WEAPON_GRENADELAUNCHER" "fire rate bonus" 0.5 "Paintkit_proto_def_index" 122 "Set_item_texture_wear" 0 } CharacterAttributes { "damage force reduction" 0.5 } } //// PAINT TEST //// Paint_Giant_Heavy { Template T_TFBot_Giant_Heavyweapons Name "Macaw Masquerade Heavy" Item "Upgradeable TF_WEAPON_MINIGUN" ItemAttributes { ItemName "Upgradeable TF_WEAPON_MINIGUN" "Paintkit_proto_def_index" 303 "Set_item_texture_wear" 0 "custom_paintkit_seed_lo" 1969804677 "custom_paintkit_seed_hi" 1 } } /////////////////////////////////////////////////////////////////// /////////////////////// Halloween Bots ////////////// /////////////////////////////////////////////////////////////////// Halloween_Demo_Fist { Class Demoman ClassIcon demo_fast //we might need a more suitable icon for this Name "Creature of the Night" Skill Hard Item "TF_Weapon_Fists" Item "Hair of the Dog" Item "Scottish Snarl" Item "Pickled Paws" Item "Dynamite Abs" UseHumanModel 1 WeaponRestrictions MeleeOnly CharacterAttributes { "move speed bonus" 1.2 } } Halloween_Giant_Heavy { Template T_TFBot_Giant_Heavyweapons Name "Tsar Caesarion" Item "Upgradeable TF_WEAPON_MINIGUN" Item "The Crown of the Old Kingdom" Item "Kapitan's Kaftan" UseHumanModel 2 NoIdleSound 1 ItemAttributes { ItemName "Upgradeable TF_WEAPON_MINIGUN" "Paintkit_proto_def_index" 163 "Set_item_texture_wear" 0 "damage bonus" 1.5 } } Halloween_Giant_Medic_Shield { Template T_TFBot_Giant_Medic Name "Expired Warranty Shield Medic" ClassIcon medic_shield Item "Upgradeable TF_WEAPON_MEDIGUN" Item "Teutonkahmun" Item "Ramses' Regalia" UseHumanModel 2 ItemAttributes { ItemName "Upgradeable TF_WEAPON_MEDIGUN" "generate rage on heal" 2 "increase buff duration" 9.0 "Paintkit_proto_def_index" 268 "Set_item_texture_wear" 0 } CharacterAttributes { "bot medic uber deploy delay duration" 99 } } Halloween_Scout_Melee { Template T_TFBot_Scout_Melee Item "Grave-Robbin' Ruffian" Item "Wrap Battler" Item "B-ankh!" Item "Futankhamun" UseHumanModel 2 } Halloween_Pyro_Airdash { Template T_TFBot_Pyro Item "Rapid Arachnid" Item "Upgradeable TF_WEAPON_FLAMETHROWER" Item "The Arachno-Arsonist" Item "Crusader's Getup" Item "Terror-antula" Item "Creepy Crawlers" UseHumanModel 1 ItemAttributes { ItemName "Upgradeable TF_WEAPON_FLAMETHROWER" "Paintkit_proto_def_index" 266 "Set_item_texture_wear" 0 "airblast dashes" 1 "airblast_deflect_projectiles_disabled" 1 } } Halloween_Giant_Demoknight_Fireball { Class Demoman ClassIcon demoknight_fireball Name "Buried Emperor Demoknight" Skill Expert Health 3300 UseHumanModel 2 //Cosmetics - bopped Item "Forgotten King's Restless Head" Item "Forgotten King's Pauldrons" Item "The Horsemann's Hand-Me-Down" Item "The Dark Age Defender" Item "The Sole Saviors" //Items StripItemSlot 0 //Remove booties Item "The Splendid Screen" //Chargin Targe gives too more beefyness Item "The Eyelander" Item "TF_WEAPON_SPELLBOOK" //WeaponRestrictions MeleeOnly //Breaks Spell Attributes MiniBoss ItemAttributes { ItemName "The Eyelander" "critboost on kill" 3 "attach particle effect" 1 "Set DamageType Ignite" 1 "deploy time decreased" 0.01 } ItemAttributes { ItemName "TF_WEAPON_SPELLBOOK" "mod projectile heat seek power" 15 "deploy time decreased" 0.01 "fire rate bonus" 0.01 "projectile spread angle penalty" 4 "dmg penalty vs players" 0.5 "Projectile speed increased" 0.7 "projectile trail particle" spell_fireball_small_red } Spell //Gives specified spell to bots. { Delay 3 //Time before the first spell charges are given (Default: 10) Cooldown 10 //Time between each spell changes (Default: 10) Repeats 0 //How many times should spell charges be given in total (Default: 0 - Infinite) IfSeeTarget 1 //When set to 1, this task activates only when the bot can see the target player (Default: 0 - Always activate) Charges 1 //How many spell charges to give every time the spell is given (Default: 1) Limit 1 //How many spell charges the bot can store (Default: Same as charges given) //IfHealthBelow 100 //When set, the task activates only when the bot health is below specified value Type "Fireball" } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.5 "airblast vulnerability multiplier" 0.5 "override footstep sound set" 4 } } } PointTemplates { /////////////////////////////////////////////////////////////////// /////////////////////// Halloween Bots /////////////////// /////////////////////////////////////////////////////////////////// PT_FireballSpell_Bot { info_particle_system { "targetname" "spellbot_fireball_particle" "start_active" 0 "effect_name" "spell_cast_wheel_blue" "origin" "0 0 0" //Check proper origin! "$OnUser5" "!self,Start,,0,-1" "$OnUser5" "!self,Stop,,0.9,-1" } tf_point_weapon_mimic { "targetname" "spellbot_fireball_mimic" "origin" "0 0 88" //Viewheight Pyro = 68; * 1.3 = 88.4. Check proper origin! "angles" "0 0 0" //Directly forward "$weaponname" "Bot Weapon: Fireball" "$OnUser5" "!self,FireOnce,,0.8,-1" } } } CustomWeapon { "Bot Weapon: Fireball" { OriginalItemName "The Flare Gun" "custom kill icon" "spellbook_fireball" "override projectile type extra" "spellfireball" "damage penalty" 0.65 //65 damage base "projectile speed decreased" 0.5 "projectile acceleration" 1020 "projectile acceleration time" 0.5 "projectile acceleration start time" 0.5 } } /////////////////////////////////////////////////////////////////// /////////////////////// WAVE 1: COLD WAR /////////////////// /////////////////////////////////////////////////////////////////// Wave { StartWaveOutput { Target wave_start_relay_classic Action Trigger } InitWaveOutput { Target "gamerules" Action "RunScriptCode" Param "SetSkyboxTexture(`sky_stormfront_01`)" } Explanation { Line "{F1C232}The General {8FCE00}: Today is {red}OUR{9ACDFF} day, recruits!" Line "{8FCE00}We will storm the village, and claim it for our own!" Line "{8FCE00}The inhabitants won't even know we've arrived, until it's too late." Line "{8FCE00}Let's wish them a merry Christmas." } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Where spawnbot Name "w1_s1a" TotalCount 10 MaxActive 6 SpawnCount 5 TotalCurrency 50 Squad { NoFormation 1 TFBot { Template Winter_Pyro_Neon_Minigiant } TFBot { Template Winter_Scout_Milk } TFBot { Template Winter_Scout_Milk } TFBot { Template Winter_Scout_Milk } TFBot { Template Winter_Scout_Milk } } } WaveSpawn { Where spawnbot Name "w1_s1" WaitForAllSpawned "w1_s1a" WaitBeforeStarting 1.5 WaitBetweenSpawnsAfterDeath 5 TotalCount 2 MaxActive 1 SpawnCount 1 TotalCurrency 300 TFBot { Template Winter_Giant_Demoman_Sticky } } WaveSpawn { Where spawnbot Name "w1_s1b" WaitForAllDead "w1_s1a" TotalCount 25 MaxActive 7 //allow max 3 pyros active at once if all scouts die SpawnCount 5 TotalCurrency 100 Squad { NoFormation 1 TFBot { Template Winter_Pyro_Neon_Minigiant } TFBot { Template Winter_Scout_Milk } TFBot { Template Winter_Scout_Milk } TFBot { Template Winter_Scout_Milk } TFBot { Template Winter_Scout_Milk } } } WaveSpawn { Where spawnbot Name "w1_s1c" WaitForAllDead "w1_s1a" WaitBeforeStarting 5 TotalCount 16 MaxActive 8 SpawnCount 4 TotalCurrency 100 TFBot { Template Winter_Scout_Milk } } WaveSpawn { Where spawnbot Name "w1_s2" WaitForAllDead "w1_s1" TotalCount 4 MaxActive 4 SpawnCount 4 TotalCurrency 150 Squad { TFBot { Template Winter_Giant_Soldier_Direct } TFBot { Template Winter_Medic_Quickfix } TFBot { Template Winter_Medic_Quickfix } TFBot { Template Winter_Medic_Quickfix } } } WaveSpawn { Where spawnbot Name "w1_s2b" WaitForAllDead "w1_s1b" TotalCount 20 MaxActive 10 SpawnCount 5 TotalCurrency 100 TFBot { Template Winter_Pyro_M1 } } WaveSpawn { Where spawnbot Name "w1_s3" WaitForAllDead "w1_s2" TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 300 TFBot { Template Winter_Giant_Medic_Milk_Syringe } } } /////////////////////////////////////////////////////////////////// /////////////////////// WAVE 2: SUMMER VACATION //////////// /////////////////////////////////////////////////////////////////// Wave { StartWaveOutput { Target wave_start_relay_classic Action Trigger } InitWaveOutput { Target "gamerules" Action "RunScriptCode" Param "SetSkyboxTexture(`sky_goldrush_01`)" } Explanation { Line "{F1C232}The General {8FCE00}: This hasn't quite gone as expected." Line "{8FCE00}Our intel said had no mention of this village being so heavily armed." Line "{8FCE00}Still, merely six rival soldiers should not be that large of an issue." Line "{8FCE00}Summer break's over, privates. Wipe the floor with 'em." } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Where spawnbot Name "w2_s1a" TotalCount 12 MaxActive 4 SpawnCount 4 TotalCurrency 100 Squad { NoFormation 1 TFBot { Template Summer_Soldier_Parachute } TFBot { Template Summer_Soldier_Parachute } TFBot { Template Summer_Soldier_Parachute } TFBot { Template Summer_Soldier_Parachute } } } WaveSpawn { Where spawnbot Name "w2_s1" WaitBeforeStarting 1.5 TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 200 TFBot { Template Summer_Giant_Demo_Golfer } } WaveSpawn { Where spawnbot Name "w2_s2a" WaitForAllDead "w2_s1" TotalCount 10 MaxActive 5 SpawnCount 5 TotalCurrency 100 Squad { NoFormation 1 TFBot { Template Summer_Scout_Cola } TFBot { Template Summer_Scout_Cola } TFBot { Template Summer_Scout_Cola } TFBot { Template Summer_Scout_Cola } TFBot { Template Summer_Scout_Cola } } } WaveSpawn { Where spawnbot Name "w2_s2b" WaitForAllDead "w2_s2a" TotalCount 10 MaxActive 5 SpawnCount 5 TotalCurrency 100 Squad { NoFormation 1 TFBot { Template Summer_Scout_Bonk } TFBot { Template Summer_Scout_Bonk } TFBot { Template Summer_Scout_Bonk } TFBot { Template Summer_Scout_Bonk } TFBot { Template Summer_Scout_Bonk } } } WaveSpawn { Where spawnbot Name "w2_s2" WaitForAllDead "w2_s1" WaitBeforeStarting 1.5 TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 200 TFBot { Template Summer_Giant_Pyro_Dragon } } WaveSpawn { Where spawnbot Name "w2_s3a" WaitForAllDead "w2_s2" TotalCount 12 MaxActive 5 // have Heavies trickle in, most of the spawn should be gas Pyros SpawnCount 3 TotalCurrency 100 Squad { NoFormation 1 TFBot { Template Summer_Heavy_Heater } TFBot { Template Summer_Pyro_Gas } TFBot { Template Summer_Pyro_Gas } } } WaveSpawn { Where spawnbot Name "w2_s3b" WaitForAllSpawned "w2_s3a" TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 300 TFBot { Template Summer_Giant_Heavy_Sandvich } } } //// WAVE PAINT TEST //// Wave { StartWaveOutput { Target wave_start_relay_classic Action Trigger } InitWaveOutput { Target "gamerules" Action "RunScriptCode" Param "SetSkyboxTexture(`sky_pyroland_01`)" } Explanation { Line "Paint test, let's go." } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Where spawnbot Name "paint wave" TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 100 TFBot { Template Paint_Giant_Heavy } } } }