#base robot_standard.pop #base robot_giant.pop #base robot_vernit.pop #base robotize_lines.pop WaveSchedule { StartingCurrency 1200 CanBotsAttackWhileInSpawnRoom yes RespawnWaveTime 5 RespawnWaveTimeBlue 5 FixedRespawnWaveTimeBlue 1 Advanced 1 // Essential stuff ReverseWinConditions 1 AllowJoinTeamBlueMax 6 AllowJoinTeamBlue 1 HumansMustJoinTeam Blue SetCreditTeam 3 SniperAllowHeadshots 1 //sniper and amby un-exist without this ForceHoliday 2 ForceRedMoney 1 NoSapUnownedBuildings 1 NoRomevisionCosmetics 1 NoRedBotsRandomCrit 1 ImprovedAirblast 1 StandableHeads 1 SendBotsToSpectatorImmediately 1 SentryBusterFriendlyFire 0 // SniperHideLasers 1 RobotLimit 27 BluPlayersAreRobots 1 BluHumanFlagCapture 1 //Can blu humans capture the flag BluHumanFlagPickup 1 BluHumanInfiniteAmmo 1 BluHumanInfiniteCloak 0 FlagCarrierMovementPenalty 1 BotTeleportUberDuration 0 BluHumanTeleportOnSpawn 1 BluHumanBotTeleporter 0 TextPrintTime 6 BotsRandomCrit 0 NoRedBotsRandomCrit 1 BodyPartScaleSpeed 50 MedigunShieldDamage 1 MaxSpeedLimit 800 // Max speed limit override. Values above 520 fix max speed on non scout bots. Values above 521 disable jumping on stuck CustomNavFile "mvm_area_52_rev" PrecacheModel "models/props_mvm/mvm_upgrade_blu.mdl" PrecacheModel "models/props_mvm/reversemvm_redwall_696x337.mdl" PrecacheModel "models/props_mvm/robot_spawnpoint.mdl" PrecacheModel "models/weapons/w_models/w_atomball.mdl" PrecacheModel "models/weapons/w_models/w_atomball_blu.mdl" PrecacheModel "models/weapons/c_models/c_atomball_blu.mdl" PrecacheModel "models/weapons/c_models/c_demo_bot_arms.mdl" PrecacheModel "models/weapons/c_models/c_demo_bot_animations.mdl" PrecacheModel "models/weapons/c_models/c_engineer_bot_arms.mdl" PrecacheModel "models/weapons/c_models/c_engineer_bot_gunslinger.mdl" PrecacheModel "models/weapons/c_models/c_engineer_bot_animations.mdl" PrecacheModel "models/weapons/c_models/c_engineer_bot_gunslinger_animations.mdl" PrecacheModel "models/weapons/c_models/c_heavy_bot_arms.mdl" PrecacheModel "models/weapons/c_models/c_heavy_bot_animations.mdl" PrecacheModel "models/weapons/c_models/c_medic_bot_arms.mdl" PrecacheModel "models/weapons/c_models/c_medic_bot_animations.mdl" PrecacheModel "models/weapons/c_models/c_pyro_bot_arms.mdl" PrecacheModel "models/weapons/c_models/c_pyro_bot_animations.mdl" PrecacheModel "models/weapons/c_models/c_scout_bot_arms.mdl" PrecacheModel "models/weapons/c_models/c_scout_bot_animations.mdl" PrecacheModel "models/weapons/c_models/c_soldier_bot_arms.mdl" PrecacheModel "models/weapons/c_models/c_soldier_bot_animations.mdl" PrecacheModel "models/weapons/c_models/c_sniper_bot_arms.mdl" PrecacheModel "models/weapons/c_models/c_sniper_bot_animations.mdl" PrecacheModel "models/weapons/c_models/c_spy_bot_arms.mdl" PrecacheModel "models/weapons/c_models/c_spy_bot_animations.mdl" PrecacheModel "models/weapons/v_models/v_pda_spy_bot.mdl" PrecacheModel "models/weapons/v_models/v_ttg_watch_spy_bot.mdl" PrecacheModel "models/weapons/v_models/v_watch_leather_spy_bot.mdl" PrecacheModel "models/weapons/v_models/v_watch_pocket_spy_bot.mdl" PrecacheModel "models/weapons/v_models/v_watch_spy_bot.mdl" PrecacheModel "models/workshop_partner/weapons/v_models/v_hm_watch/v_hm_watch_bot.mdl" PrecacheSound "buzwarn.wav" // Disable sounds 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_Game_Over_Loss" DisableSound "Announcer.MVM_Robots_Planted" DisableSound "Announcer.MVM_Sentry_Buster_Alert" DisableSound "Announcer.MVM_Sentry_Buster_Alert_Another" 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" 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 "music.mvm_end_last_wave" DisableSound "music.mvm_end_mid_wave" DisableSound "music.mvm_end_tank_wave" DisableSound "music.mvm_end_wave" DisableSound "music.mvm_lost_wave" DisableSound "music.mvm_start_last_wave" DisableSound "music.mvm_start_mid_wave" DisableSound "music.mvm_start_tank_wave" DisableSound "music.mvm_start_wave" DisableSound "Announcer.MVM_Spy_Alert" DisableSound "heavy_mvm_giant_robot01" DisableSound "heavy_mvm_giant_robot02" DisableSound "heavy_mvm_giant_robot03" DisableSound "heavy_mvm_giant_robot04" DisableSound "engineer_mvm_giant_robot01" DisableSound "engineer_mvm_giant_robot02" DisableSound "engineer_mvm_giant_robot03" DisableSound "soldier_mvm_giant_robot01" DisableSound "soldier_mvm_giant_robot02" DisableSound "soldier_mvm_giant_robot03" DisableSound "soldier_mvm_giant_robot04" DisableSound "soldier_mvm_sniper01" DisableSound "medic_mvm_giant_robot01" DisableSound "medic_mvm_giant_robot02" DisableSound "medic_mvm_giant_robot03" DisableSound "engineer_mvm_bomb_destroyed01" DisableSound "engineer_mvm_bomb_destroyed02" DisableSound "engineer_mvm_bomb_see01" DisableSound "engineer_mvm_bomb_see02" DisableSound "engineer_mvm_bomb_see03" DisableSound "engineer_mvm_bomb_upgrade01" DisableSound "engineer_mvm_bomb_upgrade02" DisableSound "engineer_mvm_tank_alert01" DisableSound "engineer_mvm_tank_dead01" DisableSound "engineer_mvm_tank_deploy01" DisableSound "engineer_mvm_sniper01" DisableSound "heavy_mvm_bomb_see01" DisableSound "heavy_mvm_bomb_see02" DisableSound "heavy_mvm_bomb_upgrade01" DisableSound "heavy_mvm_bomb_upgrade02" DisableSound "heavy_mvm_tank_alert01" DisableSound "heavy_mvm_tank_alert02" DisableSound "heavy_mvm_tank_alert03" DisableSound "heavy_mvm_tank_dead01" DisableSound "heavy_mvm_tank_deploy01" DisableSound "heavy_mvm_sniper01" DisableSound "medic_mvm_bomb_see01" DisableSound "medic_mvm_bomb_see02" DisableSound "medic_mvm_bomb_see03" DisableSound "medic_mvm_bomb_upgrade01" DisableSound "medic_mvm_bomb_upgrade02" DisableSound "medic_mvm_bomb_upgrade03" DisableSound "medic_mvm_sniper01" DisableSound "medic_mvm_tank_alert01" DisableSound "medic_mvm_tank_dead01" DisableSound "medic_mvm_tank_deploy01" OverrideSounds { "MVM.BombWarning" "common/null.wav" "MVM.GiantCommonExplodes" "npc/env_headcrabcanister/explosion.wav" "MVM.GiantHeavyExplodes" "npc/env_headcrabcanister/explosion.wav" "Announcer.MVM_Spy_Alert" "common/null.wav" "Announcer.mvm_spybot_death" "common/null.wav" "Announcer.mvm_spybot_death_all" "common/null.wav" "Announcer.MVM_All_Dead" "common/null.wav" "Flesh.BulletImpact" "MVM_Robot.BulletImpact" "Player.FallDamage" "MVM.RobotImpactHard" "Player.FallGib" "MVM.RobotImpactHard" "BaseCombatCharacter.CorpseGib" "grinder_bot" "Weapon_General.CritPower" "common/null.wav" "Scout.ReadyMvM" "Scout.MVM_BattleCry02" "Soldier.ReadyMvM" "Soldier.MVM_Go02" "Pyro.ReadyMvM" "Pyro.MVM_Go01" "Demoman.ReadyMvM" "Demoman.MVM_Go03" "Heavy.ReadyMvM" "Heavy.MVM_MoveUp02" "Engineer.ReadyMvM" "Engineer.MVM_MoveUp01" "Medic.ReadyMvM" "Medic.MVM_AutoCappedControlPoint03" "Sniper.ReadyMvM" "Sniper.MVM_Taunts39" "Spy.ReadyMVM" "Spy.MVM_DominationScout01" } HandModelOverride { Scout "models/weapons/c_models/c_scout_bot_arms.mdl" Soldier "models/weapons/c_models/c_soldier_bot_arms.mdl" Pyro "models/weapons/c_models/c_pyro_bot_arms.mdl" HeavyWeapons "models/weapons/c_models/c_heavy_bot_arms.mdl" Demoman "models/weapons/c_models/c_demo_bot_arms.mdl" Engineer "models/weapons/c_models/c_engineer_bot_arms.mdl" Medic "models/weapons/c_models/c_medic_bot_arms.mdl" Sniper "models/weapons/c_models/c_sniper_bot_arms.mdl" Spy "models/weapons/c_models/c_spy_bot_arms.mdl" } DisallowUpgrade "engy disposable sentries" //breaks mini drone template DisallowUpgrade "recall" //breaks res system PlayerAttributes { "cannot pick up intelligence" 1 "crit mod disabled" 0 "increased air control" 4 "cancel falling damage" 1 "always allow taunt" 1 "vision opt in flags" -34028234663852886000000000000000000000 "min respawn time" 77777777 Engineer { "max health additive bonus" 150 "mult dispenser rate" 2 } Medic { "medic machinery beam" 4 } } ItemBlackList { ItemName "rocket jumper" ItemName "zombie scout" ItemName "zombie soldier" ItemName "zombie pyro" ItemName "zombie demo" ItemName "zombie heavy" ItemName "zombie engineer" ItemName "zombie medic" ItemName "zombie sniper" ItemName "zombie spy" // Name "Kritz Or Treat Canteen" // Name "Default Power Up Canteen (MvM)" // Name "Power Up Canteen (MvM)" // Name "Battery Canteens" } // SPAWN POINTS ExtraSpawnPoint { Name "spawnbot_red" TeamNum 2 X -2397 Y -2934 Z -191 } ExtraSpawnPoint { Name "spawnbot_front" TeamNum 2 X 461 Y 861 Z -255 } ExtraSpawnPoint { Name "spawnbot_front" TeamNum 2 X -1698 Y 883 Z -167 } ExtraSpawnPoint { Name "spawnbot_front_behind" TeamNum 2 X -74 Y -1262 Z -303 } ExtraSpawnPoint { Name "spawnbot_front_behind" TeamNum 2 X -1244 Y -1107 Z -303 } ExtraSpawnPoint { Name "spawnbot_front_behind_leftonly" TeamNum 2 X -74 Y -1262 Z -303 } ExtraSpawnPoint { Name "spawnbot_mid" TeamNum 2 X -1893 Y -1939 Z -447 } ExtraSpawnPoint { Name "spawnbot_mid" TeamNum 2 X -1856 Y -2287 Z -447 } ExtraSpawnPoint { Name "spawnbot_mid_behind" TeamNum 2 X -3321 Y -1640 Z -383 } ExtraSpawnPoint { Name "spawnbot_hatch" TeamNum 2 X -3595.42 Y -2474.59 Z -247.09 } PointTemplates { corelogic //all the things we want to automatically run when the popfile reloads. 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/smaller mvm maps, but the further away from the edict limit you can be the better //out-of-bounds decorations, ropes, unreachable easter egg room ents, etc. "OnMapSpawn" "filter_blue_bombhat,Kill,,0,-1" //gatebot maps will need their capture filter deleted for players to cap "OnMapSpawn" "filter_gatebot,Kill,,0,-1" "OnMapSpawn" "snd_gate_cap_alarm,Kill,,0,-1" //gets spammed by both red and blu team "OnMapSpawn" "bot_stun_*,Kill,,0,-1" //some gates may stun players "OnMapSpawn" "item_ammopack*,Kill,,0,-1" //might want to comment this out if players have limited ammo "OnMapSpawn" "spawnbot_mission_spy*,Disable,,0,-1" //disable bad spawns "OnMapSpawn" "spawnbot_mission_spy*,SetTeam,2,0.01,-1" "OnMapSpawn" "spawnbot_mission_spy*,Enable,,10,-1" // "OnMapSpawn" "Barricade*,Kill,,0,-1" //rottenburg specific, deletes front tank barricade "OnMapSpawn" "abduction_timer,Kill,,0,-1" "OnMapSpawn" "main_gate_door_alarm_proxy,Kill,,0,-1" "OnMapSpawn" "main_gate_prerequisite_door,Kill,,0,-1" "OnMapSpawn" "main_gate_prerequisite,Kill,,0,-1" "OnMapSpawn" "relay_enable_outer_nest,Kill,,0,-1" //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_rc5 "OnMapSpawn" "move_rope,Kill,,0,-1" "OnMapSpawn" "keyframe_rope,Kill,,0,-1" "OnMapSpawn" "point_spotlight,Kill,,0,-1" // "OnMapSpawn" "filter_redteam,Kill,,0,-1" //red team filters might cause problems, deleting them might cause more problems "OnMapSpawn" "side_gate*,Kill,,0,-1" "OnMapSpawn" "trigger_push,Disable,,0,-1" //some maps use trigger_pushes intended to un-stick bots //AddOutput can be used to modify existing map logic and automate certain tasks //basically, we can use it to connect the maps logic with our own home-brewed point templates like so: "OnMapSpawn" "wave_start_relay*,AddOutput,OnTrigger spawnbarrier*:Disable:0:-1" "OnMapSpawn" "wave_start_relay*,AddOutput,OnTrigger func_capturezone:Disable:0:-1" "OnMapSpawn" "wave_start_relay*,AddOutput,OnTrigger spawnbarrier*:Disable:0:-1" "OnMapSpawn" "wave_start_relay*,AddOutput,OnTrigger intel:Kill:0:-1" "OnMapSpawn" "wave_start_relay*,AddOutput,OnTrigger intel_new:Enable:0:-1" "OnMapSpawn" "wave_start_relay*,AddOutput,OnTrigger nav_refresh:RecomputeBlockers:0:-1" "OnMapSpawn" "wave_start_relay*,AddOutput,OnTrigger koto_sound_begin:PlaySound:0:-1" "OnMapSpawn" "wave_start_relay*,AddOutput,OnTrigger koto_sound_begin:StopSound:15:-1" "OnMapSpawn" "wave_finished_relay,AddOutput,OnTrigger spawnbarrier*:Enable:0:-1" "OnMapSpawn" "wave_finished_relay,AddOutput,OnTrigger barrierfence*:Enable:0:-1" "OnMapSpawn" "wave_finished_relay,AddOutput,OnTrigger defendgatea:Enable:0:-1" "OnMapSpawn" "wave_finished_relay,AddOutput,OnTrigger gatenav:Enable:0:-1" "OnMapSpawn" "wave_finished_relay,AddOutput,OnTrigger kill_relay:Trigger:0:-1" "OnMapSpawn" "wave_finished_relay,AddOutput,OnTrigger main_gate_door_alarm_proxy_x:Enable:0:-1" "OnMapSpawn" "main_gate_relay,AddOutput,OnTrigger pop_interface:UnpauseBotSpawning:5:-1" //make everything 5 seconds instead of 20 seconds for gate cap "OnMapSpawn" "main_gate_relay,AddOutput,OnTrigger robot_radio_waves_beep2:StopSound:5:-1" "OnMapSpawn" "main_gate_relay,AddOutput,OnTrigger nav_refresh:RecomputeBlockers:0.1:-1" "OnMapSpawn" "main_gate_relay,AddOutput,OnTrigger nav_refresh:RecomputeBlockers:0.15:-1" "OnMapSpawn" "main_gate_relay,AddOutput,OnTrigger nav_refresh:RecomputeBlockers:0.2:-1" "OnMapSpawn" "main_gate_relay,AddOutput,OnTrigger defendgatea:Disable:0:-1" "OnMapSpawn" "main_gate_relay,AddOutput,OnTrigger main_gate_door_alarm_proxy_x:Disable:0:-1" "OnMapSpawn" "main_gate_relay,AddOutput,OnTrigger gatenav:Disable:0:-1" "OnMapSpawn" "main_gate_door_trigger,AddOutput,OnCapTeam2 disablebarrier1:Trigger:0:-1" "OnMapSpawn" "main_gate_door_trigger,AddOutput,OnCapTeam2 relay_enable_mid_nests:Trigger:0:-1" "OnMapSpawn" "relay_disable_gatecap,AddOutput,OnTrigger main_gate_door_alarm_proxy_x:Disable:0:-1" "OnMapSpawn" "relay_disable_gatecap,AddOutput,OnTrigger defendgatea:Disable:0:-1" "OnMapSpawn" "relay_disable_gatecap,AddOutput,OnTrigger gatenav:Disable:0:-1" "OnMapSpawn" "relay_enable_gatecap,AddOutput,OnTrigger defendgatea:Enable:0:-1" "OnMapSpawn" "relay_enable_gatecap,AddOutput,OnTrigger main_gate_door_alarm_proxy_x:Enable:0:-1" //What we're doing: //"wave_start_relay*,AddOutput, //most entities accept the input 'AddOutput', letting us daisy-chain them together. // * will trigger our relay alongside any others with wave_start_relay in the name (i.e. wave_start_relay_classic or wave_start_relay_endurance), 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 logic 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" "tank_path_red_1,AddOutput,OnPass red_tank_relay:Trigger:0:-1" "OnMapSpawn" "blimp_path_red_1,AddOutput,OnPass red_blimp_relay:Trigger: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" "teleportblubacktospawn,Enable,0,-1" "OnTrigger" "teleportblubacktospawn,Disable,0.1,-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 "OnTrigger" "failuresound,PlaySound,,0,-1" //map dependent } 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" } NoFixup 1 trigger_teleport { "origin" "0 0 0" "mins" "-10000 -10000 -10000" "maxs" "10000 10000 10000" "spawnflags" "1" "StartDisabled" "1" "filtername" "filter_blu_team*" "target" "spawnbot*" "targetname" "teleportblubacktospawn" } func_nav_avoid { "origin" "-1342.51 -69.35 -206.24" "mins" "-100 -100 -100" "maxs" "100 100 100" "tags" "noflank" "targetname" "noflank_navavoid" "team" "-2" } func_nav_prerequisite { "targetname" "gatenav" "mins" "-4096 -4032 -768" "maxs" "4096 4032 768" "Entity" "defendgatea" "filtername" "filter_defending1" "origin" "-4088.51 4210.39 0" "spawnflags" "1" "StartDisabled" "0" "start_disabled" "0" "Task" "2" "Value" "-1" } func_nav_prerequisite { "targetname" "defendgatea" "mins" "-440 -180 -20" "maxs" "440 180 20" "Entity" "defendgatea" "filtername" "filter_defending1" "origin" "-341.92 -530.66 -556" "spawnflags" "1" "StartDisabled" "0" "start_disabled" "0" "Task" "2" "Value" "-1" } filter_tf_bot_has_tag { "Negated" "0" "require_all_tags" "1" "tags" "gatedefend" "targetname" "filter_defending1" } func_nav_prerequisite { "targetname" "defendnavleft" "mins" "-2000 -2000 -2000" "maxs" "2000 2000 2000" "Entity" "spawnbot_flanka" "filtername" "filter_defending2" "origin" "945.24 -906.18 -436" "spawnflags" "1" "Task" "2" "Value" "-1" } filter_tf_bot_has_tag { "Negated" "0" "require_all_tags" "1" "tags" "defendflank" "targetname" "filter_defending2" } func_nav_prerequisite //repeated for hatch { "targetname" "hatchnav" "mins" "-100 -100 -100" "maxs" "100 100 100" "Entity" "spawnbot_hatch" "filtername" "filter_hatch" "origin" "-3599.69 -2193.37 -224.76" "spawnflags" "1" "StartDisabled" "0" "start_disabled" "0" "Task" "2" "Value" "-1" } filter_tf_bot_has_tag { "Negated" "0" "require_all_tags" "1" "tags" "bot_hatch" "targetname" "filter_hatch" } NoFixup 1 trigger_multiple { "targetname" "main_gate_door_alarm_proxy_x" "mins" "-570 -947.5 -80" "maxs" "570 947.5 80" "Origin" "-550 -1332 -496" "filtername" "filter_redteam" "OnEndTouchAll" "main_gate_alarm_timer_relay,Trigger,,0,-1" "OnStartTouchAll" "main_gate_alarm_timer,Enable,,0,-1" "OnStartTouchAll" "main_gate_alarm_timer_relay,CancelPending,,0,-1" } NoFixup 1 item_teamflag { "origin" "-1006.13 2661.24 -306.25" "trail_effect" "2" "TeamNum" "0" "targetname" "intel_new" "StartDisabled" "1" "ScoringType" "0" "ReturnTime" "60000" "ReturnBetweenWaves" "1" "GameType" "3" "NeutralType" "1" "flag_trail" "flagtrail" "flag_paper" "player_intel_papertrail" "flag_model" "models/props_td/atom_bomb.mdl" "flag_icon" "../hud/objectives_flagpanel_carried" "angles" "0 270 0" } NoFixup 1 logic_relay { "targetname" "red_tank_relay" "OnTrigger" "tankbossred,Setteam,2,0.25,-1" "OnTrigger" "tankbossred,AddCaptureDestroyPostfix,destroy_mvm_cactus_valley3,0.5,-1" //cool explodey effect, doesn't work :( } NoFixup 1 logic_relay { "targetname" "relay_enable_mid_nests" "OnTrigger" "sentry_nest_1,Disable,,0,-1" "OnTrigger" "sentry_nest_2,Disable,,0,-1" "OnTrigger" "sentry_nest_3,Disable,,0,-1" "OnTrigger" "sentry_nest_4,Enable,,0,-1" "OnTrigger" "sentry_nest_5,Enable,,0,-1" } NoFixup 1 trigger_multiple { "targetname" "thirdperson" "StartDisabled" "1" "spawnflags" "3" "origin" "-3513.58 -2416.38 -297.41" "maxs" "50 50 50" "mins" "-50 -50 -50" "filtername" "filter_blue" "OnStartTouch" "!activator,setforcedtauntcam,1,0.1,-1" "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" } NoFixup 1 ambient_generic { "targetname" "failuresound" "health" "10" "message" "vo/announcer_failure.mp3" "pitch" "100" "pitchstart" "100" "radius" "20000" "spawnflags" "49" "origin" "0 0 0" } ambient_generic { "cspinup" "0" "fadeinsecs" "0" "fadeoutsecs" "0" "health" "50" "lfomodpitch" "0" "lfomodvol" "0" "lforate" "0" "lfotype" "0" "message" "ambient/alarms/city_siren_loop2.wav" "pitch" "100" "pitchstart" "100" "preset" "0" "radius" "20000" "spawnflags" "17" "spindown" "0" "spinup" "0" "targetname" "koto_sound_begin" "volstart" "0" "origin" "0 0 0" } } barriers //spawn blocker { NoFixup 1 func_forcefield { "disablereceiveshadows" "0" "renderamt" "255" "origin" "-550 1998 -167" "TeamNum" "2" "targetname" "spawnbarrierA1" // "parentname" "spawnbarrierA" "mins" "-150 -10 -198" "maxs" "150 10 198" "StartDisabled" "0" } prop_dynamic //prop for show { "targetname" "spawnbarrierA" "angles" "0 90 0" "DisableBoneFollowers" "1" "disablereceiveshadows" "1" "model" "models/props_mvm/reversemvm_redbot_wall.mdl" "disableshadows" "1" "ExplodeDamage" "0" "ExplodeRadius" "0" "fademaxdist" "0" "fademindist" "-1" "fadescale" "1" "MaxAnimTime" "10" "maxdxlevel" "0" "MinAnimTime" "5" "mindxlevel" "0" "modelscale" "1.0" "PerformanceMode" "0" "pressuredelay" "0" "RandomAnimation" "0" "renderamt" "0" "renderfx" "16" //hologram effect, see renderfx section on the developer wiki for more "rendermode" "0" "SetBodyGroup" "0" "skin" "0" "CollisionGroup" "0" "solid" "0" "spawnflags" "0" "StartDisabled" "0" "origin" "-570 1949 -196" } prop_dynamic //prop for show { "targetname" "spawnbarrierA" "angles" "0 0 0" "DisableBoneFollowers" "1" "disablereceiveshadows" "1" "model" "models/props_mvm/reversemvm_redwall.mdl" "disableshadows" "1" "ExplodeDamage" "0" "ExplodeRadius" "0" "fademaxdist" "0" "fademindist" "-1" "fadescale" "1" "MaxAnimTime" "10" "maxdxlevel" "0" "MinAnimTime" "5" "mindxlevel" "0" "modelscale" "1.5" "PerformanceMode" "0" "pressuredelay" "0" "RandomAnimation" "0" "renderamt" "0" "renderfx" "16" //hologram effect, see renderfx section on the developer wiki for more "rendercolor" "255 91 91" "rendermode" "0" "SetBodyGroup" "0" "skin" "0" "CollisionGroup" "0" "solid" "0" "spawnflags" "0" "StartDisabled" "0" "origin" "-570 1980 -241" } func_forcefield { "disablereceiveshadows" "0" "origin" "-1456 1504 -176" "renderamt" "255" "TeamNum" "2" "targetname" "spawnbarrierB1" // "parentname" "spawnbarrierB" "mins" "-8 -152 -226" "maxs" "8 152 226" "StartDisabled" "0" } prop_dynamic //prop for show { "targetname" "spawnbarrierB" "angles" "0 180 0" "DisableBoneFollowers" "1" "disablereceiveshadows" "1" "model" "models/props_mvm/reversemvm_redbot_wall.mdl" "disableshadows" "1" "ExplodeDamage" "0" "ExplodeRadius" "0" "fademaxdist" "0" "fademindist" "-1" "fadescale" "1" "MaxAnimTime" "10" "maxdxlevel" "0" "MinAnimTime" "5" "mindxlevel" "0" "modelscale" "1.0" "PerformanceMode" "0" "pressuredelay" "0" "RandomAnimation" "0" "renderamt" "0" "renderfx" "16" //hologram effect, see renderfx section on the developer wiki for more "rendermode" "0" "SetBodyGroup" "0" "skin" "0" "CollisionGroup" "0" "solid" "0" "spawnflags" "0" "StartDisabled" "0" "origin" "-1413 1536 -269" } prop_dynamic //prop for show { "targetname" "spawnbarrierB" "angles" "0 90 0" "DisableBoneFollowers" "1" "disablereceiveshadows" "1" "model" "models/props_mvm/reversemvm_redwall.mdl" "disableshadows" "1" "ExplodeDamage" "0" "ExplodeRadius" "0" "fademaxdist" "0" "fademindist" "-1" "fadescale" "1" "MaxAnimTime" "10" "maxdxlevel" "0" "MinAnimTime" "5" "mindxlevel" "0" "modelscale" "1.5" "PerformanceMode" "0" "pressuredelay" "0" "RandomAnimation" "0" "renderamt" "0" "renderfx" "16" //hologram effect, see renderfx section on the developer wiki for more "rendercolor" "255 91 91" "rendermode" "0" "SetBodyGroup" "0" "skin" "0" "CollisionGroup" "0" "solid" "0" "spawnflags" "0" "StartDisabled" "0" "origin" "-1408 1536 -320" } } station { NoFixup 1 prop_dynamic //upgrade station { "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" "-105 -100 0" "maxs" "105 100 242" "parentname" "upgradestation" } 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" } } blocker //giant building for blocking stuff { NoFixup 1 func_forcefield { "disablereceiveshadows" "0" "origin" "0 0 0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "targetname" "barrierfence1a" //"parentname" "barrierfence1" "mins" "-2500 -50 -2500" "maxs" "2500 50 2500" "StartDisabled" "0" } NoFixup 1 prop_dynamic { "id" "3" "targetname" "barrierfence1" "classname" "prop_dynamic" "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/reversemvm_redwall.mdl" "modelscale" "2.25" "PerformanceMode" "0" "pressuredelay" "0" "RandomAnimation" "0" "renderamt" "255" "renderfx" "16" "rendermode" "0" // "rendermode" "10" un-comment this and comment rendermode 0 to make it invisible "SetBodyGroup" "0" "skin" "0" "solid" "0" "spawnflags" "0" "origin" "0 0 0" } } blocker2 //giant building for blocking stuff { NoFixup 1 func_forcefield { "disablereceiveshadows" "0" "origin" "0 0 0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "targetname" "barrierfence2a" //"parentname" "barrierfence2" "mins" "-8 -384 -160" "maxs" "8 384 160" "StartDisabled" "0" } NoFixup 1 prop_dynamic { "id" "3" "targetname" "barrierfence2" "classname" "prop_dynamic" "angles" "0 270 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/reversemvm_redwall.mdl" "modelscale" "1.5" "PerformanceMode" "0" "pressuredelay" "0" "RandomAnimation" "0" "renderamt" "255" "renderfx" "16" "rendermode" "0" // "rendermode" "10" un-comment this and comment rendermode 0 to make it invisible "SetBodyGroup" "0" "skin" "0" "solid" "0" "spawnflags" "0" "origin" "0 0 0" } } removeblockers { NoFixup 1 logic_relay { "targetname" "disablebarrier1" "OnTrigger" "barrierfence1*,Disable,,0,-1" } NoFixup 1 logic_relay { "targetname" "disablebarrier2" "OnTrigger" "barrierfence2*,Disable,,0,-1" "OnTrigger" "relay_enable_inner_nest,Trigger,,0,-1" } } nav_stuff // by b855 { NoFixup 1 OnSpawnOutput { Target nav_avoid_redspawndrop Action Disable Delay 0.1 } OnSpawnOutput { Target nav_avoid_onewaygate* Action Disable Delay 0.1 } func_nav_avoid { "origin" "-928 616 -292" "mins" "-90 -152 -60" "maxs" "90 152 60" "tags" "bot_cantjump" "team" "-2" } func_nav_avoid { "origin" "-1936 -2656 -356" "mins" "-240 -320 -100" "maxs" "240 320 100" "tags" "bot_cantjump" "team" "-2" } func_nav_avoid { "origin" "-944 -416 -253" "mins" "-48 -64 -35" "maxs" "48 64 35" "tags" "bot_cantjump" "team" "-2" } func_nav_avoid { "origin" "-944 -416 -253" "mins" "-48 -64 -35" "maxs" "48 64 35" "tags" "bot_cantjump" "team" "-2" } func_nav_avoid { "origin" "-224 -2256 -496" "mins" "-128 -80 -48" "maxs" "128 80 48" "tags" "bot_cantjump bot_sentrybuster" "team" "-2" } func_nav_avoid { "origin" "-2528 -704 -160" "mins" "-98 -128 -32" "maxs" "98 128 32" "tags" "bot_cantjump" "team" "-2" } func_nav_avoid { "origin" "64 -208 -294" "mins" "-192 -208 -166" "maxs" "192 208 166" "tags" "bot_cantjump" "team" "-2" } func_nav_avoid { "origin" "-1216 1120 -316" "mins" "-352 -256 -164" "maxs" "352 256 164" "tags" "bot_cantjump bot_sentrybuster bot_red" "team" "-2" } func_nav_avoid { "targetname" "nav_avoid_redspawndrop" "origin" "-2528 -2240 -173" "mins" "-192 -320 -51" "maxs" "192 320 51" "startdisabled" "1" "tags" "bot_red" "team" "-2" } func_nav_avoid { "targetname" "nav_avoid_redspawndrop" "origin" "-2288 -2720 -301" "mins" "-272 -160 -174" "maxs" "272 160 174" "startdisabled" "1" "tags" "bot_red" "team" "-2" } func_nav_avoid { "targetname" "nav_avoid_redspawndrop" "origin" "-3000 -1720 -176" "mins" "-216 -280 -128" "maxs" "216 280 128" "startdisabled" "1" "tags" "bot_red" "team" "-2" } func_nav_avoid { "targetname" "nav_avoid_redspawndrop" "origin" "-3168 -2192 -184" "mins" "-224 -290 -120" "maxs" "224 290 120" "startdisabled" "1" "tags" "bot_red" "team" "-2" } func_nav_avoid { "origin" "352 -2224 -416" "mins" "-192 -112 -64" "maxs" "192 112 64" "tags" "bot_cantjump" "team" "-2" } func_nav_avoid { "origin" "-1536 -2416 -416" "mins" "-96 -80 -64" "maxs" "96 80 64" "tags" "bot_cantjump" "team" "-2" } func_nav_avoid { "origin" "576 -816 -256" "mins" "-64 -80 -32" "maxs" "64 80 32" "tags" "bot_cantjump" "team" "-2" } func_nav_avoid { "origin" "-912 -2336 -560" "mins" "-336 -128 -48" "maxs" "336 128 48" "tags" "bot_sentrybuster" "team" "-2" } func_nav_avoid { "origin" "-736 -2080 -560" "mins" "-160 -359 -48" "maxs" "160 359 48" "tags" "bot_sentrybuster" "team" "-2" } func_nav_avoid { "origin" "-656 -1872 -560" "mins" "-328 -936 -280" "maxs" "328 936 280" "tags" "bot_sentrybuster" "team" "-2" } func_nav_avoid { "origin" "347 156 440" "mins" "-23 -143 -162" "maxs" "23 143 162" "team" "-2" "tags" "common giant bot_red bot_blu" } func_nav_avoid { "targetname" "nav_avoid_onewaygate" "origin" "-1188 -352 -172" "mins" "-206 -178 -158" "maxs" "206 178 158" "team" "-2" "tags" "bot_red" } func_nav_avoid { "targetname" "nav_avoid_onewaygate_w5" "origin" "-1248 -288 -464" "mins" "-352 -672 -365" "maxs" "352 672 365" "team" "-2" "tags" "bot_blu" } func_nav_avoid { "targetname" "nav_avoid_ubersentry" "origin" "-2008 -2696 -320" "mins" "-360 -344 -192" "maxs" "360 344 192" "team" "3" "tags" "bot_blu" } func_nav_avoid { "targetname" "ffs_please_work" "origin" "96 -288 -245" "mins" "-146 -82 -167" "maxs" "146 82 167" "team" "-2" "tags" "bot_red" } func_nav_avoid { "targetname" "nav_avoid_mid_stairs" "origin" "-1856 -1600 -368" "mins" "-160 -285 -176" "maxs" "160 285 176" "team" "-2" "tags" "nav_avoid_mid_stairs" } func_nav_avoid { "targetname" "fuckyou" "origin" "-1440 -1120 -272" "mins" "-480 -544 -175" "maxs" "480 544 175" "team" "-2" "tags" "stop_getting_stuck_retard bot_sentrybuster" } } PlayersLeftLogic { NoFixup 1 math_counter { "targetname" "playersLeftAlive" "startvalue" "0" "outValue" "playersLeftFormat,$SetKey$Case01,,0,-1" "outValue" "playersLeftFormat,$Format,,0.2,-1" "outValue" "wipeCheck,SetValueCompare,,0,-1" } logic_compare { "targetname" "wipeCheck" "initialValue" "0" "CompareValue" "0" "OnEqualTo" "blualive_safety_timer,Enable,,0,-1" "OnNotEqualTo" "blualive_safety_timer,Disable,,0,-1" } logic_case { "targetname" "playersLeftFormat" "case16" "Players Alive: %" //formatting string "case01" "h" //Will be the number of players currently alive //"case02" "6" //Uncomment to give another param to show total team size, could be made dynamic but prob best left "ondefault" "playersLeftDisplay,$SetKey$Message,,0,-1" "ondefault" "playersLeftDisplay,Display,,0.2,-1" } game_text { "targetname" "playersLeftDisplay" "channel" "3" "color" "255 255 255" "color2" "255 255 255" "effect" "0" "fadein" "0" "fadeout" "1" "fxtime" "0.25" "holdtime" "9999" "message" "FunnyHahaPlaceholderText" "spawnflags" "1" "x" "0.85" "y" "0.1" } logic_relay { "targetname" "wipeTeam" "StartDisabled" "1" "OnTrigger" "redwin_relay,Trigger,,0,-1" "OnTrigger" "wipe_fade,Fade,,0,-1" } logic_timer { "targetname" "blualive_safety_timer" "startdisabled" "1" "refiretime" "3" "OnTimer" "wipeTeam,Trigger,,0,-1" "OnTimer" "!self,Disable,,0.1,-1" } env_fade { "targetname" "wipe_fade" "duration" "1" "holdtime" "10" "renderamt" "100" "rendercolor" "164 0 0" "spawnflags" "0" } } PlayerTracker { NoFixup 1 OnSpawnOutput { Target "playersLeftAlive" Action "add" Param "1" } logic_relay { "$OnKilled" "playersLeftAlive,Subtract,1,0,0" } } //Player Res Template PlayerResInput { NoFixup 1 OnSpawnOutput { Target "playerResInWave" Action Test } logic_branch { "startvalue" "0" // used to detect if wave is started or not "targetname" "playerResInWave" "onTrue" "player,$SetVar$inWave,1,0,-1" "onFalse" "player,$SetVar$inWave,0,0,-1" } math_counter { "startvalue" "0" // value to change "targetname" "playerResVal1" "onGetValue" "player,$SetVar$hasRes,,0,-1" } math_counter { "startvalue" "1" // value to change "targetname" "playerResVal2" "onGetValue" "player,$SetVar$hasRes,,0,-1" } math_counter { "startvalue" "2" // value to change "targetname" "playerResVal3" "onGetValue" "player,$SetVar$hasRes,,0,-1" } } PlayerRes { keepalive 1 OnParentKilledOutput { Target "playerResConfirm" Action InValue Param "$$=''..?(int(!activator.hasRes) > 0, ?(int(!activator.inWave) < 1,string('99'),string('1')),?(int(!activator.inWave) < 1,string('99'),string('0')))" } logic_case { "targetname" "playerResConfirm" "case01" "1" "case02" "0" "case03" "99" "OnCase01" "!activator,$ForceRespawnDead,,2,-1" "OnCase01" "!activator,$SetVar$hasRes,$$=(int(!activator.hasRes) - 1),2,-1" // formatting string for if you have lifes "OnCase01" "player,$DisplayTextChat,$$=''.. '{f5c542}' .. string(!activator.m_szNetname) .. string(' {ffffff} has been revived, they have {f5c542}') .. string(!activator.hasRes) .. string('{ffffff} more lives left.'),2,-1" "OnCase01" "revivefx,PlaySound,,2.05,-1" "OnCase01" "revivefx,PlaySound,,2.05,-1" "OnCase01" "revivefx,kill,,3,-1" "OnCase01" "!self,kill,,3,-1" // formatting string for if no lifes "OnCase02" "player,$DisplayTextChat,$$=''.. '{f5c542}' .. string(!activator.m_szNetname) .. string(' {ffffff} has {ff2b2b} no more lives {ffffff}, they will be able to respawn at wave end.'),0,-1" "OnCase02" "!self,kill,,3,-1" "OnCase02" "revivefx,kill,,3,-1" "OnCase03" "!activator,$ForceRespawnDead,,2,-1" "OnCase03" "!self,kill,,0,-1" "OnCase03" "revivefx,kill,,0,-1" } ambient_generic { "targetname" "revivefx" "origin" "0 0 0" "volstart" "10" "spawnflags" "17" "radius" "999999" "preset" "0" "pitchstart" "125" "pitch" "125" "message" "#mvm/mvm_revive.wav" //to change respawn sound (plays globally) "lfotype" "0" "lforate" "0" "lfomodvol" "0" "lfomodpitch" "0" "health" "7.5" "fadeoutsecs" "0" "fadeinsecs" "0" "cspinup" "0" } } } SpawnTemplate "corelogic" SpawnTemplate "removeblockers" SpawnTemplate "barriers" SpawnTemplate "nav_stuff" SpawnTemplate "PlayersLeftLogic" SpawnTemplate "PlayerResInput" SpawnTemplate { Name "station" Origin "-2627.56 2744.62 -316.55" Angles "0 -90 0" } SpawnTemplate { Name "station" Origin "-1441.95 4164.50 -172.24" Angles "0 -110 0" } SpawnTemplate { Name "blocker" Origin "835.65 -1183.32 -350" Angles "0 0 0" } SpawnTemplate { Name "blocker2" Origin "-1632 -2016 -296" Angles "0 0 0" } PlayerSpawnTemplate "PlayerTracker" PlayerSpawnTemplate { Name "PlayerRes" Bone bip_spine_2 } CustomWeapon { Name "medfix" OriginalItemName "tf_weapon_syringegun_medic" "provide on active" 1 "is suicide counter" 10 } Templates { Red { Addcond { Name "TF_COND_REPROGRAMMED" } Attributes DisableDodge Action Mobber CustomEyeGlowColor "227 66 32" AdditionalStepSound "MVM.BotStep" CharacterAttributes { "ammo regen" 1 "metal regen" 200 "crit mod disabled" 0 "increase player capture value" -1 } } Red_Easy { Addcond { Name "TF_COND_REPROGRAMMED" } Attributes DisableDodge Action Mobber CustomEyeGlowColor "0 255 255" AdditionalStepSound "MVM.BotStep" CharacterAttributes { "ammo regen" 1 "metal regen" 200 "crit mod disabled" 0 "increase player capture value" -1 } } Red_Giant { AdditionalStepSound "common/null.wav" CharacterAttributes { "health from packs decreased" 0.05 "voice pitch scale" 0 } AddTemplate Red } } Wave // Wave 1 { WaitWhenDone 65 Checkpoint Yes StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } InitWaveOutput { Target holograms_3way_relay Action Trigger } CustomMaxWaveNumber 7 Explanation { Line "{CCFFCC}///////////INCOMING TRANSMISSION////////////////" Line "" Line "{red}RED {f5c542}has been conducting some secret experiments in this area." Line "{f5c542}Rumor has it that they're planning on sending their test subjects from the moon to this base." Line "{f5c542}We need to find a way to infiltrate their lab." Line "" Line "{CCFFCC}////////////END TRANSMISSION/////////////////" } WaveSpawn // Dummy { TotalCount 0 SpawnCount 0 WaitBeforeStarting 0 Support Limited FirstSpawnOutput { Target playerResInWave Action ToggleTest } } WaveSpawn // Dummy { TotalCount 0 SpawnCount 0 WaitBeforeStarting 0 Support Limited FirstSpawnOutput { Target playerResVal3 Action GetValue } } WaveSpawn { Name "intro" Where spawnbot_front_behind TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 100 DoneOutput { Target disablebarrier1 Action Trigger } TFBot { Name "Guardian of The Gate" Class Soldier ClassIcon boss_soldier_conch Scale 1.8 Health 10000 Attributes MiniBoss Attributes UseBossHealthBar Attributes SpawnWithFullCharge Skill Expert WeaponRestrictions PrimaryOnly Tag bot_giant Tag bot_cantjump AddTemplate Red_Giant Item "gentlemanne_rocketlauncher_coffinnail" Item "The Concheror" Item "Soldier Samurai Hat" ItemAttributes { ItemName "gentlemanne_rocketlauncher_coffinnail" "set_item_texture_wear" 0 "fire rate bonus" 0.5 "clip size upgrade atomic" 7.0 "Projectile speed increased" 0.7 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0 "airblast vulnerability multiplier" 0 "override footstep sound set" 3 "no_jump" 1 "increase buff duration" 20 "deploy time decreased" 0.5 } InterruptAction { Target "-498 -221 -575" Delay 2 Repeats 0 Duration 3 Cooldown 6 WaitUntilDone 1 } } } WaveSpawn { Name "part01" Where spawnbot_front TotalCount 20 MaxActive 8 SpawnCount 4 WaitBeforeStarting 0 WaitBetweenSpawns 1 TotalCurrency 100 TFBot { Template T_TFBot_Demoman_Bottle AddTemplate Red } } WaveSpawn { Name "part01" Where spawnbot_front_behind TotalCount 16 MaxActive 8 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 2 TotalCurrency 100 TFBot { Template T_TFBot_Scout_Scattergun_SlowFire Name Scout AddTemplate Red } } WaveSpawn { Name "part02" WaitForAllSpawned "part01" Where spawnbot_front_behind TotalCount 3 MaxActive 3 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 15 TotalCurrency 100 RandomChoice { TFBot { Template T_TFBot_Giant_Pyro_Fury AddTemplate Red_Giant } TFBot { Template T_TFBot_Giant_Pyro_Fury AddTemplate Red_Giant } TFBot { Template T_TFBot_Giant_Pyro_Fury AddTemplate Red_Giant InterruptAction { Target "-630 -642 -575" Delay 1 Repeats 0 Cooldown 12 Duration 8 WaitUntilDone 1 } } } } WaveSpawn { Name "part02" WaitForAllSpawned "part01" Where spawnbot_front_behind Where spawnbot_front TotalCount 24 MaxActive 12 SpawnCount 2 WaitBeforeStarting 11 WaitBetweenSpawns 4 TotalCurrency 100 Squad { TFBot { Template T_TFBot_Sniper_SMG Skill Easy AddTemplate Red_Easy } TFBot { Template T_TFBot_Medic_QuickFix Item "medfix" AddCond { Name "TF_COND_REPROGRAMMED" } } } } WaveSpawn { Name "part03" WaitForAllDead "intro" Where spawnbot_mid TotalCount 20 MaxActive 8 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 2 TotalCurrency 100 RandomSpawn 1 RandomChoice { TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast ClassIcon heavy_urgent AddTemplate Red_Easy } TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast ClassIcon heavy_urgent AddTemplate Red_Easy } TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast ClassIcon heavy_urgent AddTemplate Red_Easy } TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast ClassIcon heavy_urgent Item "The Concheror" CharacterAttributes { "increase buff duration" 20 } AddTemplate Red_Easy } } } WaveSpawn { Name "part03" WaitForAllDead "intro" Where spawnbot_mid TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 10 TotalCurrency 100 TFBot { Template T_TFBot_Giant_Demoman AddTemplate Red_Giant } } WaveSpawn { Name "secondguardian" WaitForAllSpawned "part03" Where spawnbot_mid TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 100 TFBot { Name "Guardian of The Base" Class Demoman ClassIcon demoman_samurai Scale 1.8 Health 10000 Attributes MiniBoss Attributes UseBossHealthBar Attributes DisableDodge // Attributes AirChargeOnly Attributes HoldFireUntilFullReload Skill Expert MaxVisionRange 1000 Tag bot_giant Action Sniper AddCond { Name "TF_COND_REPROGRAMMED" } Item "The Loch-N-Load" Item "The Splendid Screen" Item "The Half-Zatoichi" Item "Demo Kabuto" ItemAttributes { ItemName "The Loch-N-Load" "fire rate bonus" 0.001 "faster reload rate" 1.5 "Blast radius decreased" 1.2 "projectile spread angle penalty" 2 } ItemAttributes { ItemName "The Half-Zatoichi" "damage bonus" 1.25 "restore health on kill" 0 "melee range multiplier" 1.25 } CharacterAttributes { "voice pitch scale" 0 "health from packs decreased" 0.05 "move speed bonus" 0.5 "damage force reduction" 0 "airblast vulnerability multiplier" 0 "override footstep sound set" 4 "charge time increased" 2 "attack not cancel charge" 1 "increased jump height" 2.95 "cancel falling damage" 1 "bot custom jump particle" 1 "deploy time decreased" 0.025 } } } } }