//Cliffside Reverse by A+drew #base robot_giant.pop #base robot_standard.pop #base robot_standard_red.pop #base robot_giant_red.pop #base robot_andrew.pop WaveSchedule { StartingCurrency 1000 CanBotsAttackWhileInSpawnRoom YES RespawnWaveTimeBlue 1 FixedRespawnWaveTimeBlue 1 AddSentryBusterWhenDamageDealtExceeds 0 RobotLimit 26 ForceHoliday 2 NoHolidayPickups 1 MaxTotalPlayers 6 DisplayRobotDeathNotice 0 NoReanimators 1 NoMvMDeathTune 1 SniperAllowHeadshots 1 SentryBusterFriendlyFire 0 StandableHeads 1 //For reverse only ReverseWinConditions 1 BluHumanFlagCapture 0 BluHumanFlagPickup 1 BluHumanInfiniteAmmo 1 FlagCarrierMovementPenalty 0.5 AllowJoinTeamBlueMax 6 AllowJoinTeamBlue 1 HumansMustJoinTeam blue BluPlayersAreRobots 1 PrecacheModel "models/bots/sniper_boss/bot_sniper_boss.mdl" PrecacheModel "models/bots/demo/red_sentry_buster.mdl" PrecacheModel "models/props_mvm/mvm_upgrade_blu.mdl" PrecacheModel "models/props_mvm/robot_spawnpoint.mdl" PrecacheModel "models/props_mvm/no_entry.mdl" PrecacheModel "models/bots/boss_bot/boss_tankred.mdl" PrecacheModel "models/bots/boss_bot/boss_tankred_damage1.mdl" PrecacheModel "models/bots/boss_bot/boss_tankred_damage2.mdl" PrecacheModel "models/bots/boss_bot/boss_tankred_damage3.mdl" PrecacheModel "models/bots/boss_bot/boss_tankred_part1_destruction.mdl" PrecacheModel "models\bots\boss_bot\boss_blimpred.mdl" //This is the older blimp model using it because why not. PrecacheModel "models\bots\boss_bot\boss_blimpred_damage1.mdl" PrecacheModel "models\bots\boss_bot\boss_blimpred_damage2.mdl" PrecacheModel "models\bots\boss_bot\boss_blimpred_damage3.mdl" PrecacheModel "models/bots/boss_bot/boss_blimp.mdl" PrecacheModel "models/bots/boss_bot/boss_blimp_damage1.mdl" PrecacheModel "models/bots/boss_bot/boss_blimp_damage2.mdl" PrecacheModel "models/bots/boss_bot/boss_blimp_damage3.mdl" PrecacheModel "models/bots/boss_bot/boss_blimp_damage_explode.mdl" PrecacheModel "models/bots/boss_bot/boss_blimp_explode.mdl" OverrideSounds { "MVM.GiantCommonExplodes" "ambient/explosions/explode_3.wav" "MVM.BombWarning" "combine_bank_alarm.mp3" } DisableSound "Announcer.MVM_Spy_Alert" DisableSound "Announcer.mvm_spybot_death" DisableSound "Announcer.mvm_spybot_death_all" DisableSound "Announcer.MVM_First_Wave_Start" DisableSound "Announcer.MVM_Wave_Start" DisableSound "Announcer.MVM_Wave_End" DisableSound "Announcer.MVM_Wave_Lose" DisableSound "Announcer.MVM_Final_Wave_Start" DisableSound "Announcer.MVM_Final_Wave_End" DisableSound "Announcer.MVM_Robots_Planted" DisableSound "Announcer.MVM_All_Dead" DisableSound "Announcer.MVM_Bomb_Alert_Entered" DisableSound "Announcer.MVM_Bomb_Alert_Near_Hatch" DisableSound "Announcer.MVM_Bomb_Alert_Deploying" DisableSound "Announcer.MVM_Sentry_Buster_Alert" DisableSound "Announcer.MVM_Sentry_Buster_Alert_Another" DisableSound "Announcer.MVM_General_Wave_Start" DisableSound "Announcer.MVM_Game_Over_Loss" DisableSound "Announcer.MVM_Tank_Planted" DisableSound "Announcer.MVM_Tank_Alert_Spawn" DisableSound "Announcer.MVM_Tank_Alert_Another" DisableSound "Announcer.MVM_Tank_Alert_Multiple" DisableSound "Announcer.MVM_Tank_Alert_Halfway" DisableSound "Announcer.MVM_Tank_Alert_Halfway_Multiple" DisableSound "Announcer.MVM_Tank_Alert_Near_Hatch" DisableSound "Announcer.MVM_Tank_Alert_Deploying" ExtraTankPath { Name "tank_red" Node "463 -563 1600" } ExtraTankPath { Name "blimp_red_left" Node "463 -563 1600" Node "601 1590 1600" Node "1120 1658 1600" Node "1032 2484 1600" Node "1622 3872 1600" Node "2131 3905 1600" Node "2148 5446 1600" Node "1150 5526 1600" Node "1243 9263 1600" } ExtraTankPath { Name "blimp_red_right" Node "-104 -563 1600" Node "2 1869 1600" Node "137 4514 1600" Node "1240 4568 1600" Node "1218 7552 1600" Node "1243 9263 1600" } PointTemplates { corelogic //all the things we want to automatically run when the popfile loads. Use this the most to avoid spaghetti { NoFixup 1 logic_auto { "origin" "0 0 0" "targetname" "mainrelay" //delete as much unnecessary/unwanted stuff as you can from your map of choice. //you probably won't risk crashes on simpler mvm maps, but the further away from the edict limit you can be the better "OnMapSpawn" "item_ammopack*,Kill,,0,-1" //might want to comment this out if players have limited ammo "OnMapSpawn" "botspawn1,Kill,,0,-1" //these will allow players on the blue team to shoot from spawn "OnMapSpawn" "botspawn2,Kill,,0,-1" "OnMapSpawn" "Barricade*,Kill,,0,-1" //rottenburg specific, deletes front tank barricade //if there is no targetname for wasteful ents, you can also delete them by classname //deleting these decoration ropes frees up nearly 100 edicts on mvm_yiresa "OnMapSpawn" "move_rope,Kill,,0,-1" "OnMapSpawn" "keyframe_rope,Kill,,0,-1" //"OnMapSpawn" "filter_redteam,Kill,,0,-1" //red team filters might cause problems, deleting them might cause more problems //"OnMapSpawn" "trigger_push,Disable,,0,-1" //some maps use trigger_pushes intended to un-stick bots //Gatebot related: //"OnMapSpawn" "bot_stun_*,Kill,,0,-1" //some gates may stun players //"OnMapSpawn" "filter_blue_bombhat,Kill,,0,-1" //gatebot maps will need their capture filter deleted for players to cap //"OnMapSpawn" "gate1_alarm*,Kill,,0,-1" //gets spammed by both red and blu team //AddOutput can be used to connect our own home-brewed point templates to existing map logic like so: "OnMapSpawn" "wave_start_relay*,AddOutput,OnTrigger spawnbarrier*:Disable:0:-1" "OnMapSpawn" "wave_finished_relay,AddOutput,OnTrigger spawnbarrier*:Enable:0:-1" "OnMapSpawn" "wave_finished_relay,AddOutput,OnTrigger area1barriers:Enable:0:-1" "OnMapSpawn" "wave_finished_relay,AddOutput,OnTrigger area2barriers:Enable:0:-1" //What we're doing: //"wave_start_relay*,AddOutput, //wave_start_relay_classic/endurance is the targetname for a logic_relay that is triggered on wave start, logic_relays (along with most other ents) accept AddOutput as an input. // * will trigger our relay alongside any others with wave_start_relay in the name, this only works for suffixes (*_start_relay* will not work) //OnTrigger spawnbarrier*:Disable:0:-1" //When wave_start_relay_classic/endurance triggers, it will trigger Disable on 'spawnbarrierA' and 'spawnbarrierA1' with a 0 second delay, -1 means this relay can be triggered an infinite amount of times. //We can also use AddOutput to change an ent rather than just latch onto it: "OnMapSpawn" "hint,AddOutput,display_text test,10,-1" //change annotation text to test 10s after map spawn "OnMapSpawn" "wave_start_relay_classic,AddOutput,OnTrigger hint:Show:0:-1" "OnMapSpawn" "tankpath1_1,AddOutput,OnPass red_tank_relay:Trigger:0:-1" } NoFixup 1 logic_relay //disables the first set of barriers { "targetname" "area1barriersdisable" "OnTrigger" "area1barriers,Disable,,0,-1" } NoFixup 1 logic_relay //disables the second set of barriers { "targetname" "area2barriersdisable" "OnTrigger" "area2barriers,Disable,,0,-1" } NoFixup 1 logic_relay //trigger this to kill all players and buildings { "targetname" "kill_relay" "OnTrigger" "obj_dispenser,RemoveHealth,5000,0,-1" "OnTrigger" "obj_sentrygun,RemoveHealth,5000,0,-1" "OnTrigger" "obj_teleporter,RemoveHealth,5000,0,-1" "OnTrigger" "player,SetHealth,-10000,0,-1" } NoFixup 1 logic_relay //trigger this to lose { "origin" "0 0 0" "targetname" "redwin_relay" "OnTrigger" "bots_win_red,RoundWin,,0,-1" "OnTrigger" "pit_explosion_wav,PlaySound,,0,-1" //map dependent } NoFixup 1 logic_relay { "targetname" "red_tank_relay" "OnTrigger" "tank_boss,Setteam,2,0.25,-1" "OnTrigger" "tank_boss,AddCaptureDestroyPostfix,destroy_mvm_cactus_valley3,0,-1" //cool explodey effect, doesn't work :( } NoFixup 1 trigger_multiple { "targetname" "thirdperson" "StartDisabled" "1" "spawnflags" "3" "origin" "1542.488770 739.029175 -143.968689" "maxs" "50 50 50" "mins" "-50 -50 -50" "filtername" "filter_blue" "OnStartTouch" "!activator,setforcedtauntcam,1,0.1,-1" //!activator is any entity currently inside of trigger_multiple "OnStartTouch" "!activator,SetHUDVisibility,0,0.1,-1" "OnStartTouch" "!activator,DisableDamageForces,,0,-1" //doesn't work? "OnEndTouch" "!activator,setforcedtauntcam,0,0,-1" "OnEndTouch" "!activator,SetHUDVisibility,1,0,-1" "OnEndTouch" "!activator,EnableDamageForces,,0,-1" } func_nav_prerequisite //tells bots with a tag to defend this area, like telling gatebots to stay at the gate { "targetname" "towernav" "mins" "-1000 -1000 -1000" "maxs" "1000 1000 1000" "Entity" "towerspawn" "filtername" "filter_tower" "origin" "1542.488770 739.029175 -143.968689" "spawnflags" "1" "start_disabled" "0" "StartDisabled" "0" "Task" "2" "Value" "-1" } filter_tf_bot_has_tag //our tag { "Negated" "0" "require_all_tags" "1" "tags" "bot_tower" "targetname" "filter_tower" } func_nav_prerequisite //repeated for hatch { "targetname" "hatchnav" "mins" "-100 -100 -100" "maxs" "100 100 100" "Entity" "hatchspawn" "filtername" "filter_hatch" "origin" "1542.488770 739.029175 -143.968689" "spawnflags" "1" "start_disabled" "0" "StartDisabled" "0" "Task" "2" "Value" "-1" } filter_tf_bot_has_tag { "Negated" "0" "require_all_tags" "1" "tags" "bot_hatch" "targetname" "filter_hatch" } NoFixup 1 game_round_win //do not interact with this { "origin" "0 0 0" "TeamNum" "2" "targetname" "bots_win_red" "switch_teams" "0" "force_map_reset" "1" "classname" "game_round_win" } //manual respawnrooms func_respawnroom //right { "origin" "192 8064 800" "mins" "-128 -320 -128" "maxs" "128 320 128" "TeamNum" "3" } func_respawnroom //middle { "origin" "1248 8944 1872" "mins" "-480 -208 -1200" "maxs" "480 208 1200" "TeamNum" "3" } func_respawnroom //left { "origin" "2456 7552 608" "mins" "-168 -128 -128" "maxs" "168 128 128" "TeamNum" "3" } } barriers //modified to work specifically for cliffside { NoFixup 1 func_forcefield //flank_left { "targetname" "spawnbarrierA1" "mins" "-32 -128 -128" "maxs" "32 128 128" "origin" "1992 7552 608" "TeamNum" "2" "disablereceiveshadows" "0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "StartDisabled" "0" } NoFixup 1 func_forcefield //middle { "targetname" "spawnbarrierA1" "mins" "-480 -64 -1192" "maxs" "480 64 1192" "origin" "1248 7744 1880" "TeamNum" "2" "disablereceiveshadows" "0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "StartDisabled" "0" } NoFixup 1 func_forcefield //flank_right { "targetname" "spawnbarrierA1" "mins" "-40 -136 -128" "maxs" "40 136 128" "origin" "472 7520 800" "TeamNum" "2" "disablereceiveshadows" "0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "StartDisabled" "0" } NoFixup 1 prop_dynamic //flank_left { "targetname" "spawnbarrierA" "origin" "2024 7552 608" "angles" "0 0 0" "modelscale" "1" "fademindist" "128" "fademaxdist" "512" "disablereceiveshadows" "1" "model" "models/props_mvm/no_entry.mdl" "disableshadows" "1" "solid" "0" "StartDisabled" "0" } NoFixup 1 prop_dynamic //middle { "targetname" "spawnbarrierA" "origin" "1472 7808 864" "angles" "0 90 0" "modelscale" "1.5" "fademindist" "256" "fademaxdist" "1024" "disablereceiveshadows" "1" "model" "models/props_mvm/no_entry.mdl" "disableshadows" "1" "solid" "0" "StartDisabled" "0" } NoFixup 1 prop_dynamic //middle2 { "targetname" "spawnbarrierA" "origin" "1024 7808 864" "angles" "0 90 0" "modelscale" "1.5" "fademindist" "256" "fademaxdist" "1024" "disablereceiveshadows" "1" "model" "models/props_mvm/no_entry.mdl" "disableshadows" "1" "solid" "0" "StartDisabled" "0" } NoFixup 1 prop_dynamic //flank_right { "targetname" "spawnbarrierA" "origin" "432 7520 800" "angles" "0 180 0" "modelscale" "1" "fademindist" "128" "fademaxdist" "512" "disablereceiveshadows" "1" "model" "models/props_mvm/no_entry.mdl" "disableshadows" "1" "solid" "0" "StartDisabled" "0" } } areabarriers { // 1/3 // //right side NoFixup 1 func_forcefield { "targetname" "area1barriers" "mins" "-96 -48 -112" "maxs" "96 48 112" "origin" "128 5648 848" "TeamNum" "2" "disablereceiveshadows" "0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "StartDisabled" "0" } NoFixup 1 func_nobuild { "targetname" "area1barriers" "mins" "-96 -48 -112" "maxs" "96 48 112" "origin" "128 5648 848" "TeamNum" "3" } NoFixup 1 prop_dynamic { "targetname" "area1barriers" "origin" "132 5696 848" "angles" "0 90 0" "modelscale" "0.85" "fademindist" "128" "fademaxdist" "1024" "disablereceiveshadows" "1" "model" "models/props_mvm/no_entry.mdl" "disableshadows" "1" "solid" "0" "StartDisabled" "0" } NoFixup 1 func_forcefield //cliff { "targetname" "area1barriers" "mins" "-928 -8 -1792" "maxs" "928 8 1792" "origin" "-1376 5688 1280" "TeamNum" "2" "disablereceiveshadows" "0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "StartDisabled" "0" } //middle NoFixup 1 func_forcefield { "targetname" "area1barriers" "mins" "-192 -96 -112" "maxs" "192 96 112" "origin" "1168 5152 688" "TeamNum" "2" "disablereceiveshadows" "0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "StartDisabled" "0" } NoFixup 1 func_nobuild { "targetname" "area1barriers" "mins" "-192 -96 -112" "maxs" "192 96 112" "origin" "1168 5152 688" "TeamNum" "3" } NoFixup 1 prop_dynamic { "targetname" "area1barriers" "origin" "1168 5248 688" "angles" "0 90 0" "modelscale" "1" "fademindist" "128" "fademaxdist" "1024" "disablereceiveshadows" "1" "model" "models/props_mvm/no_entry.mdl" "disableshadows" "1" "solid" "0" "StartDisabled" "0" } //left side NoFixup 1 func_forcefield { "targetname" "area1barriers" "mins" "-176 -72 -1184" "maxs" "176 72 1184" "origin" "2160 4808 1888" "TeamNum" "2" "disablereceiveshadows" "0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "StartDisabled" "0" } NoFixup 1 func_nobuild { "targetname" "area1barriers" "mins" "-176 -72 -1184" "maxs" "176 72 1184" "origin" "2160 4808 1888" "TeamNum" "3" } NoFixup 1 prop_dynamic { "targetname" "area1barriers" "origin" "2144 4880 832" "angles" "0 90 0" "modelscale" "1" "fademindist" "128" "fademaxdist" "1024" "disablereceiveshadows" "1" "model" "models/props_mvm/no_entry.mdl" "disableshadows" "1" "solid" "0" "StartDisabled" "0" } // 2/3 // NoFixup 1 func_forcefield { "targetname" "area2barriers" "mins" "-2112 -128 -1784" "maxs" "2112 128 1784" "origin" "-192 2432 1288" "TeamNum" "2" "disablereceiveshadows" "0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "StartDisabled" "0" } NoFixup 1 func_nobuild { "targetname" "area2barriers" "mins" "-2112 -128 -1784" "maxs" "2112 128 1784" "origin" "-192 2432 1288" "TeamNum" "3" } NoFixup 1 prop_dynamic //right { "targetname" "area2barriers" "origin" "-352 2560 928" "angles" "0 90 0" "modelscale" "0.85" "fademindist" "128" "fademaxdist" "1024" "disablereceiveshadows" "1" "model" "models/props_mvm/no_entry.mdl" "disableshadows" "1" "solid" "0" "StartDisabled" "0" } NoFixup 1 prop_dynamic //middle { "targetname" "area2barriers" "origin" "192 2560 944" "angles" "0 90 0" "modelscale" "1" "fademindist" "128" "fademaxdist" "1024" "disablereceiveshadows" "1" "model" "models/props_mvm/no_entry.mdl" "disableshadows" "1" "solid" "0" "StartDisabled" "0" } NoFixup 1 prop_dynamic //middle2 { "targetname" "area2barriers" "origin" "640 2560 720" "angles" "0 90 0" "modelscale" "1.25" "fademindist" "128" "fademaxdist" "1024" "disablereceiveshadows" "1" "model" "models/props_mvm/no_entry.mdl" "disableshadows" "1" "solid" "0" "StartDisabled" "0" } NoFixup 1 prop_dynamic //left { "targetname" "area2barriers" "origin" "1088 2560 912" "angles" "0 90 0" "modelscale" "1.25" "fademindist" "128" "fademaxdist" "1024" "disablereceiveshadows" "1" "model" "models/props_mvm/no_entry.mdl" "disableshadows" "1" "solid" "0" "StartDisabled" "0" } } station { func_upgradestation { "mins" "-105 -100 0" "maxs" "105 100 242" "solid" "0" } NoFixup 1 prop_dynamic { "targetname" "upgradestation" "angles" "0 0 0" "DisableBoneFollowers" "0" "disablereceiveshadows" "0" "disableshadows" "1" "ExplodeDamage" "0" "ExplodeRadius" "0" "fademaxdist" "0" "fademindist" "-1" "fadescale" "1" "MaxAnimTime" "10" "maxdxlevel" "0" "MinAnimTime" "5" "mindxlevel" "0" "model" "models/props_mvm/mvm_upgrade_blu.mdl" "modelscale" "1" "PerformanceMode" "0" "pressuredelay" "0" "RandomAnimation" "0" "renderamt" "255" "renderfx" "0" "rendermode" "0" "SetBodyGroup" "0" "skin" "0" "solid" "0" "spawnflags" "0" "origin" "0 0 0" } func_upgradestation { "mins" "-100 -100 0" "maxs" "90 60 100" "parentname" "upgradestation" } NoFixup 1 prop_dynamic { "targetname" "shopcollision" "angles" "0 -90 0" "DisableBoneFollowers" "1" "disablereceiveshadows" "1" "model" "models/props_vehicles/train_flatcar_container.mdl" "disableshadows" "1" "ExplodeDamage" "0" "ExplodeRadius" "0" "fademaxdist" "0" "fademindist" "-1" "fadescale" "1" "MaxAnimTime" "10" "maxdxlevel" "0" "MinAnimTime" "5" "mindxlevel" "0" "modelscale" "1" "PerformanceMode" "0" "pressuredelay" "0" "RandomAnimation" "0" "renderamt" "0" "renderfx" "0" "rendermode" "10" "SetBodyGroup" "0" "skin" "0" "CollisionGroup" "5" "solid" "6" "spawnflags" "0" "StartDisabled" "0" "origin" "0 0 0" } } hatchblocker //hatch prop { NoFixup 1 prop_dynamic { "targetname" "hatchcover" "angles" "0 0 0" "DisableBoneFollowers" "1" "disablereceiveshadows" "1" "model" "models/props_hydro/water_machinery2.mdl" "disableshadows" "1" "ExplodeDamage" "0" "ExplodeRadius" "0" "fademaxdist" "0" "fademindist" "-1" "fadescale" "1" "MaxAnimTime" "10" "maxdxlevel" "0" "MinAnimTime" "5" "mindxlevel" "0" "modelscale" "1.2" "PerformanceMode" "0" "pressuredelay" "0" "RandomAnimation" "0" "renderamt" "100" "rendercolor" "100 100 255" "renderfx" "15" "rendermode" "0" "SetBodyGroup" "0" "CollisionGroup" "1" "skin" "0" "solid" "0" "spawnflags" "0" "StartDisabled" "0" "origin" "-544 3901 97" } } hatchblocker //hatch collision { NoFixup 1 func_forcefield { "disablereceiveshadows" "0" "origin" "43 691 648" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "targetname" "hatchcovercollision" "parentname" "hatchcover" "mins" "-120 -120 -120" "maxs" "120 120 120" "StartDisabled" "0" } } hatchunblocker { NoFixup 1 logic_relay { "targetname" "unblockhatch" "OnTrigger" "hatchcover,Kill,,0,-1" "OnTrigger" "hatchopen,Show,,0,-1" "OnTrigger" "thirdperson,Enable,,0,-1" } } annotation { NoFixup 1 training_annotation { "targetname" "hatchopen" "parentname" "hatch_prop" "display_text" "The bomb can now be deployed!" "lifetime" "10" "origin" "40 696 616" } } spawnpoints { // models NoFixup 1 prop_dynamic { "targetname" "spawnpoint_red1a" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "64 6048 736" "angles" "0 0 0" "skin" "3" } NoFixup 1 prop_dynamic { "targetname" "spawnpoint_red1b" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "1688 6304 736" "angles" "0 180 0" "skin" "3" } NoFixup 1 prop_dynamic { "targetname" "spawnpoint_red1c" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "1969 5452 696" "angles" "0 180 0" "skin" "3" } NoFixup 1 prop_dynamic { "targetname" "spawnpoint_red2a" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "960 3904 896" "angles" "0 90 0" "skin" "3" } NoFixup 1 prop_dynamic { "targetname" "spawnpoint_red2b" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "-280 3456 896" "angles" "0 0 0" "skin" "3" } NoFixup 1 prop_dynamic { "targetname" "spawnpoint_red2c" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "1696 2816 769" "angles" "0 180 0" "skin" "3" } NoFixup 1 prop_dynamic { "targetname" "spawnpoint_red3a" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "616 800 640" "angles" "0 180 0" "skin" "3" } NoFixup 1 prop_dynamic { "targetname" "spawnpoint_red3b" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "64 256 704" "angles" "0 90 0" "skin" "3" } NoFixup 1 prop_dynamic { "targetname" "spawnpoint_secret" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "-224 2240 656" "angles" "90 180 0" "skin" "2" } // off logic NoFixup 1 logic_relay { "targetname" "red1a_off_logic" "OnTrigger" "spawnpoint_red1a,skin,3,0,-1" } NoFixup 1 logic_relay { "targetname" "red1b_off_logic" "OnTrigger" "spawnpoint_red1b,skin,3,0,-1" } NoFixup 1 logic_relay { "targetname" "red1c_off_logic" "OnTrigger" "spawnpoint_red1b,skin,0,0,-1" } NoFixup 1 logic_relay { "targetname" "red2a_off_logic" "OnTrigger" "spawnpoint_red2a,skin,3,0,-1" } NoFixup 1 logic_relay { "targetname" "red2b_off_logic" "OnTrigger" "spawnpoint_red1b,skin,3,0,-1" } NoFixup 1 logic_relay { "targetname" "red2c_off_logic" "OnTrigger" "spawnpoint_red1b,skin,0,0,-1" } NoFixup 1 logic_relay { "targetname" "red3a_off_logic" "OnTrigger" "spawnpoint_red3a,skin,3,0,-1" } NoFixup 1 logic_relay { "targetname" "red3b_off_logic" "OnTrigger" "spawnpoint_red3b,skin,3,0,-1" } // on logic NoFixup 1 logic_relay { "targetname" "red1a_on_logic" "OnTrigger" "spawnpoint_red1a,skin,0,0,-1" } NoFixup 1 logic_relay { "targetname" "red1b_on_logic" "OnTrigger" "spawnpoint_red1b,skin,0,0,-1" } NoFixup 1 logic_relay { "targetname" "red1c_on_logic" "OnTrigger" "spawnpoint_red1b,skin,0,0,-1" } NoFixup 1 logic_relay { "targetname" "red2a_on_logic" "OnTrigger" "spawnpoint_red2a,skin,0,0,-1" } NoFixup 1 logic_relay { "targetname" "red2b_on_logic" "OnTrigger" "spawnpoint_red1b,skin,0,0,-1" } NoFixup 1 logic_relay { "targetname" "red2c_on_logic" "OnTrigger" "spawnpoint_red1b,skin,0,0,-1" } NoFixup 1 logic_relay { "targetname" "red3a_on_logic" "OnTrigger" "spawnpoint_red3a,skin,0,0,-1" } NoFixup 1 logic_relay { "targetname" "red3b_on_logic" "OnTrigger" "spawnpoint_red3b,skin,0,0,-1" } } EngineerSentry { KeepAlive 1 OnParentKilledOutput { Target "sentry_random_level" Action PickRandom Delay 0.00 } OnParentKilledOutput { Target "engineer_sentry_prop" Action Kill Delay 0.01 } OnParentKilledOutput { Target "sentry_random_level" Action Kill Delay 0.01 } logic_case { "targetname" "sentry_random_level" "OnCase01" "sentry_lvl1_maker,ForceSpawnAtEntityOrigin,engineer_sentry_prop,0,-1" "OnCase02" "sentry_lvl1_maker,ForceSpawnAtEntityOrigin,engineer_sentry_prop,0,-1" "OnCase03" "sentry_lvl1_maker,ForceSpawnAtEntityOrigin,engineer_sentry_prop,0,-1" "OnCase04" "sentry_lvl1_maker,ForceSpawnAtEntityOrigin,engineer_sentry_prop,0,-1" "OnCase05" "sentry_lvl1_maker,ForceSpawnAtEntityOrigin,engineer_sentry_prop,0,-1" "OnCase06" "sentry_lvl1_maker,ForceSpawnAtEntityOrigin,engineer_sentry_prop,0,-1" "OnCase07" "sentry_lvl1_maker,ForceSpawnAtEntityOrigin,engineer_sentry_prop,0,-1" "OnCase08" "sentry_lvl1_maker,ForceSpawnAtEntityOrigin,engineer_sentry_prop,0,-1" "OnCase09" "sentry_lvl2_maker,ForceSpawnAtEntityOrigin,engineer_sentry_prop,0,-1" "OnCase10" "sentry_lvl2_maker,ForceSpawnAtEntityOrigin,engineer_sentry_prop,0,-1" "OnCase11" "sentry_lvl3_maker,ForceSpawnAtEntityOrigin,engineer_sentry_prop,0,-1" } prop_dynamic { "targetname" "engineer_sentry_prop" "model" "models/buildables/sentry1.mdl" "skin" "0" "spawnflags" "0" "solid" "0" "DisableBoneFollowers" "1" "disablereceiveshadows" "1" "disableshadows" "1" "origin" "0 0 0" "angles" "0 0 0" } } sentry_lvl1_template { KeepAlive 1 OnSpawnOutput { Target "engineer_sentry" Action AddOutput Param "angles 0 0 0" Delay 0.00 } // Set builder of sentry to !activator (parent of template) (nothing) // This prevents bots from getting stuck / blocked by sentries OnSpawnOutput { Target "engineer_sentry" Action SetBuilder // The name's builder, Bob the Builder. Delay 0.00 } OnSpawnOutput { Target "engineer_sentry" Action RemoveHealth Param 696969 Delay 10 } obj_sentrygun { "targetname" "engineer_sentry" "defaultupgrade" "0" "spawnflags" "0" "TeamNum" "2" "skin" "1" "SolidToPlayer" "0" "disablereceiveshadows" "1" "disableshadows" "1" "origin" "0 0 0" "angles" "0 0 0" } } sentry_lvl2_template { KeepAlive 1 OnSpawnOutput { Target "engineer_sentry" Action AddOutput Param "angles 0 0 0" Delay 0.00 } // Set builder of sentry to !activator (parent of template) (nothing) // This prevents bots from getting stuck / blocked by sentries OnSpawnOutput { Target "engineer_sentry" Action SetBuilder // The name's builder, Bob the Builder. Delay 0.00 } OnSpawnOutput { Target "engineer_sentry" Action RemoveHealth Param 696969 Delay 10 } obj_sentrygun { "targetname" "engineer_sentry" "defaultupgrade" "1" "spawnflags" "0" "TeamNum" "2" "skin" "1" "SolidToPlayer" "0" "disablereceiveshadows" "1" "disableshadows" "1" "origin" "0 0 0" "angles" "0 0 0" } } sentry_lvl3_template { KeepAlive 1 OnSpawnOutput { Target "engineer_sentry" Action AddOutput Param "angles 0 0 0" Delay 0.00 } // Set builder of sentry to !activator (parent of template) (nothing) // This prevents bots from getting stuck / blocked by sentries OnSpawnOutput { Target "engineer_sentry" Action SetBuilder // The name's builder, Bob the Builder. Delay 0.00 } OnSpawnOutput { Target "engineer_sentry" Action RemoveHealth Param 696969 Delay 10 } obj_sentrygun { "targetname" "engineer_sentry" "defaultupgrade" "2" "spawnflags" "0" "TeamNum" "2" "skin" "1" "SolidToPlayer" "0" "disablereceiveshadows" "1" "disableshadows" "1" "origin" "0 0 0" "angles" "0 0 0" } } blimplogic { NoFixup 1 logic_relay { "targetname" "red_blimp_relay" "OnTrigger" "blimpbossred,Setteam,2,0.25,-1" } NoFixup 1 logic_relay { "targetname" "blimpcolor_relay" "OnTrigger" "blimpbossred,color,200 125 255,0.25,-1" } } } SpawnTemplate "corelogic" SpawnTemplate "annotation" SpawnTemplate "hatchunblocker" SpawnTemplate "spawnpoints" SpawnTemplate "barriers" SpawnTemplate "areabarriers" SpawnTemplate "blimplogic" SpawnTemplate { Name "station" "origin" "222 7385 674" "angles" "0 90 0" } SpawnTemplate { Name "station" "origin" "2206 7448 480" "angles" "0 90 0" } SpawnTemplate { Name "station" "origin" "1702 8658 748" "angles" "0 180 13" } ExtraSpawnPoint { Name "spawnbot_red1a" TeamNum 2 X "64" Y "6048" Z "768" } ExtraSpawnPoint { Name "spawnbot_red1b" TeamNum 2 X "1688" Y "6304" Z "768" } ExtraSpawnPoint { Name "spawnbot_red1c" TeamNum 2 X "1969" Y "5452" Z "728" } ExtraSpawnPoint { Name "spawnbot_red2a" TeamNum 2 X "960" Y "3904" Z "928" } ExtraSpawnPoint { Name "spawnbot_red2b" TeamNum 2 X "-280" Y "3456" Z "928" } ExtraSpawnPoint { Name "spawnbot_red2c" TeamNum 2 X "1696" Y "2816" Z "800" } ExtraSpawnPoint { Name "spawnbot_red3a" TeamNum 2 X "616" Y "800" Z "672" } ExtraSpawnPoint { Name "spawnbot_red3b" TeamNum 2 X "64" Y "256" Z "736" } Wave { WaitWhenDone 65 Checkpoint Yes StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } SpawnTemplate "hatchblocker" Explanation { Line "{blue}-----------------------------" Line "{blue}➤ YOU ARE NOW A ROBOT!" Line "{blue}➤ You have infinite ammo so you don't need to buy ammo capacity" Line "{blue}➤ Players can NOT deploy the bomb - Drop it for the robots at the hatch" Line "{blue}➤ Money is auto collected so you don't need to worry about missing any money" Line "{blue}-----------------------------" } WaveSpawn { Name w1a TotalCurrency 100 TotalCount 4 MaxActive 2 SpawnCount 2 Where spawnbot_red1a WaitBeforeStarting 10 WaitBetweenSpawns 5 FirstSpawnOutput { Target red1a_on_logic Action Trigger } DoneOutput { Target red1a_off_logic Action Trigger } Squad { TFBot { ClassIcon heavy_steelfist WeaponRestrictions MeleeOnly Class Heavyweapons Name "Giant Steel Gauntlet Heavy" Skill Expert Health 5000 Attributes "MiniBoss" Item "fists of steel" ItemAttributes { ItemName "fists of steel" "damage bonus" 1.5 } CharacterAttributes { "force distribute currency on death" 1 "move speed bonus" 0.5 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.3 "override footstep sound set" 2 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { ClassIcon scout_pocketpistol_lite Name "Giant Pocket Pistol Scout" WeaponRestrictions SecondaryOnly Template T_TFBot_Giant_Scout Item "pretty boy's pocket pistol" Item "ye olde baker boy" CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name w1a TotalCurrency 80 TotalCount 42 MaxActive 8 SpawnCount 4 Where spawnbot_red1b Where spawnbot_red1c WaitBeforeStarting 4 WaitBetweenSpawns 3 FirstSpawnOutput { Target red1b_on_logic Action Trigger } LastSpawnOutput { Target red1c_on_logic Action Trigger } TFBot { ClassIcon pyro_detonator_red Name "Detonator Pyro" Skill Hard Template T_TFBot_Pyro_Flaregun Item "the detonator" CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w1a_duo WaitForAllDead w1a FirstSpawnOutput { Target red1b_off_logic Action Trigger } LastSpawnOutput { Target red1c_off_logic Action Trigger } } WaveSpawn { Name w1a_barrier_disabled1 WaitForAllDead w1a FirstSpawnOutput { Target area1barriers Action Disable } } WaveSpawn { Name w1a_duo WaitForAllDead w1a } WaveSpawn { Name w1b WaitForAllDead w1a TotalCurrency 125 TotalCount 3 MaxActive 1 SpawnCount 1 Where spawnbot_red2a WaitBeforeStarting 3 WaitBetweenSpawns 3 FirstSpawnOutput { Target red2a_on_logic Action Trigger } TFBot { ClassIcon sniper_carbine Health 3300 Name "Giant Carbine Sniper" Class Sniper Skill Expert WeaponRestrictions SecondaryOnly Attributes "MiniBoss" Item "the cleaner's carbine" UseCustomModel "models/bots/sniper_boss/bot_sniper_boss.mdl" CharacterAttributes { "force distribute currency on death" 1 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 "override footstep sound set" 7 "move speed bonus" 0.4 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w1b WaitForAllDead w1a TotalCurrency 52 TotalCount 28 MaxActive 7 SpawnCount 1 Where spawnbot_red2a WaitBeforeStarting 3 WaitBetweenSpawns 1 TFBot { ClassIcon demo_sticky_red_daan WeaponRestrictions SecondaryOnly Health 175 Skill Hard Name "Sticky Bomber Demo" Class Demoman Item "tf_weapon_grenadelauncher" Item "tf_weapon_pipebomblauncher" Item "demoman hallmark" ItemAttributes { ItemName "TF_WEAPON_GRENADELAUNCHER" "is_passive_weapon" 1 "override projectile type" 15 } ItemAttributes { ItemName "TF_WEAPON_PIPEBOMBLAUNCHER" "damage bonus" 1.2 } CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w1b WaitForAllDead w1a TotalCurrency 40 TotalCount 20 MaxActive 5 SpawnCount 5 Where spawnbot_red2b WaitBeforeStarting 5 WaitBetweenSpawns 0 FirstSpawnOutput { Target red2b_on_logic Action Trigger } DoneOutput { Target red2b_off_logic Action Trigger } TFBot { Name "Jumping Sandman Scout" Skill Expert Template T_TFBot_Scout_Jumping_Sandman CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w1b_barrier_disabled2 WaitForAllDead w1b FirstSpawnOutput { Target area2barriers Action Disable } } WaveSpawn { Name w1c WaitForAllDead w1b TotalCurrency 200 TotalCount 6 MaxActive 3 SpawnCount 3 Where spawnbot_red3a WaitBeforeStarting 5 WaitBetweenSpawns 5 FirstSpawnOutput { Target red3a_on_logic Action Trigger } Squad { TFBot { ClassIcon heavy_shotgun_red Template T_TFBot_Giant_Heavyweapons_Shotgun CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Medic Tag bot_squad_member CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Medic Tag bot_squad_member CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name w1c WaitForAllDead w1b TotalCurrency 60 TotalCount 30 MaxActive 6 SpawnCount 2 Where spawnbot_red3b WaitBeforeStarting 0 WaitBetweenSpawns 2 FirstSpawnOutput { Target red3b_on_logic Action Trigger } TFBot { ClassIcon engineer_frontier_justice_nys Health 125 Name "Frontier Justice Engineer" Class Engineer Skill Hard WeaponRestrictions PrimaryOnly Action FetchFlag BehaviorModifiers Push Attributes "HoldFireUntilFullReload" Item "the frontier justice" Item "texas ten gallon" Item "duel medal gold" ItemAttributes { ItemName "The Frontier Justice" "critboost on kill" 3 "faster reload rate" -0.7 "fire rate penalty" 1.5 "item style override" 1 "loot rarity" 1 "is australium item" 1 "turn to gold" 1 } CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w1c_barrier_disabled WaitForAllDead w1c FirstSpawnWarningSound "alarm2cut.mp3" FirstSpawnOutput { Target unblockhatch Action Trigger } } WaveSpawn { Name Support WaitForAllDead w1c TotalCurrency 0 TotalCount 9999 MaxActive 6 SpawnCount 2 Where spawnbot_red3a Where spawnbot_red3b WaitBeforeStarting 5 WaitBetweenSpawns 10 RandomChoice { TFBot { ClassIcon spammer Health 125 Name "Pomson Engineer" Class Engineer Skill Hard WeaponRestrictions PrimaryOnly Attributes "AlwaysCrit" Action FetchFlag BehaviorModifiers Push Item "the pomson 6000" Item "the virtual reality headset" Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { ClassIcon spammer Health 200 Name "Cow Mangler Soldier" Class Soldier Skill Hard WeaponRestrictions PrimaryOnly Item "the cow mangler 5000" Item "lord cockswain's pith helmet" Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { ClassIcon spammer Health 125 Name "Capper Scout" Class Scout Skill Expert WeaponRestrictions SecondaryOnly Item "The C.A.P.P.E.R" Item "the virtual viewfinder" Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { ClassIcon spammer Health 175 Name "Mann Melter Pyro" Class Pyro Skill Expert WeaponRestrictions SecondaryOnly Attributes "AlwaysCrit" Item "the manmelter" Item "the triclops" Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name "Bomb Carrier" TotalCurrency 0 TotalCount 999 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 10 WaitBetweenSpawns 10 Support 1 RandomSpawn 1 TFBot { ClassIcon blu2_lite Health 800 Name "Skull Cutter Demoknight" Scale 1.4 Class Demoman Skill Easy AlwaysGlow 1 WeaponRestrictions MeleeOnly Item "ali baba's wee booties" Item "the splendid screen" Item "the scotsman's skullcutter" Item "the glasgow great helm" Item "the dark age defender" } } WaveSpawn { Name blusupport TotalCurrency 0 TotalCount 999 MaxActive 4 SpawnCount 4 Where spawnbot_flank_right WaitBeforeStarting 10 WaitBetweenSpawns 15 Support 1 RandomSpawn 1 TFBot { ClassIcon blu2_lite Health 200 Name Soldier Class Soldier Skill Expert BehaviorModifiers Push Attributes IgnoreFlag } } } Wave { WaitWhenDone 65 Checkpoint Yes StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } SpawnTemplate "hatchblocker" WaveSpawn { Name w2a TotalCurrency 126 TotalCount 3 MaxActive 1 SpawnCount 1 Where spawnbot_red1a WaitBeforeStarting 5 WaitBetweenSpawns 0 FirstSpawnOutput { Target red1a_on_logic Action Trigger } DoneOutput { Target red1a_off_logic Action Trigger } TFBot { ClassIcon spy_ambassador_lite Health 3300 Name "Giant Ambassador Spy" Class Spy Skill Expert WeaponRestrictions PrimaryOnly Action FetchFlag BehaviorModifiers Push Attributes "MiniBoss" Item "the ambassador" Item "fancy fedora" ItemAttributes { ItemName "the ambassador" "damage bonus" 1.5 } CharacterAttributes { "force distribute currency on death" 1 "cannot disguise" 1 "move speed bonus" 0.5 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.3 "override footstep sound set" 7 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2a TotalCurrency 36 TotalCount 36 MaxActive 6 SpawnCount 3 Where spawnbot_red1b WaitBeforeStarting 3 WaitBetweenSpawns 2 FirstSpawnOutput { Target red1b_on_logic Action Trigger } DoneOutput { Target red1b_off_logic Action Trigger } TFBot { ClassIcon pyro_phlog Name "Phlogistinator Pyro" Skill Hard Template T_TFBot_Pyro Attributes "SpawnWithFullCharge" Item "the phlogistinator" Item "the person in the iron mask" Item "The Phlogistinator" ItemAttributes { ItemName "The Phlogistinator" "airblast disabled" 0 "increase buff duration" 6.2 "mod rage on hit bonus" 420 "mult airblast refire time" 0.01 } CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2a TotalCurrency 48 TotalCount 24 MaxActive 6 SpawnCount 2 Where spawnbot_red1c WaitBeforeStarting 5 WaitBetweenSpawns 2 FirstSpawnOutput { Target red1c_on_logic Action Trigger } DoneOutput { Target red1c_off_logic Action Trigger } TFBot { ClassIcon sniper_huntsman_bleed Name "Bleeding Bowman" Skill Expert Template T_TFBot_Sniper_Huntsman Item "horrific headsplitter" CharacterAttributes { "bleeding duration" 3 "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2a_barrier_disabled1 WaitForAllDead w2a FirstSpawnOutput { Target area1barriers Action Disable } } WaveSpawn { Name w2b WaitForAllDead w2a TotalCurrency 100 TotalCount 5 MaxActive 1 SpawnCount 1 Where spawnbot_red2b WaitBeforeStarting 3 WaitBetweenSpawns 3 FirstSpawnOutput { Target red2b_on_logic Action Trigger } DoneOutput { Target red2b_off_logic Action Trigger } TFBot { Skill Hard Template T_TFBot_Giant_Scout_Fast Attributes "AlwaysCrit" CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2b WaitForAllDead w2a TotalCurrency 32 TotalCount 32 MaxActive 8 SpawnCount 2 Where spawnbot_red2a WaitBeforeStarting 4 WaitBetweenSpawns 2 FirstSpawnOutput { Target red2a_on_logic Action Trigger } DoneOutput { Target red2a_off_logic Action Trigger } TFBot { Health 200 Name Soldier Class Soldier Skill Normal CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2b WaitForAllDead w2a TotalCurrency 48 TotalCount 16 MaxActive 4 SpawnCount 2 Where spawnbot_red2c WaitBeforeStarting 8 WaitBetweenSpawns 3 FirstSpawnOutput { Target red2c_on_logic Action Trigger } DoneOutput { Target red2c_off_logic Action Trigger } TFBot { ClassIcon medic_crossbow Health 150 Name "Crossbow Medic" Class Medic Skill Normal WeaponRestrictions PrimaryOnly Action FetchFlag Attributes "IgnoreEnemies" Attributes "AlwaysCrit" Item "the crusader's crossbow" Item "berliner's bucket helm" CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2b_barrier_disabled1 WaitForAllDead w2b FirstSpawnOutput { Target area2barriers Action Disable } } WaveSpawn { Name w2c WaitForAllDead w2c TotalCurrency 200 TotalCount 4 MaxActive 2 SpawnCount 2 Where spawnbot_red3a WaitBeforeStarting 10 WaitBetweenSpawns 10 TFBot { Template T_TFBot_Giant_Soldier_Crit CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2c WaitForAllDead w2b TotalCurrency 50 TotalCount 28 MaxActive 7 SpawnCount 1 Where spawnbot_red3a WaitBeforeStarting 3 WaitBetweenSpawns 1 FirstSpawnOutput { Target red3a_on_logic Action Trigger } TFBot { ClassIcon pyro_homewrecker_lite Health 175 Name "Homewrecker Pyro" Class Pyro Skill Expert WeaponRestrictions MeleeOnly Item "the homewrecker" Item "respectless rubber glove" CharacterAttributes { "force distribute currency on death" 1 "dmg bonus vs buildings" 4.20 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2c WaitForAllDead w2b TotalCurrency 60 TotalCount 30 MaxActive 6 SpawnCount 2 Where spawnbot_red3b WaitBeforeStarting 5 WaitBetweenSpawns 2 FirstSpawnOutput { Target red3b_on_logic Action Trigger } TFBot { Template T_TFBot_Scout_FAN CharacterAttributes { "force distribute currency on death" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name Support WaitForAllDead w2c TotalCurrency 0 TotalCount 9999 MaxActive 9 SpawnCount 3 Where spawnbot_red3a Where spawnbot_red3b WaitBeforeStarting 0 WaitBetweenSpawns 2 RandomChoice { TFBot { ClassIcon spammer Template T_TFBot_Heavyweapons_Shotgun Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { ClassIcon spammer Health 175 Name "Loch-n-load Demoman" Class Demoman Skill Hard WeaponRestrictions PrimaryOnly Item "the loch-n-load" Item "glengarry bonnet" Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { ClassIcon spammer WeaponRestrictions MeleeOnly Health 125 Name "Smg Sniper" Class Sniper Skill Hard Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { ClassIcon spammer Health 175 Name Pyro Class Pyro Skill Hard Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { ClassIcon spammer Template T_TFBot_Sniper_Huntsman_Spammer Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name w2c_barrier_disabled WaitForAllDead w2c FirstSpawnWarningSound "alarm2cut.mp3" FirstSpawnOutput { Target unblockhatch Action Trigger } } WaveSpawn { Name "bomb carrier" TotalCurrency 0 TotalCount 999 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 10 WaitBetweenSpawns 10 Support 1 RandomSpawn 1 TFBot { ClassIcon blu2_lite Template T_TFBot_Heavy_IronFist_Airblast AlwaysGlow 1 Attributes "AlwaysCrit" } } WaveSpawn { Name "blu support" TotalCurrency 0 TotalCount 999 MaxActive 4 SpawnCount 2 Where spawnbot_flank_left Where spawnbot_flank_right WaitBeforeStarting 10 WaitBetweenSpawns 10 Support 1 RandomSpawn 1 RandomChoice { TFBot { ClassIcon blu2_lite Health 125 Name "Penetrating Bowman" Template T_TFBot_Sniper_Huntsman Skill Expert Item "festive huntsman" Item "the snaggletoothed stetson" BehaviorModifiers Push Attributes "IgnoreFlag" ItemAttributes { ItemName "festive huntsman" "projectile penetration" 1 } } TFBot { ClassIcon blu2_lite Health 125 Name "Marking Bowman" Template T_TFBot_Sniper_Huntsman Skill Expert Item "the huntsman" Item "holy hunter" BehaviorModifiers Push Attributes "IgnoreFlag" ItemAttributes { Itemname "holy hunter" "attach particle effect" 44 } ItemAttributes { ItemName "the huntsman" "mark for death" 5 } } TFBot { ClassIcon blu2_lite Name "Ignited Bowman" Template T_TFBot_Sniper_Huntsman Skill Expert Item "spine-chilling skull" BehaviorModifiers Push Attributes "IgnoreFlag" ItemAttributes { Itemname "the huntsman" "Set DamageType Ignite" 1 "attach particle effect" 13 } } TFBot { ClassIcon blu2_lite Name "Bleeding Bowman" Template T_TFBot_Sniper_Huntsman Skill Expert Item "voodoo juju" BehaviorModifiers Push Attributes "IgnoreFlag" ItemAttributes { Itemname "voodoo juju" "attach particle effect" 43 } CharacterAttributes { "bleeding duration" 5 } } TFBot { ClassIcon blu2_lite Name "Cannon Ball Bowman" Template T_TFBot_Sniper_Huntsman Item "the lone star" BehaviorModifiers Push Attributes "IgnoreFlag" CharacterAttributes { "override projectile type" 17 "hand scale" 0 } } } } } Wave { InitWaveOutput { Target boss_deploy_relay Action Trigger } } //bug workaround }