//Accursed Aggrievocation, by Seelpit //Advanced difficulty //Various models by lite: //- Robot spawnpoint //- Crit banner flag //A scary advanced that utilizes a little bit of rafmod for some funky bots and waves! //Main gimmicks: //- RED Bots //- Powered-up, Australium bots //- A few alternative objectives //spawnbot names: //spawnbot_invasion (drop right), spawnbot_tunnel (tunnel left), spawnbot (middle), //spawnbot_scattered (all), spawnbot_mission_sniper (shack), spawnbot_mission_spy //Tank stuff: //boss_deploy_relay, tank_path_1; I assume dead relay not necessary //Themes, because I love using those! //Main theme: a cult raises a bunch of stuff from the dead, or elsewhere. //Might also involve eldritch gods. //Payout: // Start Paid End //W1 750 850 1600 //W2 1600 850 2450 //W3 2450 850 3300 //W4 3300 1050 4350 //W5 4350 1500 5850 //W6 5850 950 6800 //Wave 1 - Afterlife Atrocities THEME: general "reanimated" bots, zombies, and disease. //Wave 2 - Cultist Calamity THEME: fevered followers of the Monocultus. //Wave 3 - Pumpkinton Patricide THEME: kill the entire Sir Pumpkinton family tree. //Wave 4 - Terrorized Tomb THEME: Sun God's worshipers. Ends with duo boss (wow multiple multi bosses in a row; maybe swap..?) //Wave 5 - Forlorn Flameborn THEME: DS3 references (and thus, fire damage once more). //Wave 6 - Warzone Wreaking THEME: todo //Wave 7 - Universal Uncertainty: Entropy // // Universal Collapse - trigger_push stuff, maybe? Reverse airblast? // Check if push works with negative value! // Falling Star: maybe falling tank, like Radahn attack! // Meteor Rain (duh) // Supernova (note: stuns SUCK to fight!!) // Final Entropy: //Note on Healing Aura: restores 324 health at max, and 141 health at minimum, with 32 hp/sec for slow. //Technically a little less than 4 sec since 96 hp/sec for max? 3.375? //basically a little more than 3 sec. //! might also heal 50 health instantly? //yes! //at 50% healing it restores only 98 at max, with 25 coming from instaheal, so about 72-3 otherwise. //and 2x healing correctly results in 648/282 //basically about qfix heal rate??? //Testing notes! // // //W1 //Lower Scout TotalCount a bit - like, 8-16? Should help subwaves not stack too much. //W2 //Holy CRAP do the engies still straggle! Need to lower their TotalCount! //W3 //Still a little on the short end. Maybe +1 giant squad at the start? //Demos were a touch slow with spawning. Bump em up a bit. //W4 //Boss dies pretty fast! Feel free to bump its health up significantly. //Needs some bot changes. Healy Pyros can't get close enough easily! //Final subwave: maybe a stronger finish, like with giant med, perhaps? //W5 //Maybe leave Protector Pyros as "seperate" stream? //Overall wave felt a teensy bit empty in terms of threats, could up spawn rates a little. //W6 //Blimps are...kinda wimpy now! Could try spreading them out further, timewise? //Verify that all nothing wavespawns are support -w- //Giant Heavy kinda causes blinding, decrease spam please! //Judge demo notes //W1 //- Check pacing for bat commons; they took too long to finish! //W2 //- Ditto for Engineers' pacing, they stalled the tank! // In general that bot type might take a 2nd look. Their projectile is shot at body level, which generally // doesn't trigger the pumpkins (as they should). // A bot type that can set them off without feeling overbearing might be better! //- Maybe increase Pumpkinton's own spam a little? //- Tank could spawn earlier in some way, hmmm. //W3 //- Boss could use a clearer particle! Already added the "stand mostly still on revive" thing. // Otherwise, it could get covered by the stickies, mwehe. //W4 //- Start is weak! This is due to the duality of the "player-piercing" scout. // Instead, let's make the Scout a bit slower (about 0.85x), give it a gun to fight back, // and make it move slower with the bomb. // This way, it will still threaten with a deploy, but won't be as unforgiving. //- Commons in the first subwave should be more powerful, too! // Close-range Pyros work better when there's actual bodyblocking going on already, // and the Syringe Medics are a bit too weak at this point. // Let's try making them minigiants w/ Blutsauger, and replace the pyros with a blast bot. // Perhaps...a burst fire soldier? //- Lord of Cinder's shield medics could also get tweaked a bit? // And update its kill icon to be an Eyelander! // Let's take a closer look at that subwave to make sure everything goes accordingly. //W5 //- Notably, subwave 2's second and third GHeavies seemed to spawn around the same time. // Check out their spawns. //- Start of third subwave seemed a bit weak; let's remove the "spawn when commons die" requirement. //- Might have to look into kritz banner usage a little more? //- Maybe have ally giant spawn further ahead? //W6 //- Blimps should spawn more seperately, and ally giant DH could have a bit of a buff-up, too. //- Fireball Heavies were ~apparently~ too much to handle with homing. // Seemed kinda fake to me so let's cross-reference that myself. //- //Changelog //W1 //- Decreased spawn times for Armed/Unarmed Scouts, and decreased TotalCount (48 -> 40), decreasing the risk of stragglers. //- Fixed Plague Spreading Medic not actually spreading any plagues //- Re-increased damage on Giant Electro-charged Engineer (2 -> 2.5), and increased range (75 HU -> 130 HU), but decreased knockback (2 -> 1.5). Ideally, this should still result in it knocking away bodyblockers. //- Slightly increased Backup duration on Unstable Backup Soldier (25 sec -> 35 sec) //W2 //- Sir Pumpkinton now fires and reloads faster (2x -> 1.25; 0.4 -> 0.2) //- Pumpkinton Engineers now wield Widowmakers. To prevent excessive spam, they fire 50% slower. //- Said Engineers now also spawn faster (SpawnCount 1 -> 2) and are less in total (32 -> 24), minimizing straggling. //- Tank should spawn a little earlier now. Paired with the previous change, it should correctly spawn in subwave 2. //W3 //- Deity of Dusk's damage decreased (1.11x -> 0.8x), homing time decreased (6 -> 3), // and health decreased (18k -> 15k; threshold for next phase -> 5k) //W4 //- Properly added IgnoreEnemies to Shield Medics. //W6 //- Fixed Doomsday Demos missing HoldFireUntilFullReload. #base robot_standard.pop #base robot_giant.pop popuwashyon { StartingCurrency 750 //A solid amount, really RespawnWaveTime 3 FixedRespawnWaveTime 1 //Feels better...probably CanBotsAttackWhileInSpawnRoom Yes //apparently this defaults to Yes anyway // EventPopFile Halloween // ZombiesNoWave666 1 TextPrintTime 0 ForceHoliday 2 //Enforces Halloween mode, but does not enable wave 666 and zombie bots BonusRatioHalf 1.1 BonusRatioFull 1.1 BotsUsePlayerTeleporters 0 //just walk lmao NoCritPumpkin 0 //enabled! NoThrillerTaunt 1 //disabled! You can tauntkill to your heart's content. DisallowUpgrade "critboost" //TEMP - TESTING ONLY DisallowUpgrade "ubercharge" PrecacheModel "models/props_mvm/robot_hologram_color.mdl" PrecacheModel "models/props_mvm/robot_spawnpoint.mdl" PrecacheModel "models/weapons/c_models/c_critbanner/c_critbanner.mdl" FlagResetTime //Overrides default bomb reset time, because Sntr didn't do that in the first place. { Name "intel" //Name of flag entity on the map ResetTime 60000 //essentially does not return, I hope } PointTemplates { AutoRemove { logic_relay { "OnSpawn" "!self,Kill,0.01,-1" } } //Massive shoutout to Pealover for making this in Skull Scamper //The tech was there in rafmod, but this was the first time I recall it being used. //Well, outside of washy's randomizer. InfoBooth { trigger_multiple { "targetname" "infobooth_trigger" "StartDisabled" "0" "spawnflags" "1" "origin" "3542 -366 -12" "mins" "-46 -46 -51" //can stay assuming same prop is used "maxs" "62 46 151" "OnStartTouch" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnEndTouch" "infobooth_menu,$HideMenu,!activator,1,-1" "OnEndTouch" "menu*,$HideMenu,!activator,1,-1" } func_forcefield { "targetname" "infobooth_wall" "origin" "3542 -366 -12" "mins" "-26 -46 -51" //can stay assuming same prop is used "maxs" "42 36 151" "TeamNum" "3" "StartDisabled" "0" "renderfx" "0" "rendermode" "10" } prop_dynamic { "origin" "3542 -376 -12" //CHANGE (identical to trigger) "targetname" "infobooth" "solid" "0" "rendermode" "0" "renderfx" "0" "renderamt" "255" "modelscale" "0.8" "model" "models/props_medieval/ticket_booth/ticket_booth.mdl" "fadescale" "1" "fademindist" "-1" "disableshadows" "1" "disablereceiveshadows" "0" "DisableBoneFollowers" "1" "angles" "0 -90 0" } prop_dynamic { "origin" "3542 -366 -12" "targetname" "infobooth_fella" "solid" "0" "rendermode" "0" "renderfx" "0" "renderamt" "255" "model" "models/player/spy.mdl" "DefaultAnim" "competitive_winnerstate_idle" "fadescale" "1" "fademindist" "-1" "disableshadows" "1" "disablereceiveshadows" "0" "DisableBoneFollowers" "1" "angles" "0 0 0" } prop_dynamic_ornament //assassin's attire { "targetname" "infobooth_fella_cloths" "InitialOwner" "infobooth_fella" "spawnflags" "256" "DisableBoneFollowers" "1" "disableshadows" "1" "solid" "0" "model" "models/workshop/player/items/spy/spr18_assassins_attire/spr18_assassins_attire.mdl" } prop_dynamic_ornament //hat of cards { "targetname" "infobooth_fella_cloths" "InitialOwner" "infobooth_fella" "spawnflags" "256" "DisableBoneFollowers" "1" "disableshadows" "1" "solid" "0" "model" "models/player/items/spy/spy_cardhat.mdl" } prop_dynamic_ornament //hopeful heart { "targetname" "infobooth_fella_cloths" "InitialOwner" "infobooth_fella" "spawnflags" "256" "DisableBoneFollowers" "1" "disableshadows" "1" "solid" "0" "model" "models/workshop/player/items/all_class/robotarm_donator/robotarm_donator_gem.mdl" } logic_case { "targetname" "infobooth_menu" "case16" "Welcome to the info booth! Select an option for more details!|0|Cancel" "case01" "Bonus cash?" "case02" "Bomb slowdown?" "case03" "Friendly bots?" "case04" "Battalion's effect?" "OnCase01" "menu_bonus,$DisplayMenu,!activator,0,-1" "OnCase02" "menu_bombslow,$DisplayMenu,!activator,0,-1" "OnCase03" "menu_ally,$DisplayMenu,!activator,0,-1" "OnCase04" "menu_batts,$DisplayMenu,!activator,0,-1" } logic_case { "targetname" "menu_bonus" "case16" "Bonus cash changes|0|Cancel" "case01" "Bonuses are no longer rewarded." "case02" "But don't worry! Your pay will be more than adequate." "case03" "If anything, you won't be penalized for missing a single stack now." "case04" "Click anywhere to go back." "OnCase01" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnCase02" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnCase03" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnCase04" "infobooth_menu,$DisplayMenu,!activator,0,-1" } logic_case { "targetname" "menu_bombslow" "case16" "Bomb slowdown changes|0|Cancel" "case01" "Normally, enemies will move at reduced speed when carrying the bomb." "case02" "However..." "case03" "If an enemy is using a melee weapon, this reduction is lessened!" "case04" "Click anywhere to go back." "OnCase01" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnCase02" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnCase03" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnCase04" "infobooth_menu,$DisplayMenu,!activator,0,-1" } logic_case { "targetname" "menu_ally" "case16" "Ally bots|0|Cancel" "case01" "Eventually, you'll start receiving some ally bots." "case02" "You'll be able to see where they spawn - just outside here, usually." "case03" "Don't worry, they won't suddenly turn evil on you. Probably." "case04" "Click anywhere to go back." "OnCase01" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnCase02" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnCase03" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnCase04" "infobooth_menu,$DisplayMenu,!activator,0,-1" } logic_case { "targetname" "menu_batts" "case16" "Battalion's Effect|0|Cancel" "case01" "Your Battalion's Backup normally blocks crits, as you know." "case02" "For some reason, however, the effect for your enemies is weaker." "case03" "They still receive less damage, but do not block critical hits at all!" "case04" "Click anywhere to go back." "OnCase01" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnCase02" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnCase03" "infobooth_menu,$DisplayMenu,!activator,0,-1" "OnCase04" "infobooth_menu,$DisplayMenu,!activator,0,-1" } } //Sntr somehow made this part clipless, meaning you can go out of bounds. //So I fix it. --> now done in VScript // Clipless_Fix // { // func_forcefield // { // 2707 -810 -145 origin // up to 2957 -825 -25 // 250 0 120 // "targetname" "oob_fix" // "origin" "2707 -810 -145" // "mins" "0 15 0" // "maxs" "250 -15 120" // "TeamNum" "3" // } // } //TODO: do these work properly in-game? Test with a bomb out! //The nav_avoids only affecting the bomb carrier means bots have a tendency to flank a fuckton. //So, I made new avoids that should affect ALL bots //avoid names: //bombpath_upperleft_avoid, bombpath_upperright_avoid, //bombpath_centerleft_avoid, bombpath_centerright_avoid, bombpath_center_avoid //bombpath_buildingright_avoid //avoid relays: //bombpath_centerleft_relay, bombpath_centerright_relay //bombpath_upperleft_relay, bombpath_upperright_relay //bombpath_clearall_relay NavAvoids { logic_relay { //func_nav_avoid //////////////////////////////////////////////////////////////////////////////////////////// "OnSpawn" "bombpath_clearall_relay,AddOutput,OnTrigger left_avoid:Disable::0:-1,0,-1" "OnSpawn" "bombpath_clearall_relay,AddOutput,OnTrigger right_avoid:Disable::0:-1,0,-1" //For left routes, don't go right, do go left! "OnSpawn" "bombpath_centerleft_relay,AddOutput,OnTrigger right_avoid:Enable::0:-1,0,-1" "OnSpawn" "bombpath_upperleft_relay,AddOutput,OnTrigger right_avoid:Enable::0:-1,0,-1" // For right routes, don't go left, do go right! "OnSpawn" "bombpath_centerright_relay,AddOutput,OnTrigger left_avoid:Enable::0:-1,0,-1" "OnSpawn" "bombpath_upperright_relay,AddOutput,OnTrigger left_avoid:Enable::0:-1,0,-1" //////////////////////////////////////////////////////////////////////////////////////////// // func_nav_prefer //////////////////////////////////////////////////////////////////////////////////////////// // "OnSpawn" "bombpath_clearall_relay,AddOutput,OnTrigger right_prefer:Disable::0:-1,0,-1" // "OnSpawn" "bombpath_clearall_relay,AddOutput,OnTrigger left_prefer:Disable::0:-1,0,-1" // // Left routes // "OnSpawn" "bombpath_centerleft_relay,AddOutput,OnTrigger left_prefer:Enable::0:-1,0,-1" // "OnSpawn" "bombpath_upperleft_relay,AddOutput,OnTrigger left_prefer:Enable::0:-1,0,-1" // // Right routes // "OnSpawn" "bombpath_centerright_relay,AddOutput,OnTrigger right_prefer:Enable::0:-1,0,-1" // "OnSpawn" "bombpath_upperright_relay,AddOutput,OnTrigger right_prefer:Enable::0:-1,0,-1" //////////////////////////////////////////////////////////////////////////////////////////// // func_nav_blocker //////////////////////////////////////////////////////////////////////////////////////////// // "OnSpawn" "bombpath_clearall_relay,AddOutput,OnTrigger left_block:UnblockNav::0:-1,0,-1" // "OnSpawn" "bombpath_clearall_relay,AddOutput,OnTrigger right_block:UnblockNav::0:-1,0,-1" // // Left routes // "OnSpawn" "bombpath_centerleft_relay,AddOutput,OnTrigger right_block:BlockNav::0:-1,0,-1" // "OnSpawn" "bombpath_upperleft_relay,AddOutput,OnTrigger right_block:BlockNav::0:-1,0,-1" // // Right routes // "OnSpawn" "bombpath_centerright_relay,AddOutput,OnTrigger left_block:BlockNav::0:-1,0,-1" // "OnSpawn" "bombpath_upperright_relay,AddOutput,OnTrigger left_block:BlockNav::0:-1,0,-1" //////////////////////////////////////////////////////////////////////////////////////////// } //Strt: -200 1004 -140 //End: 1180 320 -140 //Diff: 1380 784 10 //Avg: 690 392 5 //Org: 490 712 -135 func_nav_avoid { "teamnum" "3" "targetname" "left_avoid" "tags" "common" "origin" "490 712 -135" "mins" "-690 -392 -5" "maxs" "690 392 5" "StartDisabled" "1" } // func_nav_blocker // { // "teamToBlock" "3" // "targetname" "left_block" // "origin" "490 712 -135" // "mins" "-690 -392 -5" // "maxs" "690 392 5" // "StartDisabled" "0" // } //Strt: -200 -980 -140 ; add -320 to Y for extra coverage //End: 1160 -460 -140 //Diff: 1360 -520 10 //Avg: 680 -260 5 //Org: 480 -720 -135 func_nav_avoid { "teamnum" "3" "targetname" "right_avoid" "tags" "common" "origin" "480 -720 -135" "mins" "-1480 -580 -5" "maxs" "680 360 5" "StartDisabled" "1" } // func_nav_blocker // { // "teamToBlock" "3" // "targetname" "right_block" // "origin" "480 -720 -135" // "mins" "-680 -580 -5" // "maxs" "680 260 5" // "StartDisabled" "0" // } func_nav_prefer { "teamnum" "3" "targetname" "left_prefer" "tags" "common" "origin" "490 712 -135" "mins" "-690 -392 -5" "maxs" "690 392 5" "StartDisabled" "1" } func_nav_prefer { "teamnum" "3" "targetname" "right_prefer" "tags" "common" "origin" "480 -720 -135" "mins" "-680 -580 -5" "maxs" "680 260 5" "StartDisabled" "1" } } ColoredHolograms { logic_relay { "OnSpawn" "bombpath*,$SetModel,models/props_mvm/robot_hologram_color.mdl,0,-1" "OnSpawn" "bombpath*,Color,146 80 181,0,-1" } } SkullSpawn { prop_dynamic { "targetname" "skullyfella" "angles" "0 140 10" "origin" "-2700 -550 -400" "disableshadows" "1" "model" "models/props_halloween/skull_island_horns.mdl" "modelscale" "0.8" //also makes it nonsolid already! } } SpookySpell_Blu { NoFixup 1 OnSpawnOutput { Target "skelly" Action "$setowner" Param "!activator" Delay 0.01 } tf_projectile_spellspawnzombie { "targetname" "skelly" "origin" "0 0 0" "teamnum" "3" // 2 - Red team, 3 - Blu team } } // Wave 1 CaberToss { OnSpawnOutput { Target "cabertoss_mimic" Action $SetOwner Param !activator //as it turns out, !parent does not exist in I/O??? Delay 0.02 } OnSpawnOutput { Target "cabertoss_mimic" Action FireOnce Delay 0.05 } OnSpawnOutput { Target "cabertoss_mimic" Action Kill Delay 0.08 } tf_point_weapon_mimic { "targetname" "cabertoss_mimic" "origin" "0 0 0" "angles" "0 -90 0" "teamnum" "3" //blue "$weaponname" "Caber Toss" } } PoisonArea { OnSpawnOutput { Target poison_particle Action Kill Delay 2 } OnSpawnOutput { Target poison_particle Action Kill Delay 2 } OnSpawnOutput { Target poison_hurt Action Kill Delay 3.5 } OnSpawnOutput { Target poison_particle Action Start Delay 0.01 } OnSpawnOutput { Target poison_hurt Action Enable Delay 0.8 } OnSpawnOutput { Target poison_hurt Action $SetOwner Param @p@poison_target Delay 0.01 } info_particle_system { "targetname" "poison_particle" "start_active" 0 "effect_name" "utaunt_bubbles_glow_purple_parent" } trigger_hurt { "targetname" "poison_hurt" "origin" "0 0 0" "damage" "50" //actually 25 "damagetype" "131072" //poison "damagemodel" "0" //normal "filtername" "filter_redteam" "spawnflags" "64" "StartDisabled" "1" "nodmgforce" "0" "mins" "-80 -80 -64" //this could probably catch you if you jump too low "maxs" "80 80 96" //either way this covers the indicator well enough } } PoisonArea_Target { NoFixup 1 info_target { "targetname" "poison_target" } } // Wave 2 PumpkinShot { OnSpawnOutput { Target "pumpkinbomb_shot" Action $SetOwner Param !activator //as it turns out, !parent does not exist in I/O??? Delay 0.05 } tf_projectile_spellmirv { "targetname" "pumpkinbomb_shot" "origin" "0 0 0" "angles" "0 0 0" } } //Skelly tank-related fluff! //Recolors tank, adds a cool skull (also recolored), + teleport logic for skellies. Tank_Skeleton { OnSpawnOutput { Target "!activator" Action "color" Param "144 204 253" } OnSpawnOutput { Target "stopspawner" Action Trigger } OnParentKilledOutput { Target "spawnbot_mission_sniper" Action Enable } logic_relay { "targetname" "stopspawner" "OnTrigger" "tank_path_33,AddOutput,OnPass spawnbot_mission_sniper:Disable::0:-1,0,-1" "OnTrigger" "tank_path_34,AddOutput,OnPass spawnbot_mission_sniper:Enable::0:-1,0,-1" } prop_dynamic { "targetname" "skelehat" "origin" "20 0 158" "angles" "0 90 0" "rendercolor" "144 204 253" "model" "models/props_viaduct_event/skull_island01.mdl" "modelscale" "0.1" "solid" "0" "disableshadows" "1" } info_target //Will serve as the destination { "targetname" "destination_skele" "origin" "20 0 210" //Put it where you want the bot to be } } // Wave 3 RotatingAxe { OnSpawnOutput { Target "!activator" Action "addoutput" Param "rendermode 10" Delay 0.01 } prop_dynamic { "targetname" "axe1" "parentname" "rot" "model" "models/weapons/c_models/c_axtinguisher/c_axtinguisher_pyro.mdl" "angles" "0 0 0" } func_rotating { "targetname" "rot" "spawnflags" 73 //not solid, spin on Y, start active "fanfriction" 100 "maxspeed" 400 } } SunShot { OnSpawnOutput { Target "sunshot_mimic" Action SetParent Param !activator Delay 0.05 } OnSpawnOutput { Target "sunshot_mimic" Action $SetOwner Param !activator //as it turns out, !parent does not exist in I/O??? Delay 0.1 } tf_point_weapon_mimic { "targetname" "sunshot_mimic" "origin" "0 0 0" "angles" "0 -90 0" "teamnum" "3" //blue "$weaponname" "Sun Shooter" } } Deity_Titles { //Title cards I stole from royal with permission. //In that sense, it's no longer stealing! game_text { "origin" "1984 1984 99999" "targetname" "upper_text" "message" "SOLAR TWINS, GUARDIANS OF THE SUN GOD" "x" "-1" "y" "0.4" "spawnflags" "1" "effect" "2" "channel" "2" "color" "255 245 210" "fxtime" "0.2" "fadeout" "1" //"fadein" "0" "holdtime" "5" } game_text { "origin" "1984 1984 99999" "targetname" "middle_text" "message" "DEITY OF DAWN" "x" "-1" "y" "0.45" "channel" "4" "spawnflags" "1" "color" "255 225 130" "fadein" "0.2" "fadeout" "1" "holdtime" "4.8" } game_text { "origin" "1984 1984 99999" "targetname" "lower_text" "message" "DEITY OF DUSK" "x" "-1" "y" "0.5" "channel" "1" "spawnflags" "1" "color" "255 190 100" "fadein" "0.2" "fadeout" "1" "holdtime" "4.2" } logic_relay { "targetname" "deity_text_relay" "OnTrigger" "upper_text,Display,,0,-1" "OnTrigger" "middle_text,Display,,0.4,-1" "OnTrigger" "lower_text,Display,,0.8,-1" } } Deity_Dawn_dest { KeepAlive 1 OnParentKilledOutput { Target particle_dawn Action Start Delay 0.1 } OnParentKilledOutput { Target particle_dawn Action Stop Delay 2 } info_target //Will serve as the destination { "targetname" "destination_dawn" "origin" "0 0 -10" //Slightly lower than origin; may prevent stucking in ceiling/ground? } info_particle_system { "targetname" "particle_dawn" "start_active" 0 "effect_name" "utaunt_beams_yellow" } } // Wave 4 Phaser_Title { //Title cards I stole from royal with permission. //In that sense, it's no longer stealing! game_text { "origin" "1984 1984 99999" "targetname" "upper_text" "message" "INEXPLICABLE ANOMALY, GHOST OF AN AUTOMATON" "x" "-1" "y" "0.4" "spawnflags" "1" "effect" "2" "channel" "2" "color" "65 120 252" "fxtime" "0.2" "fadeout" "1" //"fadein" "0" "holdtime" "5" } game_text { "origin" "1984 1984 99999" "targetname" "middle_text" "message" "INCORPOREAL PHASER" "x" "-1" "y" "0.5" "channel" "4" "spawnflags" "1" "color" "65 120 252" "fadein" "0.4" "fadeout" "1" "holdtime" "4.6" } logic_relay { "targetname" "phaser_text_relay" "OnTrigger" "upper_text,Display,,0,-1" "OnTrigger" "middle_text,Display,,0.4,-1" } } //Rotating Eyelander template - made by rafradek!! Super cool from Midnight Patrol :3 RotatingBlade { // OnSpawnOutput // { // Target "rot" // Action "addoutput" // Param "avelocity 0 400 0" // Delay 0.01 // } OnSpawnOutput { Target "!activator" Action "addoutput" Param "rendermode 10" Delay 0.01 } prop_dynamic { "targetname" "blade1" "parentname" "rot" "model" "models/weapons/c_models/c_claymore/c_claymore.mdl" "angles" "0 90 90" } func_rotating { "targetname" "rot" "spawnflags" 73 //not solid, spin on Y, start active "fanfriction" 100 "maxspeed" 400 } } RotatingBladeShooter { tf_point_weapon_mimic { "targetname" "aimrocket_mimic" "origin" "0 0 0" "angles" "0 0 0" "teamnum" "3" //blue "$firetime" "1.6" "$preventshootparent" 1 "$weaponname" "Fire Blade" } } //Wave 5 //Special thanks to lite for providing these + the base for texts! //Includes both the props, nobuild, and relays. spawnpoint { NoFixup 1 prop_dynamic { "targetname" "spawnpointprops" "model" "models/props_mvm/robot_spawnpoint.mdl" "defaultanim" "idle" "disableshadows" "1" // prevents shadow from nothing while disabled "skin" "3" // Skin 0 for Red, Skin 1 for Blue, Skin 2 for Gray, and Skin 3 to disable the hologram } //Preventing any trollage with sentries or teleporters func_nobuild { "targetname" "spawnpoint_nobuild" "origin" "3650 430 -17" "mins" "-36 -36 -10" "maxs" "36 36 98" //min 96 to not build on top, here's 2 free units of caution "TeamNum" "2" } logic_relay { "targetname" "spawnpoint_relay_r" "OnTrigger" "spawnpointprops,skin,0,0,-1" // When triggered, changes all "spawnpointprops" to use the Red skin (0) } logic_relay { "targetname" "spawnpoint_relay" "OnTrigger" "spawnpointprops,skin,3,0,-1" // When triggered, changes all "spawnpointprops" to use the Disabled skin (3) } } RocketTurret { // NoFixup 1 OnSpawnOutput { Target "aimrocket_mimic" Action $SetOwner Param @e@m_hOwnerEntity@!activator Delay 0.05 } OnSpawnOutput { Target "aimrocket_mimic" Action SetParent Param !activator Delay 0.05 } logic_relay { "spawnflags" "2" "targetname" "aimrocket_firer" "OnSpawn" "aimrocket_firer,Trigger,,0.2,-1" "OnTrigger" "aimrocket_mimic,FireOnce,,0.2,-1" "OnTrigger" "aimrocket_mimic,FireOnce,,0.4,-1" "OnTrigger" "aimrocket_mimic,FireOnce,,0.6,-1" "OnTrigger" "aimrocket_mimic,FireOnce,,0.8,-1" "OnTrigger" "aimrocket_firer,Trigger,,1.8,-1" } tf_point_weapon_mimic { "targetname" "aimrocket_mimic" "origin" "0 0 0" "angles" "0 0 0" "teamnum" "3" //blue "$firetime" "1.6" "$preventshootparent" 1 "$weaponname" "Back Rocket" } } // Wave 6 ThunderStrike { // NoFixup 1 OnSpawnOutput { Target thunderstrike Action Kill Delay 2 } OnSpawnOutput { Target thunderstrike_warn Action Kill Delay 2 } OnSpawnOutput { Target thunderstrike_hurt Action Kill Delay 1.9 } OnSpawnOutput { Target thunderstrike Action Start Delay 1.8 } OnSpawnOutput { Target thunderstrike_hurt Action Enable Delay 1.8 } info_particle_system { "targetname" "thunderstrike" "start_active" 0 "effect_name" "utaunt_lightning_bolt" } info_particle_system { "targetname" "thunderstrike_warn" "start_active" 1 "effect_name" "utaunt_electricity_cloud_parent_WB" } trigger_hurt { "targetname" "thunderstrike_hurt" "origin" "0 0 0" "damage" "150" //actually 75 "damagetype" "256" //shock "damagemodel" "0" //normal "filtername" "filter_redteam" "spawnflags" "64" "StartDisabled" "1" "nodmgforce" "0" "mins" "-64 -64 -64" //this could probably catch you if you jump too low "maxs" "64 64 96" //either way this covers the indicator well enough } } ThunderTarget { // NoFixup 1 env_entity_maker { "targetname" "thunderspawner" "spawnflags" "0" "EntityTemplate" "ThunderStrike" "PostSpawnSpeed" "0" "PostSpawnInheritAngles" "0" } info_target { "targetname" "target_thunder" "origin" "0 0 5" //just in case it'll clip into the floor or something } logic_relay { "targetname" "thunder_trigger" "OnSpawn" "!self,Trigger,,0.1,-1" "OnTrigger" "!self,FireUser1,,2,-1" "OnTrigger" "thunderspawner,ForceSpawnAtEntityOrigin,@p@!self,0,-1" "OnUser1" "!self,Trigger,,0.1,-1" } } //directly taken from Jurrell, gotem PowerupLogic { NoFixup 1 logic_relay { "targetname" "powerup_logic_relay" "spawnflags" 2 "OnTrigger" "@p@powerup_haver_target*,$RemoveCond,91,0.1,-1" } } PowerupLogic_Owned { OnSpawnOutput { Target "powerup_haver_target" Action SetParent Param "!activator" Delay 0.01 } OnParentKilledOutput { Target "item_powerup_rune" Action Kill Delay 0 } info_target { "targetname" "powerup_haver_target" } } PowerupLogic_Medic { OnParentKilledOutput { Target "item_powerup_rune" Action Kill Delay 0 } OnParentKilledOutput { Target "powerup_logic_relay" Action Trigger Delay 0.001 } } // CanteenLogic_Medic // { // NoFixup 1 // OnParentKilledOutput // { // Target "@p@canteen_target" // Action $AddItemAttribute // Param "powerup charges|1|Battery Canteens" // } // OnParentKilledOutput // { // Target "@p@canteen_target" // Action $AddItemAttribute // Param "faster reload rate|0|0" // } // OnParentKilledOutput // { // Target "@p@canteen_target" // Action $AddItemAttribute // Param "fire rate bonus|0.35|0" // } // } // CanteenLogic_Owned // { // NoFixup 1 // info_target // { // "targetname" "canteen_target" // } // } BlimpBotTeleDest_A { OnSpawnOutput { Target "!activator" Action "color" Param "77 114 52" } OnParentKilledOutput { Target "destination_air" Action Kill Delay 1 } KeepAlive 1 info_target { "targetname" "destination_air" } } BlimpBotTeleDest_B { OnSpawnOutput { Target "!activator" Action "color" Param "77 114 52" } OnParentKilledOutput { Target "destination_strike" Action Kill Delay 1 } KeepAlive 1 info_target { "targetname" "destination_strike" } } Dispenser_Heavy { NoFixup 1 OnSpawnOutput { Target dispenserpocket Action SetBuilder Param !parent Delay 0.01 } OnSpawnOutput { Target dispenserpocket Action SetHealth Param 1296 Delay 0.01 } obj_dispenser { "targetname" "dispenserpocket" "angles" "90 -100 105" "origin" "55 0 30" "teamnum" 2 //red "spawnflags" 2 //inv, inf ammo "solid" 0 "defaultupgrade" 2 //"rendermode" 10 if needed to be invis } } DispenserTest { OnSpawnOutput { Target disp_test_heal Action $SetProp$m_iHighestUpgradeLevel //normal limit is 1, breaks at 4 Param 3 Delay 0.01 } OnSpawnOutput { Target disp_test_heal Action SetDispenserLevel Param 3 Delay 0.02 } dispenser_touch_trigger { "targetname" "disp_test_bound" "origin" "0 0 0" "StartDisabled" "0" "mins" "-188 -188 -128" "maxs" "188 188 128" } mapobj_cart_dispenser { "targetname" "disp_test_heal" "touch_trigger" "disp_test_bound" "origin" "0 0 0" "teamnum" "2" "spawnflags" "2" } } // Wave 7 BossLogic { logic_relay { "targetname" "boss_phasechange" //Trigger: enter phase 2 "OnTrigger" "!activator,$AddCond,52,0,-1" "OnTrigger" "!activator,$AddPlayerAttribute,move speed penalty|0.01,0,-1" //User1: exit phase 2, enter phase 3 "OnUser1" "!activator,$RemoveCond,52,0,-1" "OnUser1" "!activator,$RemoveCond,52,0.05,-1" "OnUser1" "!activator,$RemovePlayerAttribute,move speed penalty,0,-1" } } GrenadeSpawner { OnSpawnOutput { Target "nadeshot_mimic" Action $SetOwner Param !activator //as it turns out, !parent does not exist in I/O??? Delay 0.02 } OnSpawnOutput { Target "nadeshot_mimic" Action $StartFiring Param 1 Delay 0.5 } OnParentKilledOutput { Target nadeshot_mimic Action Kill } tf_point_weapon_mimic { "targetname" "nadeshot_mimic" "origin" "0 0 0" "angles" "0 0 0" "teamnum" "3" //blue "$weaponname" "Grenade Generator" "$firetime" "0.8" "$weaponnosound" "1" } } } ExtraSpawnPoint { Name "spawnbot_reprogrammed" // Spawns just outside of RED's right-side exit TeamNum 3 X 3650 Y 430 Z 24 //really idk how high it NEEDS to be off the ground. This is like, 41 units higher. } ExtraSpawnPoint { Name "spawnbot_main" // Spawns nearer to the dropdown than spawnbot TeamNum 3 X -2700 Y -550 Z -235 } ExtraTankPath // Blimp spawn { Name "tank_path_blimp_a" Node "-1700 -1650 -40" Node "-1360 -1200 340" Node "-1020 -750 340" Node "900 -750 340" Node "1200 -750 500" Node "1750 -750 250" Node "1750 -750 250" Node "2975 -360 250" } ExtraTankPath // Blimp spawn { Name "tank_path_blimp_b" Node "-2300 1100 -160" Node "-1550 850 300" Node "-550 450 360" Node "1600 450 360" Node "3000 -140 360" } Templates { Zombie_Scout { Item "Zombie Scout" // UseCustomModel "models/player/scout.mdl" UseHumanModel 2 NoIdleSound 1 } Zombie_Soldier { Item "Zombie Soldier" // UseCustomModel "models/player/soldier.mdl" UseHumanModel 2 NoIdleSound 1 } Zombie_Pyro { Item "Zombie Pyro" // UseCustomModel "models/player/pyro.mdl" UseHumanModel 2 NoIdleSound 1 } Zombie_Demo { Item "Zombie Demo" // UseCustomModel "models/player/demo.mdl" UseHumanModel 2 NoIdleSound 1 } Zombie_Heavy { Item "Zombie Heavy" // UseCustomModel "models/player/heavy.mdl" UseHumanModel 2 NoIdleSound 1 } Zombie_Engineer { Item "Zombie Engineer" // UseCustomModel "models/player/engineer.mdl" UseHumanModel 2 NoIdleSound 1 } Zombie_Medic { Item "Zombie Medic" // UseCustomModel "models/player/medic.mdl" UseHumanModel 2 NoIdleSound 1 } Zombie_Sniper { Item "Zombie Sniper" // UseCustomModel "models/player/sniper.mdl" UseHumanModel 2 NoIdleSound 1 } Zombie_Spy { Item "Zombie Spy" // UseCustomModel "models/player/spy.mdl" UseHumanModel 2 NoIdleSound 1 } //Turns bots red; goes to bomb. RedBot_Bomb { Action EscortFlag //ignore escort limit! AddCond { Name "TF_COND_REPROGRAMMED" } CharacterAttributes { "cannot pick up intelligence" 1 } } //Turns bots red; goes to bomb; fix for giant disp heavy. RedBot_Bomb_Fetch { Action FetchFlag AddCond { Name "TF_COND_REPROGRAMMED" } CharacterAttributes { "cannot pick up intelligence" 1 } } //Turns bots red + adds mobber behavior. RedBot_Hunt { Attributes DisableDodge Action Mobber AddCond { Name "TF_COND_REPROGRAMMED" } } //////////////////////////////////////////////////////////////////////////// /////////////////////// Red bots //////////////////////// //////////////////////////////////////////////////////////////////////////// Red_Soldier_Buff { Class Soldier Name "Buff Direct Hit Soldier" Skill Expert ClassIcon soldier_buff Item "The Direct Hit" Item "The Buff Banner" Attributes SpawnWithFullCharge Attributes HoldFireUntilFullReload AimLeadProjectileSpeed 2000 ItemAttributes { ItemName "The Direct Hit" "reload time decreased while healed" 0.25 } CharacterAttributes { "deploy time decreased" 0.5 } Template RedBot_Hunt } Red_Pyro_Flaregun { Template T_TFBot_Pyro_Flaregun Name "Healing Flare Pyro" ClassIcon pyro_flare_heal_seel ItemAttributes { ItemName "The Flare Gun" "heal on hit for rapidfire" 100 "reload time decreased while healed" 0.25 } AddTemplate RedBot_Hunt } Red_Giant_Soldier_Buff { Class Soldier Name "Giant Buff Direct Soldier" Health 4000 Skill Expert ClassIcon soldier_burstfire_buff Item "The Direct Hit" Item "The Buff Banner" Attributes MiniBoss Attributes SpawnWithFullCharge Attributes HoldFireUntilFullReload AimLeadProjectileSpeed 2000 ItemAttributes { ItemName "The Direct Hit" "fire rate bonus" 0.1 "faster reload rate" 0.6 "clip size upgrade atomic" 5 "reload time decreased while healed" 0.75 //a little faster but not a ton } ItemAttributes { ItemName "The Buff Banner" "increase buff duration" 9 "mod soldier buff range" 1.5 } CharacterAttributes { "deploy time decreased" 0.5 "move speed penalty" 0.55 "damage force reduction" 0.5 "health from healers reduced" 0.1 "health from packs increased" 0.25 //smol -> 1/20 (200), mid -> 1/8 (500) "health regen" 20 } Template RedBot_Hunt } Red_Giant_Soldier_Backup { Template T_TFBot_Giant_Soldier Class Soldier Name "Giant Ally Backup Soldier" Health 4000 ClassIcon soldier_backup Item "The Black Box" Item "The Battalion's Backup" Item "The Grenadier's Softcap" Attributes SpawnWithFullCharge Attributes UseBossHealthBar ItemAttributes { ItemName "The Battalion's Backup" "increase buff duration" 6 //750$ - 3 ticks of 250$ sure "mod soldier buff range" 2 //300$ - 2 ticks of 150$ or w/e "deploy time decreased" 0.5 //fix for weapon deploy. juuust in case! } ItemAttributes { ItemName "The Black Box" //he bought some upgrades "health on radius damage" 60 //400$ - let's say this is like hok, 200$ per 10, so "fire rate bonus" 0.8 //200$ "faster reload rate" 0.6 //500$ "reload time decreased while healed" 0.75 //$2150 spent. yeah bby } CharacterAttributes { "move speed bonus" 0.55 "health from healers reduced" 0.1 "health from packs increased" 0.25 //smol -> 1/20 (200), mid -> 1/8 (500) "health regen" 20 } AddTemplate RedBot_Bomb } //Previous version. Too tanky for its own good! Red_Giant_Soldier_TankBuster { Template T_TFBot_Giant_Soldier Class Soldier Name "Chief Tank Buster Soldier" Health 4000 ClassIcon soldier_blackbox_backup Item "The Black Box" Item "The Battalion's Backup" Item "The Grenadier's Softcap" Attributes SpawnWithFullCharge Attributes UseBossHealthBar ItemAttributes { ItemName "The Battalion's Backup" "increase buff duration" 6 "mod soldier buff range" 2 } ItemAttributes { ItemName "The Black Box" "health on radius damage" 0 "fire rate bonus" 0.001 "reload time decreased while healed" 0.75 "projectile spread angle penalty" 3 "heal on hit for rapidfire" 200 } CharacterAttributes { "move speed bonus" 0.55 "health from healers reduced" 0.1 "health from packs increased" 0.25 //smol -> 1/20 (200), mid -> 1/8 (500) "health regen" 10 } AddTemplate RedBot_Bomb } Red_Giant_Heavy_Deflector { Template T_TFBot_Giant_Heavyweapons_Deflector CharacterAttributes { "damage force reduction" 0.25 "override footstep sound set" 2 } AddTemplate RedBot_Bomb_Fetch } Red_Giant_Heavy_Dispenser { Template T_TFBot_Giant_Heavyweapons_Deflector Name "Giant Dispenser Heavy" ClassIcon heavy_dispenser_red Item "Provisions Cap" Item "Packable Provisions" CharacterAttributes { "damage force reduction" 0.25 "health from healers reduced" 0.1 "health from packs increased" 0.25 //smol -> 1/20 (200), mid -> 1/8 (500) "health regen" 20 } SpawnTemplate { Name "DispenserTest" Bone bip_spine_2 Origin "-20 0 0" Delay 0.4 } AddTemplate RedBot_Bomb_Fetch } //////////////////////////////////////////////////////////////////////////// /////////////////////// After bots //////////////////////// //////////////////////////////////////////////////////////////////////////// //Scout with an arm. He's armed. After_Scout_Melee { Class Scout Name "Armed Scout" Item "Unarmed Combat" Item "The Tomb Wrapper" Item "A Handsome Handy Thing" ClassIcon scout_bat_nys WeaponRestrictions MeleeOnly Attributes DisableDodge Template Zombie_Scout CharacterAttributes { "mult flag carrier move speed" 1.34 //too fast when fully canceled } } //A mini-giant soldier variant of the Giant Bazooka Backup Soldier. //Allows for blast damage to be more effective thanks to the health being spread over more targets, //while being more threatening with more rockets being shot! After_Soldier_Bazooka_Backup { Class Soldier Skill Normal Health 650 Scale 1.3 ClassIcon soldier_bazooka_backup Name "Bumbling Backup Soldier" Item "The Beggar's Bazooka" Item "The Battalion's Backup" Item "Helmet without a Home" Item "The Captain's Cocktails" Item "Lieutenant Bites the Dust" Attributes SpawnWithFullCharge Attributes HoldFireUntilFullReload //PLEASE just obey this ItemAttributes { ItemName "The Beggar's Bazooka" "can overload" 0 "auto fires full clip" 0 "reload time increased hidden" 1 } ItemAttributes { ItemName "The Battalion's Backup" "increase buff duration" 3 //longer but not super long "max health additive bonus" 0 "deploy time increased" 0.5 "gesture speed increase" 0.66 //EXPERIMENTAL: regular backup effect, not overridden. // "effect cond override" 42 //bomb buff: not crit immune } AddTemplate Zombie_Soldier } //Demo that throws Cabers without any passive-weapon jank. After_Demoman_CaberToss_PT { Class Demoman Skill Expert Health 650 Scale 1.4 Name "Caber-Tossing Demo" Item "The Ullapool Caber" ClassIcon demo_caber_nys WeaponRestrictions MeleeOnly ItemAttributes { ItemName "The Ullapool Caber" "regenerate stickbomb" 1 "fire rate penalty" 1.5 //1.2 } ShootTemplate { Name "CaberToss" Speed 0 Origin "0 0 94" } CharacterAttributes { "move speed bonus" 0.75 "health regen" 1 "mult flag carrier move speed" 1.34 //Consistency } AddTemplate Zombie_Demo } //Demo that throws Cabers, but with passive-weapon jank. After_Demoman_CaberToss { Class Demoman Skill Expert Health 650 Scale 1.4 Name "Caber-Tossing Demo" Item "The Ullapool Caber" Item "Head Banger" Item "Mad Lad" ClassIcon demo_caber_nys WeaponRestrictions PrimaryOnly ItemAttributes { ItemName "The Ullapool Caber" "is_passive_weapon" 1 "regenerate stickbomb" 1 "fire rate penalty" 1.5 //1.2 } ItemAttributes { ItemName "TF_WEAPON_GRENADELAUNCHER" "custom item model" "models/workshop/weapons/c_models/c_caber/c_caber.mdl" "custom projectile model" "models/workshop/weapons/c_models/c_caber/c_caber.mdl" "projectile speed decreased" 0.9 "grenade explode on impact" 1 "damage penalty" 0.75 "fire rate penalty" 2 //1.2 "faster reload rate" 0 "custom kill icon" "ullapool_caber_explosion" } CharacterAttributes { "move speed bonus" 0.75 "health regen" 1 "mult flag carrier move speed" 1.34 } AddTemplate Zombie_Demo } //Punchy Heavy! An old classic. //Does not target the bomb. After_Heavy_Fist { Class Heavyweapons Name "Fist Heavy" Item "Ghastly Gibus 2010" //ghastlier! ClassIcon heavy_zombie_lite WeaponRestrictions MeleeOnly Attributes DisableDodge Action Mobber Template Zombie_Heavy ItemAttributes { ItemName "Ghastly Gibus 2010" "item style override" 1 } CharacterAttributes { "mult flag carrier move speed" 1.34 } } //A crossbow medic that can penetrate allies and enemies alike! After_Medic_Infpop { Class Medic Name "Death-Defying Medic" Skill Hard Item "The Quick-Fix" Item "Das Ubersternman" Item "Herzensbrecher" Item "Medi-Mask" Item "The Second Opinion" Attributes SpawnWithFullCharge ClassIcon medic_infpop ItemAttributes { ItemName "The Quick-Fix" "heal rate bonus" 4.17 //Base 300 HP/sec heals "overheal penalty" 0.001 "health from healers reduced" 0.5 //150 HP/sec selfheal "uber duration bonus" -9 //Infinite uber duration } CharacterAttributes { "bot medic uber health threshold" 160 } Template Zombie_Medic } //A crossbow medic that can penetrate allies and enemies alike! After_Medic_Xbow { Class Medic Name "Infestinger Medic" // Health 350 // Scale 1.2 Skill Normal Item "The Crusader's Crossbow" Item "Berliner's Bucket Helm" ClassIcon medic_crossbow_penetration WeaponRestrictions PrimaryOnly Action FetchFlag AimAt Head ItemAttributes { ItemName "The Crusader's Crossbow" "projectile penetration" 1 // "health drain medic" -1 //this is to show their health! } Template Zombie_Medic } //A giant backup soldier, using the Beggar's Bazooka. Pretty classic. After_Giant_Soldier_Bazooka_Backup { Template T_TFBot_Giant_Soldier ClassIcon soldier_bazooka_backup Name "Giant Unstable Backup Soldier" Item "The Beggar's Bazooka" Item "The Battalion's Backup" Item "Helmet without a Home" Attributes SpawnWithFullCharge Attributes HoldFireUntilFullReload //PLEASE just obey this ItemAttributes { ItemName "The Beggar's Bazooka" "can overload" 0 "auto fires full clip" 0 "reload time increased hidden" 1 } ItemAttributes { ItemName "The Battalion's Backup" "increase buff duration" 3.5 //longer but not super long "effect cond override" 42 //bomb buff: not crit immune "max health additive bonus" 0 "deploy time increased" 0.5 "gesture speed increase" 0.66 } AddTemplate Zombie_Soldier } //A Giant Short Circuit engineer, occassionally alt-firing! After_Giant_Engineer_ShortCircuit { Class Engineer Skill Expert Name "Giant Electro-charged Engineer" Health 3000 ClassIcon engineer_shortcircuit_lite Action FetchFlag MaxVisionRange 750 UseMeleeThreatPrioritization 1 WeaponRestrictions SecondaryOnly Item "The Short Circuit" //Old set // Item "Life Support System" // Item "Iron Lung" // Item "Defragmenting Hard Hat 17%" //New set Item "Tin-1000" Item "Roboot" Item "Iron Fist" Item "Arsonist Apparatus" Item "Iron Lung" Attributes MiniBoss FireWeapon { Type Secondary Cooldown 8.7 Duration 0.7 //2 orbs Delay 10 Repeats 0 IfSeeTarget 1 } VoiceCommand { Type "Battle Cry" Cooldown 8.7 Delay 8.5 Repeats 0 IfSeeTarget 1 } ItemAttributes { ItemName "The Short Circuit" "dmg penalty vs players" 2.5 //25 on normal hit, 37.5 on orb "disable buildings on hit" 2 //electricity could overcharge them, right? "damage blast push" 1.5 "max bullet range" 130 //does indeed work, and can even increase range! } CharacterAttributes { "move speed penalty" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 } Template Zombie_Engineer } //A Giant Short Circuit engineer that moves extra fast, but is less bulky! After_Giant_Engineer_ShortCircuit_Fast { Class Engineer Skill Expert Name "Giant Undead Android Engie" Health 1250 //Eat your heart out, Super Scout. ClassIcon engineer_shortcircuit_lite //_fast? _blast? Action FetchFlag MaxVisionRange 750 UseMeleeThreatPrioritization 1 WeaponRestrictions SecondaryOnly Item "The Short Circuit" Item "Tin-1000" Item "Roboot" Item "Iron Fist" Item "Arsonist Apparatus" Item "Iron Lung" Attributes MiniBoss VoiceCommand { Type "Battle Cry" Cooldown 8.7 Delay 3 Repeats 0 IfSeeTarget 1 } ItemAttributes { ItemName "The Short Circuit" "dmg penalty vs players" 3.5 //35 per normal hit "fire rate penalty" 4 //0.4s between hits "disable buildings on hit" 2 //electricity could overcharge them, right? "damage blast push" 1.5 "max bullet range" 130 //does indeed work, and can even increase range! } CharacterAttributes { "move speed bonus" 1.3 //Test out some different values. "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 } Template Zombie_Engineer } //A giant medic that spreads damaging areas around itself, and deals damage relative to current heatlth. //A bit too confusing for common use... After_Giant_Medic_Plague { Class Medic Name "Giant Plague Spreading Medic" Health 4000 Action FetchFlag Item "The Ubersaw" Item "Platinum Pickelhaube" Item "The Steam Pipe" Attributes MiniBoss Attributes DisableDodge ClassIcon medic_jug_ubersaw WeaponRestrictions MeleeOnly SpawnTemplate PoisonArea_Target DesiredAttackRange 110 ItemAttributes { ItemName "The Ubersaw" "damage penalty" 0.2 //13 + 8% of curr hp, so medic-less max is 30 on direct hit "fire rate penalty" 1.5 "melee range multiplier" 1.5 //this gives them a minor edge without being too punishing "mult bleeding damage" 0.01 "mult bleeding delay" 2 } ItemModel // Replaces item model { ItemName "Platinum Pickelhaube" Model "models/workshop/player/items/medic/robo_medic_grimm_hatte/robo_medic_grimm_hatte.mdl" } ItemModel { ItemName "The Steam Pipe" Model "models/workshop/player/items/medic/robo_medic_blighted_beak/robo_medic_blighted_beak.mdl" } CharacterAttributes { "dmg current health" 0.08 "bleeding duration" 5 //10 ticks "move speed penalty" 0.45 //they'd be a bit fast otherwise: 144 HU/s, about giant demo speed "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 } AddTemplate Zombie_Medic } //////////////////////////////////////////////////////////////////////////// /////////////////////// Cult bots //////////////////////// //////////////////////////////////////////////////////////////////////////// //A soldier. Very simple, but this one shoots eyeballs. Cult_Soldier { Name "Monocultus Soldier" Class Soldier Attributes HoldFireUntilFullReload Item "Upgradeable TF_WEAPON_ROCKETLAUNCHER" Item "MONOCULUS!" RocketCustomModel "models/props_halloween/eyeball_projectile.mdl" UseHumanModel 2 //add item zombie soldier to some } //A slowing pyro! Can decrease speed by a bit. Cult_Pyro { Name "Summoned Searer Pyro" Class Pyro Skill Normal //intentional: aim less well forgives slowing effect ClassIcon pyro_slowdown Attributes AlwaysFireWeapon Item "Upgradeable TF_WEAPON_FLAMETHROWER" Item "The Seared Sorcerer" Item "dec2014 Pyromancer's Raiments" UseHumanModel 2 ItemAttributes { ItemName "Upgradeable TF_WEAPON_FLAMETHROWER" "paintkit_proto_def_index" 269 //Spider Season "set_item_texture_wear" 0.2 "slow enemy on hit major" 2 //slows down to 280 HU/s, no less (normal demoman speed) } } //Bigger punchy packin' a punch! //Does not suffer bomb slowdown. Cult_Heavy_Fist { Class Heavyweapons Name "Resurrected Flesh Gauntlet" Health 900 Scale 1.5 Item "Immobile Suit" ClassIcon heavy_zombie_arm2_lite WeaponRestrictions MeleeOnly Attributes DisableDodge Template Zombie_Heavy CharacterAttributes { "mult flag carrier move speed" 1.5 } } //A Widowmaker engie. Plain and simple. //Kind of a "rapid fire" shotgun, if you think about it? Cult_Engineer { Class Engineer Name "Pumpkinton Engie" Action FetchFlag Item "The Widowmaker" Item "Hollowed Helm" Item "Gourd Grin" Item "The Gunslinger" //slightly more health to compensate for having more cash. ClassIcon engineer_widowmaker_nys ItemAttributes { ItemName "The Widowmaker" "fire rate penalty" 1.3 //reduces overall spam, kinda like Shotgun Heavies! } Template Zombie_Engineer } //A human Quick-Fix Medic! Can pop a charge, too. //Similar stats to regular Uber Medic. Cult_Medic { Class Medic Name "Pumpkinton's Patch-Up Medic" Item "Towering Patch of Pumpkins" Item "Gourd Grin" Item "The Quick-Fix" Attributes SpawnWithFullCharge ItemAttributes { ItemName "The Quick-Fix" "heal rate bonus" 5 "ubercharge rate bonus" 2 //don't leave 'em living! } CharacterAttributes { "bot medic uber health threshold" 51 } Template Zombie_Medic } //A human Superheal Medic! Cult_Medic_Superheal { Class Medic Name "Necrotic Summoner Medic" Item "Templar's Spirit" Item "The Quick-Fix" Attributes SpawnWithFullCharge ClassIcon medic_infpop ItemAttributes { ItemName "The Quick-Fix" "heal rate bonus" 4.17 //Base 300 HP/sec heals "overheal penalty" 0.001 "health from healers reduced" 0.5 //150 HP/sec selfheal "uber duration bonus" -9 //Infinite uber duration } CharacterAttributes { "bot medic uber health threshold" 160 } UseHumanModel 2 } Cult_Sniper_Skele { Class Sniper WeaponRestrictions MeleeOnly Attributes DisableDodge Name "Summoned Skeleton" FireInput { Target !activator Action $TeleportToEntity Param "destination_skele" Delay 0.1 Repeats 1 } AddCond //spawn protection { Index 52 Duration 3.5 //they walk off a tank and die too instantaneously } //Credit to CreatorForce, from Undead Rising! //Does not include the ambient_generics. ClassIcon dead_blu_lite Skin 1 //blue skin Scale 1.001 //so they break apart UseCustomModel "models/bots/skeleton_sniper/skeleton_sniper.mdl" //skelly DeathSound "misc/halloween/skeleton_break.wav" //appropriate death sound! ItemAttributes { ItemName "TF_WEAPON_CLUB" "custom kill icon" "spellbook_skeleton" "is invisible" 1 } CharacterAttributes { "mult flag carrier move speed" 1.5 } } Cult_Sniper_WetBow { Template T_TFBot_Sniper_Huntsman Name "Monocultus Sneyeper" Item "Jarmaments" Item "MONOCULUS!" ClassIcon sniper_bow_jarate ItemAttributes { ItemName "The Huntsman" "damage bonus" 1 "damage penalty" 0.5 "add cond on hit" 24 "add cond on hit duration" 5 } UseCustomModel "models/player/sniper.mdl" //add item zombie sniper to some } Cult_Giant_Soldier { Template T_TFBot_Giant_Soldier Name "Giant Monocultus Leader Soldier" Item "Upgradeable TF_WEAPON_ROCKETLAUNCHER" Item "MONOCULUS!" MaxVisionRange 1500 //They get a little insane w/o it... Attributes AlwaysCrit ClassIcon soldier_bazooka //burstfire / I suppose this works... RocketCustomModel "models/props_halloween/eyeball_projectile.mdl" RocketCustomParticle "eyeboss_projectile" ItemAttributes { ItemName "Upgradeable TF_WEAPON_ROCKETLAUNCHER" "fire rate bonus" 0.45 "clip size penalty" 0.75 "reload time increased" 1.2 "projectile speed decreased" 0.65 } AddTemplate Zombie_Soldier } //TEST: does this work better if pumpkin explosion is instead done with ShootTemplate? //Pair with "projectile detonate time" instead of m2! Cult_Giant_Demo_Pumpkin { Name "Sir Pumpkinton I" Template T_TFBot_Giant_Demoman Health 3300 MaxVisionRange 1800 Item "Sir Pumpkinton" Item "The Whiskey Bib" Item "harvest_stickybomblauncher_pumpkinpatch" Item "Secret Diary" StripItemSlot 0 //Spell use requires them to be able to swap weapons StripItemSlot 2 //And for some reason they switch to their melee??? ExtAttr AlwaysFireWeaponAlt ClassIcon pumpkin_lord2 ItemAttributes { ItemName "harvest_stickybomblauncher_pumpkinpatch" "fire rate penalty" 1.25 "max pipebombs decreased" -6 //two! "sticky arm time penalty" 0.8 //additive value "projectile range decreased" 0.34 "stickybomb charge rate" 0.001 "faster reload rate" 0.2 //technically could use SR here but meh } CharacterAttributes { "SPELL: Halloween pumpkin explosions" 1 } FireWeapon { Type "Action" Delay 3 Cooldown 4 IfSeeTarget 1 Duration 0.4 } Spell //Gives specified spell to bots. { Delay 3 Cooldown 6 IfSeeTarget 1 Charges 1 //spells to give Limit 1 //spells the bot can store Type "Pumpkin MIRV" } AddTemplate Zombie_Demo } Cult_Giant_Demoman { Template T_TFBot_Giant_Demoman Name "Giant Revived Ravager Demo" Health 3300 // ClassIcon demoknight_headtaker_nys Item "Upgradeable TF_WEAPON_GRENADELAUNCHER" Item "Ethereal Hood" Item "The Hurt Locher" ItemAttributes { ItemName "Upgradeable TF_WEAPON_GRENADELAUNCHER" "paintkit_proto_def_index" 297 //necromanced "set_item_texture_wear" 0.2 "faster reload rate" 0.5 "fire rate bonus" 0.5 } AddTemplate Zombie_Demo } Cult_Giant_Demoknight { Template T_TFBot_Giant_Demoman Name "Giant Summoned Headtaker Demo" Health 3000 ClassIcon demoknight_headtaker_nys WeaponRestrictions MeleeOnly Item "The Horseless Headless Horseman's Headtaker" Item "Ethereal Hood" Attributes DisableDodge ItemAttributes { ItemName "The Headless Horseless Horsemann's Headtaker" "critboost on kill" 5 "max health additive penalty" 0 } CharacterAttributes { "move speed bonus" 0.62 //approx as fast as a gdemoknight with 3 heads } AddTemplate Zombie_Demo } //////////////////////////////////////////////////////////////////////////// /////////////////////// Tomb bots ///////////////////// //////////////////////////////////////////////////////////////////////////// Tomb_Scout_Sun { Name "Tomb Terror Scout" Class Scout Skill Expert Health 350 Scale 1.2 Item "Wrap Battler" Item "B-ankh!" Item "Futankhamun" Item "Sun-on-a-Stick" WeaponRestrictions MeleeOnly Attributes DisableDodge ClassIcon scout_sunstick_swordstone CharacterAttributes { "mult flag carrier move speed" 1.34 //lesser reduction } Template Zombie_Scout } Tomb_Pyro_Torch { Name "Tomb Torcher Pyro" Class Pyro Skill Normal Item "The Macabre Mask" Item "The Maniac's Manacles" Item "The Manmelter" WeaponRestrictions SecondaryOnly ClassIcon pyro_manmelter_spammer ItemAttributes { ItemName "The Manmelter" "fire rate bonus" 0.3 } Template Zombie_Pyro } Tomb_Demo_Sticky { Class Demoman Skill Hard Name "Tomb Trasher Demo" Item "The Pithy Professional" ClassIcon demo_sticky_daan WeaponRestrictions SecondaryOnly ItemAttributes { ItemName "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" "paintkit_proto_def_index" 268 //mummified mimic "set_item_texture_wear" 0.2 "projectile range increased" 0.35 "stickybomb charge rate" 0.001 "max pipebombs decreased" -7 "faster reload rate" 0.8 //0.872 } Template Zombie_Demo } Tomb_Demo_Quickie { Class Demoman Skill Hard Name "Tomb Torturer Demo" Health 650 Scale 1.4 Item "The Quickiebomb Launcher" Item "The Blast Blocker" ClassIcon demo_quickie_pda WeaponRestrictions SecondaryOnly AimAt Body AimOffset "0 0 -5" ItemAttributes { ItemName "The Quickiebomb Launcher" "projectile range increased" 0.45 "stickybomb charge rate" 0.001 "max pipebombs decreased" -7 "faster reload rate" 0.8 //0.872 "fire rate penalty" 1.5 //0.9s "stickybomb stick to enemies" 1 } CharacterAttributes { "move speed penalty" 0.9 "health regen" 1 } Template Zombie_Demo } Tomb_Sniper_Croc { Class Sniper Name "Ferocious Nile Crocodile" Health 650 Scale 1.4 Item "Crocodile Mun-dee" Item "Scopers Scales" WeaponRestrictions MeleeOnly Attributes DisableDodge ClassIcon sniper_kukri_lite ItemAttributes { ItemName "TF_WEAPON_CLUB" "custom kill icon" "crocodile" "bleeding duration" 3 "is invisible" 1 } CharacterAttributes { "health regen" 1 "mult flag carrier move speed" 1.5 } Template Zombie_Sniper } Tomb_Spy_Mummy { Class Spy Name "Mummy Masquerade Spy" Skill Hard Item "Under Cover" Item "Your Eternal Reward" Template Zombie_Spy } Tomb_Giant_Pyro_Douse { Template T_TFBot_Giant_Pyro Name "Giant Daylight Douser Pyro" WeaponRestrictions PrimaryOnly ClassIcon pyro_jug_axtinguisher_bright Item "Deity's Dress" Item "Feathered Fiend" Item "The Rescue Ranger" Item "The Axtinguisher" Attributes SuppressFire ItemAttributes { ItemName "The Rescue Ranger" "projectile gravity" -1 "projectile speed decreased" 0.4 "penetrate teammates" 1 "no damage falloff" 1 "damage bonus" 1.1 //44 "grenade bounce speed" 0.3 "minicrit vs burning player" 1 "damage bonus vs burning" 1.5 //66 base damage "projectile penetration" 1 "fire rate bonus" 0.35 "fire input on hit" "!self^ExtinguishPlayer^" //extinguish the player "custom projectile model" "models/weapons/w_models/w_drg_ball.mdl" "custom item model" "models/weapons/c_models/c_axtinguisher/c_axtinguisher_pyro.mdl" "custom weapon fire sound" "common/null.wav" "projectile lifetime" 10 "custom kill icon" "axtinguisher" } ItemAttributes { ItemName "The Axtinguisher" "is_passive_weapon" 1 "fire rate bonus" 0.9 //just in case. } ShootTemplate { Name RotatingAxe AttachToProjectile 1 } FireWeapon { Type "Primary" Cooldown 1.1 Duration 0.2 Delay 4 IfSeeTarget 1 } AddTemplate Zombie_Pyro } Tomb_Giant_Heavy_Business { Template T_TFBot_Giant_Heavyweapons Name "Giant Pharaoh Heavy" Class Heavyweapons ClassIcon heavy_family_business_lite WeaponRestrictions SecondaryOnly Item "The Crown of the Old Kingdom" Item "The Family Business" ItemAttributes { ItemName "The Family Business" "paintkit_proto_def_index" 268 //mummified mimic "set_item_texture_wear" 0.2 "bullets per shot bonus" 2 //1.7x damage, still a decent buff "auto fires when full" 1 "auto fires full clip" 1 } AddTemplate Zombie_Heavy } Tomb_Giant_Medic_Sun { Name "Giant Solar Scholar Medic" Class Medic Health 4000 Attributes MiniBoss Action FetchFlag WeaponRestrictions PrimaryOnly Item "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" Item "Teutonkahmun" Item "Ramses' Regalia" ClassIcon medic_syringe AimAt Body AimOffset "0 0 10" AimLeadProjectileSpeed 1100 ItemAttributes { ItemName "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" "fire rate penalty" 1.5 //every 0.15s "damage bonus" 2 "clip size penalty" 0.4 //16 shots, 480 dmg per clip } CharacterAttributes { "move speed penalty" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 } Template Zombie_Medic } //Deity of Dawn, a Scout that "respawns" itself, like a new dawn! Tomb_Chief_Scout { Class Scout Name "Deity of Dawn" Health 8000 Item "Jungle Wreath" Item "Olympic Leapers" Item "Athenian Attire" Item "Sun-on-a-Stick" WeaponRestrictions MeleeOnly Attributes DisableDodge ClassIcon scout_sunstick_swordstone_giant // ClassIcon scout_sunstick_swordstone Attributes MiniBoss Attributes UseBossHealthBar NoIdleSound 1 RingOfFire 30 ItemAttributes { ItemName "Sun-on-a-Stick" "damage penalty" 1 "fire rate penalty" 1.2 "attack_minicrits_and_consumes_burning" 1 } CharacterAttributes { "move speed penalty" 0.6 //240 hu/s, soldier speed "damage force reduction" 0.6 "airblast vulnerability multiplier" 0.3 } UseHumanModel 2 } //Deity of Dusk, a Heavy that "persists" for a bit longer, like dusk staying longer at the poles! //Alternatively, night = death. Tomb_Chief_Heavy { Template T_TFBot_Giant_Heavyweapons Name "Deity of Dusk" Health 15000 Item "The Unshaved Bear" Item "Bedouin Bandana" Item "Kapitan's Kaftan" // Item "The Family Business" Item "The Freedom Staff" Attributes UseBossHealthBar Attributes DisableDodge ClassIcon soldier_incendiary_nys WeaponRestrictions MeleeOnly NoIdleSound 1 ItemAttributes { ItemName "The Freedom Staff" "damage blast push" 4 //get OFF of me, feeble peasant! } SpawnTemplate { Name SunShot Angles "0 90 -80" Origin "0 0 132" } FireInput { Target "@c@!activator" Action FireOnce Delay 0.2 IfSeeTarget 1 Cooldown 0.8 Repeats 0 IfHealthBelow 13501 IfHealthAbove 5001 } FireInput { Target player Action $PlaySoundToSelf Param "=35|mvm/mvm_used_powerup.wav" Delay 0 Repeats 1 IfHealthBelow 5001 } Message { Name "{blue}Deity of Dusk {FBECCB}has used their {blue}FINAL DUSK {FBECCB}Power Up Canteen!" Delay 0 Repeats 1 IfHealthBelow 5001 } FireInput { Target "@c@!activator" Action FireOnce Delay 0.2 IfSeeTarget 1 Cooldown 0.05 Repeats 8 IfHealthBelow 5001 } FireInput { Target "@c@!activator" Action FireOnce Delay 0.65 IfSeeTarget 1 Cooldown 0.6 Repeats 0 IfHealthBelow 5001 } AddAttribute { Item "Bedouin Bandana" Name "attach particle effect" Value "90" //death at dusk Delay 0 Repeats 1 IfHealthBelow 5001 } AddCond { Index 42 //bomb buff effect Duration 999 IfHealthBelow 5001 } UseHumanModel 2 } //////////////////////////////////////////////////////////////////////////// /////////////////////// Warzone bots //////////////////// //////////////////////////////////////////////////////////////////////////// War_Scout_Spammer { Class Scout Name "Infantry Scout" ClassIcon scout_spammer Item "Fortunate Son" Item "Flak Jack" //look. it's just a REALLY solid combo. It just works. Item "craftsmann_scattergun_backcountryblaster" ItemAttributes { ItemName "craftsmann_scattergun_backcountryblaster" "fire rate bonus" 0.8 "faster reload rate" 0 } AddTemplate Zombie_Scout } War_Soldier_Explosive { Name "Explosion Expert Soldier" Class Soldier Item "The Peacebreaker" Item "The Killer's Kit" Item "Upgradeable TF_WEAPON_ROCKETLAUNCHER" ClassIcon soldier_explode ItemAttributes { ItemName "Upgradeable TF_WEAPON_ROCKETLAUNCHER" "paintkit_proto_def_index" 217 //bomber soul "set_item_texture_wear" 0.6 "blast radius increased" 1.5 "dmg falloff decreased" 1.25 //slightly more damage } ItemAttributes { ItemName "The Killer's Kit" "item style override" 1 } Template Zombie_Soldier } War_Soldier_CritBanner { Class Soldier Name "Rallying Kritz Soldier" Skill Hard Item "powerhouse_rocketlauncher_shellshocker" Item "The Buff Banner" Item "Public Speaker" Item "Rebel Rouser" Item "The Fortune Hunter" ClassIcon soldier_critbuff Attributes AlwaysCrit Attributes SpawnWithFullCharge ItemAttributes { ItemName "The Buff Banner" "increase buff duration" 9 "effect cond override" 33 } ItemModel { ItemName "The Fortune Hunter" Model "models/weapons/c_models/c_critbanner/c_critbanner.mdl" } Template Zombie_Soldier } War_Pyro_Reflect { Name "Protector Pyro" Class Pyro ClassIcon pyro_reflect_daan Skill Expert //RandomChoice: Respectless Rubber Glove, Handyman's Handle, Traffic Cone, Stately Steel Toe Item "Wanderer's Wear" Item "warbird_flamethrower_warhawk" ItemAttributes { ItemName "warbird_flamethrower_warhawk" // "airblast_destroy_projectile" 1 "reflect keep team" 1 } Template Zombie_Pyro } War_Pyro_Phlog { Name "Gluon Gun Pyro" Class Pyro ClassIcon pyro_phlog Skill Expert Item "The Phlogistinator" Item "The Space Diver" ExtAttr AlwaysFireWeaponAlt Attributes AlwaysFireWeapon ItemAttributes { ItemName "The Phlogistinator" "mod rage on hit bonus" 10 //10 hits guarantees full charge >:3 } Template Zombie_Pyro } War_Demo_Mine { Name "Rapid Mine Layer Demoman" Class Demoman Item "The Iron Bomber" Item "The Frag Proof Fragger" ClassIcon demo_spammer ItemAttributes { ItemName "The Iron Bomber" "paintkit_proto_def_index" 217 "set_item_texture_wear" 0.2 "faster reload rate" 0 "fire rate bonus" 0.8 "grenade damage reduction on world contact" 1.75 //105 base } Template Zombie_Demo } War_Engineer_Ranger { Class Engineer Action FetchFlag Name "Frontline Engineer" Health 150 Skill Hard Item "The Rescue Ranger" Item "Dogfighter" Item "Head of Defense" ClassIcon engineer_ranger_nys ItemAttributes { ItemName "The Rescue Ranger" "auto fires when full" 1 "auto fires full clip" 1 "fire rate bonus" 0.1 "projectile spread angle penalty" 1.5 "damage bonus" 1.25 } ItemAttributes { ItemName "Head of Defense" "item style override" 1 } Template Zombie_Engineer } War_Engineer { Class Engineer Name "Backline Engineer" Health 500 Item "Trash Toter" Item "Tools of the Trade" Item "Winter Backup" CharacterAttributes { "health regen" 4 "move speed penalty" 0.85 } Template Zombie_Engineer } War_Medic_UberBigHeal { Template T_TFBot_Medic Name "Armored Combat Medic" Health 300 Scale 1.2 Item "Berlin Brain Bowl" Item "Bunnyhopper's Ballistics Vest" // Item "The Surgical Survivalist" // Item "Battery Canteens" ClassIcon medic_uber_armored_lite ItemAttributes { ItemName "TF_WEAPON_MEDIGUN" "heal rate bonus" 2 //stacks with character attributes' heal rate bonus of 5x "uber duration bonus" -3 //I mean come on they have everything else already } // ItemAttributes // { // ItemName "Battery Canteens" // "attachment name" "zombie_body" // "custom item model" "models/player/items/medic/medic_zombie.mdl" // "player skin override" 1 // "zombiezombiezombiezombie" 1 // } // UseHumanModel 2 AddTemplate Zombie_Medic } War_Sniper { Class Sniper Name "Spec Ops Sniper" Skill Expert Item "Cozy Camper" Item "The AWPer Hand" Item "The Triggerman's Tacticals" Item "Rifleman's Regalia" ClassIcon sniper_heal Template Zombie_Sniper } War_Spy { Class Spy Name "Infiltration Spy" Skill Expert Item "Lurking Legionnaire" Item "A Hat To Kill For" ItemAttributes { ItemName "TF_WEAPON_KNIFE" "armor piercing" 4 } Template Zombie_Spy } War_Giant_Soldier_Crit { Template T_TFBot_Giant_Soldier Name "Giant Frontline Soldier" Attributes AlwaysCrit Item "The Diplomat" Item "The Patriot Peak" Item "gentlemanne_rocketlauncher_coffinnail" AddTemplate Zombie_Soldier } War_Giant_Soldier { Template T_TFBot_Giant_Soldier Name "Giant Commando Soldier" Item "The Diplomat" Item "The Patriot Peak" Item "gentlemanne_rocketlauncher_coffinnail" AddTemplate Zombie_Soldier } War_Giant_Soldier_Burst { Template T_TFBot_Giant_Soldier Name "Giant Burst Commando Soldier" Item "The Diplomat" Item "Stout Shako" Item "gentlemanne_rocketlauncher_coffinnail" ClassIcon soldier_crit_burstfire AimLeadProjectileSpeed 440 ItemAttributes { ItemName "gentlemanne_rocketlauncher_coffinnail" "faster reload rate" 0.6 "fire rate bonus" 0.1 "projectile speed decreased" 0.4 "clip size upgrade atomic" 5 } AddTemplate Zombie_Soldier } //Fancy Giant Heavy. War_Giant_Heavy { Template T_TFBot_Giant_Heavyweapons Name "Giant War-Torn Heavy" Item "The Eliminators Safeguard" Item "warbird_minigun_butcherbird" ItemAttributes { ItemName "warbird_minigun_butcherbird" "damage bonus" 1.5 } AddTemplate Zombie_Heavy } //Giant Blast Heavy! Deals slight knockback on hit, //but shoots slower, less bullets, and in a tighter spread. //Also aims significantly less well! War_Giant_Heavy_Blast { Template T_TFBot_Giant_Heavyweapons Name "Giant War-Torn Heavy" AimTrackingInterval 0.35 //between hard and normal Item "The Eliminators Safeguard" Item "warbird_minigun_butcherbird" ClassIcon heavy_push ItemAttributes { ItemName "warbird_minigun_butcherbird" "minigun spinup time increased" 1.25 "damage blast push" 3 "fire rate penalty" 2 "bullets per shot bonus" 0.75 "weapon spread bonus" 0.6 //reduced spread and bullets minimize odds that you randomly get yeeted "damage bonus" 2 //compensates for greatly reduced damage otherwise; effectively 0.75x dmg "mult dmg vs giants" 2 //but vs giants, still 1.5x dmg } AddTemplate Zombie_Heavy } //A powerful Giant Heavy that fires homing rockets continually! War_Giant_Heavy_Rocket { Template T_TFBot_Giant_Heavyweapons Name "Marshal Misha" ClassIcon heavy_rocket_homing_nys Item "gentlemanne_minigun_topshelf" Item "The Team Captain" Item "Commissar's Coat" Item "The Fortune Hunter" ItemAttributes { ItemName "gentlemanne_minigun_topshelf" "damage bonus" 1.2 } ItemAttributes { ItemName "The Fortune Hunter" "custom item model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher.mdl" "attachment name" "head" "attachment angles" "-100 5 25" "attachment offset" "-23 0 -40" "attachment scale" "2.25" } SpawnTemplate { Name RocketTurret Origin "-50 50 100" Angles "-70 0 0" } AddTemplate Zombie_Heavy } //////////////////////////////////////////////////////////////////////////// /////////////////////// Eldritch bots //////////////////// //////////////////////////////////////////////////////////////////////////// Eldr_Pyro { Name "Abhorrent Abnormality" Class Pyro Item "Upgradeable TF_WEAPON_FLAMETHROWER" Item "The Hollowhead" Item "The Maniac's Manacles" // ClassIcon pyro_heal ItemAttributes { ItemName "Upgradeable TF_WEAPON_FLAMETHROWER" "paintkit_proto_def_index" 406 //health n hell "set_item_texture_wear" 0.2 "airblast_destroy_projectile" 1 "mult airblast primary refire time" 1.5 //airblast pauses their flames for a longer while // "damage penalty" 0.9 // "flame_speed" 1960 //decreased range // "heal on hit for rapidfire" 6 //6/0.075 = 80 hp/s } UseHumanModel 2 } Eldr_Demo_Knight_Fire { Class Demoman Name "Rekindled Knight" ClassIcon demoknight_fire Item "Dark Falkirk Helm" Item "Dark Age Defender" Item "The Eyelander" WeaponRestrictions MeleeOnly Attributes DisableDodge ItemAttributes { ItemName "The Eyelander" "attach particle effect" 2 "set damagetype ignite" 1 "fire rate penalty" 1.2 "max health additive penalty" 0 } Template Zombie_Demo } Eldr_Medic_Syringe { Class Medic Name "Sinful Shaman" Health 350 Scale 1.2 ClassIcon medic_syringe_spammer WeaponRestrictions PrimaryOnly Item "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" Item "The Shaman's Skull" Attributes AlwaysCrit Action FetchFlag AimAt Body AimOffset "0 0 10" // AimLeadProjectileSpeed 1100 //overaims slightly ItemAttributes { ItemName "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" "fire rate bonus" 0.75 //haha syringe go brrrr "faster reload rate" 0 } CharacterAttributes { "move speed bonus" 0.85 //-48 for 272 HU/s } Template Zombie_Medic } //SlowRecharge + BigHeal medic. Eldr_Medic_Uber { Class Medic Name "Defensive Deacon" ClassIcon medic_uber Item "The Quick-Fix" Item "Mighty Mitre" Item "Wings of Purity" Attributes SpawnWithFullCharge ItemAttributes { ItemName "TF_WEAPON_MEDIGUN" "heal rate bonus" 10 "ubercharge rate bonus" 0.5 //you simply do not deserve more uber } Template Zombie_Medic } Eldr_Medic_Shield { Class Medic Name "Defensive Deacon" ClassIcon medic_shield_lite Item "The Quick-Fix" Item "Mighty Mitre" Item "Wings of Purity" Attributes SpawnWithFullCharge Attributes ProjectileShield Attributes IgnoreEnemies CharacterAttributes { "increase buff duration" 9 } ItemAttributes { ItemName "The Quick-Fix" "heal rate bonus" 5 "ubercharge rate bonus" -1 } Template Zombie_Medic } Eldr_Sniper_Bow { Class Sniper Name "Ascender of Arrows" ClassIcon sniper_bow_multi Item "The Huntsman" Item "Holy Hunter" Item "Wings of Purity" ItemAttributes { ItemName "The Huntsman" "arrow mastery" 1 "damage penalty" 0.5 } Template Zombie_Sniper } Eldr_Giant_Scout { Template T_TFBot_Giant_Scout Name "Incorporeal Phaser" ClassIcon scout_ghost Item "Upgradeable TF_WEAPON_SCATTERGUN" Attributes DisableDodge ItemAttributes { ItemName "Upgradeable TF_WEAPON_SCATTERGUN" "faster reload rate" 0.5 } CharacterAttributes { "not solid to players" 1 "move speed bonus" 0.85 "mult flag carrier move speed" 0.75 } FireInput { Target !self Action $SetKey$renderfx Param 15 Delay 0.1 } } Eldr_Giant_Demoman_Cinder { Template T_TFBot_Giant_Demoman WeaponRestrictions SecondaryOnly Name "Lord of Cinder" ClassIcon demoknight_fire_giant Attributes SuppressFire MaxVisionRange 1500 Item "The Flare Gun" Item "The Eyelander" Item "Forgotten King's Restless Head" Item "Forgotten King's Pauldrons" // CustomEyeParticle "unusual_demonhorns_orange_parent" ItemAttributes { ItemName "The Flare Gun" "projectile gravity" -1 "projectile speed decreased" 0.6 "penetrate teammates" 1 "damage bonus" 2.2 //66, +132 on crit when no resists "dmg bonus vs buildings" 1.5 //99, about as much as a pipe "fire rate bonus" 0.15 //0.3s min "custom kill icon" "sword" "custom projectile model" "models/weapons/w_models/w_drg_ball.mdl" // "projectile trail particle" "burningplayer_flyingbits" "attach particle effect" 1 "custom item model" "models/weapons/c_models/c_claymore/c_claymore.mdl" "custom weapon fire sound" "common/null.wav" //gets spammed around it so nty } ItemAttributes { ItemName "The Eyelander" "is_passive_weapon" 1 "fire rate bonus" 0.4 //0.32s min. "max health additive penalty" 0 "set damagetype ignite" 1 } ShootTemplate { Name RotatingBlade AttachToProjectile 1 } FireWeapon { Type "Primary" Cooldown 0.8 Duration 0.1 Delay 0.1 IfSeeTarget 1 IfHealthAbove 1601 } FireWeapon { Type "Primary" Cooldown 0.4 Duration 0.1 Delay 0.1 IfSeeTarget 1 IfHealthBelow 1600 } AddTemplate Zombie_Demo } Eldr_Giant_Demoman_Gravity { Template T_TFBot_Giant_Demo_Burst Name "Beyond Gravity" Item "Blast Defense" Item "Upgradeable TF_WEAPON_GRENADELAUNCHER" ItemAttributes { ItemName "Upgradeable TF_WEAPON_GRENADELAUNCHER" "fire rate bonus" 0.1 "faster reload rate" 0.6 "projectile spread angle penalty" 5 "clip size upgrade atomic" 7 "paintkit_proto_def_index" 225 //cosmic calamity "set_item_texture_wear" 0.2 "projectile gravity" -20 "projectile acceleration" -1200 "projectile acceleration time" 1 "projectile acceleration start time" 0.4 "blast radius increased" 1.2 //haha yes } AddTemplate Zombie_Demo } Eldr_Chief_Soldier_Ghost { Template T_TFBot_Giant_Soldier_Spammer_Reload Name "Incorporeal Phaser" ClassIcon soldier_burstfire_ghost Health 25000 Attributes UseBossHealthBar CharacterAttributes { "not solid to players" 1 } FireInput { Target !self Action $SetKey$renderfx Param 15 Delay 0.1 } } //////////////////////////////////////////////////////////////////////////// /////////////////////// Doomsday bots //////////////////// //////////////////////////////////////////////////////////////////////////// Doom_Soldier_AirStrike { Class Soldier Name "Aerial Assault Soldier" Skill Hard Item "The Air Strike" Item "Whirly Warrior" Item "The B.A.S.E. Jumper" ClassIcon soldier_airstrike_para Attributes HoldFireUntilFullReload ItemAttributes { ItemName "The Air Strike" "fire rate bonus" 0.35 "clip size upgrade atomic" 4 "faster reload rate" 0.65 } Template Zombie_Soldier } Doom_Pyro_Scorch { Class Pyro Name "Earth Scorcher Pyro" Skill Hard ClassIcon pyro_dragon_fury_swordstone MaxVisionRange 800 Item "The Dragon's Fury" Item "The Raven's Visage" Template Zombie_Pyro } Doom_Pyro_FlareRain { Class Pyro Name "Sky Burner Pyro" Health 650 Scale 1.4 MaxVisionRange 1200 Skill Hard WeaponRestrictions SecondaryOnly Item "The Flare Gun" Item "The Firefly" ClassIcon pyro_flare_rain_nys Tag bot_giant AimAt Body AimOffset "0 0 15" ItemAttributes { ItemName "The Flare Gun" "fire rate bonus" 0.2 "damage bonus" 1.5 "projectile spread angle penalty" 3 "projectile speed decreased" 0.4 } CharacterAttributes { "health regen" 2 "move speed bonus" 0.85 "damage force reduction" 0.75 } Template Zombie_Pyro } Doom_Pyro_Spread { Class Pyro Health 650 Scale 1.4 Name "Endless Fire Pyro" ClassIcon pyro_bigfire Skill Expert Attributes AlwaysFireWeapon Item "Firewall Helmet" Item "teufort_flamethrower_earthskyandfire" ItemAttributes { ItemName "teufort_flamethrower_earthskyandfire" "flame_drag" 4.25 //double range "flame_spread_degree" 4.2 //1.5x spread } CharacterAttributes { "health regen" 2 "move speed bonus" 0.85 "damage force reduction" 0.75 } Template Zombie_Pyro } Doom_Demo_Bomber { Name "Doomsday Demo" Class Demoman ClassIcon demo_bomber Skill Expert Attributes HoldFireUntilFullReload Item "The Blast Blocker" Item "Blast Defense" Item "Upgradeable TF_WEAPON_GRENADELAUNCHER" ItemAttributes { ItemName "Upgradeable TF_WEAPON_GRENADELAUNCHER" "paintkit_proto_def_index" 296 "set_item_texture_wear" 0.2 "fire rate bonus" 0.25 "faster reload rate" 0.4 "clip size bonus" 2 } Template Zombie_Demo } Doom_Medic_UberBigHeal { Template T_TFBot_Medic Name "Disaster-proof Medic" Health 300 Scale 1.2 Item "Berlin Brain Bowl" Item "Bunnyhopper's Ballistics Vest" // Item "The Surgical Survivalist" // Item "Battery Canteens" ClassIcon medic_uber_armored_lite ItemAttributes { ItemName "TF_WEAPON_MEDIGUN" "heal rate bonus" 2 //stacks with character attributes' heal rate bonus of 5x "uber duration bonus" -3 //I mean come on they have everything else already } AddTemplate Zombie_Medic } Doom_Giant_Scout { Template T_TFBot_Giant_Scout Name "Giant Thunderstorm Scout" SpawnTemplate ThunderTarget Item "The Weather Master" Item "Upgradeable TF_WEAPON_SCATTERGUN" ClassIcon scout_atomic ItemAttributes { ItemName "Upgradeable TF_WEAPON_SCATTERGUN" "override projectile type" 13 //Naturally makes proj deal Pomson damage. "projectile spread angle penalty" 4 "mult projectile count" 6 "dmg penalty vs players" 0.4 //24 base damage, -75% -> 6 "fire rate penalty" 1.2 "dmg bonus vs buildings" 5 "paintkit_proto_def_index" 241 //electroshocked "set_item_texture_wear" 0.2 } AddTemplate Zombie_Scout } Doom_Giant_Soldier_Barrage { Template T_TFBot_Giant_Soldier_SlowBarrage Name "Colonel Conflict" Item "Breach and Bomb" AddTemplate Zombie_Soldier } Doom_Giant_Soldier_Barrage_Heal { Template T_TFBot_Giant_Soldier_SlowBarrage Name "Colonel Conflict" Item "Breach and Bomb" // Healing giant + ally giant = bad mix...but let's try it anyway Item "The Black Box" ClassIcon soldier_barrage_heal ItemAttributes { ItemName "The Black Box" "fire rate bonus" 0.2 "damage bonus" 1.5 "mult dmg vs giants" 0.5 //reduces health per hit, too! "Projectile speed increased" 0.65 "projectile spread angle penalty" 6 "faster reload rate" 0.3 "clip size upgrade atomic" 26 "health on radius damage" 250 //Max. 7.5k per full clip } AddTemplate Zombie_Soldier } Doom_Giant_Soldier_Ubercan { Template T_TFBot_Giant_Soldier Name "Desperation" Health 16000 SpawnTemplate PowerupLogic_Owned Item "Upgradeable TF_WEAPON_ROCKETLAUNCHER" Item "Attack Packs" Item "The Shellmet" Item "Battery Canteens" ExtAttr SuppressCanteenUse Attributes AlwaysCrit Attributes UseBossHealthBar ClassIcon soldier_burstfire_ubercan ItemAttributes { ItemName "Upgradeable TF_WEAPON_ROCKETLAUNCHER" "paintkit_proto_def_index" 403 "set_item_texture_wear" 0.2 "faster reload rate" 0.6 "fire rate bonus" 0.1 "projectile speed decreased" 0.65 // "damage bonus" 1.25 } ItemAttributes { ItemName "Battery Canteens" "ubercharge" 1 "powerup charges" 1 } FireWeapon { IfHealthBelow 8000 Type "Action" Repeats 1 Delay 1 } AddAttribute { Item "Upgradeable TF_WEAPON_ROCKETLAUNCHER" Name "faster reload rate" Value 0 Delay 0 IfHealthBelow 8000 } AddAttribute { Item "Upgradeable TF_WEAPON_ROCKETLAUNCHER" Name "projectile speed decreased" Value 0.4 Delay 0 IfHealthBelow 8000 } AddTemplate Zombie_Soldier } //Homing Fireball Heavy, pretty much straight from Demonic Dominance. //Thanks, Hellbabe <3 Doom_Giant_Heavy_Fireball { Class Heavyweapons Name "Giant Sky Burner Heavy" ClassIcon heavy_fireballgun Skill Expert Health 5000 WeaponRestrictions PrimaryOnly MaxVisionRange 1500 Item "The Huo Long Heatmaker" Item "Blazing Bull" Item "dec2014 2014_pyromancer_hood" Attributes MiniBoss ItemAttributes { ItemName "The Huo Long Heatmaker" "damage bonus" 5 "fire rate bonus" 3 // "crits_become_minicrits" 1 POWER "Projectile speed increased" 0.4 "projectile spread angle penalty" 1 "override projectile type" 6 "mod projectile heat seek power" 10 "attach particle effect" 1 "set damagetype ignite" 1 "dmg bonus vs buildings" 5 "projectile trail particle" "spell_fireball_small_red" "custom projectile model" "models/weapons/w_models/w_drg_ball.mdl" "custom kill icon" "spellbook_fireball" } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.3 "override footstep sound set" 2 } AddTemplate Zombie_Heavy } Doom_Giant_Heavy_Burst { Template T_TFBot_Giant_Heavyweapons_Shotgun Name "Giant Cataclysm Heavy" MaxVisionRange 1200 //let's not get crazy here Item "The Eliminators Safeguard" Attributes MiniBoss WeaponRestrictions SecondaryOnly ClassIcon heavy_shotgun_nuclear ItemAttributes { ItemName "TF_WEAPON_SHOTGUN_HWG" "fire rate bonus" 0.2 "bullets per shot bonus" 2 //3x total damage "damage penalty" 1 "damage bonus" 1.5 "weapon spread bonus" 1.3 "faster reload rate" 0.75 } ItemAttributes { ItemName "The Eliminators Safeguard" "item style override" 1 } AddTemplate Zombie_Heavy } Doom_Giant_Heavy_Nuclear { Template T_TFBot_Giant_Heavyweapons_Shotgun Name "Giant Cataclysm Heavy" MaxVisionRange 1200 //let's not get crazy here Item "The Eliminators Safeguard" Attributes MiniBoss WeaponRestrictions SecondaryOnly ClassIcon heavy_shotgun_nuclear ItemAttributes { ItemName "TF_WEAPON_SHOTGUN_HWG" "explosive bullets" 146 //rocket radius "fire rate bonus" 2 //slightly faster "bullets per shot bonus" 2 //3x total damage "damage penalty" 1 "damage bonus" 1.5 "weapon spread bonus" 1.3 "faster reload rate" 0 } ItemAttributes { ItemName "The Eliminators Safeguard" "item style override" 1 } AddTemplate Zombie_Heavy } Doom_Giant_Medic_Haste { Name "Giant Doombringer Medic" Health 4500 Class Medic Item "Upgradeable TF_WEAPON_MEDIGUN" Item "The Nunhood" ClassIcon medic_haste_lite Attributes MiniBoss Attributes SpawnWithFullCharge SpawnTemplate PowerupLogic_Medic ItemAttributes { ItemName "Upgradeable TF_WEAPON_MEDIGUN" "paintkit_proto_def_index" 296 //kiln n conquer "set_item_texture_wear" 0.2 "uber duration bonus" -9 "ubercharge rate bonus" 80 "effect cond override" 91 "medigun passive attributes" "move speed penalty|0.67" //because haste move speed is kinda nutty "heal rate bonus" 150 } CharacterAttributes { "damage force reduction" 0.4 "bot medic uber health threshold" 9999 "airblast vulnerability multiplier" 0.4 "move speed bonus" 0.4 } Template Zombie_Medic } //////////////////////////////////////////////////////////////////////////// /////////////////////// Universe bots //////////////////// //////////////////////////////////////////////////////////////////////////// } CustomWeapon { "Caber Toss" { OriginalItemName "TF_WEAPON_GRENADELAUNCHER" "custom projectile model" "models/workshop/weapons/c_models/c_caber/c_caber.mdl" "projectile speed decreased" 0.9 "grenade explode on impact" 1 "damage penalty" 0.75 "custom kill icon" "ullapool_caber_explosion" "custom weapon fire sound" "weapons/shovel_swing.wav" } "Sun Shooter" { OriginalItemName "TF_WEAPON_ROCKETLAUNCHER" "projectile speed increased" 0.4 "mod projectile heat seek power" 30 "mod projectile heat aim time" 3 "mod projectile heat aim error" 360 "mod projectile heat no predict target speed" 1 "damage bonus" 0.8 //72 base damage, bc full damage always is INSANE "no damage falloff" 1 "projectile spread angle penalty" 20 "set damagetype ignite" 1 //ty Hellblade <3 "projectile trail particle" "spell_fireball_small_blue" "custom projectile model" "models/weapons/w_models/w_drg_ball.mdl" "explosion particle" "spell_fireball_tendril_parent_blue" "custom impact sound" "misc\halloween\spell_fireball_impact.wav" "custom kill icon" "spellbook_fireball" } "Back Rocket" { OriginalItemName "TF_WEAPON_ROCKETLAUNCHER" // "projectile gravity" 400 "projectile trail particle" "eyeboss_projectile" "projectile speed decreased" 0.6 "blast dmg to self increased" 0 "penetrate teammates" 1 "projectile acceleration" -440 "projectile acceleration time" 0.5 "projectile acceleration start time" 0.5 "mod projectile heat seek power" 75 "mod projectile heat aim error" 360 "mod projectile heat aim time" 1.5 // "custom weapon fire sound" "=20|mvm/giant_soldier/giant_soldier_rocket_shoot.wav" } "Fire Sword" { OriginalItemName "The Flare Gun" "projectile gravity" -1 "projectile speed decreased" 0.6 "penetrate teammates" 1 "custom projectile model" "models/weapons/c_models/c_claymore/c_claymore.mdl" } "Grenade Generator" { OriginalItemName "The Iron Bomber" "mod projectile heat seek power" 60 "projectile gravity" 5 "projectile speed increased" 0.02 "blast radius increased" 1.2 //haha yes } } //W1: afterlife busters Mission { Objective DestroySentries Where spawnbot CooldownTime 45 InitialCooldown 6 DesiredCount 1 BeginAtWave 1 RunForThisManyWaves 1 TFBot { Template T_TFBot_SentryBuster Class Pyro Attributes IgnoreEnemies Attributes DisableDodge Name "Resurrected Buster" Item "The Coffin Kit" Item "The Ullapool Caber" ItemAttributes { ItemName "The Ullapool Caber" "use original class weapon animations" 1 } CharacterAttributes { "damage force reduction" 0 } } } //W2: cult busters Mission { Objective DestroySentries Where spawnbot_scattered CooldownTime 60 InitialCooldown 30 DesiredCount 1 BeginAtWave 2 RunForThisManyWaves 1 TFBot { Template T_TFBot_SentryBuster Attributes IgnoreEnemies Attributes DisableDodge Name "Multi-Cult Buster" CharacterAttributes { "damage force reduction" 0 "mod weapon blocks healing" 1 } } } //W3: tomb busters Mission { Objective DestroySentries Where spawnbot_scattered CooldownTime 60 InitialCooldown 30 DesiredCount 1 BeginAtWave 3 RunForThisManyWaves 1 TFBot { Template T_TFBot_SentryBuster Attributes IgnoreEnemies Attributes DisableDodge Name "Sentry-Swallowing Sand Burst" CharacterAttributes { "damage force reduction" 0 "mod weapon blocks healing" 1 } } } //W4: eldritch busters Mission { Objective DestroySentries Where spawnbot_tunnel Where spawnbot_invasion CooldownTime 50 InitialCooldown 20 DesiredCount 1 BeginAtWave 4 RunForThisManyWaves 1 TFBot { Template T_TFBot_SentryBuster Attributes IgnoreEnemies Attributes DisableDodge Name "Bomb of the Beyond" CharacterAttributes { "damage force reduction" 0 "mod weapon blocks healing" 1 } } } //W5: war busters Mission { Objective DestroySentries Where spawnbot_tunnel Where spawnbot_invasion CooldownTime 60 InitialCooldown 30 DesiredCount 1 BeginAtWave 5 RunForThisManyWaves 1 TFBot { Template T_TFBot_SentryBuster Attributes IgnoreEnemies Attributes DisableDodge Name "Trench Clearer" CharacterAttributes { "damage force reduction" 0 "mod weapon blocks healing" 1 } } } //W6+7: space busters Mission { Objective DestroySentries Where spawnbot_tunnel Where spawnbot_invasion CooldownTime 50 InitialCooldown 20 DesiredCount 1 BeginAtWave 6 RunForThisManyWaves 2 TFBot { Template T_TFBot_SentryBuster Attributes IgnoreEnemies Attributes DisableDodge Name "Inverted Black Hole Buster" CharacterAttributes { "damage force reduction" 0 "mod weapon blocks healing" 1 } } } //W5: war sniper, spy Mission { Objective Sniper Where spawnbot_mission_sniper CooldownTime 50 InitialCooldown 15 DesiredCount 1 BeginAtWave 5 RunForThisManyWaves 1 TFBot { Template War_Sniper } } Mission { Objective Spy Where spawnbot_mission_spy CooldownTime 50 InitialCooldown 35 DesiredCount 1 BeginAtWave 5 RunForThisManyWaves 1 TFBot { Template War_Spy } } SpawnTemplate SkullSpawn SpawnTemplate NavAvoids SpawnTemplate PowerupLogic SpawnTemplate Clipless_Fix SpawnTemplate InfoBooth SpawnTemplate ColoredHolograms SpawnTemplate { Name "spawnpoint" "origin" "3650 430 -17" } // PROPOSED CHANGES: //- Remove Plague Medic entirely. Lovely as their concept is, they are just a tad too weird and clunky! //- SC Engies: Primary fire range already reduced, see if it feels fair as Pyro --Needs testing // Wave 1 - Intro to map - Afterlife Atrocities // Theme: zombieeees. brrr. shoot them. // How Red Will Win: slight crowds that greatly encourage spread damage. Some key targets to take down in first and last subwave. // Firepower is generally concentrated on single bots and not crowds, but can still threaten damage if not dealt with. // Middle subwave will have a slight DPS / bodyblock check with a faster, bulkier target, but less firepower. // Notable counters: sentries (!!!), AoE (!!), ranged in general (!!). // Fist Heavy (yay), Armed Scout (arm), Caber-Tossing Demo (shoottemplate with custom weapon; shorter-range grenade demo), // Stinger-Spewing Medic (crossbow) // Giant Backup Soldier (weaker ver.) // Giant Short Circuits? --> Doesn't work as well due to low range and slow speed; kb is slightly annoying... // ...but what if we make it akin to a Giant Scout that can deal knockback at melee range? // Using unique SC func of orb is tempting, but nerfs projectile classes unnecessarily --> primary fire only // Final subwave: showoff for custom FireWeapon functionality? // Subwave 1 - Crowds and key targets // - Backup Bazooka Soldier (minigiant) // - Armed Scout (fast support, good health-bags) // Subwave 2 - Bulk and speed (but not much damage) //Note: this sub may need some more bulk. Could revert some medics to minigiants? // - Giant Overcharged Engineer (faster short circuit engie, akin to gscout; deals light knockback on hit) // - Stinger-Spewing Medic (good ranged attackers) // - Caber-Tossing Demo (bulky!) //Bleeds over inito sub 3 // Subwave 3 - Hardest part! Bulk, damage, and key target. // Damaging and bot-bulk-buffing giant, somewhat threatening commons // High spam and bulk but slow speed! // - Giant Bazooka Soldier + Death-Defying Medic (infpop qfix) // Support: Fist Heavy (after subwave 1 dies, then after subwave 2, intensify), Armed Scout (when subwave 3's giant spawns) Wave { InitWaveOutput { Target bignet Action RunScriptCode Param " IncludeScript(`popextensions_main.nut`,getroottable()) IncludeScript(`accaggr_pointtemplates.nut`,getroottable()) //Sets up PointTemplates SpawnTemplate(`VariousProps`)" } StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name "wave1a1" Where spawnbot WaitBetweenSpawnsAfterDeath 5 TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 60 TFBot { Template After_Giant_Medic_Plague } } WaveSpawn { Name "wave1a" WaitForAllDead "wave1a1" Where spawnbot_tunnel TotalCount 3 MaxActive 3 SpawnCount 3 TotalCurrency 180 Squad { NoWaitForFormation 1 TFBot { Template After_Giant_Medic_Plague } TFBot { Template After_Demoman_CaberToss } TFBot { Template After_Demoman_CaberToss } } } WaveSpawn { Support 1 WaitBeforeStarting 8 WaitBetweenSpawns 3 TotalCount 1 MaxActive 1 //having this & WaitBetweenSpawns not set = player crash from spam SpawnCount 1 PointTemplate { SpawnAtEntity poison_target Name "PoisonArea" SpreadRadius "120 120 0" StickToGround 6000 } } WaveSpawn { Name "wave1a3" Where spawnbot WaitBeforeStarting 6 WaitBetweenSpawns 8 //6 spawns, 48 sec TotalCount 6 MaxActive 3 SpawnCount 1 TotalCurrency 60 TFBot { Template After_Demoman_CaberToss } } WaveSpawn { Name "wave1a2" Where spawnbot_tunnel WaitBeforeStarting 10 WaitBetweenSpawns 3 //10 spawns, 30 sec TotalCount 40 MaxActive 8 SpawnCount 4 TotalCurrency 48 RandomChoice { TFBot { Template After_Scout_Melee } TFBot { Template After_Scout_Melee } TFBot { Template After_Scout_Melee } TFBot { Template After_Scout_Melee Name "Unarmed Scout" Item "TF_WEAPON_FISTS" ItemAttributes { ItemName "TF_WEAPON_FISTS" "melee attack rate bonus" 0.625 //5/8th, 0.5s "damage penalty" 0.54 //7/13th, 35 dmg } } } } WaveSpawn { Name "wave1b1" WaitForAllSpawned "wave1a" Where spawnbot_tunnel WaitBeforeStarting 10 TotalCount 3 MaxActive 3 SpawnCount 3 TotalCurrency 90 Squad { TFBot { Template After_Giant_Engineer_ShortCircuit } TFBot { Template After_Medic_Xbow } TFBot { Template After_Medic_Xbow } } } WaveSpawn { Name "wave1b" WaitForAllDead "wave1a" WaitBeforeStarting 8 Where spawnbot_tunnel TotalCount 3 MaxActive 3 SpawnCount 3 TotalCurrency 90 Squad { TFBot { Template After_Giant_Engineer_ShortCircuit } TFBot { Template After_Medic_Xbow } TFBot { Template After_Medic_Xbow } } } WaveSpawn { Name "wave1b" WaitForAllDead "wave1b1" Where spawnbot_invasion WaitBeforeStarting 5 TotalCount 3 MaxActive 3 SpawnCount 3 TotalCurrency 90 Squad { TFBot { Template After_Giant_Engineer_ShortCircuit } TFBot { Template After_Medic_Xbow } TFBot { Template After_Medic_Xbow } } } WaveSpawn { Name "wave1b2" WaitForAllDead "wave1a2" WaitBeforeStarting 1.5 Where spawnbot_main WaitBetweenSpawns 3 TotalCount 24 MaxActive 6 SpawnCount 2 TotalCurrency 72 TFBot { Template After_Medic_Xbow } } WaveSpawn { Name "wave1c" WaitForAllDead "wave1b" Where spawnbot_main WaitBetweenSpawns 10 TotalCount 8 MaxActive 5 SpawnCount 4 TotalCurrency 160 Squad { NoFormation 1 TFBot { Template After_Giant_Soldier_Bazooka_Backup } TFBot { Template After_Demoman_CaberToss } TFBot { Template After_Demoman_CaberToss } TFBot { Template After_Demoman_CaberToss } } } WaveSpawn { Name "Support" WaitBeforeStarting 10 Where spawnbot_tunnel Where spawnbot_invasion Where spawnbot_mission_sniper WaitBetweenSpawns 8 TotalCount 30 MaxActive 2 SpawnCount 1 Support Limited RandomChoice { TFBot { Template After_Heavy_Fist } TFBot { Template After_Heavy_Fist } TFBot { Template After_Heavy_Fist } TFBot { Template After_Heavy_Fist ItemAttributes { ItemName "Ghastly Gibus 2010" "item style override" 0 } } } } WaveSpawn { Name "Support" WaitForAllDead "wave1b2" Where spawnbot_scattered WaitBetweenSpawns 8 TotalCount 30 MaxActive 6 SpawnCount 2 Support Limited RandomChoice { TFBot { Template After_Heavy_Fist } TFBot { Template After_Heavy_Fist } TFBot { Template After_Heavy_Fist } TFBot { Template After_Heavy_Fist ItemAttributes { ItemName "Ghastly Gibus 2010" "item style override" 0 } } } } } //Proposed changes: //- // Wave 2 - More advanced bots - Cultist Calamity: fevered followers of the Monocultus // Payout: $850 // Still basic bots but with a cultish theme, for MONOCULUS! Use humans! // Flesh Gauntlet (zombie), Necrotic Summoner Medic (qfix), // Spell-casting Medic (heal spell), // Monocultus Soldier (burst fire? slower burst fire? charged?) // Giant Summonoculus Demoman (uses Monoculus spell), Giant Monocultus Soldier // Throughout, per subwave: 1-2 high-priority targets with slight bomb pressure. // - Flesh Gauntlet + Necromancer Medic (superheal) // Subwave 1: mid-range effectiveness, and immediately set the tone. // - Giant Monocultus Sticky Demo (nothing special) // - Giant Summonoculus Demo (rf pipe demo that gets to summon Monoculus spell, rarely) // - Monocultus Bowman (jarate huntsman, slower projspeed?) // Subwave 2: longer range; time to strafe nicely! // - Giant Tri-Burst Soldier // - Giant Direct Tri-Burst Soldier + Kritz Medic // - Melee bots? // Subwave 3: single target with healers; a trickier giant heavy! //- Monocultus Leader (gheavy with "permanent" Monoculus spell up) // Monocultus Medic (heal spell medics that use a piercing crossbow from behind the heavy) // - Support: Monocultus Follower (soldier, jarate huntsman sniper) Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name "wave2a1" WaitBeforeStarting 0 Where spawnbot_main TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 25 TFBot { Template Cult_Giant_Demo_Pumpkin } } //this spawns before the ones with medics so it should come first! WaveSpawn { Name "wave2a4" Where spawnbot_tunnel WaitBeforeStarting 6 WaitBetweenSpawns 8 TotalCount 10 MaxActive 4 SpawnCount 2 TotalCurrency 50 Squad { TFBot { Template Cult_Heavy_Fist } TFBot { Template Cult_Medic_Superheal } } } WaveSpawn { Name "wave2a" WaitBeforeStarting 16 Where spawnbot_main TotalCount 2 MaxActive 2 SpawnCount 2 TotalCurrency 50 Squad { TFBot { Template Cult_Giant_Demo_Pumpkin Name "Sir Pumpkinton II" } TFBot { Template Cult_Medic } } } WaveSpawn { Name "wave2a3" WaitForAllDead "wave2a1" WaitForAllSpawned "wave2a" WaitBeforeStarting 2 Where spawnbot_tunnel TotalCount 3 MaxActive 3 SpawnCount 3 TotalCurrency 75 Squad { TFBot { Template Cult_Giant_Demo_Pumpkin Name "Sir Pumpkinton III" } TFBot { Template Cult_Medic } TFBot { Template Cult_Medic } } } WaveSpawn { Name "wave2a2" Where spawnbot_main WaitBeforeStarting 5 WaitBetweenSpawns 1 TotalCount 24 MaxActive 6 SpawnCount 2 TotalCurrency 120 TFBot { Template Cult_Engineer } } WaveSpawn { Name "wave2a_giants" WaitForAllDead "wave2a1" } WaveSpawn { Name "wave2a_giants" WaitForAllDead "wave2a" } WaveSpawn { Name "wave2a_giants" WaitForAllDead "wave2a3" } WaveSpawn { Name "wave2b" WaitForAllDead "wave2a_giants" Where spawnbot_invasion WaitBetweenSpawns 15 TotalCount 12 MaxActive 5 SpawnCount 4 TotalCurrency 150 Squad { TFBot { Template Cult_Giant_Demoman } TFBot { Template Cult_Pyro } TFBot { Template Cult_Pyro } TFBot { Template Cult_Pyro } } } WaveSpawn { Name "wave2b1" TotalCount 1 WaitForAllSpawned "wave2a3" WaitForAllDead "wave2a2" TotalCurrency 100 Tank { Name "tank" Health 18000 Speed 75 StartingPathTrackNode "tank_path_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } ClassIcon tank_skeleton DisableSmokestack 1 Model "models/bots/boss_bot/boss_tank_color.mdl" SpawnTemplate "Tank_Skeleton" PingSound "\misc\halloween\skeletons\skelly_giant_01.wav" } } WaveSpawn { Name "wave2b2" WaitForAllSpawned "wave2b1" Where spawnbot_mission_sniper WaitBeforeStarting 10 WaitBetweenSpawns 5 TotalCount 40 MaxActive 12 SpawnCount 4 TotalCurrency 80 RandomChoice { TFBot { Template Cult_Sniper_Skele } TFBot { Template Cult_Sniper_Skele } TFBot { Template Cult_Sniper_Skele } TFBot { Template Cult_Sniper_Skele } TFBot { Template Cult_Sniper_Skele } TFBot { Template Cult_Sniper_Skele } TFBot { Template Cult_Sniper_Skele WeaponRestrictions SecondaryOnly Name "Summoned Rattler" Item "Trophy Belt" } } } WaveSpawn { Name "wave2c1" Where spawnbot_main WaitForAllDead "wave2b" TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 50 TFBot { Template Cult_Giant_Soldier } } WaveSpawn { Name "wave2c" Where spawnbot_main WaitForAllDead "wave2b" WaitBeforeStarting 12 TotalCount 3 MaxActive 3 SpawnCount 3 TotalCurrency 150 Squad { TFBot { Template Cult_Giant_Soldier } TFBot { Template Cult_Medic_Superheal } TFBot { Template Cult_Medic_Superheal } } } WaveSpawn { Name "Support" Where spawnbot_invasion WaitForAllDead "wave2b2" WaitBeforeStarting 0.5 WaitBetweenSpawns 8 TotalCount 10 MaxActive 6 SpawnCount 3 Support 1 RandomChoice { TFBot { Template Cult_Soldier } TFBot { Template Cult_Soldier } TFBot { Template Cult_Soldier } TFBot { Template Cult_Soldier Item "Zombie Soldier" } } } WaveSpawn { Name "Support" Where spawnbot_tunnel WaitForAllDead "wave2b2" WaitBeforeStarting 0.5 WaitBetweenSpawns 4 TotalCount 10 MaxActive 4 SpawnCount 1 Support 1 RandomChoice { TFBot { Template Cult_Sniper_WetBow } TFBot { Template Cult_Sniper_WetBow } TFBot { Template Cult_Sniper_WetBow } TFBot { Template Cult_Sniper_WetBow Item "Zombie Sniper" } } } } //Proposed changes: //- Check current subwave plan. //- Turn pyros from DF to something better for afterburn inflicting, maybe still at longer range? // Mangler Soldiers, perchance? -> aoe afterburn may be disliked, but they bring some good ranged fluff to the table... // Maybe with decreased blast radius? // Wave 3 - Fancy fiery bots - Terrorized Tomb // Based on Egypt's hieroglyphs, because we love obscure references! // Heavy with his Minigun, a Sapper, two small Sticky Bombs, a large Sticky Bomb, a level one Sentry Gun, // the Backstab symbol, a simplified Demoman face, a crocodile, an Ubersaw, a Soldier (sitting down), // the Team Fortress logo, a hamburger and what could be construed as a Pyro // Heavy, Spy, Sticky Demo, Engineer, Ubersaw Medic, Soldier, Pyro // Giant Pharaoh Heavy (FamBus), Tomb Torcher Pyro (flare with torch projectiles), // Tomb Trasher Demo (sticky), Tomb Terror Scout (sun on a stick!), // Giant Solar Scholar Medic (syringe), (Sandstorm Tank (lingering damage)?) // Ferocious Nile Crocodile (sniper w/ bleed?), Mummy Masquerade Spy (YER) // Subwave 1: combo of syringe + shotgun, with spamminess as support // - Giant Solar Scholar Medic // - Giant Pharaoh Heavy (multiple; maybe try squad+NoFormation?) // - Tomb Trasher Demo // - Tomb Torturer Demo (minigiant quickiebomb?) -- NOTE: increase totalcount, make it last longer // Subwave 2: weaker version of Lord of Cinder // Commons act as duo together, giant functions as long-range support // - Giant Daylight Douser Pyro -- axtinguisher tosser! minicrits vs burning, and removes flaming effect // - Tomb Torcher Pyro -- NOT fury // - Tomb Terror Scout // Subwave 3 // - Deity of Dawn - Scout: functions as initial push in two steps, letting heavy cover more ground // - Deity of Dusk - Heavy: spawns at the same time, can be chipped away at while scout rushes // Support is not too intense to allow more focus on the bosses themselves // Support: Ferocious Nile Crocodile, Mummy Masquerade Spy, Tomb Terror Scout Wave { SpawnTemplate Deity_Titles StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name "wave3a1" Where spawnbot_main WaitBetweenSpawns 30 //only spawn next pair if one dies AFTER this time TotalCount 4 MaxActive 3 SpawnCount 2 TotalCurrency 200 Squad { NoFormation 1 TFBot { Template Tomb_Giant_Medic_Sun } TFBot { Template Tomb_Giant_Heavy_Business } } } WaveSpawn { Name "wave3a2" Where spawnbot_invasion WaitBeforeStarting 5 WaitBetweenSpawns 5 TotalCount 15 //5 pairs MaxActive 6 SpawnCount 3 TotalCurrency 90 Squad { TFBot { Template Tomb_Demo_Quickie } TFBot { Template Tomb_Demo_Sticky } TFBot { Template Tomb_Demo_Sticky } } } WaveSpawn { Name "wave3a2" Where spawnbot_main WaitBeforeStarting 5 WaitBetweenSpawns 4 TotalCount 16 //4 sets, 8 spawns MaxActive 4 SpawnCount 2 TotalCurrency 80 TFBot { Template Tomb_Demo_Sticky } } WaveSpawn { Name "wave3b" WaitForAllDead "wave3a1" Where spawnbot_main WaitBetweenSpawnsAfterDeath 5 TotalCount 2 MaxActive 1 SpawnCount 1 TotalCurrency 120 TFBot { Template Tomb_Giant_Pyro_Douse } } WaveSpawn { Name "wave3b2" WaitForAllDead "wave3a2" Where spawnbot_main Where spawnbot_tunnel WaitBetweenSpawns 2.5 TotalCount 40 //30:10 MaxActive 12 //9:3 SpawnCount 4 //3:1 pyro:scout TotalCurrency 160 Squad { NoFormation 1 TFBot { Template Tomb_Scout_Sun } TFBot { Template Tomb_Pyro_Torch } TFBot { Template Tomb_Pyro_Torch } TFBot { Template Tomb_Pyro_Torch } } } WaveSpawn { Name "wave3c1" WaitForAllDead "wave3b" Where spawnbot_invasion TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 0 FirstSpawnOutput { Target deity_text_relay Action Trigger } TFBot { Template Tomb_Chief_Scout SpawnTemplate Deity_Dawn_dest } } WaveSpawn { Name "wave3c" WaitForAllDead "wave3c1" Where spawnbot_invasion WaitBeforeStarting 2 TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 100 TFBot { Template Tomb_Chief_Scout Health 3000 Scale 1.6 FireInput { Target !activator Action $TeleportToEntity Param "destination_dawn" Delay 0 Repeats 1 } ItemAttributes { ItemName "Jungle Wreath" "attach particle effect" 89 //morning glory } CharacterAttributes { "move speed penalty" 0.75 //300 HU/s } AddAttribute { Item "Active" //adding/removing from player might be a bit odd. Name "move speed penalty" Value 0.2 //60 HU/s Repeats 1 Delay 0.05 } RemoveAttribute { Item "Active" Name "move speed penalty" Repeats 1 Delay 2 } AddCond { Delay 0 Index 52 Duration 2 } FireInput { Target player Action $PlaySoundToSelf Param "=35|mvm/mvm_used_powerup.wav" Delay 0 Repeats 1 } Message { Name "{blue}Deity of Dawn {FBECCB}has used their {blue}NEW DAWN {FBECCB}Power Up Canteen!" Delay 0 Repeats 1 } } } WaveSpawn { Name "wave3c" WaitForAllDead "wave3b" Where spawnbot_tunnel WaitBeforeStarting 0.2 TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 100 TFBot { Template Tomb_Chief_Heavy } } WaveSpawn { Name "Support" WaitForAllDead "wave3b2" Where spawnbot_scattered WaitBeforeStarting 5 WaitBetweenSpawnsAfterDeath 15 TotalCount 2 MaxActive 1 SpawnCount 1 Support 1 TFBot { Template Tomb_Sniper_Croc } } } // Wave 4 - True horrors - Eldritch Empire // Used to be wave 5, so names are different. // Boss rush, ish! // Some funky lads + tanks to match? // ++assisting bots!! Scale based on losses // Abhorrent Abnormality (flare spam pyro), Beyond Gravity (demo with floaty pipes), // Defensive Deacon (shield medic), // Subwave 1: Mixed-range Giants with medic support; giants are low threat but medics help push! // Giants don't fire too much, constant threat could be good. // - Lord of Cinder (flaming eyelander) // - Lord of Cinder (flaming eyelander) + Defensive Deacon (uber medic) // - // Subwave 2: Unblockable boss with low-range support // The boss is a fairly standard and intuitive bot, that gets the most out of its unblockable-ness // on account of being otherwise easy to block; a long vulnerability period, for instance. // Comes in subwave 2 cause you JUST killed 2 bosses. Let's not go overboard. // Support provides some extra amount of pressure, focusing more on deadliness than the boss. // - BOSS: Incorporeal Phaser (unblockable burst soldier) // - Sinful Shaman (CRIT syringe medic) // Subwave 3: Power Giants with power support // Limited range on giant; therefore long range support // - Beyond Gravity // - Beyond Gravity + Defensive Deacon // - Ascender of Arrows // - Abhorrent Abnormality (pyro; functions as "bodyguard") // Support: Rekindled Knight (flaming eyelander, no projectile) Wave { SpawnTemplate Phaser_Title StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name "wave4a" Where spawnbot_main TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 50 TFBot { Template Eldr_Giant_Demoman_Cinder } } WaveSpawn { Name "wave4b3" WaitForAllDead "wave4a" Where spawnbot_main WaitBeforeStarting 16 TotalCount 3 MaxActive 3 SpawnCount 3 TotalCurrency 150 Squad { NoWaitForFormation 1 TFBot { Template Eldr_Giant_Demoman_Cinder } } } WaveSpawn { Name "wave4b" WaitForAllDead "wave4b1" Where spawnbot_main WaitBeforeStarting 2 TotalCount 2 MaxActive 2 SpawnCount 2 TotalCurrency 100 Squad { TFBot { Template Eldr_Giant_Demoman_Cinder } TFBot { Template Eldr_Medic_Shield } } } WaveSpawn { Name "wave4b" WaitForAllDead "wave4b3" Where spawnbot_main WaitBeforeStarting 2 TotalCount 5 MaxActive 5 SpawnCount 5 TotalCurrency 100 Squad { TFBot { Template Eldr_Giant_Demoman_Cinder } TFBot { Template Eldr_Medic_Shield } TFBot { Template Eldr_Medic_Shield } TFBot { Template Eldr_Medic_Shield } TFBot { Template Eldr_Medic_Shield } } } WaveSpawn { Name "wave4b2" WaitForAllDead "wave4a2" Where spawnbot_mission_sniper WaitBetweenSpawns 2.5 TotalCount 40 MaxActive 8 SpawnCount 2 TotalCurrency 160 TFBot { Template Eldr_Sniper_Bow } } WaveSpawn { Name "wave4b" WaitForAllSpawned "wave4a" Where spawnbot_main TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 50 FirstSpawnOutput { Target phaser_text_relay Action Trigger } TFBot { Template Eldr_Chief_Soldier_Ghost } } WaveSpawn { Name "wave4a2" Where spawnbot_tunnel WaitBeforeStarting 6 WaitBetweenSpawns 4.5 TotalCount 18 MaxActive 6 SpawnCount 3 TotalCurrency 90 TFBot { Template Eldr_Pyro } } WaveSpawn { Name "wave4a2" Where spawnbot_main WaitBeforeStarting 7.5 WaitBetweenSpawns 4 TotalCount 12 MaxActive 6 SpawnCount 2 TotalCurrency 60 TFBot { Template Eldr_Medic_Syringe } } WaveSpawn { Name "wave4c" WaitForAllDead "wave4b" Where spawnbot_main Where spawnbot_invasion WaitBetweenSpawns 10 TotalCount 24 MaxActive 12 SpawnCount 4 TotalCurrency 240 Squad { NoFormation 1 TFBot { Template Eldr_Giant_Demoman_Gravity } TFBot { Template Eldr_Pyro } TFBot { Template Eldr_Pyro } TFBot { Template Eldr_Pyro } } } WaveSpawn { Name "Support" WaitForAllDead "wave4a2" Where spawnbot_tunnel Where spawnbot_invasion WaitBetweenSpawns 10 TotalCount 10 MaxActive 2 SpawnCount 1 TotalCurrency 0 Support 1 TFBot { Template Eldr_Demo_Knight_Fire } } WaveSpawn { Name "Support" WaitForAllDead "wave4b2" Where spawnbot_main WaitBetweenSpawns 4 TotalCount 10 MaxActive 2 SpawnCount 1 TotalCurrency 0 Support 1 TFBot { Template Eldr_Demo_Knight_Fire } } } // Wave 5 - RED bots comin' in hot - Warzone Wreaking - Payout: $1500 //Focus crit banner + RED bot interaction through mitigation //RED bot role: damage reduction in a limited area, rewarding "higher-risk" play by staying close to it //BLU bot roles: buff other bots, threaten death of giant, gain ground by seperating team //Subwave 1 - intro crit banner with weak giant //- Giant DH Soldier + Kritz Banner Soldier //- Giant Burst Shotgun Heavy + Kritz Banner Soldier //Subwave 2 - Divide and conquer, giants now have kritz giving to commons //- Tank //- Giant Kritz Banner Pyro //- Rapid Fire Demo //Subwave 3 - El Grande Finale //- Marshal Misha (heavy with homing rockets; helps combat longer-range) + Combat Medic + Giant Kritz Pyro //- Marshal Misha + Giant Combat Medic //Focus on giants; supportive commons; RED bots create different playstyle? //ROLE: damage reduction in a limited area, rewarding "higher-risk" play by staying close to it / playing around it //Bonus: normally annoying bot is now your assistant! //Allow uber? -> built-in knockback resist, essentially megaheal with actual invuln (might be OP) //Small bots -> allow uber, not a bad thing for them to have //Small bot role: minor distraction, notable DPS bonus when healed // Subwave 1: Initial power push forward! // Giants with medics, and a tank. Creats clear focus for giant killers vs tank killers // Giant will attempt to displace friendly giant, leaving players vulnerable to full damage // No kritz this subwave to avoid "must have crit resist"! // Commons once again act as main deadliness force; should have good matchup around mid-long range // and should fire in bursts, not rapid // Uber Medic -> careful approach required with distraction //- Tank //- Giant War-Torn Heavy + Combat Medic (armored) //- Mine Layer Demo (Iron Bomber, more damage on world contact) // Subwave 2: Easily countered by the giant, but also hittin' its weak point // Giants themselves are not too dangerous, but commons can deal big damage! //- Giant Frontline Soldier + Rallying Kritz Soldier (first 1 squadded, then 3, then noformation) //- Giant Burst Commando Soldier (slower rockets, slightly bigger) ??? to introduce early~ //- Protector Pyros (deflect) //- Gluon Gun Pyros -- test: what if none? // Subwave 3: Now it's serious: super giant spam! // Still-dangerous giants that attempt to prevent carefree dodging // For true finale, giant medic duo! //- Marshal Misha (heavy with homing rockets; helps combat longer-range) + Combat Medic //- Marshal Misha + Giant Combat Medic //- Combat Ranger Engineer (burst rescue ranger) // Support (after subwave 2): Infantry Scout (tries to slip by thanks to cover fire) // Support (all wave): Spec Ops Sniper, Infiltrator Spy, Backline Engineer // Red Support: Giant Backup Soldier (can help block crits from support!) // Optional: Heavy (+damage while healed) Wave { InitWaveOutput { Target spawnpoint_relay_r Action Trigger } StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name "wave5a1" Where spawnbot_main TotalCount 2 MaxActive 2 SpawnCount 2 TotalCurrency 40 Squad { TFBot { Template War_Giant_Soldier } TFBot { Template War_Soldier_CritBanner } } } WaveSpawn { Name "wave5a" Where spawnbot_main WaitBeforeStarting 10 TotalCount 4 MaxActive 4 SpawnCount 4 TotalCurrency 80 Squad { NoWaitForFormation 1 TFBot { Template War_Giant_Soldier } TFBot { Template War_Soldier_CritBanner } TFBot { Template War_Soldier_CritBanner } TFBot { Template War_Soldier_CritBanner } } } WaveSpawn { Name "wave5a" WaitForAllDead "wave5a1" Where spawnbot_main WaitBetweenSpawns 12 TotalCount 6 MaxActive 6 SpawnCount 3 TotalCurrency 120 Squad { NoFormation 1 TFBot { Template War_Giant_Soldier } TFBot { Template War_Soldier_CritBanner } TFBot { Template War_Soldier_CritBanner } } } // WaveSpawn // { // Name "wave5a2" // Where spawnbot_invasion // Where spawnbot_tunnel // WaitBeforeStarting 9 // WaitBetweenSpawns 4 // TotalCount 30 // MaxActive 6 // SpawnCount 3 // TotalCurrency 120 // TFBot // { // Template War_Pyro_Phlog // } // } WaveSpawn { Name "wave5a2" Where spawnbot_tunnel WaitBeforeStarting 12 WaitBetweenSpawns 3.5 TotalCount 10 MaxActive 2 SpawnCount 1 TotalCurrency 100 RandomChoice { TFBot { Template War_Pyro_Reflect Item "Respectless Rubber Glove" } TFBot { Template War_Pyro_Reflect Item "Handyman's Handle" } TFBot { Template War_Pyro_Reflect Item "Traffic Cone" } TFBot { Template War_Pyro_Reflect Item "Stately Steel Toe" } } } WaveSpawn { Name "wave5b" WaitForAllDead "wave5a" WaitBetweenSpawnsAfterDeath 10 TotalCount 1 TotalCurrency 150 Tank { Name "tank" Health 22000 Speed 75 StartingPathTrackNode "tank_path_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name "wave5b0" WaitForAllDead "wave5a" Where spawnbot_main TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 50 TFBot { Template War_Giant_Heavy_Blast } } WaveSpawn { Name "wave5b1" WaitForAllDead "wave5a" WaitBeforeStarting 10 Where spawnbot_invasion TotalCount 2 MaxActive 2 SpawnCount 2 TotalCurrency 100 Squad { TFBot { Template War_Giant_Heavy_Blast } TFBot { Template War_Medic_UberBigHeal } } } WaveSpawn { Name "wave5b" WaitForAllDead "wave5b0" Where spawnbot_main TotalCount 4 MaxActive 4 SpawnCount 4 TotalCurrency 200 Squad { TFBot { Template War_Giant_Heavy_Blast } TFBot { Template War_Medic_UberBigHeal } TFBot { Template War_Medic_UberBigHeal } TFBot { Template War_Medic_UberBigHeal } } } WaveSpawn { Name "wave5b2" WaitForAllDead "wave5a2" Where spawnbot_main Where spawnbot_mission_sniper WaitBetweenSpawns 6.5 TotalCount 32 MaxActive 8 SpawnCount 4 TotalCurrency 160 TFBot { Template War_Demo_Mine } } WaveSpawn { Name "wave5c1" WaitForAllDead "wave5b" Where spawnbot_invasion Where spawnbot_tunnel WaitBeforeStarting 2 WaitBetweenSpawns 16 TotalCount 8 MaxActive 5 SpawnCount 4 TotalCurrency 80 Squad { NoWaitForFormation 1 TFBot { Template War_Giant_Soldier_Burst } TFBot { Template War_Soldier_CritBanner } TFBot { Template War_Soldier_CritBanner } TFBot { Template War_Soldier_CritBanner } } } WaveSpawn { Name "wave5c2" WaitForAllDead "wave5b2" Where spawnbot_invasion WaitBetweenSpawns 4 TotalCount 24 MaxActive 6 SpawnCount 3 TotalCurrency 120 TFBot { Template War_Engineer_Ranger } } WaveSpawn { Name "wave5c3" WaitForAllDead "wave5c1" Where spawnbot_invasion TotalCount 2 MaxActive 2 SpawnCount 2 TotalCurrency 100 Squad { TFBot { Template War_Giant_Heavy_Rocket } TFBot { Template War_Medic_UberBigHeal } } } WaveSpawn { Name "wave5c3" WaitForAllDead "wave5c1" WaitBeforeStarting 15 Where spawnbot_tunnel TotalCount 4 MaxActive 4 SpawnCount 4 TotalCurrency 200 Squad { TFBot { Template War_Giant_Heavy_Rocket } TFBot { Template War_Medic_UberBigHeal } TFBot { Template War_Medic_UberBigHeal } TFBot { Template War_Medic_UberBigHeal } } } WaveSpawn { Name "RED Support" Support 1 TFBot { Class Pyro ClassIcon red2_lite } } WaveSpawn { Name "RED Support" WaitBeforeStarting 4 Where spawnbot_reprogrammed WaitBetweenSpawnsAfterDeath 30 TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 0 Support 1 TFBot { Template Red_Giant_Soldier_Backup AddCond { Delay 0 Index 52 Duration 2.5 } } } // WaveSpawn // { // Name "RED Support" // WaitBeforeStarting 4 // Where spawnbot_reprogrammed // WaitBetweenSpawns 15 // TotalCount 3 // MaxActive 3 // SpawnCount 1 // TotalCurrency 0 // Support 1 // TFBot // { // Template Red_Pyro_Flaregun // } // } WaveSpawn { Name "Support" Support 1 TFBot { Class Pyro ClassIcon blu2_lite } } WaveSpawn { Name "Support" Where spawnbot_invasion WaitBeforeStarting 25 WaitBetweenSpawnsAfterDeath 45 TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 0 Support 1 TFBot { Template War_Engineer } } WaveSpawn { Name "Support" WaitForAllDead "wave5b2" Where spawnbot_scattered WaitBetweenSpawns 10 TotalCount 10 MaxActive 4 SpawnCount 2 TotalCurrency 0 Support 1 TFBot { Template War_Scout_Spammer } } } // Wave 6 - Cataclysmic forces - Doomsday of Darkness // Things went a little out of hand with the old version. It's time for a revision from scratch! // Decide on focus of the wave: Giant Burst Buff Soldier // Players had red support prior wave, would be odd to not continue, no? // Because players have access to buff: // - Blimp subwave: anti-falloff greatly helps, as does base dps. // - Counter subwave: Shield Medics, blast resist? Protection? // - DPS subwave: go all-out on various slightly-weaker giants that pose a threat. (Thunder Terrors?) // Ensure that every subwave can seriously threaten the giant in some way! Use crits aplenty. // Subwave 1: Blimps! // - Blimps; a GIANT now spawns out of them! (defensive -> offensive) // - [Hordes; allows close rangers to do something] (offensive) // Subwave 2: DPS subwave, let's go all out! // - Giant Thunder Terror Scout (many if possible!) // - Giant [offensive, covers up after giant] // - Aerial Assault Soldier // Subwave 3: Powerful counter subwave // - Giant Resistance [Class] (defensive; tanks damage) // - Giant [Offensive] + Giant Shield Medic // - Endless Fire Pyro // OLD VERSION // Also references some expert names! // Nuclear bots (duh): Heavy with explosive bullets shotgun/minigun? // Bomber Blimp, Nightfall Sniper (light alpha change?), Air Strike Soldier (from blimp?), // Doomsday Demo, Endless Fire Pyro, Scorched Earth Pyro, // Colonel Conflict, Thunder Terror Scout (leaves lightning bolts behind, deals damage) // Giant Doombringer Medic (haste!), Giant Cataclysm Heavy (explosive shotgun), // Giant Sky Burner Heavy (homing fireball) // RED Support for the wave: Giant Buff Direct Soldier , Giant Dispenser Heavy? // Subwave 1 - Can you actually kill blimps, though? // Forced focus: blimps + fast bomb pressure (gscouts) + slow bomb pressure (gheavy) // No commons yet outside of support // - Blimps (take different paths) // - Air Strike Soldiers (spawn from blimps) // - Giant Thunder Terror Scout // - Giant Cataclysm Heavy (burst) // - RED Support: Giant Buff Direct Soldier - Helps with dealing with blimps; only 1!! // Rewards team for keeping it alive with strong DPS buff // On death and after blimps, spawn Disp Heavy // Subwave 2 - Deadly commons, defensive giant // The giant mostly benefits from over-time healing // meaning it can get countered by, for instance, fire! // - Giant Sky Burner Heavy (1) // - ^ + Endless Fire Pyro - squad: slower projectiles + good close/mid range coverage! (rest) // - Doomsday Demo (powerful spam) // Subwave 3 - Excessive finale! // Giants to *smash* through ally giant with! // - Giant Cataclysm Heavy + Giant Doombringer Medic // - Scorched Earth Pyro (fury; limited range, but strong up close; also helps counter shields >:3) // Support: Nightfall Sniper, Aerial Assault Soldier // RED Support: Giant Rapid Buff Soldier (DHit, for blimp and general dps!), // Giant Dispenser Heavy (powerful DPS and some support!) Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name "icon" Support 1 TFBot { Class Pyro ClassIcon red2_lite } } WaveSpawn { Name "REDSupport" Where spawnbot_reprogrammed WaitBeforeStarting 2 TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 0 Support Limited TFBot { Template Red_Giant_Soldier_Buff AddCond { Delay 0 Index 52 Duration 2.5 } InterruptAction { Target tank_boss AimTarget tank_boss KillAimTarget 1 Delay 3.5 Cooldown 2.25 //every 5 seconds, stands still for a bit Duration 2 } } } WaveSpawn { Name "blimps_n_soldier" WaitForAllDead "wave6a_blimps" Support Limited } WaveSpawn { Name "blimps_n_soldier" WaitForAllDead "REDSupport" Support Limited } WaveSpawn { Name "RED Support 2" WaitForAllDead "blimps_n_soldier" Where spawnbot_reprogrammed WaitBetweenSpawnsAfterDeath 5 TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 0 Support 1 TFBot { Template Red_Giant_Heavy_Dispenser AddCond { Delay 0 Index 52 Duration 2.5 } InterruptAction { Target ClosestPlayer Delay 0.5 Cooldown 6 //every 5 seconds, stands still for a bit Duration 5 } } } WaveSpawn { Name "Support" Support 1 TFBot { Class Pyro ClassIcon blu2_lite } } WaveSpawn { Name "wave6a1" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 50 TFBot { Template Doom_Giant_Scout } } WaveSpawn { Name "wave6a" WaitBeforeStarting 1 Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 50 TFBot { Template Doom_Giant_Heavy_Nuclear } } WaveSpawn { Name "wave6a" WaitBeforeStarting 15 Where spawnbot_tunnel TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 50 TFBot { Template Doom_Giant_Heavy_Nuclear } } WaveSpawn { Name "wave6a" WaitBeforeStarting 26 Where spawnbot_invasion TotalCount 1 MaxActive 1 SpawnCount 1 TotalCurrency 50 TFBot { Template Doom_Giant_Heavy_Nuclear } } WaveSpawn { Name "wave6a3" WaitBeforeStarting 2 TotalCount 1 MaxActive 1 SpawnCount 1 Tank { SpawnTemplate "BlimpBotTeleDest_A" //destination_air Health 13000 Speed 75 DisableSmokestack 1 Classicon blimp2_lite Skin 2 //grey aka colorable MaxTurnRate 50 Model "models/bots/boss_bot/boss_blimp.mdl" Gravity 0 //prevents it from yeeting itself down RotatePitch 0 //prevents it from turning upwards DisableTracks 1 //prevents its ghooooost tracks from making noise DisableChildModels 1 //HOPEFULLY prevents the bomb from sticking out EngineLoopSound "npc\combine_gunship\dropship_engine_distant_loop1.wav" PingSound "npc\combine_gunship\ping_search.wav" Name "tank" StartingPathTrackNode "tank_path_blimp_a_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name "wave6a4" WaitBeforeStarting 10 TotalCount 1 MaxActive 1 SpawnCount 1 Tank { SpawnTemplate "BlimpBotTeleDest_B" //destination_strike Health 13000 Speed 75 DisableSmokestack 1 Classicon blimp2_lite Skin 2 //grey aka colorable MaxTurnRate 50 Model "models/bots/boss_bot/boss_blimp.mdl" Gravity 0 //prevents it from yeeting itself down RotatePitch 0 //prevents it from turning upwards DisableTracks 1 //prevents its ghooooost tracks from making noise DisableChildModels 1 //HOPEFULLY prevents the bomb from sticking out EngineLoopSound "npc\combine_gunship\dropship_engine_distant_loop1.wav" PingSound "npc\combine_gunship\ping_search.wav" Name "tank" StartingPathTrackNode "tank_path_blimp_b_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name "wave6a_blimps" WaitForAllDead "wave6a3" } WaveSpawn { Name "wave6a_blimps" WaitForAllDead "wave6a4" } WaveSpawn { Name "wave6a2" WaitForAllDead "wave6a3" Where spawnbot TotalCount 4 MaxActive 4 SpawnCount 4 TotalCurrency 40 TFBot { Template Doom_Soldier_AirStrike FireInput { Target !activator Action $TeleportToEntity Param "destination_air" Delay 0.1 Repeats 1 } } } WaveSpawn { Name "wave6a2" WaitForAllDead "wave6a4" Where spawnbot TotalCount 4 MaxActive 4 SpawnCount 4 TotalCurrency 40 TFBot { Template Doom_Soldier_AirStrike FireInput { Target !activator Action $TeleportToEntity Param "destination_strike" Delay 0.1 Repeats 1 } } } WaveSpawn { Name "wave6b1" WaitForAllDead "wave6a_blimps" WaitForAllSpawned "wave6b" WaitBeforeStarting 5 WaitBetweenSpawnsAfterDeath 11 Where spawnbot TotalCount 3 MaxActive 1 SpawnCount 1 TotalCurrency 60 TFBot { Template Doom_Giant_Scout } } WaveSpawn { Name "wave6b" WaitForAllDead "wave6a" WaitBetweenSpawns 11 Where spawnbot_main TotalCount 9 MaxActive 6 SpawnCount 3 TotalCurrency 180 Squad { NoWaitForFormation 1 TFBot { Template Doom_Giant_Heavy_Fireball } TFBot { Template Doom_Pyro_Spread } TFBot { Template Doom_Pyro_Spread } } } WaveSpawn { Name "wave6b3" WaitForAllDead "wave6b" WaitBetweenSpawns 11 Where spawnbot_main TotalCount 3 MaxActive 3 SpawnCount 3 TotalCurrency 60 Squad { NoWaitForFormation 1 TFBot { Template Doom_Giant_Heavy_Fireball } TFBot { Template Doom_Medic_UberBigHeal } TFBot { Template Doom_Pyro_Spread } } } WaveSpawn { Name "wave6b2" WaitForAllDead "wave6a2" Where spawnbot_mission_sniper Where spawnbot_invasion WaitBetweenSpawns 11 TotalCount 24 MaxActive 8 SpawnCount 2 TotalCurrency 120 TFBot { Template Doom_Demo_Bomber } } WaveSpawn { Name "wave6c1" WaitForAllDead "wave6b" WaitBeforeStarting 12 Where spawnbot_tunnel TotalCount 2 MaxActive 2 SpawnCount 2 TotalCurrency 100 Squad { TFBot { Template Doom_Giant_Heavy_Nuclear SpawnTemplate PowerupLogic_Owned } TFBot { Template Doom_Giant_Medic_Haste } } } WaveSpawn { Name "wave6c" WaitForAllDead "wave6b3" Where spawnbot_invasion TotalCount 2 MaxActive 2 SpawnCount 2 TotalCurrency 150 Squad { TFBot { Template Doom_Giant_Soldier_Barrage_Heal SpawnTemplate PowerupLogic_Owned } TFBot { Template Doom_Giant_Medic_Haste } } } WaveSpawn { Name "Support" WaitForAllDead "wave6b2" Where spawnbot_tunnel WaitBetweenSpawns 6 TotalCount 16 MaxActive 6 SpawnCount 3 TotalCurrency 0 Support 1 TFBot { Template Doom_Pyro_Scorch } } WaveSpawn { Name "Support" WaitForAllDead "wave6a2" Where spawnbot_mission_sniper WaitBetweenSpawnsAfterDeath 12 TotalCount 10 MaxActive 1 SpawnCount 1 TotalCurrency 0 Support 1 TFBot { Template Doom_Soldier_AirStrike RocketJump 2 CharacterAttributes { "rocket jump damage reduction" 0 "cancel falling damage" 1 "self dmg push force increased" 1.4 } } } WaveSpawn { Name "Support" WaitForAllDead "wave6b2" Where spawnbot_tunnel WaitBetweenSpawnsAfterDeath 12 TotalCount 10 MaxActive 1 SpawnCount 1 TotalCurrency 0 Support 1 TFBot { Template Doom_Soldier_AirStrike RocketJump 2 CharacterAttributes { "rocket jump damage reduction" 0 "cancel falling damage" 1 "self dmg push force increased" 1.4 } } } } // Wave 7 - Universal Uncertainty: Entropy // An epic boss fight with multiple phases! // Path is forced on either cent-left or cent-right (check vmf?) // Boss functions as "secondary" bomb carrier - might be too tricky on map as short as terrorlict? // Gains a little more max health if team has heavy because minigun go vrrrrr ratatatata // Subwave 1: damage boss // Attacks: // The first area is quite open and has limited cover from which to fire on the boss, making it excellent // for aerial attacks. // The amount of corners slightly past the front will aid in dodging the homing projectiles. // - Meteorite Rain ~ Starfall: rockets from weapon mimic up high, indicated with particle? // - Cosmic Constant ~ Gravity: slow players down, + homing rockets/flares (no splash) // Bots: // - Lightspeed Scout (look, second bomb!) == Super Scout, defensive only // - // Subwave 2: defend bomb, boss gives cover fire while INVULNERABLE and NON-MOVING // Attacks: // Not particularly deadly, but can disrupt the dodging of otherwise easy-to-deal with robots. // - Night Sky Nebula ~ Infinity: slow grenade-shooting grenades; + impact rockets that cause harm zone on hit // Bots: // // Subwave 3: kill boss // - Meteorite Rain ~ Starfall: "meteors" from weapon mimic up high, indicated with particle? // - Cosmic Constant ~ Gravity: slow players down, + homing rockets/flares (no splash) // - Limitless Creation ~ Infinity: slow rocket-shooting rockets; + impact rockets that cause harm zone on hit // - Final: Universal Uncertainty ~ Entropy // Red support: provides some support from bots, DPS from "player" bots. // - Giant Disp Heavy + Rapid Backup Soldiers // - Damage Scout (Player) (ubercan) // - Veteran Soldier + Veteran Medic (kritz) // - Veteran Demo + Veteran Medic (kritz) Wave { SpawnTemplate BossLogic SpawnTemplate { Name DispenserTest Origin "3141 124 0" } InitWaveOutput { Target spawnpoint_relay_r Action Trigger } StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name "test" Where spawnbot_main TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 10 TotalCurrency 1 TFBot { Template T_TFBot_Giant_Soldier ItemAttributes { ItemName "TF_WEAPON_ROCKETLAUNCHER" "mult projectile scale" 1.5 "fire rate bonus" 5 "fuse bonus" 1.5 // "custom projectile size" // "projectile gravity" -2 "mod projectile heat seek power" 60 "mod projectile heat aim time" 6 "mod projectile heat no predict target speed" 1 "projectile speed decreased" 0.35 "no self blast dmg" 1 } ShootTemplate { Name "GrenadeSpawner" ItemName "TF_WEAPON_ROCKETLAUNCHER" AttachToProjectile 1 } // Health 5 InterruptAction { Target bombpath_middle_hologram Delay 4 Cooldown 10 Duration 999 } } } // WaveSpawn // { // Where spawnbot_main // WaitBeforeStarting 10 // WaitBetweenSpawns 3 // TotalCount 3 // MaxActive 3 // SpawnCount 1 // Support 1 // TFBot // { // Class Scout // Attributes SuppressFire // Action Mobber // } // } } } /////////////////////////////////////////////// //SCRAPPED STUFF OF THE PAST /////////////////////////////////////////////// //A peek into the slightly-messy development history of this advanced mission! // Subwave 3 - Excessive finale! // Less giants, but more spam from each giant. Shows off the power of the Giant Haste Medic. // First pair uses a known bot; second pair introduces the final bot type. // Commons in this subwave are less spammy, more defensive; allows team to better approach the giant medics. // - Giant Cataclysm Heavy + Giant Doombringer Medic // - Colonel Conflict (barrage) + Giant Doombringer Medic // - Scorched Earth Pyro (fury; limited range, but strong up close; also helps counter shields >:3) //Wave 6 - Doomsday of Darkness - Alternatively...Bloodstained Bashing 2? // Mohg (but fake), as chief pyro with stuff like a Rain of Blood (mimics the localized fire) // Or straight-up copy the burning ground effect from the og fight! // Subwave 2: Summoned invasion // Tank as DPS check, but also calls attention to it thanks to summoned skellies (one large "push force") // Commons here act as assisting threats for otherwise easy-to-dodge giants // Squad prevents them from roaming around, which could be annoying // - Skeleton Tank (summons Skeleton Snipers, not real skeletons) ?