#base robot_standard.pop #base robot_giant.pop WaveSchedule { StartingCurrency 4800 CanBotsAttackWhileInSpawnRoom No RespawnWaveTime 3 AddSentryBusterWhenDamageDealtExceeds 3000 AddSentryBusterWhenKillCountExceeds 15 MaxRedPlayers 6 AllowBotExtraSlots 1 RobotLimit 40 WaveStartCountdown 3 BodyPartScaleSpeed 9999 //// PRECACHED MODELS //// // Combat Tanks PrecacheModel "models/bots/boss_bot/combat_tank_mk2/mk2_fireball.mdl" PrecacheModel "models/bots/boss_bot/combat_tank_mk2/mk2_railgun.mdl" PrecacheModel "models/bots/boss_bot/combat_tank_mk2/mk2_minigun.mdl" PrecacheModel "models/bots/boss_bot/combat_tank_mk2/mk2_combat_tank_chassis.mdl" PrecacheModel "models/bots/boss_bot/combat_tank_mk2/mk2_rocket_pod.mdl" PrecacheModel "models/bots/boss_bot/combat_tank_mk2/mk2_rocket_dumbfire.mdl" // Napalm Fire Launcher PrecacheModel "models/weapons/c_models/c_firelauncher/c_firelauncher.mdl" // Misc. Models PrecacheModel "models/props_tumb/mvm/tank_shield.mdl" //// PRECACHED SOUNDS //// // SFX PrecacheSound "beamshit.mp3" PrecacheScriptSound "MVM.GiantDemoman_Grenadeshoot" // VOX System Voicelines PrecacheSound "youngmanyoulldieaterribledeath.mp3" // Music PrecacheSound "act4w1placeholder.mp3" //// PRECACHED PARTICLES //// PrecacheParticle "spell_fireball_small_trail_red" //// LUA SCRIPTS //// // Tank Repairing Script LuaScriptFile "tank_repair_script.lua" //// TANK PATHS //// // Australium Payload Escort Wave Tank Path ExtraTankPath { Name "tank_path_australium" Node "-2776 6656 712" // tank_path_1 Node "-2416 6656 712" // tank_path_2 Node "-2280 6600 712" // tank_path_3 Node "-2200 6464 712" // tank_path_4 Node "-2184 6240 720" // tank_path_5 Node "-2224 6048 728" // tank_path_6 Node "-2256 5984 728" // tank_path_7 Node "-2264 5872 728" // tank_path_8 Node "-2240 5720 728" // tank_path_9 Node "-2200 5608 728" // tank_path_10 Node "-2112 5536 728" // tank_path_11 Node "-2040 5496 728" // tank_path_12 Node "-1952 5472 728" // tank_path_13 Node "-2480 5848 728" // tank_path_14 Node "-2696 5936 736" // tank_path_15 Node "-3072 5944 736" // tank_path_16 Node "-3344 5944 736" // tank_path_17 Node "-4216 5920 560" // tank_path_18 Node "-4512 5880 560" // tank_path_19 Node "-4744 5736 560" // tank_path_20 Node "-4928 5568 560" // tank_path_21 Node "-5072 5400 560" // tank_path_22 Node "-5216 5152 560" // tank_path_23 Node "-5264 4936 560" // tank_path_24 Node "-5272 4696 560" // tank_path_25 Node "-5232 4488 552" // tank_path_26 Node "-5144 4280 552" // tank_path_27 Node "-5024 4048 560" // tank_path_28 Node "-4920 3880 560" // tank_path_29 Node "-4752 3712 560" // tank_path_30 Node "-4624 3568 560" // tank_path_31 Node "-4552 3400 552" // tank_path_32 Node "-4560 3192 552" // tank_path_33 Node "-4616 3040 552" // tank_path_34 Node "-4704 2856 552" // tank_path_35 Node "-4720 2672 552" // tank_path_36 Node "-4696 2512 552" // tank_path_37 Node "-4624 2336 560" // tank_path_38 Node "-4536 2160 560" // tank_path_39 Node "-4432 2024 560" // tank_path_40 Node "-4280 1912 552" // tank_path_41 Node "-4136 1872 560" // tank_path_42 Node "-3960 1912 560" // tank_path_43 Node "-3808 1992 560" // tank_path_44 Node "-3648 2104 560" // tank_path_45 Node "-3512 2192 560" // tank_path_46 Node "-3392 2256 560" // tank_path_47 Node "-3184 2328 560" // tank_path_48 Node "-3000 2328 560" // tank_path_49 Node "-2848 2264 552" // tank_path_50 Node "-2744 2128 552" // tank_path_51 Node "-2696 1984 552" // tank_path_52 Node "-2616 1848 552" // tank_path_53 Node "-2504 1728 560" // tank_path_54 Node "-2224 1456 560" // tank_path_55 Node "-2080 1080 552" // tank_path_56 } // Pyro Patrol Chief Combat Tank Path ExtraTankPath { Name "combat_tank_df" Node "-3328 7040 704" // tank_path_1 Node "-3328 6656 704" // tank_path_2 Node "-3328 6608 704" // tank_path_3 Node "-3344 6560 704" // tank_path_4 Node "-3360 6528 704" // tank_path_5 Node "-3392 6512 704" // tank_path_6 Node "-3824 6512 704" // tank_path_7 Node "-3904 6512 704" // tank_path_8 Node "-3952 6480 704" // tank_path_9 Node "-4000 6432 704" // tank_path_10 Node "-4048 6352 704" // tank_path_11 Node "-4048 6208 704" // tank_path_12 Node "-4032 5520 560" // tank_path_13 } // Rocket Holdout Wave Flank Drill Tank Path ExtraTankPath { Name "tank_drill_path" Node "-5872 4176 576" // tank_path_1 Node "-5344 4304 576" // tank_path_2 Node "-5152 4176 576" // tank_path_3 Node "-4992 3984 560" // tank_path_4 Node "-4800 3776 560" // tank_path_5 Node "-4608 3568 560" // tank_path_6 Node "-4576 3152 560" // tank_path_7 Node "-4688 2976 560" // tank_path_8 Node "-4672 2352 560" // tank_path_9 Node "-4560 2080 560" // tank_path_10 Node "-4368 1920 560" // tank_path_11 Node "-4160 1824 560" // tank_path_12 Node "-3872 1888 560" // tank_path_13 Node "-3664 2032 544" // tank_path_14 Node "-3456 2240 544" // tank_path_15 Node "-3152 2304 544" // tank_path_16 Node "-1680 2304 560" // tank_path_17 } //// SPAWN POINTS //// // Carrier Spawn ExtraSpawnPoint { Name "spawnbot_fix" X -1952 Y 10011 Z 872 TeamNum 3 } // Side Tunnel Spawn near Front ExtraSpawnPoint { Name "spawnbot_section3_getbusier" X -3327 Y 6826 Z 688 TeamNum 3 } //// POINT TEMPLATES //// PointTemplates { //// AUSTRALIUM PAYLOAD ESCORT WAVE (WAVE 6) //// // Setting up Act 4's First Wave Wave6Assets { //Interface Templates point_populator_interface { "targetname" "pop_interface" } // Ragdoll Remover logic_timer { "targetname" "ragdollremover" "RefireTime" "7" "OnTimer" "tf_ragdoll*,kill,,0,-1" } logic_relay // Expanding Red's Spawn at the Front? { "targetname" "fullyclaim_redspawn" "OnTrigger" "red_rev_mission_relay,trigger,,0,-1" "OnTrigger" "lift_spawn_set_team_red,trigger,,0,-1" "OnTrigger" "spawnbot_right,disable,,0,-1" "OnTrigger" "telezone,kill,,0,-1" "OnTrigger" "spawnfield,kill,,0,-1" "OnTrigger" "spawn_info_target,kill,,0,-1" } // Spawn Area Assets info_target // Setting Elevator Spawn { "targetname" "spawn_info_target" "origin" "-2813 7056 698" } func_respawnroom // Setting Elevator Spawn { "Targetname" "newrespawn" "TeamNum" "2" "origin" "-2813 7056 698" "mins" "-200 -200 0" "maxs" "200 200 500" } trigger_teleport // Setting Elevator Spawn { "spawnflags" "1" "targetname" "telezone" "origin" "-1821 1121 512" "target" "spawn_info_target" "mins" "-500 -500 -500" "maxs" "500 500 500" } func_forcefield // Elevator Barrier Entity { "targetname" "spawnfield" "origin" "-2556 7005 688" "TeamNum" "2" "mins" "-8 0 0" "maxs" "8 300 500" } func_forcefield // Front Flank Path Barrier Entity { "targetname" "red_blocker2" "origin" "-1308 7156 773" "TeamNum" "3" "mins" "-8 -300 0" "maxs" "8 300 1600" } func_forcefield // Hatch Area Barrier Entity { "targetname" "red_blocker3" "origin" "-3551 4047 608" "TeamNum" "3" "mins" "0 -8 -2000" "maxs" "4000 8 2000" } // Australium Tank Prop Assets prop_dynamic // Main Australium Tank Body { "targetname" "prop_engitank_waiting" "model" "models/robot_factory/australium_tank.mdl" "solid" "6" "origin" "-2776 6656 688" "DefaultAnim" "move" "DisableBoneFollowers" "1" } prop_dynamic_ornament // Australium Tank Track { "model" "models/bots/boss_bot/tank_track_l.mdl" "targetname" "prop_engitank_waiting_tracks" "disablebonefollowers" "1" "defaultanim" "idle" "InitialOwner" "prop_engitank_waiting" } prop_dynamic_ornament // Australium Tank Track { "model" "models/bots/boss_bot/tank_track_r.mdl" "targetname" "prop_engitank_waiting_tracks" "disablebonefollowers" "1" "defaultanim" "idle" "InitialOwner" "prop_engitank_waiting" } // Heavy Chief Sequence info_target // Teleport Location for the Heavy Chief { "targetname" "gothere" "origin" "-2307 8186 678" } logic_relay // Wave 6 Intro Sequence Relay { "targetname" "retracting_the_bridge_and_come_forth_all_mighty_patrol_chiefs" "OnTrigger" "shortcut_bridge_retract_relay,trigger,,0,-1" "OnTrigger" "tf_gamerules,playvo,npc\combine_gunship\ping_patrol.wav,6,1" "OnTrigger" "tf_gamerules,playvo,ambient\machines\spindown.wav,9.5,1" "OnTrigger" "tf_gamerules,playvo,ambient\machines\spindown.wav,9.5,1" "OnTrigger" "01_door_unlock_relay,trigger,,10,-1" "OnTrigger" "music_controller,trigger,,10,-1" "OnTrigger" "text,display,,10.5,-1" "OnTrigger" "text_lower,display,,11.5,-1" "OnTrigger" "tf_gamerules,PlayVO,vo\mvm\mght\heavy_mvm_m_domination13.mp3,14,-1" "OnTrigger" "tf_gamerules,PlayVO,vo\mvm\mght\heavy_mvm_m_domination13.mp3,14,-1" } logic_relay // Wave 6 Intro Engibot Voiceline Relay { "targetname" "engi_voicelines1" "OnTrigger" "tf_gamerules,playvo,vo\mvm\norm\engineer_mvm_negativevocalization02.mp3,0,-1" "OnTrigger" "tf_gamerules,playvo,vo\mvm\norm\engineer_mvm_negativevocalization02.mp3,0,-1" "OnTrigger" "tf_gamerules,playvo,vo\mvm\norm\engineer_mvm_negativevocalization05.mp3,11,-1" "OnTrigger" "tf_gamerules,playvo,vo\mvm\norm\engineer_mvm_negativevocalization05.mp3,11,-1" "OnTrigger" "tf_gamerules,playvo,vo\mvm\norm\engineer_mvm_incoming03.mp3,14,-1" "OnTrigger" "tf_gamerules,playvo,vo\mvm\norm\engineer_mvm_incoming03.mp3,14,-1" "OnTrigger" "tf_gamerules,playvo,vo\mvm\norm\engineer_mvm_negativevocalization04.mp3,21,-1" "OnTrigger" "tf_gamerules,playvo,vo\mvm\norm\engineer_mvm_negativevocalization04.mp3,21,-1" "OnTrigger" "tf_gamerules,playvo,vo\mvm\norm\engineer_mvm_helpme03.mp3,22.7,-1" "OnTrigger" "tf_gamerules,playvo,vo\mvm\norm\engineer_mvm_helpme03.mp3,22.7,-1" "OnTrigger" "playerrunscriptcodeScreenShake(self.GetOrigin(), 5, 8, 2, 50000, 0, true)1-1" } game_text // Act Intro Sequence { "origin" "0 0 0" "targetname" "text" "message" "ACT 4" "x" "-1" "y" "0.4" "effect" "2" "spawnflags" "1" "channel" "1" "color" "255 255 255" "fxtime" "0.2" "fadeout" "1" "holdtime" "5" } game_text // Act Intro Text { "origin" "0 0 0" "targetname" "text_lower" "message" "TOTAL TEARDOWN" "x" "-1" "y" "0.45" "effect" "2" "channel" "0" "spawnflags" "1" "color" "255 0 0" "fadein" "0.05" "fadeout" "1" "holdtime" "4.8" } // Wave Ending Sequences logic_relay // Clears the Shortcut Teleporter { "targetname" "teleporter_clear" "OnTrigger" "tele_prop_red,kill,,0,-1" "OnTrigger" "tele_effects_red,kill,,0,-1" "OnTrigger" "tele_trigger_red,kill,,0,-1" "OnTrigger" "tele_trigger_red_info,kill,,0,-1" "OnTrigger" "newrespawn,kill,,0,-1" } logic_relay { "targetname" "load_up_the_rocket" "OnTrigger" "rocket_lower_relay,trigger,,7,-1" "OnTrigger" "timer_alarm,enable,,2,-1" "OnTrigger" "timer_alarm,trigger,,2,-1" "OnTrigger" "timer_alarm,disable,,30,-1" // "OnTrigger" "bignetrunscriptcodeEmitSoundEx({sound_name = `mvm/mvm_cpoint_klaxon.wav`, channel = 6, volume = 1.0, pitch = 80, flags = 3})1-1" } logic_relay { "targetname" "timer_alarm" "OnTrigger" "lowering_rocket_alarm,playsound,,0,-1" "OnTrigger" "lowering_rocket_alarm,stopsound,,2,-1" "OnTrigger" "timer_alarm,trigger,,2.55,-1" "spawnflags" "2" } ambient_generic { "targetname" "lowering_rocket_alarm" "message" "ambient\alarms\klaxon1.wav" "health" "10" "pitch" "85" "spawnflags" "17" } ambient_generic { "targetname" "lowering_rocket_alarm" "message" "ambient\alarms\klaxon1.wav" "health" "10" "pitch" "85" "spawnflags" "17" } ambient_generic { "targetname" "lowering_rocket_alarm" "message" "mvm\mvm_cpoint_klaxon.wav" "health" "10" "pitch" "85" "spawnflags" "17" } // Music Assets ambient_generic // Looping Music { "targetname" "loopingmusic" "message" "#act4w1placeholder.mp3" "health" "6" "pitch" "100" "spawnflags" "17" } logic_relay // Looping Music Relay { "targetname" "music_controller" "OnTrigger" "loopingmusic,PlaySound,,0,-1" "OnTrigger" "loopingmusic,StopSound,,194.7,-1" "OnTrigger" "music_controller,trigger,,194.72,-1" "spawnflags" "2" } // Lose Condition Assets game_round_win // Red Lose Condition { "TeamNum" "3" "targetname" "red_loses" "switch_teams" "0" "force_map_reset" "1" "classname" "game_round_win" } logic_relay // Red Lose Relay { "targetname" "redlose_relay" "OnTrigger" "red_loses,RoundWin,,0,-1" } // Misc Assets filter_activator_tfteam // Red Team Filter { "targetname" "filter_red" "teamnum" "2" } } Wave6Setup { // Disabling Shadows OnSpawnOutput { Target lift_* Action $setkey$disableshadows Param 1 Delay 0.1 } OnSpawnOutput { Target carrier_* Action $setkey$disableshadows Param 1 Delay 0.1 } logic_relay // Maybe meant to be logic auto { "targetname" "Wave6SetupRelay" "OnTrigger" "tf_objective_resource,$SetClientProp$m_iszMvMPopfileName,Termination - Total Teardown,0,-1" "OnTrigger" "item_teamflag*,SetReturnTime,60,0,-1" "OnTrigger" "sky_sunset_relay,Trigger,,0,-1" "OnTrigger" "05_door,setspeed,400,0,-1" "OnTrigger" "01_door_lock_relay,trigger,,0,-1" "OnTrigger" "01_door,setspeed,500,0,-1" // close it fast "OnTrigger" "01_door,setspeed,50,2,-1" // this is like close to the default speed i think "OnTrigger" "lift_door_left,close,,0.5,-1" "OnTrigger" "lift_door_right,close,,0.5,-1" "OnTrigger" "pop_interface,$PauseWavespawn,Wave6_Subwave2_PyroPatrolChief,0,-1" "OnTrigger" "pop_interface,$PauseWavespawn,Wave6_Subwave3_EngineerAmbush,0,-1" "OnTrigger" "pop_interface,$PauseWavespawn,Wave6_Subwave5_DemoPatrolChief,0,-1" "OnTrigger" "tank_path_australium_10,AddOutput,OnPass payloadtank:SetSpeed:36:0:-1,0,-1" "OnTrigger" "tank_path_australium_10,AddOutput,OnPass payloadtank:SetSpeed:23:1.5:-1,0,-1" "OnTrigger" "tank_path_australium_13,AddOutput,OnPass payloadtank:SetSpeed:0:0:-1,0,-1" "OnTrigger" "tank_path_australium_13,AddOutput,OnPass payloadtank:SetSpeed:75:4:-1,0,-1" "OnTrigger" "tank_path_australium_17,AddOutput,OnPass pop_interface:$ResumeWavespawn:Wave6_Subwave2_PyroPatrolChief:0:-1,0,-1" "OnTrigger" "tank_path_australium_31,AddOutput,OnPass pop_interface:$ResumeWavespawn:Wave6_Subwave3_EngineerAmbush:4:-1,0,-1" "OnTrigger" "tank_path_australium_31,AddOutput,OnPass australium_tank_shortcut:trigger::12:-1,0,-1" "OnTrigger" "tank_path_australium_43,AddOutput,OnPass pop_interface:$ResumeWavespawn:Wave6_Subwave5_DemoPatrolChief:0:-1,0,-1" "OnTrigger" "tank_path_australium_56,AddOutput,OnPass pop_interface:$FinishWave::0:-1,0,-1" "OnTrigger" "tank_path_australium_56,AddOutput,OnPass red_normal_mission_relay:trigger::0:-1,0,-1" "OnTrigger" "tank_path_australium_56,AddOutput,OnPass pop_interface:trigger::0:-1,0,-1" "OnTrigger" "tank_path_australium_56,AddOutput,OnPass lift_spawn_set_team_blue:trigger::0:-1,0,-1" "OnTrigger" "tank_path_australium_56,AddOutput,OnPass 04_door_unlock_relay:trigger::0:-1,0,-1" "OnTrigger" "tank_path_australium_56,AddOutput,OnPass shortcut_bridge_extend_relay:trigger::0:-1,0,-1" "OnTrigger" "tank_path_australium_56,AddOutput,OnPass spawnbot_right:enable::0:-1,0,-1" "OnTrigger" "tank_path_australium_56,AddOutput,OnPass teleporter_clear:trigger::0:-1,0,-1" "OnTrigger" "tank_path_australium_54,AddOutput,OnPass loopingmusic:FadeOut:5:0:-1,0,-1" "OnTrigger" "tank_path_australium_54,AddOutput,OnPass wave_finished_relay:trigger:0:0:-1,0,-1" "OnTrigger" "tank_path_australium_54,AddOutput,OnPass loopingmusic:Kill::5:-1,0,-1" "OnTrigger" "tank_path_australium_54,AddOutput,OnPass music_controller:disable:0:0:-1,0,-1" "OnTrigger" "tank_path_australium_54,AddOutput,OnPass redlose_relay:disable:0:0:-1,0,-1" "OnTrigger" "tank_path_australium_52,AddOutput,OnPass carrier_lift_raise_relay:trigger::0:-1,0,-1" "OnTrigger" "tank_path_australium_52,AddOutput,OnPass lift_spawn_set_team_blu:trigger::0:-1,0,-1" "OnTrigger" "tank_path_australium_52,AddOutput,OnPass red_normal_mission_relay:trigger::0:-1,0,-1" "OnTrigger" "tank_path_australium_31,AddOutput,OnPass payloadtank:SetSpeed:0:4:-1,0,-1" "OnTrigger" "tank_path_australium_31,AddOutput,OnPass gascancountertext:SetColor:255 255 255 255:7:-1,0,-1" "OnTrigger" "tank_path_australium_31,AddOutput,OnPass gascanindicator:enable::7:-1,0,-1" "OnTrigger" "tank_path_australium_31,AddOutput,OnPass 05_door_lock_relay:trigger:0:3:-1,0,-1" "OnTrigger" "tank_path_australium_31,AddOutput,OnPass 05_door:setspeed:100:7:-1,0,-1" "OnTrigger" "tank_path_australium_31,AddOutput,OnPass red_blocker3:kill::7:-1,0,-1" "OnTrigger" "tank_path_australium_31,AddOutput,OnPass gascan_zone:disable::0:-1,0,-1" "OnTrigger" "tank_path_australium_31,AddOutput,OnPass gascan_zone_2:enable::0:-1,0,-1" "OnTrigger" "tank_path_australium_31,AddOutput,OnPass gascancounter:enable::0:-1,0,-1" "OnTrigger" "tank_path_australium_33,AddOutput,OnPass gascancounter:disable::0:-1,0,-1" "OnTrigger" "tank_path_australium_31RunScriptCodeEntityOutputs.AddOutput(self, `OnPass`, `player`, `runscriptcode`, `ScreenShake(self.GetOrigin(), 5, 5, 2, 50000, 0, true)`, 3.45, -1)0-1" "OnTrigger" "tank_path_australium_31,AddOutput,OnPass tf_gamerules:playvo:ambient_mp3\rottenburg\tunneldoor_closed_loud.mp3:3.45:-1,0,-1" "OnTrigger" "tank_path_australium_30,AddOutput,OnPass 04_door_lock_relay:trigger::0:-1,0,-1" "OnTrigger" "tank_path_australium_7,AddOutput,OnPass retracting_the_bridge_and_come_forth_all_mighty_patrol_chiefs:trigger:0:0:-1,2,-1" "OnTrigger" "tank_path_australium_5,AddOutput,OnPass tf_gamerules:playvo:youngmanyoulldieaterribledeath.mp3:2:-1,0,-1" "OnTrigger" "tank_path_australium_10,AddOutput,OnPass engi_voicelines1:trigger::0:-1,0,-1" "OnTrigger" "combat_tank_df_12,AddOutput,OnPass combattank_nolaser|fireball|fireball:SetSpeed:0:0:-1,0,-1" } } // Australium Tank Assets AustraliumTankLogic { NoFixUp 1 // Australium Tank Patrol Chief Zapping Logic training_annotation // Zap Warning Annotation { "targetname" "gimmicktuto" "display_text" "Patrol Chiefs will zap the tank and slow it down! Take them out!" "lifetime" "10" "origin" "0 0 140" } prop_dynamic // ??? { "targetname" "kill_me_if_you_dare" "model" "models/empty.mdl" "solid" "0" "origin" "0 0 120" } prop_dynamic // Zapped Tank Aura { "targetname" "slowdownshield" "model" "models/props_tumb/mvm/tank_shield.mdl" "origin" "0 0 0" "rendercolor" "0 0 0" "disableshadows" "1" "renderfx" "24" "startdisabled" "1" } logic_relay // Heavy Chief Beam Strike { "targetname" "heavy_beam_strike_relay" "OnTrigger" "heavy_slowdown_beam,strikeonce,,0,-1" "OnTrigger" "heavy_beam_strike_relay,trigger,,0.15,-1" "OnTrigger" "payloadtank,removehealth,3,0.15,-1" "spawnflags" "2" } logic_relay // Pyro Chief Beam Strike { "targetname" "pyro_beam_strike_relay" "OnTrigger" "pyro_slowdown_beam,strikeonce,,0,-1" "OnTrigger" "pyro_beam_strike_relay,trigger,,0.15,-1" "OnTrigger" "payloadtank,removehealth,3,0.15,-1" "spawnflags" "2" } logic_relay // Demo Chief Beam Strike { "targetname" "demo_beam_strike_relay" "OnTrigger" "demo_slowdown_beam,strikeonce,,0,-1" "OnTrigger" "demo_beam_strike_relay,trigger,,0.15,-1" "OnTrigger" "payloadtank,removehealth,3,0.15,-1" "spawnflags" "2" } logic_relay // Heavy Chief Slowdown Relay { "targetname" "heavy_beam_slowdown" "OnTrigger" "heavy_beam_strike_relay,trigger,,0,-1" "OnTrigger" "gimmicktuto,show,8,5,1" "OnTrigger" "payloadtank,setspeed,6,0,-1" "OnTrigger" "tf_gamerules,playvo,beamshit.mp3,0,-1" "OnTrigger" "playerrunscriptcodeScreenShake(self.GetOrigin(), 5, 5, 2, 50000, 0, true)0-1" "OnTrigger" "tf_gamerules,playvo,items\powerup_pickup_supernova.wav,0,-1" "OnTrigger" "slowdownshield,enable,,0,-1" "OnTrigger" "gascan_zone,disable,,0,-1" "spawnflags" "2" } logic_relay // Pyro Chief Slowdown Relay { "targetname" "pyro_beam_slowdown" "OnTrigger" "pyro_beam_strike_relay,trigger,,0,-1" "OnTrigger" "payloadtank,setspeed,6,0,-1" "OnTrigger" "tf_gamerules,playvo,beamshit.mp3,0,-1" "OnTrigger" "playerrunscriptcodeScreenShake(self.GetOrigin(), 5, 5, 2, 50000, 0, true)0-1" "OnTrigger" "tf_gamerules,playvo,items\powerup_pickup_supernova.wav,0,-1" "OnTrigger" "slowdownshield,enable,,0,-1" "OnTrigger" "gascan_zone,disable,,0,-1" "spawnflags" "2" } logic_relay // Demo Chief Slowdown Relay { "targetname" "demo_beam_slowdown" "OnTrigger" "demo_beam_strike_relay,trigger,,0,-1" "OnTrigger" "payloadtank,setspeed,6,0,-1" "OnTrigger" "payloadtank,setspeed,5,1,-1" "OnTrigger" "payloadtank,setspeed,4,2,-1" "OnTrigger" "payloadtank,setspeed,3,3,-1" "OnTrigger" "payloadtank,setspeed,2,4,-1" "OnTrigger" "payloadtank,setspeed,1,5,-1" "OnTrigger" "payloadtank,setspeed,0,6,-1" "OnTrigger" "tf_gamerules,playvo,beamshit.mp3,0,-1" "OnTrigger" "playerrunscriptcodeScreenShake(self.GetOrigin(), 5, 5, 2, 50000, 0, true)0-1" "OnTrigger" "tf_gamerules,playvo,items\powerup_pickup_supernova.wav,0,-1" "OnTrigger" "slowdownshield,enable,,0,-1" "OnTrigger" "gascan_zone,disable,,0,-1" "spawnflags" "2" } logic_relay // Releases the Tank from Slowdown { "targetname" "beam_slowdown_release" "OnTrigger" "payloadtank,setspeed,60,1.5,-1" "OnTrigger" "slowdownshield,disable,,1.5,-1" "OnTrigger" "slowdownshield,$setkey$renderfx,6,0,-1" "OnTrigger" "slowdownshield,$setkey$renderfx,24,2,-1" "OnTrigger" "tf_gamerules,playvo,misc\halloween\spell_spawn_boss_disappear.wav,0.5,-1" "OnTrigger" "gascan_zone,enable,,0,-1" } env_beam // Heavy Chief Beam { "targetname" "heavy_slowdown_beam" "BoltWidth" "10" "LightningStart" "beamstart" "LightningEnd" "kill_me_if_you_dare" "origin" "0 0 140" "renderamt" "200" "rendercolor" "200 200 255" "damage" "0" "NoiseAmplitude" "1" "dissolvetype" "1" "texture" "sprites/laserbeam.spr" "TouchType" "1" "life" "0.16" "spawnflags" "96" } env_beam // Pyro Chief Beam { "targetname" "pyro_slowdown_beam" "BoltWidth" "10" "LightningStart" "beamstart2" "LightningEnd" "kill_me_if_you_dare" "origin" "0 0 140" "renderamt" "200" "rendercolor" "200 200 255" "damage" "0" "NoiseAmplitude" "1" "dissolvetype" "1" "texture" "sprites/laserbeam.spr" "TouchType" "1" "life" "0.16" "spawnflags" "96" } env_beam // Demo Chief Beam { "targetname" "demo_slowdown_beam" "BoltWidth" "10" "LightningStart" "beamstart3" "LightningEnd" "kill_me_if_you_dare" "origin" "0 0 140" "renderamt" "200" "rendercolor" "200 200 255" "damage" "0" "NoiseAmplitude" "1" "dissolvetype" "1" "texture" "sprites/laserbeam.spr" "TouchType" "1" "life" "0.16" "spawnflags" "96" } // Australium Tank Fuel Sequence Logic math_counter // Tracking Gas Cans { "targetname" "gascancounter" "startvalue" "0" "min" "0" "max" "12" "OutValue" "gascancounterdisplay,InValue,,0,-1" "OutValue" "tf_gamerules,playvo,ui/killsound_beepo.wav,0,-1" "OnHitMax" "payloadtank,setspeed,200,0,1" "OnHitMax" "gascancountertext,setcolor,255 255 255 0,0,1" "OnHitMax" "gascanindicator,disable,,0,1" "OnHitMax" "spawnbot_section3_getbusier,disable,,0,1" "OnHitMax" "05_door_unlock_relay,trigger,,0.2,1" "OnHitMax" "05_door,kill,,0.2,1" "OnHitMax" "red_blocker3,kill,,0.2,1" "OnHitMax" "gascancounter,disable,,0.22,1" "OnHitMax" "payloadtank,setspeed,60,5,1" "startdisabled" "1" } logic_case // Logic for Gas Can Counter Display { "targetname" "gascancounterdisplay" "case01" "1" "case02" "2" "case03" "3" "case04" "4" "case05" "5" "case06" "6" "case07" "7" "case08" "8" "case09" "9" "case10" "10" "case11" "11" "case12" "12" "oncase01" "gascancountertext,SetText, x 11,0,-1" "oncase02" "gascancountertext,SetText, x 10,0,-1" "oncase03" "gascancountertext,SetText, x 9,0,-1" "oncase04" "gascancountertext,SetText, x 8,0,-1" "oncase05" "gascancountertext,SetText, x 7,0,-1" "oncase06" "gascancountertext,SetText, x 6,0,-1" "oncase07" "gascancountertext,SetText, x 5,0,-1" "oncase08" "gascancountertext,SetText, x 4,0,-1" "oncase09" "gascancountertext,SetText, x 3,0,-1" "oncase10" "gascancountertext,SetText, x 2,0,-1" "oncase11" "gascancountertext,SetText, x 1,0,-1" } prop_dynamic // Gas Can Indicator Entity { "targetname" "gascanindicator" "parentname" "gascanrotator" "model" "models/weapons/c_models/c_gascan/c_gascan.mdl" "origin" "0 0 200" "angles" "90 0 0" "modelscale" "1.5" "renderfx" "15" "disableshadows" "1" "startdisabled" "1" } func_rotating // Gas Can Indicator Entity { "targetname" "gascanrotator" "maxspeed" "100" "origin" "0 0 200" "spawnflags" "65" "dmg" "0" "fanfriction" "0" } point_worldtext // Gas Can Indicator Entity { "targetname" "gascancountertext" "message" " x 12" "font" "1" "textsize" "24" "color" "255 255 255 0" "orientation" "1" "origin" "0 0 170" } func_flagdetectionzone // I think this is a deprecated concept. { "targetname" "gascan_zone" "mins" "-200 -200 -60" "maxs" "200 200 60" "OnStartTouchFlag" "payloadtank,setspeed,100,0,-1" "OnStartTouchFlag" "payloadtank,setspeed,60,5,-1" "OnStartTouchFlag" "gascan_accept,Enable,,0,-1" "OnStartTouchFlag" "gascan_accept,Disable,,0.02,-1" "OnStartTouchFlag" "!activatorRunScriptCodeClientPrint(self, 4, `YOU DEPOSITED GAS, SPEED UP!`)0-1" "OnStartTouchFlag" "!activator,$PlaySoundToSelf,weapons\gas_can_inspect_movement1.wav,0,-1" "OnStartTouchFlag" "!activator,$PlaySoundToSelf,weapons\gas_can_inspect_movement1.wav,0,-1" } func_flagdetectionzone // Fuelling Sequence Capture Zone { "targetname" "gascan_zone_2" "mins" "-200 -200 -60" "maxs" "200 200 60" "startdisabled" "1" "OnStartTouchFlag" "gascan_accept,Enable,,0,-1" "OnStartTouchFlag" "gascan_accept,Disable,,0.02,-1" "OnStartTouchFlag" "!activator,$PlaySoundToSelf,weapons\gas_can_inspect_movement1.wav,0,-1" "OnStartTouchFlag" "!activator,$PlaySoundToSelf,weapons\gas_can_inspect_movement1.wav,0,-1" } func_respawnflag // Fuelling Sequence Deposit Accept { StartDisabled 1 "targetname" "gascan_accept" "mins" "-300 -200 -60" "maxs" "300 200 60" "ReturnTime" "15" } } // Heavy Chief Assets HeavyChiefBeam { OnParentKilledOutput { Target "heavy_beam_strike_relay" Action "disable" } OnParentKilledOutput { Target "beam_slowdown_release" Action Trigger } prop_dynamic { "targetname" "beamstart" "model" "models/empty.mdl" "solid" "0" "origin" "0 0 120" } } // Pyro Chief Assets PyroChiefBeam { OnParentKilledOutput { Target "pyro_beam_strike_relay" Action "disable" } OnParentKilledOutput { Target "beam_slowdown_release" Action Trigger } prop_dynamic { "targetname" "beamstart2" "model" "models/empty.mdl" "solid" "0" "origin" "0 0 100" } } // Demo Chief Assets DemoChiefBeam { OnParentKilledOutput { Target "demo_beam_strike_relay" Action "disable" } OnParentKilledOutput { Target "beam_slowdown_release" Action Trigger } prop_dynamic { "targetname" "beamstart3" "model" "models/empty.mdl" "solid" "0" "origin" "0 0 120" } } DemoChiefNukeLogic { OnSpawnOutput { Target judgement Action Trigger Delay 0.017 } OnSpawnOutput { Target "boss_about_to_blow" Action Start Delay 1 } ambient_generic { "targetname" "kablooey" "message" "items\cart_explode_trigger.wav" "health" "10" "pitch" "100" "spawnflags" "17" } ambient_generic { "targetname" "kablooey_2" "message" "items\bomb_warning.wav" "health" "10" "pitch" "100" "spawnflags" "17" } logic_relay { "targetname" "judgement" "OnTrigger" "kablooey,PlaySound,,0.5,1" "OnTrigger" "kablooey,StopSound,,1.49,1" "OnTrigger" "kablooey,PlaySound,,1.5,1" "OnTrigger" "kablooey,StopSound,,2.49,1" "OnTrigger" "kablooey,PlaySound,,2.5,1" "OnTrigger" "kablooey,StopSound,,3.49,1" "OnTrigger" "kablooey,PlaySound,,3.5,1" "OnTrigger" "kablooey,StopSound,,5.49,1" "OnTrigger" "kablooey_2,PlaySound,,5.3,1" } info_particle_system { "targetname" "boss_about_to_blow" "origin" "0 0 0" "angles" "-90 0 0" "effect_name" "charge_up" } tf_glow { "GlowColor" "0 255 255 155" "target" "!parent" "startdisabled" "0" } obj_sentrygun //obj_teleporter { "targetname" "nuker_hitbox" "origin" "0 0 0" "angles" "0 0 0" "solid" "6" "modelscale" "2.8" "DisableShadows" "1" "TeamNum" "3" "health" "1500" "defaultupgrade" "2" "rendermode" "10" //10 "renderamt" "0" //0 "SolidToPlayer" "0" "damagefilter" "filter_red" "OnDamaged" "player,$DisplayTextCenter,$$=test(!caller.m_iHealth>1,'Nuke HP: '..string(max(!caller.m_iHealth, 0)),''),0,-1" "OnDamaged" "!parentRunScriptCodetry{if(caller.GetHealth()<1){self.Kill()}}catch(e){}0-1" } OnSpawnOutput { Target "!parent" "action" "$SetProp$m_CollisionGroup" "param" "1" "delay" "0.1" } trigger_multiple { "targetname" "excusemesir" "origin" "0 0 0" "mins" "-80 -80 -80" "maxs" "80 80 80" "spawnflags" "1" "filtername" "filter_red" "OnStartTouch" "!activatorRunScriptCodeself.ApplyAbsVelocityImpulse(Vector(0,0,1000))0.2-1" "OnStartTouch" "nuker_hitbox,$SetProp$m_CollisionGroup,1,0,-1" "OnEndTouchAll" "nuker_hitbox,$SetProp$m_CollisionGroup,0,0.2,-1" "wait" "0.1" "StartDisabled" "0" } OnSpawnOutput { "target" "nuker_hitbox" "action" "$SetModelOverride" "param" "models\weapons\w_models\w_stickybomb.mdl" "delay" "0.1" } OnSpawnOutput { "target" "excusemesir" "action" "disable" "delay" "0.9" } OnSpawnOutput { "target" "nuker_hitbox" "action" "disable" "delay" "0.2" } OnSpawnOutput { "target" "nuker_hitbox" "action" "SetHealth" "param" "1000" "delay" "0.2" } OnSpawnOutput { "target" "nuker_hitbox" "action" "$SetCollisionFilter" "param" "filter_red" "delay" "0.1" } OnSpawnOutput { Target "nuker_hitbox" Action "AddOutput" Param "$OnDestroyed !parent:kill:0:0:-1,0,-1" Delay 0.3 } prop_dynamic { "model" "models/props_gameplay/cap_circle_768.mdl" "targetname" "nuke_range" "solid" "0" "skin" "2" "origin" "0 0 50" "angles" "0 0 0" "StartDisabled" 0 "modelscale" 2 "disableshadows" 1 "$positiononly" 1 "$modules" "fakeparent" "parentname" "" "$fakeparentoffset" "0 0 50" } OnSpawnOutput { Target "nuke_range" Action "$SetFakeParent" Param "nuker_hitbox" } OnSpawnOutput { Target "nuke_range" Action "$SetLocalAngles" Param "0 0 0" delay 0.2 } OnParentKilledOutput { Target "nuke_range" Action "kill" } tf_glow { "GlowColor" "0 255 255 155" "target" "nuke_range" "startdisabled" "0" } } // For Australium Tank Fuelling Sequence AustraliumTankShortcut // Teleporter { logic_relay // Sets up the Teleporter { "targetname" "australium_tank_shortcut" "OnTrigger" "tele_prop_red,SetAnimation,running,0.5,-1" "OnTrigger" "tele_trigger_red,Enable,,0.55,-1" "OnTrigger" "tele_effects_red,Start,,0.52,-1" "OnTrigger" "tele_trigger_red_info,Enable,,0,-1" } trigger_once // Trigger for Indicator Annotation { "targetname" "tele_trigger_red_info" "target" "teleport_04" "mins" "-256 -256 -256" "maxs" "256 256 256" "origin" "-2437 7007 688" "OnTrigger" "teleporter_notice,show,,0,-1" "OnTrigger" "teleporter_notice,kill,,5,-1" "OnTrigger" "!self,kill,,6,-1" "spawnflags" "1" "filtername" "filter_red" "StartDisabled" "1" } training_annotation // Teleporter Indicator Annotation { "targetname" "teleporter_notice" "display_text" "This teleporter will take you closer to your objective!" "lifetime" "5" "origin" "-2437 7007 698" } trigger_teleport // Teleporter Logic { "targetname" "tele_trigger_red" "target" "teleport_04" "mins" "-32 -32 -8" "maxs" "32 32 8" "origin" "-2437 7007 688" "OnStartTouch" "!activator,$AddCond,57 2,0,-1" "OnStartTouch" "!activator,$PlaySoundToSelf,MVM.Robot_Teleporter_Deliver,0,-1" "OnStartTouch" "!activator,speakresponseconcept,TLK_PLAYER_GOODJOB,0.66,-1" "spawnflags" "1" "filtername" "filter_red" "StartDisabled" "1" } info_teleport_destination // Teleporter Exit Position { "targetname" "teleport_04" "origin" "-3694 3778 618" "angles" "0 -150 0" } prop_dynamic // Teleporter Entrance Prop { "targetname" "tele_prop_red" "disableshadows" "1" "DisableBoneFollowers" "1" "angles" "0 40 0" "origin" "-2437 7007 688" "DefaultAnim" "ref" "model" "models/buildables/teleporter_light.mdl" "skin" "0" "solid" "0" } prop_dynamic // Teleporter Exit Prop { "targetname" "tele_prop_red" "disableshadows" "1" "DisableBoneFollowers" "1" "angles" "0 -150 0" "origin" "-3694 3778 608" "DefaultAnim" "ref" "model" "models/buildables/teleporter_light.mdl" "skin" "0" "solid" "0" } func_nobuild // Teleporter Entrance Nobuild Entity { "targetname" "tele_noplacement" "TeamNum" "2" "mins" "-128 -128 -64" "maxs" "128 128 64" "origin" "-2437 7007 688" "AllowDispenser" "0" "AllowSentry" "0" "AllowTeleporters" "0" } func_nobuild // Teleporter Exit Nobuild Entity { "targetname" "tele_noplacement" "TeamNum" "2" "mins" "-64 -64 -64" "maxs" "64 64 64" "origin" "-3694 3778 608" "AllowDispenser" "0" "AllowSentry" "0" "AllowTeleporters" "0" } info_particle_system // Teleporter Entrance Active Particles { "targetname" "tele_effects_red" "effect_name" "teleporter_red_charged_level3" "flag_as_weather" "0" "start_active" "0" "origin" "-2437 7007 688" } info_particle_system // Teleporter Entrance Active Particles { "targetname" "tele_effects_red" "effect_name" "teleporter_red_entrance_disc" "flag_as_weather" "0" "start_active" "0" "origin" "-2437 7007 688" } info_particle_system // Teleporter Exit Active Particles { "targetname" "tele_effects_red" "effect_name" "teleporter_red_charged_level3" "flag_as_weather" "0" "start_active" "0" "origin" "-3694 3778 608" } info_particle_system // Teleporter Exit Active Particles { "targetname" "tele_effects_red" "effect_name" "teleporter_red_entrance_disc" "flag_as_weather" "0" "start_active" "0" "origin" "-3694 3778 608" } } BotGasCanCarrierProp { KeepAlive 1 item_teamflag { "targetname" "gascanflag" "TeamNum" "2" "StartDisabled" "1" "flag_model" "models/weapons/c_models/c_gascan/c_gascan.mdl" "origin" "0 0 15" "OnReturn" "!self,Kill,,0.017,1" "OnReturn" "player,$DisplayTextChat,n1,0.007,1" "OnReturn" "gascancounter,add,1,0,1" "OnPickup1" "!activatorRunScriptCodeClientPrint(self, 4, `YOU PICKED UP A GAS CAN!`)01" "OnPickup1" "!activator,$PlaySoundToSelf,ui\item_bag_pickup.wav,0,1" } tf_glow { "GlowColor" "0 176 199 255" "target" "gascanflag" "targetname" "flag_glow" "startdisabled" "1" } OnParentKilledOutput { Target flag_glow Action Enable } OnParentKilledOutput { Target gascanflag Action Enable } OnParentKilledOutput { Target gascanflag Action SetTeam Param 3 } } //// ROCKET FUEL HOLDOUT WAVE (WAVE 7) //// // Setting up Act 4's Second Wave Wave7Assets { // Ragdoll Remover logic_timer { "targetname" "ragdollremover" "RefireTime" "3" "OnTimer" "tf_ragdoll*,kill,,0,-1" } // Timer Setup OnSpawnOutput { Target bignet Action RunScriptCode Param " IncludeScript(`textualtimer_v3`, getroottable()) TextualTimer.SetParams({ minutes = 7 seconds = 30 x = -1 y = 0.77 color = `0 255 555` relayname = `red_lose_relay` text_prepend = `ROCKET FUELING: ` automatic = true }) " } // Warning Indicator env_fade // Blinking Red Warning { "targetname" "panic_fade" "angles" "0 0 0" "duration" "0.30" "holdtime" "0.250" "renderamt" "20" "rendercolor" "255 0 0" "spawnflags" "9" } logic_relay // Blinking Red Warning { "targetname" "panic_subwave_incoming" "OnTrigger" "tf_gamerules,PlayVO,ambient\alarms\klaxon1.wav,0.05,-1" "OnTrigger" "tf_gamerules,PlayVO,ambient\alarms\klaxon1.wav,0.75,-1" "OnTrigger" "tf_gamerules,PlayVO,ambient\alarms\klaxon1.wav,1.45,-1" "OnTrigger" "tf_gamerules,PlayVO,ambient\alarms\klaxon1.wav,2.15,-1" "OnTrigger" "tf_gamerules,PlayVO,mvm\mvm_warning.wav,0,-1" "OnTrigger" "tf_gamerules,PlayVO,mvm\mvm_warning.wav,0,-1" "OnTrigger" "panic_fade,fade,,0.05" "OnTrigger" "panic_fade,fade,,0.75" "OnTrigger" "panic_fade,fade,,1.45" "OnTrigger" "panic_fade,fade,,2.15" } logic_relay // Paradrop Spawn-in Warning { "targetname" "airdropspawn_alert" "OnTrigger" "tf_gamerules,playvo,rescue.wav,0,-1" "OnTrigger" "tf_gamerules,playvo,rescue.wav,0.1,-1" "OnTrigger" "tf_gamerules,playvo,rescue.wav,0.2,-1" "OnTrigger" "tf_gamerules,playvo,rescue.wav,0.3,-1" "OnTrigger" "tf_gamerules,playvo,rescue.wav,0.4,-1" "OnTrigger" "tf_gamerules,playvo,rescue.wav,0.5,-1" "OnTrigger" "tf_gamerules,playvo,rescue.wav,0.6,-1" "OnTrigger" "tf_gamerules,playvo,rescue.wav,0.7,-1" "OnTrigger" "tf_gamerules,playvo,rescue.wav,0.8,-1" "OnTrigger" "tf_gamerules,playvo,rescue.wav,0.9,-1" "OnTrigger" "tf_gamerules,playvo,rescue.wav,1,-1" "OnTrigger" "breakable_window_1,break,,0,-1" "OnTrigger" "playerrunscriptcodeScreenShake(self.GetOrigin(), 5, 8, 2, 50000, 0, true)0-1" } } Wave7Setup { // Disabling Shadows OnSpawnOutput { Target lift_* Action $setkey$disableshadows Param 1 Delay 0.1 } OnSpawnOutput { Target carrier_* Action $setkey$disableshadows Param 1 Delay 0.1 } } // Drill Tank Assets DrillTankAssets { NoFixUp 1 info_target // Used to Direct Engineer Bots { "targetname" "repair_here" "origin" "0 0 0" } logic_relay // Not sure what this is rn { "targetname" "tank_drill" "onspawn" "!parent,addoutput,onuser4 @c@!self:fireuser1::0:-1,0,-1" } trigger_brush // The brush? { "targetname" "drill_trap" "origin" "182 0 86" "mins" "0 -25 -50" "maxs" "50 25 30" "onuser1" "!self,disable,,0,-1" } trigger_multiple // Drill Damage Trigger { "targetname" "drill_hurt" "origin" "182 0 86" "mins" "-50 -40 -50" "maxs" "50 40 50" "spawnflags" "1" "ontrigger" "driller,SetSpeed,25,0,-1" "ontrigger" "!activator,bleedplayer,1,0,-1" "ontrigger" "!activator,$takedamage,25,0,-1" "ontrigger" "!activator,$takedamage,25,0.25,-1" "ontrigger" "!activator,$takedamage,25,0.50,-1" "ontrigger" "!activator,$takedamage,25,0.75,-1" "ontrigger" "drill,Pitch,100,0,-1" "ontrigger" "drill2,Pitch,100,0.25,-1" "ontrigger" "drill3,Pitch,100,0.50,-1" "ontrigger" "drill4,Pitch,100,0.75,-1" "onendtouch" "driller,SetSpeed,75,0,-1" "wait" "0.1" "onuser1" "!self,disable,,0,-1" } ambient_generic // Drill Damage Sound { "targetname" "drill" "message" "ambient\grinder\grinderbot_01.wav" "health" "10" "pitch" "100" "pitchstart" "100" "radius" "5000" "spawnflags" "17" "sourceentityname" "!parent" "onuser1" "!self,stopsound,,0,-1" } ambient_generic // Drill Damage Sound { "targetname" "drill2" "message" "ambient\grinder\grinderbot_02.wav" "health" "10" "pitch" "100" "pitchstart" "100" "radius" "5000" "spawnflags" "17" "sourceentityname" "!parent" "onuser1" "!self,stopsound,,0,-1" } ambient_generic // Drill Damage Sound { "targetname" "drill3" "message" "ambient\grinder\grinderbot_03.wav" "health" "10" "pitch" "100" "pitchstart" "100" "radius" "5000" "spawnflags" "17" "sourceentityname" "!parent" "onuser1" "!self,stopsound,,0,-1" } ambient_generic // Drill Damage Sound { "targetname" "drill4" "message" "mvm\physics\robo_impact_hard_05.wav" "health" "10" "pitch" "100" "pitchstart" "100" "radius" "5000" "spawnflags" "17" "sourceentityname" "!parent" "onuser1" "!self,stopsound,,0,-1" } ambient_generic // Drill Damage Sound { "targetname" "drill_sound" "message" "ambient/sawblade.wav" "health" "10" "pitch" "60" "pitchstart" "60" "radius" "5000" "sourceentityname" "!parent" "onuser1" "!self,stopsound,,0,-1" } ambient_generic // Drill Damage Sound { "targetname" "drill_sound" "message" "ambient/sawblade.wav" "health" "10" "pitch" "60" "pitchstart" "60" "radius" "5000" "sourceentityname" "!parent" "onuser1" "!self,stopsound,,0,-1" } } // For Unstable Giants UnstableCharge { OnSpawnOutput // Possibly to give them Cosmetics? { Target popscript Action "$unstablesetup" } OnParentKilledOutput // Sets off Relay when Giant is Killed { Target unstableexplosion Action Trigger } KeepAlive 1 logic_relay // Explosion Relay { "targetname" "unstableexplosion" "OnTrigger" "blastzone,Enable,,0,-1" "OnTrigger" "bigblast,start,,0,-1" "OnTrigger" "shake,StartShake,,0,-1" "OnTrigger" "shake,Kill,,2,-1" "OnTrigger" "blastzone,Kill,,4,-1" "OnTrigger" "bigblast,Kill,,4,-1" "OnTrigger" "!self,Kill,,5,-1" } trigger_ignite // Damage Zone { "targetname" "blastzone" "origin" "0 0 0" "angles" "0 0 0" "mins" "-270 -270 -120" "maxs" "270 270 600" "spawnflags" "1" "burn_duration" "7" "damage_percent_per_second" "25" "filtername" "redteam" "StartDisabled" "1" } KeepAlive 1 filter_activator_tfteam // Only Damages Red { "targetname" "redteam" "teamnum" "2" } KeepAlive 1 info_particle_system // Explosion FX { "targetname" "bigblast" "origin" "0 0 90" "angles" "0 0 0" "effect_name" "cinefx_goldrush" } KeepAlive 1 env_shake // Explosion Shake { "targetname" "shake" "amplitude" "7" "duration" "1.5" "frequency" "255" "radius" "300" "spawnflags" "4" } } // For Napalm Pyro NapalmPyroProjectileAsset { KeepAlive 1 info_target // Tracks Position of the Projectile { "targetname" "location" } OnParentKilledOutput // Spawns AoE Fire at its Position { Target NapalmPyroAoEFire Action ForceSpawnAtEntityOrigin Param location } OnParentKilledOutput // Kills the Tracker after the AoE Flame Spawns { Target location Action Kill Delay 1 } } NapalmPyroAoEFire { RemoveIfKilled "firetrigger" // To make the AoE Fire Expire trigger_hurt // Fire Damage Area { "targetname" "firetrigger" "mins" "-60 -60 -60" "maxs" "60 60 60" "damagetype" "8" "damage" "40" "startdisabled" "1" "spawnflags" "64" "onhurtplayer" "!activator,$igniteplayerduration,5,0,-1" "$killicon" "firedeath" "filtername" "filter_red" } info_particle_system // Fire Particle { "targetname" "fireparticle" "effect_name" "lava_fireball_01" "start_active" "1" } OnSpawnOutput // Activates Damage Area { Target firetrigger Action Enable Delay 0.03 } OnSpawnOutput // Fire Sparking Sound { Target firetrigger Action $playsound Param "=90|ambient/fire/mtov_flame2.wav" Delay 0.015 } OnSpawnOutput // Kills the AoE Fire { Target firetrigger Action Kill Delay 4 } } // Lose Condition Assets game_round_win // Red Lose Condition { "TeamNum" "3" "targetname" "red_loses" "switch_teams" "0" "force_map_reset" "1" "classname" "game_round_win" } logic_relay // Red Lose Relay { "targetname" "red_lose_relay" "OnTrigger" "red_loses,RoundWin,,0,-1" } // Music Assets Wave7MusicLoop { logic_relay { "OnSpawn" "player,$DisplayTextChat,{yellow}[ Now Playing: {6383ff} T-Minus - OrangeGlazer {yellow}],5,-1" "OnSpawn" "musicloop4-2,trigger,,0,-1" } ambient_generic { "targetname" "wave2spybasing" "message" "t-minus.mp3" "health" "10" "pitch" "100" "spawnflags" "17" } ambient_generic { "targetname" "wave2spybasing" "message" "t-minus.mp3" "health" "10" "pitch" "100" "spawnflags" "17" } logic_relay { "targetname" "musicloop4-2" "OnTrigger" "wave2spybasing,PlaySound,,0,-1" "OnTrigger" "wave2spybasing,StopSound,,450,-1" "OnTrigger" "musicloop4-2,trigger,,450.05,-1" "spawnflags" "2" } } } //// ROBOT TEMPLATES //// Templates { UnstableCharge // Unstable Charge Template { SpawnTemplate UnstableCharge Item "Wavefinder" FireInput { Target "!self" Action "IgnitePlayer" Repeats 9999 Delay 1 Cooldown 1 } AddCond { Index 70 } FireInput { IfHealthBelow 2 Delay 2 Target !self Action $suicide } FireInput { IfHealthBelow 2 Delay 1.3 Target !self Action $PlaySound Param "items\cart_explode_trigger.wav" } CharacterAttributes { "attach particle effect" 236 "voice pitch scale" 1.45 } VoiceCommand { Delay 3 Cooldown 3 Type "Help" } } T_TFBot_Heavy_PatrolChief { Template T_TFBot_Giant_Heavyweapons Name "Heavy Patrol Chief" ClassIcon heavy_head_nys Skill Normal Scale 1.9 Health 40000 Attributes UseBossHealthBar UseCustomModel "models/bots/heavy_boss/bot_heavy_boss_gibby.mdl" Action Mobber Item "Lo-Fi Longwave" SpawnTemplate HeavyChiefBeam CharacterAttributes { "never gib" 1 } ItemAttributes { ItemName "TF_WEAPON_MINIGUN" "mod minigun can holster while spinning" 1 } // Beam Strike Sequence FireInput // Teleports to the Gate { Target !self Action $teleporttoentity Param "gothere" Delay -1 Repeats 1 } InterruptAction // Walks to the Tank { Delay 3 Target "payloadtank" Duration 12 Repeats 1 } InterruptAction // Looks at the Tank { Delay 13.75 AimTarget "payloadtank" Duration 2 Repeats 1 } Taunt // Beam Blast { Delay 15 Cooldown 1 Repeats 1 Duration 1 Name "Taunt: Burstchester" } FireInput // Beam Blast { Target "!self" Action "$PlaySequence" Param "taunt_burstchester_heavy" Delay 15 Cooldown 9999 } FireInput // Beam Blast { Target "heavy_beam_slowdown" Action "Trigger" Delay 15 Repeats 1 Cooldown 9999 } // Heavy Chief Phases EventChangeAttributes { BackToMini { Skill Hard WeaponRestrictions PrimaryOnly ExtAttr IgnoreNPC // does not target tank } Shotgun { Skill Expert WeaponRestrictions SecondaryOnly ItemAttributes { ItemName "TF_WEAPON_SHOTGUN_HWG" "fire rate bonus" 0.15 "damage bonus" 1.65 "faster reload rate" 0.55 "clip size bonus" 1.5 "auto fires when full" 1 "auto fires full clip" 1 } ExtAttr IgnoreNPC // does not target tank } } ChangeAttributes { Delay 0 Repeats 1 IfHealthBelow 26501 Name "Shotgun" } ChangeAttributes { Delay 0 Repeats 1 IfHealthBelow 14001 Name "BackToMini" } } T_TFBot_Pyro_PatrolChief { Class Pyro Name "Pyro Patrol Chief" ClassIcon pyro_degreaser_flare Skill Expert Scale 1.9 Health 30000 Attributes MiniBoss Attributes UseBossHealthBar ExtAttr IgnoreNPC UseMeleeThreatPrioritization 1 UseCustomModel "models/bots/pyro_boss/bot_pyro_boss_gibby.mdl" Action Mobber Item "The Degreaser" Item "The Detonator" Item "The Axtinguisher" Item "Lo-Fi Longwave" SpawnTemplate PyroChiefBeam CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.1 "airblast vulnerability multiplier" 0.1 "override footstep sound set" 6 "melee range multiplier" 2 "never gib" 1 } ItemAttributes // Degreaser { ItemName "The Degreaser" "weapon burn dmg increased" 2 "flame_drag" 4 "max_flame_reflection_count" 1000 "flame_reflect_on_collision" 1000 "flame_spread_degree" 5 "flame_up_speed" -25 } ItemAttributes // Detonator { ItemName "The Detonator" "fire rate penalty" 1.56 "Reload time decreased" 0.2 "Projectile speed increased" 0.5 "dmg pierces resists absorbs" 1 "projectile spread angle penalty" 4 "mult projectile count" 8 "paintkit_proto_def_index" 402 "set_item_texture_wear" 0 "damage penalty" 0.4 "ignores other projectiles" 1 } ItemAttributes // Axtinguisher { ItemName "The Axtinguisher" "provide on active" 1 "gesture speed increase" 1.5 "fire rate bonus" 0.9 "damage bonus" 1.33 "crit vs burning players" 1 } // Beam Strike Sequence InterruptAction // Looks at the Tank { Delay 7.75 AimTarget "payloadtank" Duration 2 Repeats 1 } FireInput // Beam Blast { Target "!self" Action "$PlaySequence" Param "taunt_burstchester_pyro" Delay 9 Cooldown 9999 } Taunt { Delay 9 Cooldown 1 Repeats 1 Duration 1 Name "Taunt: Burstchester" } FireInput // Beam Blast { Target "pyro_beam_slowdown" Action "Trigger" Delay 9 Cooldown 9999 } // Pyro Chief Phases EventChangeAttributes { GasPanic { WeaponRestrictions SecondaryOnly Item "The Gas Passer" ItemAttributes { ItemName "The Gas Passer" explode_on_ignite 1 "dmg penalty vs players" 0.25 "fire rate penalty" 1.2 "item_meter_charge_rate" 1 "projectile spread angle penalty" 6 "projectile speed increased" 2 } } DragonsFury { WeaponRestrictions PrimaryOnly MaxVisionRange 1000 Item "The Dragon's Fury" ItemAttributes { ItemName "The Gas Passer" "damage bonus" 2 "speed_boost_on_kill" 3 } } DragonsFury_Burst { WeaponRestrictions PrimaryOnly MaxVisionRange 1000 Item "The Dragon's Fury" Item "TF_WEAPON_SHOTGUN_PYRO" // replace detonator ItemAttributes { ItemName "The Dragon's Fury" "item_meter_charge_rate" 0.125 "fire rate bonus" 0.1 "reload time increased" 2 "damage bonus" 1.5 } ItemAttributes { ItemName "TF_WEAPON_SHOTGUN_PYRO" "faster reload rate" 0.25 "fire rate bonus" 0.15 "is_passive_weapon" 1 "auto fires full clip" 1 "auto fires when full" 1 "override projectile type" 27 } } } WeaponSwitch { Type "Secondary" MaxTargetRange 9999 MinTargetRange 251 Delay 0 Repeats 0 Cooldown 0.1 IfSeeTarget 1 IfHealthAbove 23000 } WeaponSwitch { Type "Secondary" MaxTargetRange 9999 MinTargetRange 651 Delay 0 Repeats 0 Cooldown 0.1 IfSeeTarget 1 IfHealthBelow 23000 IfHealthAbove 14500 } WeaponSwitch { Type "Primary" MaxTargetRange 650 MinTargetRange 251 Delay 0 Repeats 0 Cooldown 0.1 IfSeeTarget 1 IfHealthBelow 23000 IfHealthAbove 14500 } WeaponSwitch { Type "Melee" MaxTargetRange 250 MinTargetRange 1 Delay 0.1 Repeats 0 Cooldown 0 IfSeeTarget 1 IfHealthAbove 14500 } ChangeAttributes { Delay 0 Repeats 1 IfHealthBelow 14501 Name "GasPanic" } ChangeAttributes { Delay 0 Repeats 1 IfHealthBelow 12001 Name "DragonsFury" } ChangeAttributes { Delay 0 Repeats 1 IfHealthBelow 7001 Name "DragonsFury_Burst" } } T_TFBot_Demo_PatrolChief { Class Demoman Name "Demoman Patrol Chief" ClassIcon demo_robot_nys Skill Hard Scale 1.9 Health 33000 Attributes MiniBoss Attributes UseBossHealthBar Attributes DisableDodge UseCustomModel "models\bots\demo_boss\bot_demo_boss_gibby.mdl" Action Mobber Item "Upgradeable TF_WEAPON_GRENADELAUNCHER" Item "Lo-Fi Longwave" SpawnTemplate DemoChiefBeam CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.5 "airblast vulnerability multiplier" 0.5 "override footstep sound set" 4 "cancel falling damage" 1 "never gib" 1 } ItemAttributes { ItemName "Upgradeable TF_WEAPON_GRENADELAUNCHER" "clip size upgrade atomic" 26.0 "faster reload rate" 0 "fire rate bonus" 0.29975 "projectile spread angle penalty" 5 "fuse bonus" 0.75 "damage bonus" 1.5 } // Beam Strike Sequence InterruptAction // Looks at the Tank { Delay 7.75 AimTarget "payloadtank" Duration 2 Repeats 1 } Taunt // Beam Blast { Delay 9 Cooldown 1 Repeats 1 Duration 1 Name "Taunt: Burstchester" } FireInput // Beam Blast { Target "demo_beam_slowdown" Action "Trigger" Delay 9 Cooldown 9999 } // Demo Chief Phases EventChangeAttributes { Nuker { Skill Normal WeaponRestrictions SecondaryOnly Item "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" ExtAttr IgnoreNPC ItemAttributes { ItemName "Upgradeable TF_WEAPON_GRENADELAUNCHER" "fire rate bonus" 999999 "override projectile type" 27 "ItemNameis_passive_weapon" 1 } ItemAttributes { ItemName "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" "provide on active" 1 "paintkit_proto_def_index" 217 "set_item_texture_wear" 0.2 "faster reload rate" 0.1 "damage bonus" 10 "blast radius increased" 5 "fire rate bonus" 7 "sticky arm time penalty" 4.6 "hand scale" 2.25 "explosion particle" "fireSmokeExplosion" "projectile no deflect" 1 "damage causes airblast" 1 "airblast pushback scale" 5 "no self blast dmg" 1 "mult projectile scale" 3 "use large smoke explosion" 1 "max pipebombs decreased" -7 "projectile detonate time" 6 "projectile range increased" 0.55 "custom kill icon" "megaton" "custom weapon fire sound" MVM.GiantDemoman_Grenadeshoot } ShootTemplate { Name DemoChiefNukeLogic AttachToProjectile 1 ItemName "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" } } PillSpread { Skill Hard Item "Upgradeable TF_WEAPON_GRENADELAUNCHER" Attributes HoldFireUntilFullReload ItemAttributes { ItemName "Upgradeable TF_WEAPON_GRENADELAUNCHER" "fire rate bonus" 0.15 "is_passive_weapon" 1 "clip size upgrade atomic" 16 "fuse bonus" 2.5 "damage bonus" 1.8 "faster reload rate" 0.225 "Blast radius increased" 1.25 "grenade bounce speed" 0.95 "spread angle pattern" "0 0 0|0 30 0|0 60 0|0 90 0|0 120 0|0 90 0|0 60 0|0 30 0|0 0 0|0 -30 0|0 -60 0|0 -90 0|0 -120 0|0 -90 0|0 -60 0|0 -30 0|0 0 0" "shoot pattern reset time" 0.1 } } PillSpam { Skill Expert Item "Upgradeable TF_WEAPON_GRENADELAUNCHER" ItemAttributes { ItemName "Upgradeable TF_WEAPON_GRENADELAUNCHER" "clip size upgrade atomic" 26.0 "faster reload rate" 0 "fire rate bonus" 0.2 "projectile spread angle penalty" 5 "fuse bonus" 0.75 "damage bonus" 1.5 } } Rage { Skill Expert WeaponRestrictions MeleeOnly Item "Upgradeable TF_WEAPON_FISTS" Item "The Splendid Screen" ItemAttributes { ItemName "Upgradeable TF_WEAPON_FISTS" "fire rate bonus" 0.6 "damage bonus" 3 "gesture speed increase" 2.5 "custom kill icon" "hale_punch" "weapon always gib" 1 "mult dmg vs tanks" 0.675 } ItemAttributes { ItemName "The Splendid Screen" "Attack not cancel charge" 1 "custom item model" "models/empty.mdl" "charge impact damage increased" 10 "dmg taken from fire reduced" 1 "dmg taken from blast reduced" 1 "custom kill icon" "hale_charge" "weapon always gib" 1 } WeaponSwitch { Delay 0 Type "Melee" Repeats 5 CoolDown 0.25 Duration 0.1 } CharacterAttributes { "move speed bonus" 0.75 } } } ChangeAttributes { Delay 15 Repeats 1 Name "Nuker" } ChangeAttributes { Delay 0 Repeats 1 IfHealthBelow 26501 Name "PillSpread" } ChangeAttributes { Delay 0 Repeats 1 IfHealthBelow 14001 Name "Nuker" } ChangeAttributes { Delay 0 Repeats 1 IfHealthBelow 11001 Name "PillSpam" } Taunt { Delay 0 Repeats 1 IfHealthBelow 7001 Name "Taunt: Unleashed Rage" Duration 1 } AddCond { Index 52 Delay 0 IfHealthBelow 7001 Duration 5.5 } ChangeAttributes { Delay 5.5 Repeats 1 IfHealthBelow 7001 Name "Rage" } } } //// MISSION SUPPORT //// Mission // Sentry Busters during Rocket Holdout Wave { Objective DestroySentries Where spawnbot BeginAtWave 2 RunForThisManyWaves 1 InitialCooldown 30 CooldownTime 50 DesiredCount 1 TFBot { Template T_TFBot_SentryBuster } } Mission // Engineers during Rocket Holdout Wave { Objective Engineer Where spawnbot BeginAtWave 2 RunForThisManyWaves 1 InitialCooldown 25 CooldownTime 22 DesiredCount 1 TFBot { Template T_TFBot_Engineer_Sentry_Teleporter Health 275 } } //// MISSION INIT OUTPUTS //// // Gib Remover MissionUnloadOutput { Target "wave_start_relay" Action "runscriptcode" Param "Convars.SetValue(`tf_playergib`, 1)" Delay -1 } Wave { CustomWaveNumber 6 CustomMaxWaveNumber 7 Checkpoint Yes InitWaveOutput { Target wave_start_relay Action runscriptcode Param " EntFire(`Wave6Assets`, `ForceSpawn`) EntFire(`Wave6Setup`, `ForceSpawn`) EntFire(`Wave6SetupRelay`, `Trigger`) IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/combattank`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/minigun`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/rocketpod`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/fireball`, getroottable()) IncludeScript(`claudz_logic_v3`) EntFire(`lift_door_right`,`lock`) EntFire(`lift_door_left`,`lock`) EntFire(`AustraliumTankShortcut`,`ForceSpawn`) EntFire(`bombpath_clearall_relay`, `Trigger`) EntFire(`tank_lift_lowered`, `Enable`) Convars.SetValue(`tf_playergib`, 0) " } StartWaveOutput { Target wave_start_relay Action runscriptcode Param " EntFire(`prop_engitank_waiting*`, `Kill`) EntFire(`red_blocker`, `Kill`) EntFire(`red_blocker2`, `Kill`, ``, 22) EntFire(`lift_door_right`,`unlock`) EntFire(`lift_door_left`,`unlock`) EntFire(`lift_door_right`,`open`) EntFire(`lift_door_left`,`open`) EntFire(`carrier_door_front`, `SetAnimation`, `door_open`, 28) // adding this here and not to the main logic just because it is temporary EntFire(`carrier_door_front`, `SetAnimation`, `open`, 34.67) EntFire(`tf_point_nav_interface`, `RecomputeBlockers`, ``, 34.68) " } DoneOutput { Target wave_finished_relay Action Trigger } SpawnTemplate AustraliumTankShortcut // Australium Tank Payload WaveSpawn { Name "Wave6_AustraliumPayload" TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 Tank { Name payloadtank Health 38000 Speed 75 Scale 1 ClassIcon payload_vip MaxTurnRate 40 Model {Default "models/robot_factory/australium_tank.mdl" Destruction "models/empty.mdl"} PingSound "misc/null.wav" DisableBomb 1 StartingPathTrackNode tank_path_australium_1 TeamNum 2 SpawnTemplate AustraliumTankLogic OnKilledOutput { Target redlose_relay Action Trigger } OnBombDroppedOutput { Target redwin_relay Action Trigger } } } // Heavy Patrol Chief Subwave WaveSpawn // Heavy Patrol Chief { Name "Wave6_Subwave1_HeavyPatrolChief" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 25 WaitBetweenSpawns 0 TotalCurrency 50 FirstSpawnWarningSound "mvm/giant_heavy/giant_heavy_entrance.wav" TFBot { Template T_TFBot_Heavy_PatrolChief } } WaveSpawn // 6 Rapid Fire Demomen { Name "Wave6_Subwave1_RapidDemos" Where spawnbot_left TotalCount 6 MaxActive 6 SpawnCount 1 WaitBeforeStarting 34 WaitBetweenSpawns 5 TotalCurrency 26 TFBot { Class Demoman Scale 1.3 Health 650 ClassIcon demo_spammer Name "Rapid Fire Demoman" Skill Normal Item "Upgradeable TF_WEAPON_GRENADELAUNCHER" Item "Blast Defense" Item "The Juggernaut Jacket" ItemAttributes { ItemName "Upgradeable TF_WEAPON_GRENADELAUNCHER" "faster reload rate" -1 "fire rate bonus" 0.75 } CharacterAttributes { "never gib" 1 } ExtAttr IgnoreNPC // does not target tank Action Mobber } } WaveSpawn // 20 Crit Punchies { Name "Wave6_Subwave1_CritPunchies" Where spawnbot TotalCount 20 MaxActive 15 SpawnCount 1 WaitBeforeStarting 31 WaitBetweenSpawns 1.6 TotalCurrency 24 TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ Skill Hard Attributes AlwaysCrit Action Mobber InterruptAction // make him walk up to the tank { Delay 2 Target "payloadtank" Duration 10 Cooldown 15 Repeats 2 } CharacterAttributes { "mult dmg vs tanks" 0.42 // make their tank damage less brutal "never gib" 1 } } } WaveSpawn // Checking for Subwave 1 Clear { Name "Subwave1_Clear" WaitForAllDead "Wave6_Subwave1_HeavyPatrolChief" } WaveSpawn // Checking for Subwave 1 Clear { Name "Subwave1_Clear" WaitForAllDead "Wave6_Subwave1_RapidDemos" } WaveSpawn // Checking for Subwave 1 Clear { Name "Subwave1_Clear" WaitForAllDead "Wave6_Subwave1_CritPunchies" } WaveSpawn // Setting Red Respawn Relays { Name "red_relay_full" FirstSpawnOutput { Target fullyclaim_redspawn Action trigger } WaitForAllSpawned "Subwave1_Clear" } // Pyro Patrol Chief Subwave WaveSpawn // Pyro Patrol Chief { Name "Wave6_Subwave2_PyroPatrolChief" Where spawnbot_side_3 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 1 WaitBetweenSpawns 0 TotalCurrency 55 FirstSpawnWarningSound "mvm/giant_heavy/giant_heavy_entrance.wav" TFBot { Template T_TFBot_Pyro_PatrolChief } } WaveSpawn // DF Combat Tank { Name "Wave6_Subwave2_ChiefSupportCombatTank" WaitForAllSpawned "Wave6_Subwave2_PyroPatrolChief" TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 4 WaitBetweenSpawns 0 TotalCurrency 25 FirstSpawnWarningSound "npc/combine_gunship/ping_search.wav" Tank { Name "combattank_nolaser|fireball|fireball" StartingPathTrackNode "combat_tank_df_1" Health 6500 Speed 90 ClassIcon tank_fire_lite } } WaveSpawn // 20 Axtinguisher Pyros { Name "Wave6_Subwave2_AxtinguisherPyros" WaitForAllSpawned "Wave6_Subwave2_PyroPatrolChief" Where spawnbot_side_2 TotalCount 20 MaxActive 8 SpawnCount 1 WaitBeforeStarting 7.5 WaitBetweenSpawns 3 TotalCurrency 25 RandomChoice { TFBot { Class Pyro ClassIcon pyro_axtinguisher Skill Hard WeaponRestrictions MeleeOnly Action Mobber Item "The Axtinguisher" Item "The Merc's Mohawk" CharacterAttributes { "never gib" 1 } } NextSpawnerClone 2 TFBot { Class Pyro ClassIcon pyro_axtinguisher Skill Hard WeaponRestrictions MeleeOnly Action Mobber ExtAttr IgnoreNPC Item "The Axtinguisher" Item "The Merc's Mohawk" CharacterAttributes { "never gib" 1 } } } } WaveSpawn // 12 Crit Pyros { Name "Wave6_Subwave2_CritPyros" WaitForAllSpawned "Wave6_Subwave2_PyroPatrolChief" Where spawnbot_side_2 Where spawnbot_side_1 TotalCount 12 MaxActive 5 SpawnCount 3 WaitBeforeStarting 7.5 WaitBetweenSpawns 5 TotalCurrency 20 TFBot { Class Pyro Skill Easy Action Mobber Attributes AlwaysCrit ExtAttr IgnoreNPC } } // Post-Pyro Chief Subwave WaveSpawn // 3 Merc Busters { Name "Wave6_Subwave3_MercBusters" WaitForAllDead "Wave6_Subwave2_PyroPatrolChief" Where spawnbot_side_1 TotalCount 3 MaxActive 1 SpawnCount 1 WaitBeforeStarting 2 WaitBetweenSpawns 0 TotalCurrency 25 FirstSpawnWarningSound "mvm/sentrybuster/mvm_sentrybuster_intro.wav" TFBot { Template T_TFBot_SentryBuster Health 1200 Name "Merc Buster" Action SuicideBomber UseBusterModel 1 Item "The Hellmet" ItemAttributes { ItemName "The Hellmet" "set item tint RGB" 5801378 } InterruptAction { AimTarget "ClosestPlayer" Delay 0 Repeats 1 Duration 3 } CharacterAttributes { "head scale" 3 "torso scale" 0.1 "move speed bonus" 1.35 "mult dmg vs tanks" 0.25 } } } WaveSpawn // 15 Demoknights { Name "Wave6_Subwave3_Demoknights" WaitForAllDead "Wave6_Subwave2_PyroPatrolChief" Where spawnbot_side_1 TotalCount 15 MaxActive 6 SpawnCount 2 WaitBeforeStarting 4 WaitBetweenSpawns 3 TotalCurrency 20 RandomChoice { TFBot { Template T_TFBot_Demoman_Knight Attributes AlwaysCrit Action Mobber CharacterAttributes { "mult dmg vs tanks" 0.42 "never gib" 1 } } TFBot { Template T_TFBot_Demoman_Knight Attributes AlwaysCrit Action Mobber Item "The Scotsman's Skullcutter" CharacterAttributes { "mult dmg vs tanks" 0.42 "never gib" 1 } } TFBot { Template T_TFBot_Demoman_Knight Attributes AlwaysCrit Action Mobber Item "The Claidheamohmor" CharacterAttributes { "mult dmg vs tanks" 0.42 "never gib" 1 } } } } WaveSpawn // 1 GHeavy and 3 Rapid Fire Soldiers { Name "Wave6_Subwave3_GHeavy" WaitForAllDead "Wave6_Subwave2_PyroPatrolChief" Where spawnbot_side_2 TotalCount 4 MaxActive 4 SpawnCount 4 WaitBeforeStarting 29 WaitBetweenSpawns 0 TotalCurrency 55 Squad { TFBot { Template T_TFBot_Giant_Heavyweapons ExtAttr IgnoreNPC Action Mobber CharacterAttributes { "never gib" 1 } } TFBot { Class Soldier Health 450 Scale 1.25 Skill Normal ClassIcon soldier_spammer Name "Rapid Fire Soldier" Action Mobber CharacterAttributes { "fire rate bonus" 0.6 "faster reload rate" 0 "Projectile speed decreased" 0.6 "never gib" 1 } } TFBot { Class Soldier Health 450 Scale 1.25 Skill Normal ClassIcon soldier_spammer Name "Rapid Fire Soldier" Action Mobber CharacterAttributes { "fire rate bonus" 0.6 "faster reload rate" 0 "Projectile speed decreased" 0.6 "never gib" 1 } } TFBot { Class Soldier Health 450 Scale 1.25 Skill Normal ClassIcon soldier_spammer Name "Rapid Fire Soldier" Action Mobber CharacterAttributes { "fire rate bonus" 0.6 "faster reload rate" 0 "Projectile speed decreased" 0.6 "never gib" 1 } } } } // Side Ambush WaveSpawn // 22 Ambush Engineers { Name "Wave6_Subwave3_EngineerAmbush" Where spawnbot_side_1 TotalCount 22 MaxActive 22 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0.15 TFBot { Class Engineer ClassIcon engineer Skill Normal Name "Ambush Crew" Action Mobber Attributes "DisableDodge" Attributes HoldFireUntilFullReload Item "the data mining light" Item "The Frontier Justice" AddCond { Index 37 Duration 3 } ItemAttributes { ItemName "The Frontier Justice" "mult dmg vs tanks" 0.75 "fire rate bonus" 0.75 } CharacterAttributes { "move speed bonus" 1.3 "never gib" 1 } } } // Lockdown Subwave First Part WaveSpawn // 9 Braizen Gauntlets and 9 Bigheals { Name "Wave6_Subwave4_BraizenGauntlet" WaitForAllDead "Wave6_Subwave3_EngineerAmbush" Where spawnbot_side_3 TotalCount 18 MaxActive 6 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 6 TotalCurrency 30 Squad { TFBot { Template T_TFBot_Heavyweapons_Fist Name "Braizen Gauntlet" SpawnTemplate BotGasCanCarrierProp Action Mobber Item "The Bunsen Brave" ItemAttributes { ItemName "Fists Of Steel" "Set DamageType Ignite" 1 "weapon burn dmg increased" 3 "attach particle effect" 1 } CharacterAttributes { "never gib" 1 } ItemAttributes { ItemName "The Bunsen Brave" "set item tint RGB" 12073019 } ItemColor { ItemName "Fists Of Steel" Red 180 Green 0 Blue 0 } } TFBot { Template T_TFBot_Medic_BigHeal Name "Big Heal Medic" Item "The Surgeon's Stahlhelm" CharacterAttributes { "never gib" 1 } } } } WaveSpawn // 20 Charged Soldiers { Name "Wave6_Subwave4_ChargedSoldiers" WaitForAllDead "Wave6_Subwave3_EngineerAmbush" Where spawnbot_side_3 TotalCount 20 MaxActive 10 SpawnCount 5 WaitBeforeStarting 0 WaitBetweenSpawns 8 TotalCurrency 20 TFBot { Class Soldier Name "Charged Soldier" ClassIcon soldier_crit Skill Easy Attributes AlwaysCrit Action Mobber Item "The Original" ItemAttributes { ItemName "The Original" "faster reload rate" 0.2 "fire rate bonus" 2 "Projectile speed increased" 0.5 "mult dmg vs tanks" 0.5 "never gib" 1 } } } WaveSpawn // 2 GHeavies { Name "Wave6_Subwave4_GHeavy" WaitForAllDead "Wave6_Subwave3_EngineerAmbush" Where spawnbot_side_3 TotalCount 2 MaxActive 1 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 0 TotalCurrency 20 TFBot { Template T_TFBot_Giant_Heavyweapons Action Mobber ExtAttr IgnoreNPC CharacterAttributes { "never gib" 1 } } } // Lockdown Subwave Second Part WaveSpawn // 3 Exploding Gas GPyros, 3 Bigheals and 6 Rapid Fire Soldiers { Name "Wave6_Subwave4_GPyros" WaitForAllSpawned "Wave6_Subwave4_BraizenGauntlet" Where spawnbot_side_3 TotalCount 12 MaxActive 8 SpawnCount 4 WaitBeforeStarting 19 WaitBetweenSpawns 10 TotalCurrency 22 Squad { TFBot { Class Pyro Name "Giant Exploding Gas Pyro" ClassIcon pyro_gaspasser_explode_tind Skill Expert Health 3000 WeaponRestrictions SecondaryOnly Maxvisionrange 1200 Attributes MiniBoss Action Mobber ExtAttr IgnoreNPC SpawnTemplate BotGasCanCarrierProp Item "The Backburner" Item "The Gas Passer" Item "The Eliminators Safeguard" Item "Trickster's Turnout Gear" ItemAttributes { ItemName "The Gas Passer" explode_on_ignite 1 "dmg penalty vs players" 0.286 "fire rate penalty" 1.75 "item_meter_charge_rate" 30 "item_meter_damage_for_full_charge" 600 } ItemAttributes { ItemName "Trickster's Turnout Gear" "set item tint RGB" 8289918 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.6 "airblast vulnerability multiplier" 0.6 "override footstep sound set" 6 "airblast disabled" 1 "never gib" 1 } } TFBot { Class Soldier Health 450 Scale 1.25 Skill Normal ClassIcon soldier_spammer Name "Rapid Fire Soldier" Action Mobber CharacterAttributes { "fire rate bonus" 0.6 "faster reload rate" 0 "Projectile speed decreased" 0.6 "never gib" 1 } } TFBot { Class Soldier Health 450 Scale 1.25 Skill Normal ClassIcon soldier_spammer Name "Rapid Fire Soldier" Action Mobber CharacterAttributes { "fire rate bonus" 0.6 "faster reload rate" 0 "Projectile speed decreased" 0.6 "never gib" 1 } } TFBot { Template T_TFBot_Medic_BigHeal Name "Big Heal Medic" Item "The Surgeon's Stahlhelm" CharacterAttributes { "never gib" 1 } } } } WaveSpawn // 16 Charged Soldiers { Name "Wave6_Subwave4_ChargedSoldiers" WaitForAllSpawned "Wave6_Subwave4_BraizenGauntlet" Where spawnbot_side_2 TotalCount 16 MaxActive 12 SpawnCount 6 WaitBeforeStarting 4 WaitBetweenSpawns 7 TotalCurrency 16 TFBot { Class Soldier Name "Charged Soldier" ClassIcon soldier_crit Skill Easy Attributes AlwaysCrit Action Mobber Item "The Original" ItemAttributes { ItemName "The Original" "faster reload rate" 0.2 "fire rate bonus" 2 "Projectile speed increased" 0.5 "mult dmg vs tanks" 0.5 } CharacterAttributes { "never gib" 1 } } } WaveSpawn // 18 Copper Gauntlets { Name "Wave6_Subwave4_CopperGauntlets" WaitForAllSpawned "Wave6_Subwave4_BraizenGauntlet" Where spawnbot_side_2 TotalCount 18 MaxActive 8 SpawnCount 2 WaitBeforeStarting 21 WaitBetweenSpawns 4 TotalCurrency 18 TFBot { Class Heavyweapons Name "Copper Gauntlet" ClassIcon heavy_steelfist Skill Hard Action Mobber WeaponRestrictions MeleeOnly Item "Fists of Steel" CharacterAttributes { "never gib" 1 } } } WaveSpawn // 24 Widowmaker Engineers { Name "Wave6_Subwave4_Widowmakers" WaitForAllSpawned "Wave6_Subwave4_BraizenGauntlet" Where spawnbot_side_2 Where spawnbot_side_3 TotalCount 24 MaxActive 9 SpawnCount 2 WaitBeforeStarting 16 WaitBetweenSpawns 3 TotalCurrency 24 TFBot { Class Engineer Skill Normal MaxVisionRange 950 Name "Maintenance Crew" Action Mobber Attributes "DisableDodge" Attributes HoldFireUntilFullReload Item "the data mining light" Item "The Widowmaker" ItemAttributes { ItemName "The Widowmaker" "mult dmg vs tanks" 0.8 } CharacterAttributes { "never gib" 1 } } } // Lockdown Subwave Third Part WaveSpawn // Support Homewrecker Engineers { Name "Wave6_Subwave4_SupportEngineers" WaitForAllSpawned "Wave6_Subwave4_GPyros" Where spawnbot_section3_getbusier Support 1 TotalCount 24 MaxActive 4 SpawnCount 1 WaitBeforeStarting 8.5 WaitBetweenSpawns 5 TotalCurrency 36 TFBot { Class Engineer ClassIcon pyro_homewrecker_lite Health 500 Scale 1.2 Name "Wrecking Crew" Action Mobber Skill Normal Attributes "DisableDodge" WeaponRestrictions MeleeOnly ForceRomeVision 1 Item "Upgradeable TF_WEAPON_WRENCH" ItemAttributes { Itemname "Upgradeable TF_WEAPON_WRENCH" "fire rate penalty" 1.5 "damage bonus" 2.25 "melee cleave attack" 1 "custom item model" "models/workshop/weapons/c_models/c_sledgehammer/c_sledgehammer.mdl" "custom kill icon" "sledgehammer" } CharacterAttributes { "voice pitch scale" 0.8 "cancel falling damage" 1 "never gib" 1 } } } WaveSpawn // Support Widowmaker Engineers { Name "Wave6_Subwave4_SupportEngineers" WaitForAllSpawned "Wave6_Subwave4_GPyros" Where spawnbot_section3_getbusier Support 1 TotalCount 16 MaxActive 10 SpawnCount 2 WaitBeforeStarting 7.5 WaitBetweenSpawns 3 TotalCurrency 24 TFBot { Class Engineer Skill Normal MaxVisionRange 950 Name "Maintenance Crew" Action Mobber Attributes "DisableDodge" Attributes HoldFireUntilFullReload Item "the data mining light" Item "The Widowmaker" ItemAttributes { ItemName "The Widowmaker" "mult dmg vs tanks" 0.8 } CharacterAttributes { "never gib" 1 } } } // Demo Patrol Chief Subwave WaveSpawn // Demo Patrol Chief { Name "Wave6_Subwave5_DemoPatrolChief" Where spawnbot_07 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 25 TFBot { Template T_TFBot_Demo_PatrolChief } } WaveSpawn // 2 Merc Busters { Name "Wave6_Subwave5_MercBusters" WaitForAllSpawned "Wave6_Subwave5_DemoPatrolChief" Where spawnbot_07 TotalCount 2 MaxActive 2 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 40 TFBot { Template T_TFBot_SentryBuster Health 1200 Name "Merc Buster" Action SuicideBomber UseBusterModel 1 Item "The Hellmet" ItemAttributes { ItemName "The Hellmet" "set item tint RGB" 5801378 } InterruptAction { AimTarget "ClosestPlayer" Delay 0 Repeats 1 Duration 3 } CharacterAttributes { "head scale" 3 "torso scale" 0.1 "move speed bonus" 1.35 "mult dmg vs tanks" 0.25 } } } } Wave { CustomWaveNumber 7 CustomMaxWaveNumber 7 WaitWhenDone 65 Checkpoint Yes InitWaveOutput { Target wave_start_relay Action runscriptcode Param " EntFire(`Wave7Assets`, `forcespawn`) EntFire(`Wave7Setup`, `forcespawn`) EntFire(`sky_sunset_relay`, `trigger`) EntFire(`bombpath_right_relay`,`trigger`) IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/combattank`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/minigun`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/rocketpod`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/railgun`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/fireball`, getroottable()) Convars.SetValue(`tf_playergib`, 0) " } StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } SpawnTemplate Wave7MusicLoop // Subwave 1 WaveSpawn // 4 Homewrecker GScouts { Name "Wave7_Subwave_1_GScouts" Where spawnbot TotalCount 4 MaxActive 4 SpawnCount 2 WaitBeforeStarting 2 WaitBetweenSpawns 13 TotalCurrency 50 TFBot { Template T_TFBot_Giant_Scout Name "Giant Wrecking Crew" WeaponRestrictions MeleeOnly ClassIcon scout_homewrecker Item "The Homewrecker" Item "Hazard Handler" CharacterAttributes { "dmg pierces resists absorbs" 1 "cancel falling damage" 1 "mult dmg vs tanks" 2.5 "never gib" 1 } } StartWaveOutput { Target wave_start_relay Action runscriptcode Param " EntFire(`tf_point_nav_interface`, `RecomputeBlockers`) " } FirstSpawnOutput { Target wave_start_relay Action runscriptcode Param " EntFire(`tf_point_nav_interface`, `RecomputeBlockers`) " } } WaveSpawn // 20 Charged Soldiers { Name "Wave7_Subwave1_ChargedSoldiers" Where spawnbot_right TotalCount 20 MaxActive 20 SpawnCount 10 WaitBeforeStarting 5 WaitBetweenSpawns 15 TotalCurrency 20 TFBot { Class Soldier ClassIcon soldier_crit Name "Charged Soldier" Skill Normal Attributes AlwaysCrit Item "The Original" ItemAttributes { ItemName "The Original" "Projectile speed increased" 0.45 "fire rate bonus" 2.0 "faster reload rate" 0.2 } CharacterAttributes { "never gib" 1 } } FirstSpawnOutput { Target wave_start_relay Action runscriptcode Param " EntFire(`tf_point_nav_interface`, `RecomputeBlockers`) " } } // Subwave 2 WaveSpawn // 1 Tank { Name "Wave7_Subwave2_Tank" WaitForAllSpawned "Wave7_Subwave1_ChargedSoldiers" TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 15 WaitBetweenSpawns 0 TotalCurrency 50 Tank { Name "tankboss" StartingPathTrackNode "tank_path_1" Health 35000 Speed 75 Skin 0 OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn // 25 Maintenance Crew on the Tank { Name "Wave7_Subwave2_Engineers" WaitForAllSpawned "Wave7_Subwave2_Tank" Where spawnbot_side_3 TotalCount 25 MaxActive 15 SpawnCount 1 WaitBeforeStarting 5 WaitBetweenSpawns 1 TotalCurrency 100 RandomChoice { Shuffle 1 TFBot { Health 375 Name "Armored Maintenance Crew" Class Engineer Skill Expert WeaponRestrictions MeleeOnly ClassIcon engineer_armored Attributes AlwaysFireWeapon Item "the data mining light" Scale 1.4 Action Mobber CharacterAttributes { "never gib" 1 } InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tankboss" // Move target location Name "a" // Name of the interrupt action. When the task is done, bot's $OnActionDone output is fired with name as parameter Delay 0.1 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 1 // How many times should bot do the task in total (Default: 0 - Infinite) Duration 999 // How long should the ai be interrupted AimTarget "tankboss" KillAimTarget 1 Distance 75 // How close should bot move to the target (Default: 0) } } TFBot { ClassIcon engineer Health 125 Name "Maintenance Crew" Class Engineer Skill Expert WeaponRestrictions MeleeOnly Attributes AlwaysFireWeapon Item "the data mining light" Action Mobber CharacterAttributes { "never gib" 1 } InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tankboss" // Move target location Name "a" // Name of the interrupt action. When the task is done, bot's $OnActionDone output is fired with name as parameter Delay 0.1 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 1 // How many times should bot do the task in total (Default: 0 - Infinite) Duration 999 // How long should the ai be interrupted AimTarget "tankboss" KillAimTarget 1 Distance 75 // How close should bot move to the target (Default: 0) } } TFBot { ClassIcon engineer Health 125 Name "Maintenance Crew" Class Engineer Skill Expert WeaponRestrictions MeleeOnly Attributes AlwaysFireWeapon Item "the data mining light" Action Mobber CharacterAttributes { "never gib" 1 } InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tankboss" // Move target location Name "a" // Name of the interrupt action. When the task is done, bot's $OnActionDone output is fired with name as parameter Delay 0.1 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 1 // How many times should bot do the task in total (Default: 0 - Infinite) Duration 999 // How long should the ai be interrupted AimTarget "tankboss" KillAimTarget 1 Distance 75 // How close should bot move to the target (Default: 0) } } } FirstSpawnOutput { Target "panic_subwave_incoming" Action Trigger } } WaveSpawn // 6 GBursts { Name "Wave7_Subwave2_GBursts" WaitForAllSpawned "Wave7_Subwave2_Tank" Where spawnbot_right TotalCount 6 MaxActive 6 SpawnCount 2 WaitBeforeStarting 10 WaitBetweenSpawns 16 TotalCurrency 50 TFBot { Class Soldier Name "Giant Burst Fire Soldier" ClassIcon soldier_burstfire Health 4200 Skill Expert WeaponRestrictions PrimaryOnly Attributes MiniBoss Attributes HoldFireUntilFullReload ItemAttributes { ItemName "TF_WEAPON_ROCKETLAUNCHER" "faster reload rate" 0.4 "fire rate bonus" 0.2 "clip size upgrade atomic" 5.0 "projectile spread angle penalty" 4 "damage bonus" 1.5 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 "override footstep sound set" 3 "Projectile speed increased" 0.9 "never gib" 1 } } } // Subwave 3 WaveSpawn // 1 Combat Tank (Minigun & Rocketpod) { Name "Wave7_Subwave3_CombatTank" WaitForAllDead "Wave7_Subwave2_GBursts" TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 100 Tank { Name "combattank|minigun|rocketpod" StartingPathTrackNode "tank_path_1" ClassIcon tank_combat_minigun_rocket Health 35000 Speed 75 Skin 0 OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn // 7 Armored Widowmakers, 7 Uber Medics and 21 Charged Ranger Engineers { Name "Wave7_Subwave3_EngineerSquad" WaitForAllSpawned "Wave7_Subwave2_Engineers" Where spawnbot TotalCount 35 MaxActive 25 SpawnCount 5 WaitBeforeStarting 10 WaitBetweenSpawns 6 TotalCurrency 50 Squad { TFBot { Health 375 Name "Armored Widowmaker" ClassIcon engineer_armored Class Engineer Skill Expert WeaponRestrictions PrimaryOnly Item "the data mining light" Item "The Widowmaker" Scale 1.4 Action FetchFlag CharacterAttributes { "never gib" 1 } } TFBot { Template T_TFBot_Medic } TFBot { Name "Charged Engineer" Health 150 Class Engineer Skill Expert Action FetchFlag //Forces bot to grab the bomb Item "The Rescue Ranger" WeaponRestrictions PrimaryOnly Attributes AlwaysCrit ItemAttributes { ItemName "The Rescue Ranger" "faster reload rate" -0.4 "dmg bonus vs buildings" 2 } CharacterAttributes { "kill forces attacker to laugh" 1 "never gib" 1 } } TFBot { Name "Charged Engineer" Health 150 Class Engineer Skill Expert Action FetchFlag //Forces bot to grab the bomb Item "The Rescue Ranger" WeaponRestrictions PrimaryOnly Attributes AlwaysCrit ItemAttributes { ItemName "The Rescue Ranger" "faster reload rate" -0.4 "dmg bonus vs buildings" 2 } CharacterAttributes { "kill forces attacker to laugh" 1 "never gib" 1 } } TFBot { Name "Charged Engineer" Health 150 Class Engineer Skill Expert Action FetchFlag //Forces bot to grab the bomb Item "The Rescue Ranger" WeaponRestrictions PrimaryOnly Attributes AlwaysCrit ItemAttributes { ItemName "The Rescue Ranger" "faster reload rate" -0.4 "dmg bonus vs buildings" 2 } CharacterAttributes { "kill forces attacker to laugh" 1 "never gib" 1 } } } } // Subwave 4 WaveSpawn // 2 GHoKDeflectors & 4 Giant Steel Gauntlets { Name "Wave7_Subwave4_GHeavySquad" WaitForAllSpawned "Wave7_Subwave3_CombatTank" Where spawnbot_right TotalCount 6 MaxActive 6 SpawnCount 3 WaitBeforeStarting 0 WaitBetweenSpawns 20 TotalCurrency 50 Squad { NoWaitForFormation 1 TFBot { Name "Giant Heal-On-Kill Deflector" Template T_TFBot_Giant_Heavyweapons_HealOnKill UseCustomModel "models/bots/heavy_boss/bot_heavy_gray_boss.mdl" Item "officer's ushanka" Item "the apparatchik's apparel" Attributes AlwaysCrit Tag giant CharacterAttributes { "never gib" 1 } CharacterAttributes { "fire input on kill" "tf_gamerules^PlayVO^vo/sandwicheat09.mp3" "fire input on kill" "tf_gamerules^PlayVO^vo/sandwicheat09.mp3" } } TFBot { Class Heavyweapons Name "Steel Giant" Template T_TFBot_Giant_Boxing_Heavy Skill Expert ClassIcon heavy_steelfist Health 5000 Item "fists of steel" Attributes AlwaysCrit Tag giant CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.3 "override footstep sound set" 2 "never gib" 1 } } TFBot { Class Heavyweapons Name "Steel Giant" Template T_TFBot_Giant_Boxing_Heavy Skill Expert ClassIcon heavy_steelfist Health 5000 Item "fists of steel" Attributes AlwaysCrit Tag giant CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.3 "override footstep sound set" 2 "never gib" 1 } } } } WaveSpawn // 30 Sticky Demos and 30 Shotgun Heavies { Name "Wave7_Subwave4_DemosandHeavies" WaitForAllSpawned "Wave7_Subwave4_GHeavySquad" Where spawnbot TotalCount 60 MaxActive 18 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 2.2 TotalCurrency 50 RandomChoice { Shuffle 1 TFBot { Class Demoman ClassIcon demo_sticky_daan Name "Stickybomb Demoman" Skill Hard WeaponRestrictions SecondaryOnly ItemAttributes // Makes them not spin around, since they use the Grenade Launcher's animations { ItemName "TF_WEAPON_GRENADELAUNCHER" "is_passive_weapon" 1 "override projectile type" 27.0 } CharacterAttributes { "never gib" 1 } } TFBot { Template T_TFBot_Heavyweapons_Shotgun Attributes AlwaysCrit CharacterAttributes { "never gib" 1 } } } } // Subwave 5 WaveSpawn // 1 Drill Tank { Name "Wave7_Subwave5_DrillTank" WaitForAllDead "Wave7_Subwave4_GHeavySquad" TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 5 WaitBetweenSpawns 0 TotalCurrency 50 Tank { Name "tankboss" StartingPathTrackNode "tank_drill_path_1" Health 23000 Speed 75 Skin 0 ClassIcon tank_drill_lite SpawnTemplate DrillTankAssets PingSound "ambient/levels/citadel/zapper_warmup1.wav" DisableBomb 1 Model { Default "models/watermine/drill_tank.mdl" Damage1 "models/watermine/drill_tank_damage1.mdl" Damage2 "models/watermine/drill_tank_damage2.mdl" Damage3 "models/watermine/drill_tank_damage3.mdl" } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } FirstSpawnOutput { Target "panic_subwave_incoming" Action Trigger } } WaveSpawn // 20 Backburner Pyros { Name "Wave7_Subwave5_Backburners" WaitForAllSpawned "Wave7_Subwave5_DrillTank" Where spawnbot_side_2 TotalCount 20 MaxActive 15 SpawnCount 10 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 50 TFBot { Name "Backburner Pyro" Class Pyro Skill Easy Attributes AlwaysFireWeapon ClassIcon pyro_backburner_nys Item "the backburner" CharacterAttributes { "never gib" 1 } } } // Subwave 6 WaveSpawn // 1 Combat Tank (Rocketpod & Railgun) { Name "Wave7_Subwave6_CombatTank" WaitForAllDead "Wave7_Subwave5_Backburners" TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 50 Tank { Name "combattank|rocketpod|railgun" StartingPathTrackNode "tank_path_1" Health 40000 Speed 75 Skin 0 ClassIcon tank_combat_rocket_railgun OnKilledOutput {} OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn // 30 Back Scatter Scouts { Name "Wave7_Subwave6_BackScatters" WaitForAllSpawned "Wave7_Subwave6_CombatTank" Where spawnbot_side_2 Where spawnbot TotalCount 30 MaxActive 15 SpawnCount 5 WaitBeforeStarting 0 WaitBetweenSpawns 4 TotalCurrency 50 TFBot { Class Scout Item "The Back Scatter" CharacterAttributes { "never gib" 1 } } FirstSpawnOutput { Target "panic_subwave_incoming" Action Trigger } } // Subwave 7 WaveSpawn // 5 GNapalms and 20 Uber Medics { Name "Wave7_Subwave7_NapalmPyros" WaitForAllSpawned "Wave7_Subwave6_CombatTank" Where spawnbot TotalCount 25 MaxActive 15 SpawnCount 5 WaitBeforeStarting 40 WaitBetweenSpawns 20 TotalCurrency 50 Squad { TFBot { Template T_TFBot_Giant_Pyro Name "Giant Napalm Pyro" ClassIcon pyro_dragon_fury_swordstone_spammer_giant WeaponRestrictions SecondaryOnly AddTemplate UnstableCharge Tag giant ItemAttributes { ItemName "TF_WEAPON_SHOTGUN_PYRO" "override projectile type" 2 "damage bonus" 1.2 "projectile range decreased" 0.4 "stickybomb charge rate" 0 "clip size bonus" 500 "reload full clip at once" 1 "faster reload rate" -1 "blast radius increased" 0.4 "fire rate bonus" 1.2 "attach particle effect" 704 "custom impact sound" "Breakable.Glass" "custom projectile model" "models/weapons/c_models/c_cryo_gun/c_cryo_gun_fireball.mdl" "custom item model" "models/weapons/c_models/c_cryo_gun/c_cryo_gun.mdl" "projectile trail particle" "~spell_fireball_small_trail_red" "custom weapon fire sound" "MVM.GiantSoldierRocketShootCrit" "custom kill icon" "firedeath" // bonk "add damage type" 2056 "remove damage type" 64 "projectile spread angle penalty" 5 "mult projectile scale" 2 "Projectile speed increased" 0.6 "ignores other projectiles" 1 "projectile penetration" 1 } CharacterAttributes { "never gib" 1 } ShootTemplate { Name NapalmPyroProjectileAsset AttachToProjectile 1 ItemName "TF_WEAPON_SHOTGUN_PYRO" } } TFBot { Template T_TFBot_Medic CharacterAttributes { "never gib" 1 } } TFBot { Template T_TFBot_Medic CharacterAttributes { "never gib" 1 } } TFBot { Template T_TFBot_Medic CharacterAttributes { "never gib" 1 } } TFBot { Template T_TFBot_Medic CharacterAttributes { "never gib" 1 } } } } WaveSpawn // 20 ParaSoldiers and 20 ParaDemos { Name "Wave7_Subwave7_ParaSoldiersandParaDemos" WaitForAllSpawned "Wave7_Subwave6_BackScatters" Where spawnbot TotalCount 40 MaxActive 16 SpawnCount 1 WaitBeforeStarting 15 WaitBetweenSpawns 1.5 TotalCurrency 50 RandomChoice { Shuffle 1 TFBot { Class Soldier Attributes Parachute Item "The B.A.S.E. Jumper" ClassIcon soldier_para CharacterAttributes { "never gib" 1 } FireInput { Target "!self" Action "$SetLocalOrigin" Param "-2203 3948 1568" Delay 0 CoolDown 999 } } TFBot { Class Demoman WeaponRestrictions SecondaryOnly Attributes Parachute Item "The B.A.S.E. Jumper" Item "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" ClassIcon demo_sticky_daan ItemAttributes { ItemName "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" "self dmg push force decreased" 0.25 "stickybomb charge rate" 0.1 "projectile range decreased" 0.45 "no self blast dmg" 2 "max pipebombs decreased" -7 } CharacterAttributes { "never gib" 1 } FireInput { Target "!self" Action "$SetLocalOrigin" Param "-2203 3948 1568" Delay 0 CoolDown 999 } } TFBot { Class Demoman WeaponRestrictions SecondaryOnly Attributes Parachute Item "The B.A.S.E. Jumper" Item "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" ClassIcon demo_sticky_daan ItemAttributes { ItemName "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" "self dmg push force decreased" 0.25 "stickybomb charge rate" 0.1 "projectile range decreased" 0.45 "no self blast dmg" 2 "max pipebombs decreased" -7 } CharacterAttributes { "never gib" 1 } FireInput { Target "!self" Action "$SetLocalOrigin" Param "-3185 3607 1344" Delay 0 CoolDown 999 } } TFBot { Class Soldier Attributes Parachute Item "The B.A.S.E. Jumper" ClassIcon soldier_para FireInput { Target "!self" Action "$SetLocalOrigin" Param "-4631 5607 1344" Delay 0 CoolDown 999 } } } FirstSpawnOutput { Target airdropspawn_alert Action Trigger } } // Subwave 8 WaveSpawn // 50 Spies { Name "Wave7_Subwave8_Spies" WaitForAllSpawned "Wave7_Subwave7_ParaSoldiersandParaDemos" Where spawnbot TotalCount 50 MaxActive 15 SpawnCount 5 WaitBeforeStarting 0 WaitBetweenSpawns 7 TotalCurrency 50 TFBot { Template T_TFBot_Spy CharacterAttributes { "never gib" 1 } } } WaveSpawn // 30 DFury Pyros { Name "Wave7_Subwave8_DFuries" WaitForAllDead "Wave7_Subwave7_NapalmPyros" Where spawnbot TotalCount 30 MaxActive 18 SpawnCount 3 WaitBeforeStarting 20 WaitBetweenSpawns 5 TFBot { ClassIcon pyro_dragon_fury_swordstone Name "Dragon's Fury Pyro" Class Pyro Skill Normal Item "The Dragon's Fury" Action Mobber CharacterAttributes { "airblast disabled" 1 "never gib" 1 } } } // Subwave 9 WaveSpawn // 12 Unstable Super Scouts { Name "Wave7_Subwave9_SuperScouts" WaitForAllDead "Wave7_Subwave8_Spies" Where spawnbot TotalCount 12 MaxActive 6 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 5 TFBot { Template T_TFBot_Giant_Scout_Fast AddTemplate UnstableCharge Tag giant CharacterAttributes { "never gib" 1 } } } WaveSpawn // 1 Combat Tank (DFury & Minigun) { Name "Wave7_Subwave9_CombatTank" WaitForAllSpawned "Wave7_Subwave7_ParaSoldiersandParaDemos" TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 20 WaitBetweenSpawns 0 Tank { Name "combattank|fireball|minigun" StartingPathTrackNode "tank_path_1" Health 35000 Speed 75 Skin 0 OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } } }