#base robot_standard.pop #base robot_giant.pop #base robot_standard_red.pop #base robot_giant_red.pop #base robot_midori.pop WaveSchedule { StartingCurrency 5000 CanBotsAttackWhileInSpawnRoom no RespawnWaveTime 2 RespawnWaveTimeBlue 2 AddSentryBusterWhenDamageDealtExceeds 3000 AddSentryBusterWhenKillCountExceeds 15 // Essential stuff ReverseWinConditions 1 AllowJoinTeamBlueMax 6 AllowJoinTeamBlue 1 HumansMustJoinTeam Blue SetCreditTeam 3 SniperAllowHeadshots 1 //sniper and amby un-exist without this // Optional stuff // CustomUpgradesFile "mvm_upgrades_space_reverse.txt" // MaxTotalPlayers 6 // currently doesn't work in reverse ForceHoliday 2 NoHolidayPickups 1 NoSapUnownedBuildings 1 FixSetCustomModelInput 1 NoRomevisionCosmetics 1 NoRedBotsRandomCrit 1 RemoveBluVelocityLimit 1 ImprovedAirblast 1 StandableHeads 1 SendBotsToSpectatorImmediately 1 SentryBusterFriendlyFire 0 // SniperHideLasers 1 BluHumanSpawnNoShoot 0 AllowBotExtraSlots 1 ExtraBotSlotsNoDeathcam 1 RobotLimit 55 BluPlayersAreRobots 1 BluHumanFlagCapture 0 //Can blu humans capture the flag BluHumanFlagPickup 0 BluHumanInfiniteCloak 0 FlagCarrierMovementPenalty 1 BotTeleportUberDuration 0 BluHumanTeleportOnSpawn 1 BluHumanBotTeleporter 0 TextPrintTime 6 BotsRandomCrit 0 BodyPartScaleSpeed 50 MedigunShieldDamage 1 ForceRedMoney 1 MaxSpeedLimit 800 // Max speed limit override. Values above 520 fix max speed on non scout bots. Values above 521 disable jumping on stuck PrecacheModel "models/props_mvm/robot_spawnpoint.mdl" PrecacheModel "models/bots/soldier/bot_soldier_gray.mdl" PrecacheModel "models/bots/heavy/bot_heavy_gray.mdl" PrecacheModel "models/bots/scout/bot_scout_gray.mdl" PrecacheModel "models/bots/sniper/bot_sniper_gray.mdl" PrecacheModel "models/bots/medic/bot_medic_gray.mdl" PrecacheModel "models/bots/demo/bot_demo_gray.mdl" PrecacheModel "models/bots/heavy_boss/bot_heavy_gray_boss.mdl" PrecacheModel "models/bots/soldier_boss/bot_soldier_gray_boss.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" // 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" // Override sounds OverrideSounds { "MVM.BombWarning" "buzwarn.wav" "MVM.GiantCommonExplodes" "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" } 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 { "min respawn time" 9999 } ExtraSpawnPoint { Name "spawnbot_gray1" TeamNum 2 X 3704 Y 2904 Z -616 } ExtraSpawnPoint { Name "spawnbot_gray1" TeamNum 2 X 2236 Y 3680 Z -512 } ExtraSpawnPoint { Name "spawnbot_gray2" TeamNum 2 X 1476 Y 240 Z -194 } ExtraSpawnPoint { Name "spawnbot_gray2" TeamNum 2 X -1040 Y 1416 Z -168 } ExtraSpawnPoint { Name "spawnbot_gray2" TeamNum 2 X -1220 Y -248 Z -168 } ExtraSpawnPoint { Name "spawnbot_gray3" TeamNum 2 X -1044 Y -1896 Z -392 } ExtraSpawnPoint { Name "spawnbot_gray3" TeamNum 2 X -1208 Y -2600 Z -289 } ExtraSpawnPoint { Name "spawnbot_gray3" TeamNum 2 X -440 Y -3240 Z -456 } ExtraSpawnPoint { Name "spawnbot_gray4" TeamNum 2 X 1396 Y -3344 Z -936 } PointTemplates { tank_fix { NoFixup 1 mapobj_cart_dispenser { "parentname" "red_tank_body" "teamnum" "3" "touch_trigger" "red_tank_healF" "spawnflags" "14" "origin" "4499 3515 -782" } dispenser_touch_trigger { "parentname" "red_tank_body" "targetname" "red_tank_healF" "origin" "4452 3504 -814" "mins" "-160 -160 -64" "maxs" "160 160 64" } } FakeIcon { NoFixup 1 logic_auto { "OnMapSpawn" "!self,Kill,,0,-1" "targetname" "yes" } } filters { NoFixUp 1 filter_tf_bot_has_tag //our tag { "Negated" "Allow entities that match criteria" "require_all_tags" "1" "tags" "bot_gry" "targetname" "filter_gry" } filter_multi { "filtertype" "1" "Negated" "0" "targetname" "filter_notblu" "Filter01" "filter_red" "Filter02" "filter_gry" } } grybot_killswitch { logic_relay { "targetname" "grybot_killswitch_relay" "OnTrigger" "!parent,$Suicide,,0,-1" } } whatever { NoFixup 1 logic_relay { "targetname" "grybot_end_relay" "OnTrigger" "grybot_killswitch_relay*,Trigger,,0,-1" } } spawner { NoFixUp 1 prop_dynamic { "angles" "0 0 0" "DefaultAnim" "running" "disableshadows" "1" "fademindist" "-1" "fadescale" "1" "MaxAnimTime" "10" "MinAnimTime" "5" "model" "models/buildables/teleporter_light.mdl" "modelscale" "1.0" "renderamt" "255" "rendercolor" "0 0 0" "skin" "0" "solid" "0" "targetname" "spawnprop1" "origin" "0 0 0" } prop_dynamic { "angles" "0 0 0" "DefaultAnim" "idle" "disableshadows" "1" "disablebonefollowers" "1" "fademindist" "-1" "fadescale" "1" "MaxAnimTime" "10" "MinAnimTime" "5" "model" "models/props_mvm/robot_spawnpoint.mdl" "modelscale" "1.0" "renderamt" "255" "rendercolor" "255 255 255" "skin" "2" "solid" "0" "targetname" "spawnprop1" "origin" "0 0 0" } } filters_mini { NoFixup 1 filter_activator_class { "targetname" "filter_sentrygun" "filterclass" "obj_sentrygun" } } test_mini { OnSpawnOutput { Target "triggerrefresh" Action Open } OnSpawnOutput { Target "convertmini" Action SetParent Param "!activator" } func_door { "targetname" "triggerrefresh" "rendermode" "10" "spawnflags" "4108" "speed" "1" "wait" "0.01" "onfullyclosed" "!self,open,,0,-1" } trigger_multiple { "targetname" "sentryDetect" "parentname" "triggerrefresh" "mins" "-96 -96 -96" "maxs" "96 96 96" "filtername" "filter_sentrygun" "spawnflags" "64" "onstarttouch" "convertmini,SetValueCompare,$$=?(!activator.m_bMiniBuilding == 1 && !activator.m_nSolidType > 0,1,0),0,-1" } logic_compare { "targetname" "convertmini" "comparevalue" "1" "onequalto" "!activator,SetParent,droneLocation,0.1,-1" "onequalto" "!activator,SetParentAttachment,head,0.15,-1" "onequalto" "!activator,$SetProp$m_iAmmoShells,99999999,0,-1" //gives them tons of ammo "onequalto" "!activator,$SetProp$m_iAmmoShells,99999999,5,-1" //gives them tons of ammo "onequalto" "!activator,$SetProp$m_nSolidType,0,0,-1" //stops them blocking the player, also used to detect if mini has been turned into a drone "onequalto" "!activator,$SetModelOverride,models/rcat/rcat_level2.mdl,0,-1" // sets model | make sure to precache "onequalto" "!activator,$SetProp$m_nSkin,1,0,-1" } prop_dynamic { "targetname" "droneLocation" // invisible engineer doomed to carry the drone for all eternity "model" "models/player/engineer.mdl" "origin" "40 -50 15" "disableshadows" "1" "rendermode" "9" "renderamt" "0" } } //Players left template 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" "redalive_saftey_timer,Enable,,0,-1" "OnNotEqualTo" "redalive_saftey_timer,Disable,,0,-1" } logic_case { "targetname" "playersLeftFormat" "case16" "Teammates 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.8" "y" "0.19" } } PlayerTracker { NoFixup 1 OnSpawnOutput { Target "playersLeftAlive" Action "add" Param "1" } logic_relay { "$OnKilled" "playersLeftAlive,Subtract,1,0,0" } } PlayerLivesDisplay { keepalive 1 OnSpawnOutput { Target "playersLivesTracker" Action "$setKey$message" Param "$$='Lives Left: '.. (!activator.hasRes + 1)" Delay 0.1 } OnSpawnOutput { Target "playersLivesTracker" Action "display" Delay 0.2 } OnParentKilledOutput { Target "playersLivesTracker" Action "$setKey$message" Param "$$='Lives Left: '.. (!activator.hasRes)" Delay 0.1 } OnParentKilledOutput { Target "playersLivesTracker" Action "display" Delay 0.2 } OnParentKilledOutput { Target "playersLivesTracker" Action "kill" Delay 0.3 } game_text { "targetname" "playersLivesTracker" "channel" "4" "color" "255 255 255" "color2" "255 255 255" "effect" "0" "fadein" "0" "fadeout" "1" "fxtime" "0.25" "holdtime" "9999" "message" "0" "spawnflags" "0" //"x" "0.8036" "x" "0.8008" "y" "0.225" } } //Player Res Template PlayerResInput { NoFixup 1 OnSpawnOutput { Target "playerResInWave" Action Test } // OnSpawnOutput{ // Target "entrance_music_clear_relay" // Action trigger // delay 0.5 // } // OnSpawnOutput{ // Target "encounter_music_1" // Action stopsound // delay 0.5 // } OnSpawnOutput { Target "encounter_entrance_start" Action addoutput Param "onTrigger prewave_lives:kill::0:-1" Delay 1 } OnSpawnOutput { Target "encounter_entrance_start" Action $removeoutput Param "prewave-lives" } OnSpawnOutput { Target "encounter_mines_start" Action addoutput Param "onTrigger prewave_lives:kill::0.5:-1" Delay 1 } OnSpawnOutput { Target "encounter_mines_start" Action $removeoutput Param "prewave-lives" } logic_relay { "targetname" "mines_win_relay" "onTrigger" "player,$displayTextChat,{f5c542}The Base has been retaken from the Red's for now. Although the Virus may return.,1,-1" "onTrigger" "player,$displayTextChat,{f5c542}Returning to regular protocol...,5,-1" } logic_relay { "targetname" "wipe_loopfix" "onTrigger" "player,$SetVar$hasRes,0,0,-1" } trigger_multiple { "targetname" "prewave_lives" "startDisabled" "0" "mins" "-512 -512 -512" "maxs" "512 512 512" "spawnflags" "1" "origin" "4870 5120 -780" "onStartTouch" "!activator,$SetVar$hasRes,4,0,-1" } trigger_multiple { "targetname" "prewave_lives" "startDisabled" "0" "mins" "-512 -512 -512" "maxs" "512 512 512" "spawnflags" "1" "origin" "4450 -6620 -2010" "onStartTouch" "!activator,$SetVar$hasRes,4,0,-1" } logic_branch { "startvalue" "0" // used to detect if wave is started or not "targetname" "playerResInWave" "onTrue" "player,$SetVar$inWave,1,0,-1" "onTrue" "playerResInWaveTest,$SetVar$inWave,1,0,-1" "onFalse" "player,$SetVar$inWave,0,0,-1" "onFalse" "playerResInWaveTest,$SetVar$inWave,0,0,-1" } math_counter { "targetname" "playerResInWaveTest" } 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" "4" // 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(playerResInWaveTest.inWave) < 1,string('99'),string('1')),?(int(playerResInWaveTest.inWave) < 1,string('99'),string('0')))" } logic_case { "targetname" "playerResConfirm" "case01" "1" "case02" "0" "case03" "99" "OnCase01" "!activator,$ForceRespawnDead,,2,-1" "OnCase01" "!activator,$AddCond,52 10,2.1,-1" //respawn uber, change 2nd number for duration "OnCase01" "!activator,$AddCond,32 10,2.1,-1" //Speed boost on respawn "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" "player,$DisplayTextChat,$$=''.. '{f5c542}' .. string(!activator.m_szNetname) .. string('{ffffff} has been revived, they have {f5c542}') .. string(!activator.hasRes) .. string('{ffffff} more ') .. ?(int(!activator.hasRes) > 1, string('lives left.'), string('life 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 "filters" SpawnTemplate "whatever" SpawnTemplate "filters_mini" SpawnTemplate "PlayersLeftLogic" SpawnTemplate "PlayerResInput" PlayerSpawnTemplate { Name "PlayerRes" Bone "bip_spine_2" } PlayerSpawnTemplate { Name "PlayerLivesDisplay" Bone "bip_spine_2" } PlayerSpawnTemplate "PlayerTracker" SpawnTemplate { Name "spawner" Origin "3704 2904 -640" Angles "0 45 0" } SpawnTemplate { Name "spawner" Origin "2236 3680 -576" Angles "0 0 0" } SpawnTemplate { Name "spawner" Origin "1476 240 -217.958" Angles "0 0 0" } SpawnTemplate { Name "spawner" Origin "-1040 1416 -192" Angles "0 0 0" } SpawnTemplate { Name "spawner" Origin "-1220 -248 -192" Angles "0 0 0" } SpawnTemplate { Name "spawner" Origin "-1044 -1896 -416" Angles "0 180 0" } SpawnTemplate { Name "spawner" Origin "-1208 -2600 -313.641" Angles "0 90 0" } SpawnTemplate { Name "spawner" Origin "-439.998 -3240 -480" Angles "0 180 0" } SpawnTemplate { Name "spawner" Origin "1396 -3344 -960" Angles "0 0 0" } Templates { Grey { Addcond { Name "TF_COND_REPROGRAMMED_NEUTRAL" } Attributes DisableDodge Action Mobber Tag bot_gry ExtAttr IgnoreNPC CustomEyeGlowColor "255 255 255" AdditionalStepSound "MVM.BotStep" SpawnTemplate "grybot_killswitch" CharacterAttributes { "collect currency on kill" 1 "maxammo metal increased" 10 "metal regen" 1000 "crit mod disabled" 0 "mult dmg vs npc" 0 "mult credit collect range" 0 "no resupply" 1 } } Red { Addcond { Name "TF_COND_REPROGRAMMED" } Attributes DisableDodge Action Mobber CustomEyeGlowColor "255 180 36" AdditionalStepSound "MVM.BotStep" CharacterAttributes { "collect currency on kill" 1 "maxammo metal increased" 10 "metal regen" 1000 "crit mod disabled" 0 "mult credit collect range" 0 "no resupply" 1 } } Red_Giant { AdditionalStepSound "common/null.wav" CharacterAttributes { "health from packs decreased" 0.05 "voice pitch scale" 0 } AddTemplate Red } Grey_Giant { AdditionalStepSound "common/null.wav" CharacterAttributes { "health from packs decreased" 0.05 "voice pitch scale" 0 } AddTemplate Grey } T_TFBot_Red_Medic_Kritz { Name "Kritz Medic" Class Medic ClassIcon medic_kritz_red Attributes SpawnWithFullCharge Skill Normal Tag bot_cantjump AddCond { Name "TF_COND_REPROGRAMMED" } Item "medfix" Item "The Kritzkrieg" Item "The Weather Master" ItemAttributes { ItemName "The Kritzkrieg" "ubercharge rate bonus" 200 "uber duration bonus" -10 } CharacterAttributes { "bot medic uber health threshold" 999 "heal rate bonus" 10 } } T_TFBot_Red_Giant_Medic_Kritz { Name "Giant Kritz Medic" Class Medic ClassIcon medic_kritz_red_giant Health 4500 Attributes MiniBoss Attributes SpawnWithFullCharge Attributes IgnoreEnemies Skill Expert Tag bot_giant Tag bot_cantjump AddCond { Name "TF_COND_REPROGRAMMED" } Item "The Kritzkrieg" Item "The Weather Master" ItemAttributes { ItemName "The Kritzkrieg" "ubercharge rate bonus" 200 "uber duration bonus" -10 "heal rate bonus" 200 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0 "airblast vulnerability multiplier" 0 "bot medic uber health threshold" 9999 } } } Wave // Wave 1 { StartWaveOutput { Target encounter_entrance_start Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } InitWaveOutput { Target encounter_entrance_init Action Trigger } SpawnTemplate tank_fix WaveSpawn { TotalCount 0 SpawnCount 0 FirstSpawnOutput { Target playerResInWave //REQUIRED | Used to tell self res logic that wave is active/ turn it off again at the end of a wave Action ToggleTest } } WaveSpawn { TotalCount 0 SpawnCount 0 FirstSpawnOutput { Target playerResVal3 //set res count to one of 3 set Action GetValue } } WaveSpawn // Tank 20K HP { Name "tank" TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 300 Tank { Name "Bomb Tank" StartingPathTrackNode "entrance_path_1" Health 20000 Speed 75 Skin 0 ClassIcon payload_blu Scale 0.375 DisableSmokeStack 1 DisableChildModels 1 NoScreenShake 1 NoCrushDamage 1 PingSound "common/null.wav" Model "models/empty.mdl" OnKilledOutput { Target entrance_wipe_relay Action Trigger } } } WaveSpawn { Name "barrier1" Where bot_warp_spawn TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 1 WaitBetweenSpawns 1 TotalCurrency 0 DoneMessage "{blue}The barrier is down! Payload health restored." DoneOutput { Target entrance_barrier_1_relay Action trigger } TFBot { Template T_TFBot_Giant_Soldier_Spammer Item "MvM GateBot Light Soldier" CharacterAttributes { "no_jump" 1 } AddTemplate Red_Giant } } WaveSpawn // Dummy { WaitForAllDead "barrier1" TotalCount 0 SpawnCount 0 WaitBeforeStarting 0 FirstSpawnOutput { Target grybot_end_relay Action Trigger } } WaveSpawn // Dummy { WaitForAllDead "barrier1" TotalCount 0 SpawnCount 0 WaitBeforeStarting 0.5 FirstSpawnOutput { Target spawnbot_gray1 Action $TeleportToEntity Param spawnbot_gray2 } } WaveSpawn { Name "barrier2" WaitForAllDead barrier1 Where bot_warp_spawn_2 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 1 WaitBetweenSpawns 1 TotalCurrency 0 DoneOutput { Target entrance_barrier_2_relay Action trigger } TFBot { Template T_TFBot_Giant_Soldier_Spammer Item "MvM GateBot Light Soldier" CharacterAttributes { "no_jump" 1 } AddTemplate Red_Giant } } WaveSpawn // Dummy { WaitForAllDead "barrier2" TotalCount 0 SpawnCount 0 WaitBeforeStarting 0 FirstSpawnOutput { Target grybot_end_relay Action Trigger } } WaveSpawn // Dummy { WaitForAllDead "barrier2" TotalCount 0 SpawnCount 0 WaitBeforeStarting 0.5 FirstSpawnOutput { Target spawnbot_gray2 Action $TeleportToEntity Param spawnbot_gray3 } } WaveSpawn { Name "barrier3" WaitForAllDead barrier2 Where bot_warp_spawn_3 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 1 WaitBetweenSpawns 1 TotalCurrency 0 DoneOutput { Target entrance_barrier_3_relay Action trigger } TFBot { Template T_TFBot_Giant_Heavyweapons Item "MvM GateBot Light Heavy" CharacterAttributes { "no_jump" 1 } AddTemplate Red_Giant } } WaveSpawn // Dummy { WaitForAllDead "barrier3" TotalCount 0 SpawnCount 0 WaitBeforeStarting 0 FirstSpawnOutput { Target grybot_end_relay Action Trigger } } WaveSpawn { Name "barrier4" WaitForAllDead barrier3 Where bot_warp_spawn_last TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 1 WaitBetweenSpawns 1 TotalCurrency 0 DoneOutput { Target entrance_barrier_last_relay Action trigger } TFBot { Template T_TFBot_Giant_Heavyweapons Item "MvM GateBot Light Heavy" CharacterAttributes { "no_jump" 1 } AddTemplate Red_Giant } } WaveSpawn { Name "gray" Where spawnbot_gray1 TotalCount 40 MaxActive 8 SpawnCount 4 WaitBeforeStarting 3 WaitBetweenSpawns 2 TotalCurrency 0 Support Limited RandomSpawn 1 TFBot { Class Pyro ClassIcon gry_lite Skill Normal //PreferExtraSlots 1 UseCustomModel "models/bots/pyro/bot_pyro_gray.mdl" CharacterAttributes { "airblast disabled" 1 } AddTemplate Grey } } WaveSpawn { Name "gray" Where spawnbot_gray1 TotalCount 33 MaxActive 6 SpawnCount 3 WaitBeforeStarting 3 WaitBetweenSpawns 3 TotalCurrency 0 Support Limited RandomSpawn 1 TFBot { Name "Bison Soldier" Class Soldier ClassIcon gry_lite Skill Expert // PreferExtraSlots 1 UseCustomModel "models/bots/soldier/bot_soldier_gray.mdl" WeaponRestrictions SecondaryOnly Item "The Righteous Bison" ItemAttributes { ItemName "The Righteous Bison" "set item tint RGB" 13882323 } AddTemplate Grey } } WaveSpawn { Name "gray" WaitForAllDead "barrier1" Where spawnbot_gray2 TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 5 WaitBetweenSpawns 10 TotalCurrency 0 RandomSpawn 1 Support Limited TFBot { Name "Giant Steel Gauntlet" Class Heavyweapons ClassIcon gry_lite Health 5000 Attributes MiniBoss Skill Expert MaxVisionRange 700 WeaponRestrictions MeleeOnly Tag bot_giant DesiredAttackRange 80 UseCustomModel "models/bots/heavy_boss/bot_heavy_gray_boss.mdl" Item "Fists of Steel" ItemAttributes { ItemName "Fists of Steel" "fire rate bonus" 0.6 "damage bonus" 1.2 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0 "airblast vulnerability multiplier" 0 "override footstep sound set" 2 } CustomWeaponModel { Slot 2 Model "models/weapons/c_models/c_fists_of_steel_gray/c_fists_of_steel_gray.mdl" } AddTemplate Grey_Giant } } WaveSpawn { Name "gray" WaitForAllDead "barrier1" Where spawnbot_gray2 TotalCount 66 MaxActive 6 SpawnCount 6 WaitBeforeStarting 5 WaitBetweenSpawns 6 TotalCurrency 0 Support Limited RandomSpawn 1 TFBot { Class Scout ClassIcon gry_lite Skill Normal UseCustomModel "models/bots/scout/bot_scout_gray.mdl" AddTemplate Grey } } WaveSpawn { Name "gray" WaitForAllDead "barrier2" Where spawnbot_gray3 TotalCount 24 MaxActive 3 SpawnCount 1 WaitBeforeStarting 5 WaitBetweenSpawns 6 TotalCurrency 0 Support Limited RandomSpawn 1 TFBot { Template T_TFBot_Scout_Shortstop ClassIcon gry_lite UseCustomModel "models/bots/scout/bot_scout_gray.mdl" AddTemplate Grey } } WaveSpawn { Name "gray" WaitForAllDead "barrier2" Where spawnbot_gray3 TotalCount 60 MaxActive 6 SpawnCount 1 WaitBeforeStarting 5 WaitBetweenSpawns 3 TotalCurrency 0 Support Limited RandomSpawn 1 TFBot { Template T_TFBot_Sniper_Huntsman ClassIcon gry_lite UseCustomModel "models/bots/sniper/bot_sniper_gray.mdl" AddTemplate Grey } } WaveSpawn { Name "gray" WaitForAllDead "barrier3" Where spawnbot_gray3 TotalCount 44 MaxActive 4 SpawnCount 4 WaitBeforeStarting 2 WaitBetweenSpawns 6 TotalCurrency 0 Support Limited RandomSpawn 1 TFBot { Template T_TFBot_Demoman_Knight ClassIcon gry_lite UseCustomModel "models/bots/demo/bot_demo_gray.mdl" AddTemplate Grey } } WaveSpawn { Name "gray" WaitForAllDead "barrier3" Where spawnbot_gray4 Where spawnbot_gray3 TotalCount 4 MaxActive 2 SpawnCount 1 WaitBeforeStarting 2 WaitBetweenSpawns 6 TotalCurrency 0 Support Limited RandomSpawn 1 TFBot { Name "Giant Charged Soldier" Class Soldier ClassIcon gry_lite Health 3800 Attributes MiniBoss Skill Normal MaxVisionRange 2000 WeaponRestrictions PrimaryOnly Tag bot_giant RocketCustomParticle "eyeboss_projectile" UseCustomModel "models/bots/soldier_boss/bot_soldier_gray_boss.mdl" Item "The Original" ItemAttributes { ItemName "The Original" "add cond when active" 36 "crit vs burning players" 1 "crit vs non burning players" 1 "faster reload rate" -0.8 "fire rate bonus" 2 "Projectile speed increased" 0.5 "blast dmg to self increased" 0 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0 "airblast vulnerability multiplier" 0 "override footstep sound set" 3 } AddTemplate Grey_Giant } } WaveSpawn { Name "gray" WaitForAllDead "barrier3" Where spawnbot_gray4 TotalCount 60 MaxActive 15 SpawnCount 1 WaitBeforeStarting 2 WaitBetweenSpawns 5 TotalCurrency 0 Support 1 RandomSpawn 1 TFBot { Name "Brawler" Class Heavyweapons ClassIcon gry_lite Skill Hard WeaponRestrictions MeleeOnly DesiredAttackRange 80 UseCustomModel "models/bots/heavy/bot_heavy_gray.mdl" AddTemplate Grey } } WaveSpawn { Name "gray" WaitForAllDead "barrier3" Where spawnbot_gray4 TotalCount 60 MaxActive 5 SpawnCount 1 WaitBeforeStarting 2 WaitBetweenSpawns 5 TotalCurrency 0 Support 1 RandomSpawn 1 TFBot { Name "Shotgun Engineer" Class Engineer ClassIcon gry_lite Skill Hard WeaponRestrictions PrimaryOnly DesiredAttackRange 80 UseCustomModel "models/bots/engineer/bot_engineer_gray.mdl" ItemAttributes { ItemName "TF_WEAPON_SHOTGUN_PRIMARY" "faster reload rate" 0.1 "fire rate bonus" 2.5 "bullets per shot bonus" 3 "damage bonus" 0.33 } AddTemplate Grey } } WaveSpawn { Name "FakeSpawn" Where bot_suicide WaitForAllDead "barrier1" TotalCount 40 SpawnCount 1 TotalCurrency 0 WaitBeforeStarting 1 WaitBetweenSpawns 0 PointTemplate { SpawnAtEntity Where IsCrit 0 IsMiniBoss 0 ClassIcon demo Name "FakeIcon" Origin "0 0 0" Angles "0 0 0" SpawnCurrencyPack "yes" } } WaveSpawn { Name "FakeSpawn" Where bot_suicide WaitForAllDead "barrier1" TotalCount 3 SpawnCount 1 TotalCurrency 0 WaitBeforeStarting 1 WaitBetweenSpawns 0 PointTemplate { SpawnAtEntity Where IsCrit 0 IsMiniBoss 1 ClassIcon heavy_shotgun_red_giant Name "FakeIcon" Origin "0 0 0" Angles "0 0 0" SpawnCurrencyPack "yes" } } WaveSpawn { Name "part01" Where entrance_spawn_red_1r Where entrance_spawn_red_1l TotalCount 40 MaxActive 10 SpawnCount 5 WaitBeforeStarting 1 WaitBetweenSpawns 5 TotalCurrency 100 Support Limited RandomChoice { RandomChoice { TFBot { Template T_TFBot_Red_Demoman Skill Normal } TFBot { Template T_TFBot_Red_Demoman Skill Normal } TFBot { Template T_TFBot_Red_Demoman Skill Hard } } } } WaveSpawn { Name "part01" Where entrance_spawn_red_1r Where entrance_spawn_red_1rh TotalCount 3 MaxActive 3 SpawnCount 1 WaitBeforeStarting 1 WaitBetweenSpawns 5 TotalCurrency 100 Support Limited RandomChoice { RandomChoice { TFBot { Template T_TFBot_Red_Giant_Heavyweapons_Shotgun } } } } WaveSpawn { Name "FakeSpawn" Where bot_suicide WaitForAllDead "barrier2" TotalCount 50 SpawnCount 1 TotalCurrency 0 WaitBeforeStarting 1 WaitBetweenSpawns 0 PointTemplate { SpawnAtEntity Where IsCrit 0 IsMiniBoss 0 ClassIcon sniper_smg_tind Name "FakeIcon" Origin "0 0 0" Angles "0 0 0" SpawnCurrencyPack "yes" } } WaveSpawn { Name "FakeSpawn" Where bot_suicide WaitForAllDead "barrier2" TotalCount 36 SpawnCount 1 TotalCurrency 0 WaitBeforeStarting 1 WaitBetweenSpawns 0 PointTemplate { SpawnAtEntity Where IsCrit 0 IsMiniBoss 0 ClassIcon demoknight_persian_nys Name "FakeIcon" Origin "0 0 0" Angles "0 0 0" SpawnCurrencyPack "yes" } } WaveSpawn { Name "part02" Where entrance_spawn_red_2l Where entrance_spawn_red_2r Where entrance_spawn_red_2s TotalCount 50 MaxActive 10 SpawnCount 5 WaitBeforeStarting 3 WaitBetweenSpawns 2 TotalCurrency 100 Support Limited RandomSpawn 1 RandomChoice { RandomChoice { TFBot { Name "SMG Sniper" Class Sniper ClassIcon sniper_smg_tind Skill Normal WeaponRestrictions SecondaryOnly Item "The Anger" AddTemplate Red } } } } WaveSpawn { Name "part02" Where entrance_spawn_red_2r Where entrance_spawn_red_2s TotalCount 36 MaxActive 9 SpawnCount 3 WaitBeforeStarting 3 WaitBetweenSpawns 6 TotalCurrency 100 Support Limited RandomSpawn 1 RandomChoice { RandomChoice { TFBot { Template T_TFBot_Demoman_Knight_Persian AddTemplate Red } } } } WaveSpawn { Name "FakeSpawn" Where bot_suicide WaitForAllDead "barrier3" TotalCount 45 SpawnCount 1 TotalCurrency 0 WaitBeforeStarting 1 WaitBetweenSpawns 0 PointTemplate { SpawnAtEntity Where IsCrit 0 IsMiniBoss 0 ClassIcon demo_sticky_red_daan Name "FakeIcon" Origin "0 0 0" Angles "0 0 0" SpawnCurrencyPack "yes" } } WaveSpawn { Name "FakeSpawn" Where bot_suicide WaitForAllDead "barrier3" TotalCount 2 SpawnCount 1 TotalCurrency 0 WaitBeforeStarting 1 WaitBetweenSpawns 0 PointTemplate { SpawnAtEntity Where IsCrit 0 IsMiniBoss 1 ClassIcon pyro_dragon_fury_swordstone Name "FakeIcon" Origin "0 0 0" Angles "0 0 0" SpawnCurrencyPack "yes" } } WaveSpawn { Name "part03" Where entrance_spawn_red_3a Where entrance_spawn_red_3b TotalCount 45 MaxActive 15 SpawnCount 5 WaitBeforeStarting 0 WaitBetweenSpawns 5 TotalCurrency 100 Support Limited RandomSpawn 1 RandomChoice { RandomChoice { TFBot { Template T_TFBot_Demo_Sticky ClassIcon demo_sticky_red_daan Skill Normal AddTemplate Red } } } } WaveSpawn { Name "part03" Where entrance_spawn_red_3b TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 3 WaitBetweenSpawns 6 TotalCurrency 100 Support Limited RandomSpawn 1 RandomChoice { RandomChoice { TFBot { Template T_TFBot_Giant_Pyro_Fury AddTemplate Red_Giant } } } } WaveSpawn { Name "FakeSpawn" Where bot_suicide WaitForAllDead "barrier4" TotalCount 2 SpawnCount 1 TotalCurrency 0 WaitBeforeStarting 1 WaitBetweenSpawns 0 PointTemplate { SpawnAtEntity Where IsCrit 0 IsMiniBoss 1 ClassIcon demo_burst_red_giant Name "FakeIcon" Origin "0 0 0" Angles "0 0 0" SpawnCurrencyPack "yes" } } WaveSpawn { Name "FakeSpawn" Where bot_suicide WaitForAllDead "barrier4" TotalCount 2 SpawnCount 1 TotalCurrency 0 WaitBeforeStarting 1 WaitBetweenSpawns 0 PointTemplate { SpawnAtEntity Where IsCrit 0 IsMiniBoss 1 ClassIcon medic_kritz_red Name "FakeIcon" Origin "0 0 0" Angles "0 0 0" SpawnCurrencyPack "yes" } } WaveSpawn { Name "FakeSpawn" Where bot_suicide WaitForAllDead "barrier4" TotalCount 40 SpawnCount 1 TotalCurrency 0 WaitBeforeStarting 1 WaitBetweenSpawns 0 PointTemplate { SpawnAtEntity Where IsCrit 0 IsMiniBoss 0 ClassIcon soldier Name "FakeIcon" Origin "0 0 0" Angles "0 0 0" SpawnCurrencyPack "yes" } } WaveSpawn { Name "FakeSpawn" Where bot_suicide WaitForAllDead "barrier4" TotalCount 3 SpawnCount 1 TotalCurrency 0 WaitBeforeStarting 1 WaitBetweenSpawns 0 PointTemplate { SpawnAtEntity Where IsCrit 0 IsMiniBoss 1 ClassIcon scout_bat_nys Name "FakeIcon" Origin "0 0 0" Angles "0 0 0" SpawnCurrencyPack "yes" } } WaveSpawn { Name "part04" Where entrance_spawn_red_4a TotalCount 4 MaxActive 4 SpawnCount 2 WaitBeforeStarting 3 WaitBetweenSpawns 6 TotalCurrency 100 Support Limited RandomSpawn 1 RandomChoice { Squad { TFBot { Template T_TFBot_Red_Giant_Demo_Burst Item "Scotch Bonnet" } TFBot { Template T_TFBot_Red_Giant_Medic_Kritz } } } } WaveSpawn { Name "part03" Where entrance_spawn_red_4c Where entrance_spawn_red_4a TotalCount 40 MaxActive 10 SpawnCount 5 WaitBeforeStarting 3 WaitBetweenSpawns 5 TotalCurrency 100 Support Limited RandomSpawn 1 RandomChoice { RandomChoice { TFBot { Template T_TFBot_Red_Soldier Skill Normal WeaponRestrictions PrimaryOnly } } } } WaveSpawn { Name "part03" Where entrance_spawn_red_4c TotalCount 3 MaxActive 3 SpawnCount 1 WaitBeforeStarting 3 WaitBetweenSpawns 10 TotalCurrency 100 Support Limited RandomSpawn 1 RandomChoice { RandomChoice { TFBot { Template T_TFBot_Giant_Scout Name "Giant Bat Scout" ClassIcon scout_bat_nys WeaponRestrictions MeleeOnly Item "MNC Mascot Outfit" AddTemplate Red_Giant } } } } } }