//Mission by Lackryx #base robot_giant.pop #base robot_standard.pop #base robot_gatebot.pop #base robot_standard_red.pop #base robot_giant_red.pop #base robot_gatebot_red.pop WaveSchedule { CustomNavFile "mvm_madhattan_rc5a_nav.nav" StartingCurrency 20000 CanBotsAttackWhileInSpawnRoom Yes //keep this so companion bots can combat spawn camping RespawnWaveTimeBlue 1 //replaces the normal respawn kv's FixedRespawnWaveTimeBlue 1 ReverseWinConditions 1 AllowJoinTeamBlueMax 6 AllowJoinTeamBlue 1 HumansMustJoinTeam Blue SetCreditTeam 3 SniperAllowHeadshots 1 ImprovedAirblast 1 SendBotsToSpectatorImmediately 1 //keeps the populator less clogged, bot projectiles vanish on death + causes weird killcams RobotLimit 27 //BluHumanInfiniteAmmo 1 //FlagCarrierMovementPenalty 1 // (default: 0.5) //BluHumanFlagCapture 1 //BluHumanFlagPickup 1 //BluPlayersAreRobots 1 Templates { T_TFBot_Red_Pyro_Expert_Flare_alt { Class Pyro Skill Expert Action Mobber Item "The Flare Gun" ClassIcon pyro_flare_red WeaponSwitch { Type "Secondary" MaxTargetRange 9999 MinTargetRange 301 Delay 0.1 Repeats 0 Cooldown 0 IfSeeTarget 1 } WeaponSwitch { Type "Primary" MaxTargetRange 300 MinTargetRange 0 Delay 0.1 Repeats 0 Cooldown 0 IfSeeTarget 1 } AimTrackingInterval 1 AimAt Head AddCond { Name TF_COND_REPROGRAMMED } Action Mobber CharacterAttributes { "crit mod disabled hidden" 0 "move speed bonus" 0.75 "airblast disabled" 1 } } T_TFBot_Red_Soldier_AirStrike { Class Soldier Skill Expert Name "Airstrike Soldier" item "The Air Strike" Item "The War Pig" Item "The Mantreads" Item "The B.A.S.E. jumper" AddCond { Name TF_COND_REPROGRAMMED } Action Mobber ClassIcon soldier_airstrike_lite RocketJump 2 AimLeadProjectileSpeed 1 AimAt feet Attributes HoldFireUntilFullReload ItemAttributes { ItemName "TF_WEAPON_ROCKETLAUNCHER" "faster reload rate" 0.5 } CharacterAttributes { "cancel falling damage" 1 "crit mod disabled hidden" 0 "dmg taken from self reduced" 0.01 "self dmg push force increased" 100 } } T_TFBot_Red_Scout_alt { Class Scout Skill Hard //UseBestWeapon 1 //switches weapon based on ammo in clip and player distance AddCond { Name TF_COND_REPROGRAMMED } Action Mobber CharacterAttributes { "crit mod disabled hidden" 0 } } T_TFBot_Red_Heavyweapons_Heater_alt { Class Heavyweapons ClassIcon heavy_heater Skill Expert AddCond { Name TF_COND_REPROGRAMMED } Action Mobber Item "The Huo Long Heatmaker" } T_TFBot_Red_Soldier_CowMangler_Sniper { Class Soldier ClassIcon soldier_cowmangler Action Sniper Skill Expert Item "The Cow Mangler 5000" Item "The Escape Plan" Item "Lord Cockswain's Pith Helmet" Name "Cow Mangler Soldier" AddCond { Name TF_COND_REPROGRAMMED } ItemAttributes { ItemName "The Cow Mangler 5000" "faster reload rate" 0.01 "fire rate bonus" 5 } AimLeadProjectileSpeed 1100 } } ExtraSpawnPoint { Name "red_spawnbot_upper1" TeamNum 2 X "600" Y "-3574" Z "4" StartDisabled 1 } ExtraSpawnPoint { Name "red_spawnbot_upper2" TeamNum 2 X "-26" Y "-3612" Z "4" StartDisabled 1 } ExtraSpawnPoint { Name "red_spawnbot_floor1" TeamNum 2 X "-239" Y "-3386" Z "-172" } ExtraSpawnPoint { Name "red_spawnbot_floor2" TeamNum 2 X "351" Y "-2866" Z "-172" } ExtraSpawnPoint { Name "red_spawnbot_floor3" TeamNum 2 X "945" Y "-3136" Z "-165" } ExtraSpawnPoint { Name "red_spawnbot_spawnroom_doors" TeamNum 2 X "1134" Y "-2250" Z "-172" } ExtraSpawnPoint { Name "red_spawnbot_upper3" TeamNum 2 X "-1158" Y "-3785" Z "260" StartDisabled 1 } ExtraSpawnPoint { Name "red_spawnbot_spawnroom_upper" TeamNum 2 X "-1517" Y "-2115" Z "340" } ExtraSpawnPoint { Name "red_spawnbot_spawnroom_gate1side" TeamNum 2 X "1221" Y "-970" Z "153" } ExtraSpawnPoint { Name "red_spawnbot_upper4" TeamNum 2 X "-780" Y "-3109" Z "260" StartDisabled 1 } ExtraSpawnPoint { Name "red_spawnbot_bridge1" TeamNum 2 X "817" Y "-2290" Z "5" } ExtraSpawnPoint { Name "red_spawnbot_floor4" TeamNum 2 X "1358.78" Y "-2512" Z "-172" } ExtraSpawnPoint { Name "blue_spawnbot_main" TeamNum 3 X "-1868" Y "-2936" Z "-36" } ExtraSpawnPoint { Name "blue_spawnbot_main" TeamNum 3 X "-1637" Y "-3100" Z "-36" } ExtraSpawnPoint { Name "blue_spawnbot_main" TeamNum 3 X "-1640" Y "-2771" Z "-36" } ExtraTankPath //Adds tank path to follow { Name "objective" node "-1135.80 -2236.47 226.01" node "-1135.80 -2236.47 226.01" } ExtraTankPath //Adds tank path to follow { Name "objective2" node "1020.13 -2479.12 -28.58" node "1020.13 -2479.12 -28.58" } ExtraTankPath //Adds tank path to follow { Name "objective3" node "649.07 -3624.09 -30.59" node "649.07 -3624.09 -30.59" } 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" "OnMapSpawn" "item_ammopack*,Kill,,0,-1" //might want to comment this out if players have limited ammo "OnMapSpawn" "spawnbot*,Kill,,0,-1" //deletes all original blue spawnpoint "OnMapSpawn" "gate0_bot_t*,Kill,,0,-1" //deletes all original teleport trigger "OnMapSpawn" "gate1_bot_t*,Kill,,0,-1" "OnMapSpawn" "gate2_bot_t*,Kill,,0,-1" "OnMapSpawn" "func_nav_prerequisite,disable,,0,-1" //disables all func_nav_prerequisite "OnMapSpawn" "func_nav_avoid,disable,,0,-1" //disables all func_nav_avoid "OnMapSpawn" "func_tfbot_hint,kill,,0,-1" //kills all default tfbot hint "OnMapSpawn" "bot_hint_engineer_nest,kill,,0,-1" //kills all default engie hint "OnMapSpawn" "bot_hint_sentrygun,kill,,0,-1" "OnMapSpawn" "blue_spawnroom_door_right,kill,,0,-1" "OnMapSpawn" "blue_spawnroom_door_left,kill,,0,-1" "OnMapSpawn" "gate1_blue_door,kill,,0,-1" "OnMapSpawn" "func_respawnroomvisualizer,kill,,0,-1" //changing lower blue spawn into red spawn "onmapspawn" "blue_respawnroomrunscriptcodeif(self.GetBoundingMaxs().tostring()==Vector(1189,-1985,-92).tostring())self.KeyValueFromString(`targetname`,`red_respawnroom_doors`)0-1" "onmapspawn" "red_respawnroom_doors,setteam,2,0.1,-1" "onmapspawn" "red_respawnroom_doors,addoutput,onstarttouch !activator:$addcond:51:0:-1,0.1,-1" "onmapspawn" "red_respawnroom_doors,addoutput,onendtouch !activator:$removecond:51:0:-1,0.1,-1" //deleting blue visualizer //"onmapspawn" "func_respawnroomvisualizerrunscriptcodeif(self.GetOrigin().tostring()==Vector(1036,-2253,-172.5).tostring())self.Kill()0-1" //changing main blue spawn into red spawn //"onmapspawn" "blue_respawnroomrunscriptcodeif(self.GetBoundingMaxs().tostring()==Vector(3553,-671,1521).tostring())self.KeyValueFromString(`targetname`,`red_respawnroom_main`)0-1" //"onmapspawn" "red_respawnroom_main,setteam,2,0.1,-1" //"onmapspawn" "red_respawnroom_main,addoutput,onstarttouch !activator:$addcond:51:0:-1,0.1,-1" //"onmapspawn" "red_respawnroom_main,addoutput,onendtouch !activator:$removecond:51:0:-1,0.1,-1" //changing 1st gate main blue spawn into red spawn //"onmapspawn" "blue_respawnroomrunscriptcodeif(self.GetBoundingMaxs().tostring()==Vector(-1413,-2982,1544.88).tostring())self.KeyValueFromString(`targetname`,`red_respawnroom_gate1`)0-1" //"onmapspawn" "red_respawnroom_gate1,setteam,2,0.1,-1" //"onmapspawn" "red_respawnroom_gate1,addoutput,onstarttouch !activator:$addcond:51:0:-1,0.1,-1" //"onmapspawn" "red_respawnroom_gate1,addoutput,onendtouch !activator:$removecond:51:0:-1,0.1,-1" //changing 1st gate side spawn into red spawn "onmapspawn" "blue_respawnroomrunscriptcodeif(self.GetBoundingMaxs().tostring()==Vector(1715,-647,264).tostring())self.KeyValueFromString(`targetname`,`red_respawnroom_gate1side`)0-1" "onmapspawn" "red_respawnroom_gate1side,setteam,2,0.1,-1" "onmapspawn" "red_respawnroom_gate1side,addoutput,onstarttouch !activator:$addcond:51:0:-1,0.1,-1" "onmapspawn" "red_respawnroom_gate1side,addoutput,onendtouch !activator:$removecond:51:0:-1,0.1,-1" //deleting blue visualizer //"onmapspawn" "func_respawnroomvisualizerrunscriptcodeif(self.GetOrigin().tostring()==Vector(-1224 -2248 456).tostring())self.Kill()0-1" //changing 2nd gate main blue spawn into red spawn //"onmapspawn" "blue_respawnroomrunscriptcodeif(self.GetBoundingMaxs().tostring()==Vector(-3069,-711,3073).tostring())self.KeyValueFromString(`targetname`,`red_respawnroom_gate2`)0-1" //"onmapspawn" "red_respawnroom_c,setteam,2,0.1,-1" //"onmapspawn" "red_respawnroom_c,addoutput,onstarttouch !activator:$addcond:51:0:-1,0.1,-1" //"onmapspawn" "red_respawnroom_c,addoutput,onendtouch !activator:$removecond:51:0:-1,0.1,-1" //weird non functionning blue spawn, can't be changed to red spawn //"onmapspawn" "blue_respawnroomrunscriptcodeif(self.GetBoundingMaxs().tostring()==Vector(-1423,-3279,2081).tostring())self.KeyValueFromString(`targetname`,`red_respawnroom_d`)0-1" //"onmapspawn" "red_respawnroom_d,setteam,2,0.1,-1" //"onmapspawn" "red_respawnroom_d,addoutput,onstarttouch !activator:$addcond:51:0:-1,0.1,-1" //"onmapspawn" "red_respawnroom_d,addoutput,onendtouch !activator:$removecond:51:0:-1,0.1,-1" //changing 2nd gate side spawn //"onmapspawn" "blue_respawnroomrunscriptcodeif(self.GetBoundingMaxs().tostring()==Vector(-1235,877,3099).tostring())self.KeyValueFromString(`targetname`,`red_respawnroom_gate2side`)0-1" //"onmapspawn" "red_respawnroom_gate2side,setteam,2,0.1,-1" //"onmapspawn" "red_respawnroom_gate2side,addoutput,onstarttouch !activator:$addcond:51:0:-1,0.1,-1" //"onmapspawn" "red_respawnroom_gate2side,addoutput,onendtouch !activator:$removecond:51:0:-1,0.1,-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" "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" //func_respawnroomvisualizer coord //[-1224 -2248 456] //[-1616 -1057 108.25] //[-1612 -1704 340] //[-1245 -1618.96 1008] //[303 2016 -95.95] //[-1018.5 -2329 273] //[-1017.5 -2755 315.34] //[-1402 -2912 406] //[-1471 -531 180] //[1724 -1810 112.25] //[1240 -1285.5 184] //[-1235 -2258.5 51.95] //[-1614 -1704 688] //[895 -252 310] //[-367 2016 -95.95] //[904 -1112 -136] //[1564.6 -3112 -148] //[-1076 -3272 -260] } 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" "tankbossred,Setteam,2,0.25,-1" //"OnTrigger" "tankbossred,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 //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" "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" } } annotations { NoFixup 1 training_annotation { "targetname" "hint" "display_text" "This is an annotation! Use these to convey important information to players" "lifetime" "10" "origin" "2926.356201 -3175.968750 -61.9686" } } blockers { NoFixup 1 func_forcefield //left path barrier { "targetname" "manorsideexit_blocker" "disablereceiveshadows" "0" "origin" "-45 -1978 -10" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" //"parentname" "manorleftpathbarrier3" "mins" "-100 -25 -200" "maxs" "100 25 500" "StartDisabled" "0" } func_forcefield //left path barrier { "targetname" "manorsideexit_blocker" "disablereceiveshadows" "0" "origin" "-45 -1978 -10" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "3" //"parentname" "manorleftpathbarrier3" "mins" "-100 -25 -200" "maxs" "100 25 500" "StartDisabled" "0" } prop_dynamic //left path barrier props { "targetname" "manorsideexit_prop" "model" "models\props_2fort\corrugated_metal001.mdl" "origin" "-175 -1980 4.03" "angles" "0 90 45" "disableshadows" "1" "skin" "0" "solid" "0" "modelscale" "1.75" } prop_dynamic //left path barrier props { "targetname" "manorsideexit_prop" "model" "models\props_2fort\corrugated_metal003.mdl" "origin" "60 -1980 -25" "angles" "0 90 -25" "disableshadows" "1" "skin" "0" "solid" "0" "modelscale" "1.75" } prop_dynamic //left path barrier props { "targetname" "manorsideexit_prop" "model" "models\props_2fort\corrugated_metal007.mdl" "origin" "-45 -1978 -10" "angles" "0 90 65" "disableshadows" "1" "skin" "0" "solid" "0" "modelscale" "1.5" } func_forcefield //main manor exit barrier { "targetname" "manormainexit_blocker" //"parentname" "tankmainpathblocker" "disablereceiveshadows" "0" "origin" "777 -1978 4" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "mins" "-120 -30 -300" "maxs" "120 50 300" "StartDisabled" "0" } func_forcefield //main manor exit barrier { "targetname" "manormainexit_blocker" //"parentname" "tankmainpathblocker" "disablereceiveshadows" "0" "origin" "777 -1978 4" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "3" "mins" "-120 -30 -300" "maxs" "120 50 300" "StartDisabled" "0" } prop_dynamic //main manor exit prop barrier { "targetname" "manormainexit_prop" "model" "models\bots\boss_bot\boss_tankred.mdl" "origin" "777 -1875 -80" "angles" "0 -90 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "1.35" } func_forcefield //1st gate main entrance { "targetname" "gate1mainentrance_blocker" "disablereceiveshadows" "0" "origin" "1229.91 -2198.51 10" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "mins" "-20 -150 -150" "maxs" "20 150 400" "StartDisabled" "0" } prop_dynamic //1st gate main entrance prop barrier { "targetname" "gate1mainentrance_prop" "model" "models/mvm/barrier/barrier_oneway_red1.mdl" "origin" "1210 -2180 40" "angles" "90 90 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "1" } func_forcefield //1st gate exit barrier { "targetname" "gate1exit_blocker" "disablereceiveshadows" "0" "origin" "1000 -1525 1" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "mins" "-40 -150 -150" "maxs" "0 150 400" "StartDisabled" "0" } func_forcefield //1st gate exit barrier { "targetname" "gate1exit_blocker" "disablereceiveshadows" "0" "origin" "1000 -1525 1" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "3" "mins" "-40 -150 -150" "maxs" "0 150 400" "StartDisabled" "0" } prop_dynamic //gate1 exit prop barrier { "targetname" "gate1exit_prop" "model" "models/mvm/barrier/barrier_oneway_red1.mdl" "origin" "1000 -1525 1" "angles" "90 90 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "1.1" } func_forcefield //upper barrier { "targetname" "upper_blocker" "disablereceiveshadows" "0" "origin" "274.43 -3280 1" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "mins" "-600 -25 1" "maxs" "500 20 500" "StartDisabled" "0" } prop_dynamic //upper prop barrier 1 { "targetname" "upper_prop" "model" "models/mvm/barrier/barrier_oneway_red1.mdl" "origin" "200 -3280 100" "angles" "0 0 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "1" } prop_dynamic //upper prop barrier 2 { "targetname" "upper_prop" "model" "models/mvm/barrier/barrier_oneway_red1.mdl" "origin" "-178 -3280 100" "angles" "0 0 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "1" } prop_dynamic //upper prop barrier 3 { "targetname" "upper_prop" "model" "models/mvm/barrier/barrier_oneway_red1.mdl" "origin" "578 -3280 100" "angles" "0 0 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "1" } func_forcefield //upper high barrier 1 { "targetname" "highupper_blocker" "disablereceiveshadows" "0" "origin" "-1021 -2719 256" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "mins" "-5 -250 -150" "maxs" "35 500 500" "StartDisabled" "0" } func_forcefield //upper high barrier 2 { "targetname" "highupper_blocker" "origin" "-1123.88 -2223.87 257.03" "mins" "-100 -100 270" "maxs" "100 100 800" "disablereceiveshadows" "0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "StartDisabled" "0" } prop_dynamic //upper high barrier prop 1 { "targetname" "highupper_prop" "model" "models/mvm/barrier/barrier_oneway_red1.mdl" "origin" "-1015 -2877 320" "angles" "0 90 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "0.7" } prop_dynamic //upper high barrier prop 2 { "targetname" "highupper_prop" "model" "models/mvm/barrier/barrier_oneway_red1.mdl" "origin" "-1015 -2610 320" "angles" "0 90 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "0.7" } prop_dynamic //upper high barrier prop 3 { "targetname" "highupper_prop" "model" "models/mvm/barrier/barrier_oneway_red1.mdl" "origin" "-1015 -2350 320" "angles" "0 90 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "0.7" } prop_dynamic //upper high barrier prop 4 { "targetname" "highupper_prop" "model" "models/mvm/barrier/barrier_oneway_red1.mdl" "origin" "-1129 -2220 293" "angles" "0 0 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "0.6" } func_forcefield //gate1 lower entry { "targetname" "gate1lowerentry_blocker" "disablereceiveshadows" "0" "origin" "1211 -2979 -175" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "mins" "-5 -150 -150" "maxs" "35 150 500" "StartDisabled" "0" } prop_dynamic //gate1 lower entry prop { "targetname" "gate1lowerentry_prop" "model" "models/mvm/barrier/barrier_oneway_red1.mdl" "origin" "1211 -2979 -175" "angles" "90 90 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "0.9" } } station { func_upgradestation { "targetname" "blu" "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_center.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" } NoFixup 1 prop_dynamic { "targetname" "upgradestation1" "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_tools.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 { "targetname" "blu" "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" } } initialspawn_teleport { NoFixup 1 trigger_teleport { "targetname" "player_spawn_teleport" "origin" "-1548 -2923 532" //put this where the bots spawn "spawnflags" "4097" // allows clients but disallows bots "target" "revspawn_teleport_dest" "mins" "-256 -256 -50" "maxs" "256 256 256" "StartDisabled" 0 "spawnflags" 1 } NoFixup 1 info_target { "targetname" "revspawn_teleport_dest" "origin" "-1868 -2936 -20" // put this in spawn, I think you can have multiple of these scattered around and it'll randomly pick when teleporting } } spawnblockers //replacement for blue visualizer with red forcefield, blocking hole in spawn and visual prop { func_forcefield { "targetname" "antiblu_forcefield" //"parentname" "blue_spawnroom_door_right" "teamnum" "2" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "origin" "1036 -2253 -172.5" "angles" "0 0 0" "mins" "-50 -30 -50" "maxs" "50 30 50" "StartDisabled" "0" "disablereceiveshadows" "0" } func_forcefield { "targetname" "antiblu_forcefield" //"parentname" "blue_spawnroom_door_right" "teamnum" "2" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "origin" "-2258 -3072 -50" "angles" "0 0 0" "mins" "-30 -120 0" "maxs" "0 120 500" "StartDisabled" "0" "disablereceiveshadows" "0" } prop_dynamic { "targetname" "carrierblocker" "model" "models\bots\boss_bot\carrierfull.mdl" "origin" "-3300 -2200 -196" "angles" "0 -45 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "1" } prop_dynamic { "targetname" "tankblocker" "model" "models\bots\boss_bot\static_boss_tank.mdl" "origin" "-2412 -3487 -100" "angles" "0 90 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "1.5" } func_forcefield { "targetname" "antiblue_forcefield" //"parentname" "blue_spawnroom_door_right" "teamnum" "2" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "origin" "-2141 -3292 -50" "angles" "0 0 0" "mins" "-100 -50 0" "maxs" "100 50 500" "StartDisabled" "0" "disablereceiveshadows" "0" } func_forcefield //main blue spawn exit barrier { "targetname" "antiblue_forcefield_spawn" //"parentname" "blue_spawnroom_door_right" "teamnum" "2" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "origin" "-1411 -2910 -50" "angles" "0 0 0" "mins" "-100 -350 -150" "maxs" "100 350 500" "StartDisabled" "0" "disablereceiveshadows" "0" } func_forcefield { "targetname" "antiblue_gate1sidespawn" "teamnum" "2" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "origin" "1237 -1280 153" "angles" "0 0 0" "mins" "-100 -20 -100" "maxs" "100 50 100" "StartDisabled" "0" "disablereceiveshadows" "0" } prop_dynamic //visual fluff { "targetname" "crate" "model" "models\props_hydro\barrel_crate.mdl" "origin" "-1955 -3209 -110" "angles" "0 90 0" "disableshadows" "1" "skin" "0" "solid" "1" "modelscale" "1.5" } prop_dynamic //visual fluff { "targetname" "bookcase" "model" "models\props_manor\bookcase_132_01.mdl" "origin" "-2160 -3432 -110" "angles" "0 90 0" "disableshadows" "1" "skin" "0" "solid" "0" "modelscale" "2" } prop_dynamic //visual fluff { "targetname" "bookcase" "model" "models\props_manor\bookcase_132_01.mdl" "origin" "-2160 -3432 70" "angles" "0 90 0" "disableshadows" "1" "skin" "0" "solid" "0" "modelscale" "2" } prop_dynamic //visual fluff { "targetname" "bookcase" "model" "models\props_manor\bookcase_132_01.mdl" "origin" "-2000 -3350 -110" "angles" "0 180 0" "disableshadows" "1" "skin" "0" "solid" "0" "modelscale" "2" } prop_dynamic //visual fluff { "targetname" "bookcase" "model" "models\props_manor\bookcase_132_01.mdl" "origin" "-2000 -3350 70" "angles" "0 180 0" "disableshadows" "1" "skin" "0" "solid" "0" "modelscale" "2" } prop_dynamic //visual fluff { "targetname" "wall" "model" "models\props_mining\support_wall001a.mdl" "origin" "-1422 -2930 310" "angles" "0 180 90" "disableshadows" "1" "skin" "0" "solid" "0" "modelscale" "2" } prop_dynamic //visual fluff { "targetname" "wall" "model" "models\props_mining\support_wall001a.mdl" "origin" "-1422 -3300 310" "angles" "0 180 90" "disableshadows" "1" "skin" "0" "solid" "0" "modelscale" "2" } func_forcefield { "targetname" "antiblu_sidespawn" //"parentname" "blue_spawnroom_door_right" "teamnum" "2" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "origin" "-1258.40 -2301.66 -12" "angles" "0 0 0" "mins" "-40 -100 -150" "maxs" "40 200 400" "StartDisabled" "0" "disablereceiveshadows" "0" } //models\props_manor\bookcase_132_01.mdl //models\props_manor\grandfather_clock_01.mdl //models\props_2fort\miningcrate002.mdl //models\props_hydro\barrel_crate.mdl //models\props_mining\support_wall001a.mdl } sentry { NoFixup 1 obj_sentrygun { "targetname" "turret" "origin" "0 0 0" "teamnum" "2" "SolidToPlayer" "1" "defaultupgrade" "1" "modelscale" 1 } } redspawn_visual //marker for red spawn outside dedicated spawnpoint { NoFixup 1 prop_dynamic { "targetname" "spawnpointprops" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "skin" "0" // Skin 0 for Red, Skin 1 for Blue, Skin 2 for Gray, and Skin 3 to disable the hologram } } nav_stuff { NoFixup 1 func_nav_avoid { "targetname" "outsidemanor" "team" "2" "mins" "-1000 -500 -1000" "maxs" "1000 500 1000" "origin" "80 -1652 79" "StartDisabled" "0" "tags" "common" //"tags" "giant" } NoFixup 1 func_nav_prerequisite { "targetname" "uppernav" "mins" "-500 -200 -1000" "maxs" "500 200 1000" "origin" "86.50 -3512 4" "StartDisabled" "0" "start_disabled" "0" "Task" "2" "Value" "-1" "Entity" "gate" "filtername" "filter_upper" "spawnflags" "1" } NoFixup 1 filter_tf_bot_has_tag //our tag { "Negated" "0" "require_all_tags" "1" "tags" "bot_upper" "targetname" "filter_upper" } } sniper_hint { func_tfbot_hint { "hint" "0" "targetname" "sniperhint_manor" "TeamNum" "2" "StartDisabled" "0" } } engie_hint { bot_hint_engineer_nest { "targetname" "allnest" "TeamNum" "2" "origin" "-1089 -3623 230" } } sentry_hint { bot_hint_sentrygun { "targetname" "allnest" "TeamNum" "2" "origin" "-965 -3616 230" } } tele_hint { bot_hint_teleporter_exit { "targetname" "allnest" "TeamNum" "2" "origin" "-965 -3660 230" } } wave1_logic { NoFixup 1 logic_relay { "Targetname" "wave1_logic1" "OnSpawn" "antiblue_forcefield_spawn,disable,,0,-1" "OnTrigger" "upper_blocker,disable,,0,-1" "OnTrigger" "upper_prop,disable,,0,-1" "OnTrigger" "red_spawnbot_upper1,enable,,0,-1" "OnTrigger" "red_spawnbot_upper2,enable,,0,-1" "OnTrigger" "red_spawnbot_upper3,enable,,0,-1" } logic_relay { "Targetname" "wave1_logic2" "OnTrigger" "highupper_blocker,disable,,0,-1" "OnTrigger" "highupper_prop,disable,,0,-1" } math_counter { "targetname" "wave1_counter" "startvalue" 0 "max" 2 "OnHitMax" "wave1_logic1,trigger,,0,-1" } } boss_counter { NoFixup 1 logic_relay { "targetname" "logic" "OnSpawn" "!Activator,addoutput,$OnKilled wave1_counter:add:1:0:-1,0,-1" } } } SpawnTemplate "corelogic" SpawnTemplate "annotations" Spawntemplate "blockers" SpawnTemplate "initialspawn_teleport" Spawntemplate "spawnblockers" Spawntemplate "nav_stuff" SpawnTemplate //specify origin/angles here for templates we use multiple times { Name "station" "origin" "-2150 -3240 -110" "angles" "0 90 0" } SpawnTemplate //upper1 spawn { Name "redspawn_visual" "origin" "600 -3574 -60" } SpawnTemplate //upper2 spawn { Name "redspawn_visual" "origin" "-26 -3612 -60" } SpawnTemplate { Name "redspawn_visual" "origin" "-239 -3386 -250" } SpawnTemplate { Name "redspawn_visual" "origin" "351 -2866 -240" } SpawnTemplate { Name "redspawn_visual" "origin" "1134 -2250 -250" } SpawnTemplate { Name "redspawn_visual" "origin" "-1158 -3785 190" } SpawnTemplate { Name "redspawn_visual" "origin" "-1517 -2115 260" } SpawnTemplate { Name "redspawn_visual" "origin" "817 -2290 -70" } SpawnTemplate { Name "redspawn_visual" "origin" "-1221 -970 20" } SpawnTemplate //upper4 spawn { Name "redspawn_visual" "origin" "-780 -3109 190" } SpawnTemplate //floor3 spawn { Name "redspawn_visual" "origin" "945 -3136 -240" } SpawnTemplate { Name "engie_hint" "origin" "-1089 -3623 260" } SpawnTemplate { Name "sentry_hint" "origin" "-965 -3616 260" } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } SpawnTemplate { Name "sniper_hint" "Origin" "-740 -3111 267" } SpawnTemplate { Name "sentry" "origin" "341 -3175 -240" "angles" "0 160 0" } SpawnTemplate { Name "sentry" "origin" "-151 -2115 -55" "angles" "0 180 0" } SpawnTemplate { Name "sentry" "origin" "691.30 -3165 -70" "angles" "0 45 0" } SpawnTemplate "wave1_logic" SpawnTemplate "engie_hint" SpawnTemplate "sentry_hint" SpawnTemplate "tele_hint" WaveSpawn { Name "wave1_1a" Where red_spawnbot_upper3 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TFBot { Template T_TFBot_Red_Engineer_Sentry_Battle Attributes AlwaysFireWeapon Attributes IgnoreEnemies WeaponRestrictions MeleeOnly } } } }