//Downtown Reverse by Skin King // Difficulty (?) #base robot_giant.pop #base robot_standard.pop #base robot_standard_red.pop #base robot_giant_red.pop #base robot_gatebot.pop #base robot_damno.pop #base reverse_timer.pop WaveSchedule { StartingCurrency 800 CanBotsAttackWhileInSpawnRoom yes WaveStartCountdown 5 RespawnWaveTimeBlue 1 FixedRespawnWaveTimeBlue 1 AddSentryBusterWhenDamageDealtExceeds 0 RobotLimit 26 ForceHoliday 2 NoHolidayPickups 1 MaxTotalPlayers 6 DisplayRobotDeathNotice 0 NoReanimators 1 NoMvMDeathTune 1 TextPrintTime 0 SniperAllowHeadshots 1 SentryBusterFriendlyFire 0 StandableHeads 1 //For reverse only ReverseWinConditions 1 BluHumanFlagCapture 0 BluHumanFlagPickup 1 BluHumanInfiniteAmmo 1 FlagCarrierMovementPenalty 0.5 AllowJoinTeamBlueMax 6 AllowJoinTeamBlue 1 HumansMustJoinTeam blue BluPlayersAreRobots 1 PrecacheModel "models/props_tumb/mvm/tank_shield.mdl" PrecacheModel "models/bots/sniper_boss/bot_sniper_boss.mdl" PrecacheModel "models/bots/demo/red_sentry_buster.mdl" PrecacheModel "models/props_mvm/mvm_upgrade_blu.mdl" PrecacheModel "models/props_mvm/robot_spawnpoint.mdl" PrecacheModel "models/props_mvm/no_entry.mdl" PrecacheModel "models/bots/boss_bot/boss_tankred.mdl" PrecacheModel "models/bots/boss_bot/boss_tankred_damage1.mdl" PrecacheModel "models/bots/boss_bot/boss_tankred_damage2.mdl" PrecacheModel "models/bots/boss_bot/boss_tankred_damage3.mdl" PrecacheModel "models/bots/boss_bot/boss_tankred_part1_destruction.mdl" PrecacheModel "models\bots\boss_bot\boss_blimpred.mdl" //This is the older blimp model using it because why not. PrecacheModel "models\bots\boss_bot\boss_blimpred_damage1.mdl" PrecacheModel "models\bots\boss_bot\boss_blimpred_damage2.mdl" PrecacheModel "models\bots\boss_bot\boss_blimpred_damage3.mdl" PrecacheModel "models/bots/boss_bot/boss_blimp.mdl" PrecacheModel "models/bots/boss_bot/boss_blimp_damage1.mdl" PrecacheModel "models/bots/boss_bot/boss_blimp_damage2.mdl" PrecacheModel "models/bots/boss_bot/boss_blimp_damage3.mdl" PrecacheModel "models/bots/boss_bot/boss_blimp_damage_explode.mdl" PrecacheModel "models/bots/boss_bot/boss_blimp_explode.mdl" OverrideSounds { "MVM.GiantCommonExplodes" "ambient/explosions/explode_3.wav" "MVM.BombWarning" "combine_bank_alarm.mp3" } DisableSound "Announcer.MVM_Spy_Alert" DisableSound "Announcer.mvm_spybot_death" DisableSound "Announcer.mvm_spybot_death_all" DisableSound "Announcer.MVM_First_Wave_Start" DisableSound "Announcer.MVM_Wave_Start" DisableSound "Announcer.MVM_Wave_End" DisableSound "Announcer.MVM_Wave_Lose" DisableSound "Announcer.MVM_Final_Wave_Start" DisableSound "Announcer.MVM_Final_Wave_End" DisableSound "Announcer.MVM_Robots_Planted" DisableSound "Announcer.MVM_All_Dead" DisableSound "Announcer.MVM_Bomb_Alert_Entered" DisableSound "Announcer.MVM_Bomb_Alert_Near_Hatch" DisableSound "Announcer.MVM_Bomb_Alert_Deploying" DisableSound "Announcer.MVM_Sentry_Buster_Alert" DisableSound "Announcer.MVM_Sentry_Buster_Alert_Another" DisableSound "Announcer.MVM_General_Wave_Start" DisableSound "Announcer.MVM_Game_Over_Loss" DisableSound "Announcer.MVM_Tank_Planted" DisableSound "Announcer.MVM_Tank_Alert_Spawn" DisableSound "Announcer.MVM_Tank_Alert_Another" DisableSound "Announcer.MVM_Tank_Alert_Multiple" DisableSound "Announcer.MVM_Tank_Alert_Halfway" DisableSound "Announcer.MVM_Tank_Alert_Halfway_Multiple" DisableSound "Announcer.MVM_Tank_Alert_Near_Hatch" DisableSound "Announcer.MVM_Tank_Alert_Deploying" PrecacheModel "models/props_mvm/robot_spawnpoint.mdl" PrecacheModel "models/workshop/weapons/c_models/c_celtic_cleaver/c_demo_sultan_sword.mdl" PlayerAttributes { Engineer { "max health additive bonus" 150 "cannot pick up intelligence" 1 } Spy { "cannot pick up intelligence" 1 } Scout { "cannot pick up intelligence" 1 } Heavyweapons { "cannot pick up intelligence" 1 } Medic { "cannot pick up intelligence" 1 } Soldier { "cannot pick up intelligence" 1 } Demoman { "cannot pick up intelligence" 1 } Pyro { "cannot pick up intelligence" 1 } Sniper { "cannot pick up intelligence" 1 } } ExtendedUpgrades // upgrades designed by Skin King and PDA Expert. { PersonalityChip_Scout { Name "Personality Chip" Attribute "air dash count" // The attribute name Description "Soar to the skies." Cap 2 // Maximum amount of the attribute Increment 2 // Attribute increment value per level Cost 800 PlayerUpgrade 1 // Makes this appear on the player section. AllowPlayerClass Scout } PersonalityChip_Soldier // increases blast radius of rocket launchers, allowing you to slay more enemies in a single shot. { Name "Personality Chip" Attribute "Blast radius increased" // The attribute name Description "Bigger Blasts." Cap 1.8 // Maximum amount of the attribute Increment 0.8 // Attribute increment value per level PlayerUpgrade 1 // Makes this appear on the player section. Cost 800 AllowPlayerClass Soldier } PersonalityChip_Pyro // increases vs burning dmg. { Name "Personality Chip" Attribute "afterburn duration penalty" // The attribute name Description "Your foes shall crumble." Cap 0.5 // Maximum amount of the attribute Increment -0.5 // Attribute increment value per level PlayerUpgrade 1 // Makes this appear on the player section. Cost 800 AllowPlayerClass Pyro SecondaryAttributes { "damage penalty" 0.4 "add cond on hit" 48 "add cond on hit duration" 1 "Reload time increased" 1.5 } } PersonalityChip_Demoman // full reload + sticky stickies { Name "Personality Chip" Attribute "reload full clip at once" // The attribute name Description "Reckless." Cap 1 // Maximum amount of the attribute Increment 1 // Attribute increment value per level PlayerUpgrade 1 // Makes this appear on the player section. Cost 800 AllowPlayerClass Demoman DisallowedUpgrade { Upgrade PersonalityChip_Demoman2 Level 1 } SecondaryAttributes { "stickybomb stick to enemies" 1 "Reload time increased" 1.5 } } PersonalityChip_Demoman2 // minigiant { Name "Personality Chip" Attribute "max health additive bonus" // The attribute name Description "Grow stronger." Cap 425 // Maximum amount of the attribute Increment 425 // Attribute increment value per level PlayerUpgrade 1 // Makes this appear on the player section. Cost 800 AllowPlayerClass Demoman DisallowedUpgrade { Upgrade PersonalityChip_Demoman Level 1 } SecondaryAttributes { "charge impact damage increased" 1 "charge recharge rate increased" 0.25 "model scale" 0.5 } } PersonalityChip_Heavy { Name "Personality Chip" Attribute "damage force reduction" // The attribute name Description "Stand your ground." Cap 1.5 // Maximum amount of the attribute Increment 0.5 // Attribute increment value per level PlayerUpgrade 1 // Makes this appear on the player section. Cost 800 AllowPlayerClass Heavyweapons SecondaryAttributes { "airblast vulnerability multiplier" 0.5 "airblast vertical vulnerability multiplier" 0.75 } } PersonalityChip_Engineer // maybe add extra disp range if it proves underwhelming? { Name "Personality Chip" Attribute "Repair rate increased" // The attribute name Description "Repair faster." Cap 3 // Maximum amount of the attribute Increment 2 // Attribute increment value per level PlayerUpgrade 1 // Makes this appear on the player section. Cost 800 AllowPlayerClass Engineer } PersonalityChip_Medic { Name "Personality Chip" Attribute "add cond when active" Description "Take care of your friends." Cap 114 Increment 114 PlayerUpgrade 1 Cost 800 AllowPlayerClass Medic SecondaryAttributes //Secondary attributes applied when upgrade is applied, for each upgrade level { "heal rate bonus" 0.5 "medic machinery beam" 5 } } PersonalityChip_Sniper { Name "Personality Chip" Attribute "headshot damage increase" Description "Blast them into bits." Cap 1.5 Increment 0.5 PlayerUpgrade 1 Cost 800 AllowPlayerClass Sniper SecondaryAttributes //Secondary attributes applied when upgrade is applied, for each upgrade level { "crit kill will gib" 1 } } PersonalityChip_Spy // probably too weak for the price, maybe bumb up to 50 if it proves to be that. { Name "Personality Chip" Attribute "max health additive bonus" // The attribute name Description "Health up." Cap 25 // Maximum amount of the attribute Increment 25 // Attribute increment value per level Cost 800 PlayerUpgrade 1 // Makes this appear on the player section. AllowPlayerClass Spy } } ExtraSpawnPoint { Name "newsstand" TeamNum 2 X "-280" Y "420" Z "-90" } ExtraSpawnPoint { Name "portapotty" TeamNum 2 X "350" Y "-855" Z "-127" } ExtraSpawnPoint //// May or May not use { Name "cratesbytankspawn" TeamNum 2 X "1952" Y "1008" Z "-231" } ExtraSpawnPoint { Name "mannholecover" TeamNum 2 X "-1763" Y "-752" Z "-127" } ExtraSpawnPoint { Name "dumptruck" TeamNum 2 X "-1149" Y "1465" Z "-21" } ExtraSpawnPoint { Name "hatchgaurdian" TeamNum 2 X "-3296" Y "-178" Z "178" } ExtraSpawnPoint { Name "redspawn" TeamNum 2 X "-4385" Y "-210" Z "-17" } ExtraTankPath { Name "pl_path" Node "2538.94 1130.53 -96" Node "2539 1049 -96" Node "2539 774 -96" Node "2529.94 -276.58 -200" Node "2529.94 -636.577 -200" Node "2393.94 -764.577 -200" Node "1737.94 -764.577 -200" Node "1646 -634 -200" Node "1642 -313 -200" Node "1641.94 -56.58 -200" Node "1641.94 135.42 -200" Node "1561.94 231.42 -200" Node "1225.94 231.42 -104" Node "1129.94 135.42 -104" Node "1129.94 -56.58 -104" Node "1130 -399 -104" Node "898 -480 -104" Node "364 -480 -120" Node "71 -712 -120" Node "71 -1177 -120" Node "-65 -1329 -120" Node "-944 -1328 -120" Node "-1104 -1152 -120" Node "-1104 -112 -120" Node "-1176 16 -120" Node "-1176 128 -120" Node "-1176 452 -120" Node "-1176 808 -120" Node "-1280 864 -120" Node "-1488 864 -120" Node "-1584 976 -120" Node "-1584 1456 -120" Node "-1744 1568 -120" Node "-1984 1568 -120" Node "-2320 1568 0" Node "-3056 1568 0" Node "-3152 1424 0" Node "-3152 800 0" Node "-3056 720 0" Node "-2912 720 0" Node "-2804 483 0" Node "-2804 227 0" Node "-2804 -61 0" Node "-2984 -185 0" Node "-3120 -185 0" Node "-3281 -185 0" } ExtraTankPath // very basic alt path, no real smooth turns here boyo { Name "pl_path2" Node "2538.94 1130.53 -96" // 1 Node "2539 1049 -96" // 2 Node "2539 774 -96" // 3 Node "2529.94 -276.58 -200" // 4 Node "2529.94 -636.577 -200" // 5 Node "2393.94 -764.577 -200" // 6 Node "1737.94 -764.577 -200" // 7 Node "1646 -634 -200" // 8 Node "1642 -313 -200" // 9 Node "1641.94 -56.58 -200" // 10 Node "1641.94 135.42 -200" // 11 Node "1561.94 231.42 -200" // 12 Node "1225.94 231.42 -104" // 13 Node "1129.94 135.42 -104" // 14 Node "1129.94 -56.58 -104" // 15 Node "1130 -399 -104" // 16 Node "898 -480 -104" // 17 Node "364 -480 -120" // 18 Node "112 -320 -120" // 19 Node "112 808 -120" // 20 Node "-1080 864 -120" // 21 Node "-1100 864 -120" // 22 Node "-1176 808 -120" // 23 Node "-1176 452 -120" // 24 Node "-1176 128 -120" // 25 Node "-1176 16 -120" // 26 Node "-1176 -50 -120" // 27 Node "-1176 -1320 -120" // 28 Node "-1880 -1320 -120" // 29 Node "-2260 -1320 0" // 30 Node "-2750 -1320 0" // 31 Node "-2915 -915 0" // 32 Node "-3050 -415 0" // 33 Node "-3135 -332 0" // 34 Node "-3300 -360 0" // 35 } SpawnTemplate "main" SpawnTemplate "corelogic" SpawnTemplate "payload_logic" SpawnTemplate "initialize_logic_rocketminisentry" SpawnTemplate "spawns_red" SpawnTemplate "spawnpoints" //Put this right below your Pointtemplate area SpawnTemplate "textualtimer" PointTemplates { textualtimer { OnSpawnOutput { Param 8 // change the value for minutes, set to 20 cuz the point temp counts down by 2 for some reason Target minutehand Action SetValue } OnSpawnOutput { Param 0 // change the value for seconds Target secondhand Action SetValue } logic_relay { "targetname" "loserelay" "startdisabled" "1" "ontrigger" "bots_win_red,RoundWin,,2,-1" "ontrigger" "realtimer,cancelpending,,2,-1" "onspawn" "wave_start*,addoutput,ontrigger realtimer:trigger::0:-1,0,-1" "onspawn" "wave_finish*,addoutput,ontrigger realtimer:cancelpending::0:-1,0,-1" "onspawn" "wave_finish*,addoutput,ontrigger loserelay:cancelpending::0:-1,0,-1" } NoFixup 1 math_counter { "targetname" "minutehand" "max" "9999" "outvalue" "timerformat,$setkey$case01,,0,-1" "onhitmin" "loserelay,enable,,1,-1" } math_counter { "targetname" "secondhand" "max" "60" "outvalue" "timerformat,$setkey$case02,,0,-1" "outvalue" "zerocompare,setvaluecompare,,0,-1" "onhitmin" "loserelay,trigger,,0,-1" "onhitmin" "!self,setvalue,60,1,-1" "onhitmin" "minutehand,subtract,1,1,-1" } logic_compare { "targetname" "zerocompare" "comparevalue" "9" "onequalto" "timerformat,$setkey$case16,%:0%,0,-1" "ongreaterthan" "timerformat,$setkey$case16,%:%,0,-1" } logic_case { "targetname" "timerformat" "case16" "%:%" "ondefault" "timertext,$setkey$message,,0,-1" "ondefault" "timertext,display,0,0,-1" } game_text { "targetname" "timertext" "color" "65 155 255" "holdtime" "1" "spawnflags" "1" "x" "0.7" "y" "0.9" } logic_relay { "targetname" "realtimer" "spawnflags" "2" "ontrigger" "timerformat,$format,,0.01,-1" "ontrigger" "secondhand,subtract,1,0,-1" "ontrigger" "!self,trigger,,1,-1" } game_round_win { "teamnum" "2" "targetname" "bots_win_red" "force_map_reset" "1" } } spawnpoints // put this stuff in your pointtemplates area { // models NoFixup 1 prop_dynamic { "targetname" "spawnpoint_newsstand" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "-280 420 -130" "angles" "0 180 0" "skin" "3" } // on logic, turns on the hologram when logic is activated NoFixup 1 logic_relay { "targetname" "newsstand_on_logic" "OnTrigger" "spawnpoint_newsstand,skin,0,0,-1" } // models NoFixup 1 prop_dynamic { "targetname" "spawnpoint_portapotty" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "350 -855 -127" "angles" "0 180 0" "skin" "3" } // on logic, turns on the hologram when logic is activated NoFixup 1 logic_relay { "targetname" "portapotty_on_logic" "OnTrigger" "spawnpoint_portapotty,skin,0,0,-1" } // models NoFixup 1 prop_dynamic { "targetname" "spawnpoint_mannholecover" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "-1763 -752 -127" "angles" "0 180 0" "skin" "3" } // on logic, turns on the hologram when logic is activated NoFixup 1 logic_relay { "targetname" "mannholecover_on_logic" "OnTrigger" "spawnpoint_mannholecover,skin,0,0,-1" } // models NoFixup 1 prop_dynamic { "targetname" "spawnpoint_dumptruck" "model" "models/props_mvm/robot_spawnpoint.mdl" "disableshadows" "1" "defaultanim" "idle" "origin" "-1149 1465 -21" "angles" "0 180 0" "skin" "3" } // on logic, turns on the hologram when logic is activated NoFixup 1 logic_relay { "targetname" "dumptruck_on_logic" "OnTrigger" "spawnpoint_dumptruck,skin,0,0,-1" } } prop_dynamic //newsstand spawn { "DefaultAnim" "idle" "angles" "0 180 0" "disableshadows" "1" "model" "models/props_mvm/robot_spawnpoint.mdl" "modelscale" "1.0" "rendercolor" "255 255 255" "origin" "477 200 36" } prop_dynamic //portapotty spawn { "DefaultAnim" "idle" "angles" "0 180 0" "disableshadows" "1" "model" "models/props_mvm/robot_spawnpoint.mdl" "modelscale" "1.0" "rendercolor" "255 255 255" "origin" "425 -855 -127" } prop_dynamic //mannholecover spawn { "DefaultAnim" "idle" "angles" "0 180 0" "disableshadows" "1" "model" "models/props_mvm/robot_spawnpoint.mdl" "modelscale" "1.0" "rendercolor" "255 255 255" "origin" "-1763 -752 -127" } prop_dynamic //dumptruck spawn { "DefaultAnim" "idle" "angles" "0 180 0" "disableshadows" "1" "model" "models/props_mvm/robot_spawnpoint.mdl" "modelscale" "1.0" "rendercolor" "255 255 255" "origin" "-1149 1465 -21" } //prop_dynamic //extra spawn for when you want to add new one in, even though you can copy paste another block, convience purpose i guess //{ // "DefaultAnim" "idle" // "angles" "0 180 0" // "disableshadows" "1" // "model" "models/props_mvm/robot_spawnpoint.mdl" // "modelscale" "1.0" //"rendercolor" "255 255 255" //"origin" "477 200 36" //} spawns_red { prop_dynamic { "angles" "0 0 0" "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" "0" "solid" "6" "origin" "-3616 -1984 -48" } } corelogic { NoFixup 1 game_round_win { "TeamNum" "2" "targetname" "bots_win_red" "switch_teams" "0" "force_map_reset" "1" } logic_relay { "targetname" "redwin_relay" "OnTrigger" "bots_win_red,RoundWin,,0,-1" } logic_relay { "targetname" "kill_critboost" "OnSpawn" "bot_buff_condition,kill,,0,-1" "OnSpawn" "bot_buff_condition_short,kill,,0,-1" } game_round_win //do not { "origin" "0 0 0" "TeamNum" "2" "targetname" "bots_win_red" "switch_teams" "0" "force_map_reset" "1" "classname" "game_round_win" } } initialize_logic_rocketminisentry { NoFixUp 1 //IMPORTANT!! /// detect buildings template OnSpawnOutput { Target "rafmod_map_rot" Action "Open" } //filters filter_activator_class //detects all engineer devices { "targetname" "rafmod_filter_obj" "filterclass" "obj_*" } // func_door needed to detect buildings func_door { "targetname" "rafmod_map_rot" "mins" "-10 -10 -10" "maxs" "10 10 10" "movedir" "-90 0 0" "spawnflags" "4104" "speed" "0.1" "wait" "0.01" "OnFullyClosed" "!self,Open,,0,-1" } trigger_multiple { "targetname" "map_detect_building" "mins" "-10000 -10000 -10000" "maxs" "10000 10000 10000" "filtername" "rafmod_filter_obj" "spawnflags" "64" "parentname" "rafmod_map_rot" "OnStartTouch" "rafmod_filter_obj_sentrygun_is_rocket_mini,TestActivator,,0,-1" } filter_multi { "targetname" "rafmod_filter_obj_sentrygun_is_rocket_mini" "filter01" "rafmod_filter_obj_sentrygun_rocket_mini" "filter02" "rafmod_filter_var_rocket_mini" "filter03" "rafmod_filter_is_mini_sentry" "OnPass" "m_rocket_minisentry,ForceSpawnAtEntityOrigin,!activator,0,-1" } filter_activator_class { "targetname" "rafmod_filter_obj_sentrygun_rocket_mini" "filterclass" "obj_sentrygun" } $filter_variable { "targetname" "rafmod_filter_var_rocket_mini" "$name" "rocket_can_fire" "$value" "1" "Negated" "1" "$compare" "equal" } $filter_sendprop { "targetname" "rafmod_filter_is_mini_sentry" "$name" "m_bMiniBuilding" "$value" "1" } /// rocket minisentry maker env_entity_maker { "targetname" "m_rocket_minisentry" "EntityTemplate" "t_rocket_minisentry" } } /// Template for "m_rocket_minisentry" t_rocket_minisentry { /// This entire part parents the weapon mimic to the sentry. /// The "rafmod_obj_minirocket_trigger" is parented to the sentry ... that way we can adjust the weapon mimic's position on the sentry /// OnSpawnOutput { Target "rafmod_obj_minirocket_rot" Action "Open" } filter_activator_class { "targetname" "rafmod_filter_minirocketsentry_obj_sentrygun" "filterclass" "obj_sentrygun" } func_door { "targetname" "rafmod_obj_minirocket_rot" "mins" "-10 -10 -10" "maxs" "10 10 10" "movedir" "-90 0 0" "spawnflags" "4104" "speed" "0.1" "wait" "0.01" "OnFullyClosed" "!self,Open,,0,-1" } trigger_multiple { "targetname" "rafmod_obj_minirocket_trigger" "parentname" "rafmod_obj_minirocket_rot" "filtername" "rafmod_filter_minirocketsentry_obj_sentrygun" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "64" "OnStartTouchAll" "rafmod_obj_minirocket_trigger,$SetKey$parentname,,0,1" "OnStartTouchAll" "rafmod_obj_minirocket_rot,Kill,,0.1,1" "OnStartTouchAll" "rafmod_obj_minirocket_trigger,SetParent,!activator,0,1" "OnStartTouchAll" "rafmod_obj_minirocket_trigger,SetParentAttachment,muzzle,0.1,1" ///sets the parent attachment to the "muzzle" part of the gun "OnStartTouchAll" "!activator,AddOutput,OnUser2 rafmod_filter_rocket_mini_can_fire:TestActivator::0:1,0,1" //allows for firing of rockets "OnStartTouchAll" "!activator,FireUser2,,1,1" // begins the check loop "OnStartTouchAll" "!activator,$SetVar$rocket_can_fire,1,0,1" //custom var allows us to not have to name the sentrygun } /// sets the weapon mimic owner to sentry OnSpawnOutput { Target "rafmod_rocket_mini_shooter" Action "$SetOwner" Param "!activator" } tf_point_weapon_mimic { "targetname" "rafmod_rocket_mini_shooter" "parentname" "rafmod_obj_minirocket_trigger" "origin" "50 0 0" //use origin to adjust where the rockets shoot from "speedmin" "1000" "speedmax" "1000" "WeaponType" "0" "SplashRadius" "160" "Damage" "75" "teamnum" "2" "OnUser1" "!self,FireOnce,,0,-1" } /// Goes through a series of filters to check if: /// It's firing + not disabled, /// If wrangled (if no, fire every 1 second) (if yes, fire every 0.5 seconds) /// ++ This part goes through a relay to ensure the sentry doesn't fire two rockets quickly /// "rocket_minisentry_has_ammo_can_fire_math" is used to track ammo /// ++ This constantly updates every time the rocket fires, and doesn't get muddled with an Engie repairing ammo /// Finally, sees if the sentry has greater than 10 ammo before firing. /// ++ comes with firing and empty clip sounds, too! filter_multi { "targetname" "rafmod_filter_rocket_mini_can_fire" "filter01" "rafmod_filter_rocket_mini_state" "filter02" "rafmod_filter_rocket_mini_disabled" "OnPass" "rafmod_filter_rocket_mini_is_player_controlled,TestActivator,,0,-1" "OnFail" "rafmod_filter_rocket_mini_can_fire,TestActivator,,0.5,-1" } $filter_sendprop { "targetname" "rafmod_filter_rocket_mini_is_player_controlled" "$name" "m_bPlayerControlled" "$value" "1" "OnPass" "rafmod_relay_rocket_mini_fire,CancelPending,,0,-1" "OnPass" "rafmod_relay_rocket_mini_fire,FireUser1,,0.01,-1" "OnFail" "rafmod_relay_rocket_mini_fire,CancelPending,,0,-1" "OnFail" "rafmod_relay_rocket_mini_fire,FireUser2,,0.01,-1" } logic_relay { "targetname" "rafmod_relay_rocket_mini_fire" "OnUser1" "rocket_minisentry_has_ammo_can_fire_math,GetValue,,0.5,-1" //wrangler fire rate "OnUser2" "rocket_minisentry_has_ammo_can_fire_math,GetValue,,1,-1" //standard, non-wrangled fire rate } math_counter { "targetname" "rocket_minisentry_has_ammo_can_fire_math" "min" "0" //minimum ammo value "max" "150" //max ammo value "startvalue" "150" //starting ammo value "OutValue" "!activator,$SetProp$m_iAmmoShells,,0,-1" "OutValue" "rafmod_filter_rocket_mini_can_fire,TestActivator,,0,-1" "OnGetValue" "!activator,$GetProp$m_iAmmoShells,rocket_minisentry_has_ammo_can_fire_math|SetValueNoFire|,0,-1" "OnGetValue" "rafmod_filter_rocket_mini_has_enough_ammo,TestActivator,,0,-1" } /// The filters $filter_sendprop { "targetname" "rafmod_filter_rocket_mini_state" "$name" "m_iState" "$value" "2" //means it's firing or wrangled } $filter_sendprop { "targetname" "rafmod_filter_rocket_mini_disabled" "$name" "m_bDisabled" "$value" "0" //if disabled } /// Final Touch /// This controls how much ammo is used, and subtracts the difference. If it doesn't have enough ammo, loops logic and plays an empty clip sound. $filter_sendprop //compares if ammo if >=10 { "targetname" "rafmod_filter_rocket_mini_has_enough_ammo" "$name" "m_iAmmoShells" "$value" "10" "$compare" "greater than or equal" "OnPass" "rocket_minisentry_has_ammo_can_fire_math,Subtract,10,0,-1" //Subtracts 10 ammo on mini "OnPass" "rafmod_rocket_mini_shooter,FireUser1,,0,-1" //fires the rocket, used in conjunction with "rafmod_filter_rocket_mini_has_enough_ammo" "OnPass" "!activator,$PlaySound,Building_Sentrygun.FireRocket,0,-1" //sound for rocket fire "OnFail" "rocket_minisentry_has_ammo_can_fire_math,Add,0,0,-1" //forces OutValue to refire "OnFail" "!activator,$PlaySound,Building_Sentrygun.Empty,0,-1" } RemoveIfKilled "rafmod_filter_minirocketsentry_obj_sentrygun" RemoveIfKilled "rafmod_obj_minirocket_trigger" RemoveIfKilled "rafmod_rocket_mini_shooter" RemoveIfKilled "rafmod_filter_rocket_mini_can_fire" RemoveIfKilled "rafmod_filter_rocket_mini_is_player_controlled" RemoveIfKilled "rafmod_relay_rocket_mini_fire" RemoveIfKilled "rocket_minisentry_has_ammo_can_fire_math" RemoveIfKilled "rafmod_filter_rocket_mini_state" RemoveIfKilled "rafmod_filter_rocket_mini_disabled" RemoveIfKilled "rafmod_filter_rocket_mini_has_enough_ammo" } payload //to my knowledge, implementing the payload hud is currently impossible as the hud can only be instanced on map load, however the control point hud shows up and can still display the number of players pushing the payload { NoFixup 1 logic_auto { "OnMapSpawn" "bot_stun_reprogram,Kill,,0,-1" } prop_dynamic { "targetname" "payload_model" "model" "models/props_trainyard/bomb_cart.mdl" "origin" "10 0 -10" "angles" "0 180 0" "solid" "0" } func_tracktrain { "dmg" "0" "height" "15" //change this number to adjust the height of the payload from the ground, if you want people to jump on the payload, it shoudld be 72 units from the ground (this does not always accurately reflect the value shown here) "ManualAccelSpeed" "70" "ManualDecelSpeed" "150" "ManualSpeedChanges" "1" "MoveSound" "Cart.Roll" "MoveSoundMaxPitch" "200" "MoveSoundMaxTime" "0" "MoveSoundMinPitch" "60" "MoveSoundMinTime" "0" "orientationtype" "1" "origin" "0 0 16" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "0" "spawnflags" "514" "speed" "0" //this makes the cart stationary when it spawns "StartSound" "Cart.RollStart" "startspeed" "90" //change this number to adjust the maximum speed of the payload, actual speed is determined by logic_case "StopSound" "Cart.RollStop" "target" "pl_path_1" //change the FIXME to the name of the path_track node you want to spawn at, different maps will have different names, if you are using a custom tank path you can use the name of the path to make it spawn there "targetname" "cart_tracktrain" "velocitytype" "1" "volume" "10" "wheels" "20" "mins" "-36 -25 -54" "maxs" "52 25 14" } //phys_constraint //this is required, without this entity the model will be disjointed from the payload itself //{ // "classname" "phys_constraint" // "angles" "0 270 0" // "attach1" "cart_tracktrain" // "attach2" "cart_physprop" // "forcelimit" "0" // "spawnflags" "1" // "targetname" "cart_constraint" // "teleportfollowdistance" "0" // "torquelimit" "0" // "origin" "-38 72 -18" //} trigger_capture_area { "area_cap_point" "cart_point" "area_time_to_cap" "99999" //this is a very high number so that the control point cant be captured at any point, if it is capped, the payload will not move "parentname" "payload_model" "StartDisabled" "0" "targetname" "cart_area" "team_cancap_2" "0" //this makes it so that red team cannot push the payload "team_cancap_3" "1" "team_numcap_2" "1" //you cant "finish" capturing a payload, so these keyvalues are ineffective "team_numcap_3" "1" "team_spawn_2" "0" "team_spawn_3" "0" "team_startcap_2" "1" //this also is ineffective, as the logic_case entity is used to affect the cart speed depending on how many blu players are on it "team_startcap_3" "1" "OnNumCappersChanged" "cart_remap,InValue,,0,-1" "OnNumCappersChanged" "cart_watcher,SetNumTrainCappers,,0,-1" "mins" "-112 -96 -60" //trigger_capture_area and dispenser_touch_trigger should have the same mins and maxs "maxs" "112 96 60" } dispenser_touch_trigger { "parentname" "payload_model" "targetname" "cart_dispenser_trigger" "mins" "-112 -96 -60" //trigger_capture_area and dispenser_touch_trigger should have the same mins and maxs "maxs" "112 96 60" } mapobj_cart_dispenser //spawning the payload in waveschedule will cause the dispenser to explode for some reason { "parentname" "payload_model" "spawnflags" "12" "targetname" "cart_dispenser" "TeamNum" "3" "touch_trigger" "cart_dispenser_trigger" "origin" "-31 -12 56" } info_particle_system { "angles" "-80.7088 53.9446 -53.5839" "cpoint1_parent" "0" "cpoint2_parent" "0" "cpoint3_parent" "0" "cpoint4_parent" "0" "cpoint5_parent" "0" "cpoint6_parent" "0" "cpoint7_parent" "0" "effect_name" "cart_flashinglight" "parentname" "payload_model" "start_active" "0" "targetname" "cart_particles" "origin" "39 5 46" } env_spark { "angles" "0 0 0" "Magnitude" "1" "MaxDelay" "0" "parentname" "payload_model" "spawnflags" "0" "targetname" "cart_spark_left" "TrailLength" "2" "origin" "0.080101 14 -36" } env_spark { "angles" "0 0 0" "Magnitude" "1" "MaxDelay" "0" "parentname" "payload_model" "spawnflags" "0" "targetname" "cart_spark_right" "TrailLength" "2" "origin" "0.080101 -14 -36" } //trigger_hurt //{ // "damage" "2000" //if the payload happens to collide with a tank, it will damage the tank for this number, can be set to a higher number to instantly destroy the tank // "damagecap" "20" // "damagemodel" "0" // "damagetype" "16" // "filtername" "cart_filter_noplayers" // "origin" "14.29 0 -20" // "parentname" "payload_model" // "spawnflags" "1096" // "StartDisabled" "0" // "targetname" "cart_hurt" // // "mins" "-4 -24 -34" // "maxs" "4 24 34" //} team_control_point //this is a hidden control point that comes with the payload { //you must have atleast one control point on the map in order for the trigger_capture_area to work, otherwise the payload will not operate in any capacity "classname" "team_control_point" //the purpose of the placeholder control point is set here to enable the trigger_capture_area "angles" "0 0 0" "point_default_owner" "2" "point_group" "0" "point_index" "4" //if you want to have multiple payloads on the map at the same time, make sure to change the index so each control point has a unique index, again having more than eight unique control points will crash the server "point_printname" "TODO: Set Name" "point_start_locked" "0" "point_warn_on_cap" "2" "point_warn_sound" "ControlPoint.CaptureWarn" "random_owner_on_restart" "0" "spawnflags" "14" //this hides the model, disables sounds and disables shadows "StartDisabled" "0" "targetname" "cart_point" "team_bodygroup_0" "3" "team_bodygroup_2" "1" "team_bodygroup_3" "1" "team_icon_0" "sprites/obj_icons/icon_obj_neutral" "team_icon_2" "sprites/obj_icons/icon_obj_red" "team_icon_3" "sprites/obj_icons/icon_obj_blu" "team_model_0" "models/effects/cappoint_hologram.mdl" "team_model_2" "models/effects/cappoint_hologram.mdl" "team_model_3" "models/effects/cappoint_hologram.mdl" "team_previouspoint_3_0" "cart_point" //this is required so the payload isnt "locked" "team_timedpoints_2" "0" "team_timedpoints_3" "0" "origin" "10 0 -42" } logic_case { "Case01" "0" //you can add more cases here to raise the maximum number of players that can affect the payload, by default max speed is reached at three players "Case02" "1" //these Case01, Case02, etc... keyvalues represents the outputs sent depending on how many players are pushing the payload at any given time "Case03" "2" "Case04" "3" "targetname" "cart_case" "OnCase01" "payloadtank,SetSpeed,0,0,-1" //change the first number here to adjust the speed per case as a percentage of "startspeed" defined in func_tracktrain, does not go below -1 or above 1, negative numbers roll backwards "OnCase02" "payloadtank,SetSpeed,55,0,-1" "OnCase03" "payloadtank,SetSpeed,77,0,-1" "OnCase04" "payloadtank,SetSpeed,100,0,-1" "OnCase01" "cart_tracktrain,SetSpeedDirAccel,0,0,-1" //change the first number here to adjust the speed per case as a percentage of "startspeed" defined in func_tracktrain, does not go below -1 or above 1, negative numbers roll backwards "OnCase02" "cart_tracktrain,SetSpeedDirAccel,0.55,0,-1" "OnCase03" "cart_tracktrain,SetSpeedDirAccel,0.77,0,-1" "OnCase04" "cart_tracktrain,SetSpeedDirAccel,1.0,0,-1" "OnCase01" "cart_spark_left,StopSpark,,0,-1" "OnCase01" "cart_spark_right,StopSpark,,0,-1" "OnCase02" "cart_spark_right,StopSpark,,0,-1" "OnCase02" "cart_spark_left,StopSpark,,0,-1" "OnCase03" "cart_spark_left,StopSpark,,0,-1" "OnCase03" "cart_spark_right,StopSpark,,0,-1" "OnCase04" "cart_spark_right,StopSpark,,0,-1" "OnCase04" "cart_spark_left,StopSpark,,0,-1" "OnCase01" "cart_particles,Stop,,0,-1" "OnCase02" "cart_particles,Start,,0,-1" "OnCase03" "cart_particles,Start,,0,-1" "OnCase04" "cart_particles,Start,,0,-1" "origin" "10 0 62" } math_remap { "classname" "math_remap" "in1" "0" //make sure you also change the numbers if you introduce more cases in logic_case, in1/out1 represent the minimum amount of players on the cart and out1/out2 represents the maximum "in2" "3" //if you want to raise the maximum amount of players on the cart, you would have to change the keyvalues here and add more cases to logic_case "out1" "0" "out2" "3" "spawnflags" "2" "targetname" "cart_remap" "OutValue" "cart_case,InValue,,0,-1" "origin" "-14 0 62" } filter_activator_class //this filter is used by the trigger_hurt entity to not affect players { "classname" "filter_activator_class" "filterclass" "player" "Negated" "1" "targetname" "cart_filter_noplayers" "origin" "-70 72 -18" } team_control_point_master //this entity is required to enable the control point { "classname" "team_control_point_master" "caplayout" "3, 0 1 2" "cpm_restrict_team_cap_win" "2" //probably ineffective "custom_position_x" "0.33" "custom_position_y" "0.82" "partial_cap_points_rate" "0.1" "score_style" "1" "switch_teams" "1" "targetname" "cart_master" "team_base_icon_2" "sprites/obj_icons/icon_base_red" "team_base_icon_3" "sprites/obj_icons/icon_base_blu" "origin" "-62 -40 -10" } team_train_watcher { "classname" "team_train_watcher" "goal_node" "pl_path_46" //this should be the final path_track node of the desired track, FIXME by default as different maps will have different names "hud_min_speed_level_1" "1" "hud_min_speed_level_2" "60" "hud_min_speed_level_3" "80" "linked_cp_1" "cart_point" //placeholder control point set here to enable the trigger_capture_area "linked_pathtrack_1" "pl_path_46" //set this to the final path_track node, same as goal_node, to prevent the administrator from saying voice lines prematurely "speed_forward_modifier" "1" "start_node" "pl_path_1" //this should be the path_track node of where the payload spawns, FIXME by default as different maps will have different names "targetname" "cart_watcher" "train" "cart_tracktrain" "train_can_recede" "1" //set this to 0 to disable payload rolling backwards, 1 to enable "OnTrainStartRecede" "payloadtank,SetSpeed,-10,0,-1" "OnTrainStartRecede" "cart_tracktrain,SetSpeedDirAccel,-0.1,0,-1" "OnTrainStartRecede" "cart_spark_left,StartSpark,,0,-1" "OnTrainStartRecede" "cart_spark_right,StartSpark,,0,-1" "origin" "-62 -56 -10" } OnSpawnOutput //very important to keep these three outputs otherwise the payload will not function { Target cart_area Action SetControlPoint Param cart_point } OnSpawnOutput { Target cart_watcher Action RoundActivate } //OnSpawnOutput //{ // Target cart_physprop // Action SetParent // Param cart_tracktrain //} OnSpawnOutput { Target payload_model Action SetParent Param "!activator" } ////////////////////////////////////////////editable output section//////////////////////////////////////////// //note that editing outputs for the payload is very different, as you have to use OnSpawnOutput blocks, and use AddOutputs on specific path_track nodes in order to make things happen OnSpawnOutput //this makes blu team win when the payload reaches the last track, commented out as a more exciting payload deploying animation is provided { Target pl_path_45 Action AddOutput Param "OnPass bots_win:RoundWin::0:-1" } OnSpawnOutput { Target pl_path_2 Action AddOutput Param "OnPass tank_smask_relay:Trigger::0:-1" } OnSpawnOutput { Target pl_path_3 Action AddOutput Param "OnPass !activator:SetSpeed:0:0:-1" } OnSpawnOutput { Target pl_path_18 Action AddOutput Param "OnPass payload_cap1_relay:Trigger::0:-1" } OnSpawnOutput { Target pl_path_18 Action AddOutput Param "OnPass gateblab_take:Enable::0:-1" } OnSpawnOutput { Target pl_path_18 Action AddOutput Param "OnPass gateblab_take:Disable::0.10:-1" } OnSpawnOutput { Target pl_path_27 Action AddOutput Param "OnPass gate2_relay:Trigger::0:-1" } OnSpawnOutput { Target pl_path_36 Action AddOutput Param "OnPass trainstation_relay:Trigger::0:-1" } OnSpawnOutput { Target pl_path2_34 Action AddOutput Param "OnPass bots_win:RoundWin::0:-1" } OnSpawnOutput { Target pl_path2_2 Action AddOutput Param "OnPass tank_smask_relay:Trigger::0:-1" } OnSpawnOutput { Target pl_path2_3 Action AddOutput Param "OnPass !activator:SetSpeed:0:0:-1" } OnSpawnOutput { Target pl_path2_20 Action AddOutput Param "OnPass payload_cap1_relay:Trigger::0:-1" } OnSpawnOutput { Target pl_path2_20 Action AddOutput Param "OnPass gateblab_take:Enable::0:-1" } OnSpawnOutput { Target pl_path2_20 Action AddOutput Param "OnPass gateblab_take:Disable::0.10:-1" } OnSpawnOutput { Target pl_path2_27 Action AddOutput Param "OnPass gate2_relay:Trigger::0:-1" } OnSpawnOutput { Target pl_path2_30 Action AddOutput Param "OnPass trainstation_relay:Trigger::0:-1" } } payload_logic { NoFixup 1 logic_relay { //"OnTrigger" "pop_interface,PauseBotSpawning,,0,-1" "targetname" "payload_cap1_relay" "OnTrigger" "gate1_entrance_door,Open,,0,-1" "OnTrigger" "gate1_alarm_timer_relay,Trigger,,0,-1" "OnTrigger" "garage_avoid,Disable,,0,-1" "OnTrigger" "gate1_alarm_trigger,Disable,,0,-1" "OnTrigger" "engiebot_gate1_activate,Trigger,,0,-1" "OnTrigger" "garage_gateblab,Disable,,0,-1" "OnTrigger" "garage_alarm_yellow_flash,Stop,,0,-1" "OnTrigger" "gateblab_take,Enable,,0,-1" "OnTrigger" "sniper_moveup,Trigger,,0,-1" "OnTrigger" "garage_emergency_light,Skin,1,0.2,-1" "OnTrigger" "garage_emergency_light,SetAnimation,Idle,0.2,-1" "OnTrigger" "spawnbot_garage,Enable,0.5,-1" "OnTrigger" "spawnbot_garage_giant,Enable,0.5,-1" "OnTrigger" "spawnbot_upper,Disable,,0.55,-1" "OnTrigger" "spawnbot_support,Disable,,0.55,-1" "OnTrigger" "spawnbot,Disable,,0.55,-1" "OnTrigger" "spawnbot_elevator,Disable,,0.55,-1" "OnTrigger" "garage_giantdoor,Open,,0.55,-1" "OnTrigger" "gatebot_prefer_garage,Disable,0.55,-1" "OnTrigger" "gate1_entrance_door,Open,,1,-1" "OnTrigger" "garage_emergency_light,SetAnimation,spin,1,-1" "OnTrigger" "garage_emergency_light,Skin,3,1,-1" "OnTrigger" "garage_blue_flash,Start,,1,-1" "OnTrigger" "mainspawn_detect,Enable,,1.2,-1" "OnTrigger" "upper_detect,Enable,,1.2,-1" "OnTrigger" "mainspawn_detect,TouchTest,,1.2,-1" "OnTrigger" "upper_detect,TouchTest,,1.2,-1" "OnTrigger" "nav_refresh,RecomputeBlockers,,1.2,-1" "OnTrigger" "garage_cap_wait,Disable,,1.2,-1" "OnTrigger" "garage_brush,Disable,,1.2,-1" "OnTrigger" "elevator_warp,Enable,,1.2,-1" "OnTrigger" "gate1_capnoise,PlaySound,,1.2,-1" "OnTrigger" "bot_buff_condition,Enable,,1.2,-1" } } main { NoFixup 1 logic_relay { "onspawn" "spawnbot_support,kill,,0,-1" "onspawn" "spawnbot_elevator,kill,,0,-1" "onspawn" "spawnbot_upper,kill,,0,-1" "onspawn" "spawntele,kill,,0.1,-1" "onspawn" "wave_start_relay,addoutput,ontrigger spawnbarrier:disable::0:-1,0.1,-1" "onspawn" "wave_finished_relay,addoutput,ontrigger spawnbarrier:enable::0:-1,0.1,-1" } trigger_teleport { "mins" "-9999 -9999 -9999" "maxs" "9999 9999 9999" "targetname" "spawntele" "spawnflags" "1" "target" "spawnteleto" } info_teleport_destination { "origin" "3900 508 29" "angles" "0 270 0" "targetname" "spawnteleto" } info_player_teamspawn { "origin" "2239 -31 -119" "angles" "0 90 0" "targetname" "spawnbot_support2" "teamnum" "2" } info_player_teamspawn { "origin" "2100 -473 -198" "angles" "0 270 0" "targetname" "spawnbot_elevator2" "teamnum" "2" } info_player_teamspawn { "origin" "3190 -773 -86" "angles" "0 180 0" "targetname" "spawnbot_upper2" "teamnum" "2" } func_forcefield { "origin" "3261 -224 -8" "mins" "-49 -350 -120" "maxs" "49 350 120" "targetname" "spawnbarrier" "teamnum" "2" } prop_dynamic { "origin" "3320 -224 -32" "targetname" "spawnbarrier" "model" "models/props_mvm/no_entry.mdl" "disableshadows" "1" } prop_dynamic { "origin" "4088 -416 -128" "angles" "0 180 0" "model" "models/props_mvm/mvm_upgrade_blu.mdl" "disableshadows" "1" } func_upgradestation { "origin" "4040 -416 -48" "mins" "-48 -152 -80" "maxs" "48 152 80" } func_forcefield { "origin" "4072 -416 -48" "mins" "-48 -152 -80" "maxs" "48 152 80" "teamnum" "2" } } upgradetemplate { func_upgradestation { "mins" "3956.315917 -1008.968750 -68.902702" "maxs" "3983.908935 -742.968750 -14.218750" } } station // all-in-one upgrade station template { NoFixup 1 func_upgradestation { mins "-105 -100 0" maxs "105 100 242" solid 0 } prop_dynamic { targetname upgradestation1 angles "0 0 0" DisableBoneFollowers 0 disablereceiveshadows 0 disableshadows 1 model models\props_mvm\mvm_upgrade_blu.mdl solid 0 origin "0 0 0" } func_upgradestation { mins "-100 -100 0" maxs "90 60 100" parentname upgradestation } prop_dynamic { targetname shopcollision angles "0 -90 0" DisableBoneFollowers 1 disablereceiveshadows 1 model models/props_vehicles/train_flatcar_container.mdl disableshadows 1 renderamt 0 renderfx 0 rendermode 10 CollisionGroup 5 solid 0 //6 // commented out to avoid potetional issues. origin "0 0 0" } } playercap { NoFixup 1 math_remap { "in1" "0" "in2" "5" "out1" "0" "out2" "5" "spawnflags" "3" "targetname" "cap_remap" "OutValue" "capturearea_case,InValue,,0,-1" "origin" "-5840 -556.63 288" } } hatchblocker //hatch prop { NoFixup 1 prop_dynamic { "targetname" "hatchcover" "angles" "0 0 0" "DisableBoneFollowers" "1" "disablereceiveshadows" "1" "model" "models/props_hydro/water_machinery2.mdl" "disableshadows" "1" "ExplodeDamage" "0" "ExplodeRadius" "0" "fademaxdist" "0" "fademindist" "-1" "fadescale" "1" "MaxAnimTime" "10" "maxdxlevel" "0" "MinAnimTime" "5" "mindxlevel" "0" "modelscale" "1.0" "PerformanceMode" "0" "pressuredelay" "0" "RandomAnimation" "0" "renderamt" "100" "rendercolor" "100 100 255" "renderfx" "15" "rendermode" "0" "SetBodyGroup" "0" "CollisionGroup" "1" "skin" "0" "solid" "0" "spawnflags" "0" "StartDisabled" "0" "origin" "-3289.767089 -180.297302 -14.256347" } } hatchblocker //hatch collision { NoFixup 1 func_forcefield { "disablereceiveshadows" "0" "origin" "-3289.767089 -180.297302 -14.256347" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "10" "TeamNum" "2" "targetname" "hatchcovercollision" "parentname" "hatchcover" "mins" "-100 -120 -100" "maxs" "100 120 100" "StartDisabled" "0" } } hatchunblocker { NoFixup 1 logic_relay { "targetname" "unblockhatch" "OnTrigger" "hatchcover,Kill,,0,-1" "OnTrigger" "hatchopen,Show,,0,-1" "OnTrigger" "thirdperson,Enable,,0,-1" } } } SpawnTemplate { Name station Origin "828 986 -63" Angles "0 -90 0" } SpawnTemplate { Name station Origin "-2330 2900 -39" Angles "0 -90 0" } SpawnTemplate { Name station Origin "-1565 -180 -127" Angles "0 0 0" } ItemAttributes { ItemName "The Short Circuit" "provide on active" 1 "metal_pickup_decreased" 1 "single wep deploy time increased" 3 "single wep holster time increased" 3 "fire rate penalty" 3 } CustomWeapon // t. samson berserk inspired weapon { Name "The Celtic Cleaver" OriginalItemName "The Persian Persuader" "special item description" "Shorter range, 20% extra damage bonus. Deal more damage the lower your health." // remove stats "charge meter on hit" 0 "is_a_sword" 0 "special taunt" 0 // not sure if this works "melee range multiplier" 0.75 "melee bounds multiplier" 0.75 // actual stats "crit kill will gib" 1 "CARD: damage bonus" 1.20 // stackable damage "mod shovel damage boost" 2 "critboost on kill" 1 "speed_boost_on_kill" 2 "maxammo primary reduced" 0.15 "maxammo secondary reduced" 0.15 "custom item model" "models/workshop/weapons/c_models/c_celtic_cleaver/c_demo_sultan_sword.mdl" "custom kill icon" "battleaxe" } ExtraLoadoutItems { Demoman { Melee "The Celtic Cleaver" } } Wave //wave 1 900 cash { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } Explanation { Line "{Red}_________________________________" Line "{Yellow} Players cannot pick up the bomb" Line "{green} Be prepared for bomb escorting" Line "{blue} Cart escorting allows you to have forward spawns" Line "{blue} You have 8 minutes to complete each wave" Line "{Red}_________________________________" } WaveSpawn { Name blueicon Support 1 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 9999 TFBot { Class Scout ClassIcon blu2_lite } } WaveSpawn { Name "payload" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 Support Limited Tank { Health 40000 Speed 90 Scale 0.5 ClassIcon payload_blu Model "models/empty.mdl" StartSound "misc/null.wav" PingSound "misc/null.wav" EngineLoopSound "misc/null.wav" DisableTracks 1 DisableSmokestack 1 DisableChildModels 1 Name "payloadtank" StartingPathTrackNode "pl_path_1" TeamNum 3 SpawnTemplate { Name "payload" Origin "0 0 42" } } } WaveSpawn { Name "lose-condition" WaitForAllDead "payload" FirstSpawnOutput { Target redwin_relay Action Trigger } } WaveSpawn { Name w1-1 Where newsstand TotalCount 44 MaxActive 9 SpawnCount 3 WaitBeforeStarting 4 WaitBetweenSpawns 1 TotalCurrency 150 FirstSpawnOutput // add this for the first bots that spawn in that location, use FirstSpawnOutput/LastSpawnOutput { Target newsstand_on_logic Action Trigger } TFBot { Class Scout Skill Easy Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w1-1 Where portapotty TotalCount 6 MaxActive 2 SpawnCount 2 WaitBeforeStarting 4 WaitBetweenSpawns 0 TotalCurrency 200 FirstSpawnOutput { Target portapotty_on_logic Action Trigger } TFBot { Template T_TFBot_Giant_DemoMan_PrinceTavish Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w1-2 WaitForAllDead w1-1 Where mannholecover TotalCount 50 MaxActive 5 SpawnCount 2 WaitBeforeStarting 1 WaitBetweenSpawns 1 TotalCurrency 150 FirstSpawnOutput { Target mannholecover_on_logic Action Trigger } RandomChoice { TFBot { Class Demoman Skill Normal Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Class Pyro Skill Easy Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name w1-2-1 WaitForAllDead w1-2 Where dumptruck TotalCount 6 MaxActive 2 SpawnCount 1 WaitBeforeStarting 1 WaitBetweenSpawns 16 TotalCurrency 100 FirstSpawnOutput { Target dumptruck_on_logic Action Trigger } TFBot { Template T_TFBot_Giant_Boxing_Heavy ClassIcon heavy_champ_red Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w1-2-1 WaitForAllDead w1-2 TotalCount 46 MaxActive 12 SpawnCount 2 Where dumptruck WaitBeforeStarting 4 WaitBetweenSpawns 4 TotalCurrency 100 TFBot { Class Scout Skill Easy Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name redicon Support 1 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 9999 TFBot { Class Scout ClassIcon red2_lite } } WaveSpawn { Name w1-3 WaitForAllDead w1-2-1 Where redspawn TotalCount 9999 MaxActive 10 SpawnCount 1 Support 1 WaitBeforeStarting 2 WaitBetweenSpawns 2 TFBot { Class Soldier Skill Normal Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name hatch Where hatchgaurdian TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 200 TFBot { Template T_TFBot_Giant_Soldier_Spammer UseMeleeThreatPrioritization 1 Attributes AlwaysCrit Attributes IgnoreFlag Action Mobber CharacterAttributes {"move speed bonus" 0.001 "no_jump" 1 } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn // Dummy, makes wave seems infinite { TotalCount 0 SpawnCount 0 WaitBeforeStarting 9999 Where spawnbot RandomChoice { RandomChoice { TFBot { Class Scout } } } } } Wave //wave 2 1100 cash { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name blueicon Support 1 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 9999 TFBot { Class Scout ClassIcon blu2_lite } } WaveSpawn { Name "payload" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 Support Limited Tank { Health 27000 Speed 90 Scale 0.5 ClassIcon payload_blu Model "models/empty.mdl" StartSound "misc/null.wav" PingSound "misc/null.wav" EngineLoopSound "misc/null.wav" DisableTracks 1 DisableSmokestack 1 DisableChildModels 1 Name "payloadtank" StartingPathTrackNode "pl_path2_1" TeamNum 3 SpawnTemplate { Name "payload" Origin "0 0 42" } } } WaveSpawn { Name "lose-condition" WaitForAllDead "payload" FirstSpawnOutput { Target redwin_relay Action Trigger } } WaveSpawn { Name redicon Support 1 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 9999 TFBot { Class Scout ClassIcon red2_lite } } WaveSpawn { Name w2-1 Where newsstand TotalCount 35 MaxActive 7 SpawnCount 1 WaitBeforeStarting 4 WaitBetweenSpawns 1 TotalCurrency 200 TFBot { Template T_TFBot_Heavyweapons_Shotgun Attributes IgnoreFlag Action Mobber ClassIcon heavy_shotgun_red InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2-1 Where newsstand TotalCount 35 MaxActive 7 SpawnCount 1 WaitBeforeStarting 4 WaitBetweenSpawns 1 TotalCurrency 200 TFBot { Template T_TFBot_Soldier_RocketShotgun Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2-1 Where portapotty TotalCount 3 MaxActive 3 SpawnCount 1 WaitBeforeStarting 4 WaitBetweenSpawns 10 TotalCurrency 200 TFBot { Template T_TFBot_Giant_Demo_RapidFire ClassIcon demo_rapid_giant Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2-2 WaitForAllDead w2-1 Where mannholecover TotalCount 24 MaxActive 12 SpawnCount 2 WaitBeforeStarting 1 WaitBetweenSpawns 0 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Pyro_Flaregun ClassIcon pyro_flare_red Attributes IgnoreFlag Attributes AlwaysCrit Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Medic_QuickFix Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name w2-3 WaitForAllDead w2-1 Where mannholecover TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 2 WaitBetweenSpawns 24 TotalCurrency 200 TFBot { Template T_TFBot_Giant_Soldier_Spammer_Reload Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w3-1 WaitForAllDead w2-2 Where redspawn Support 1 TotalCount 9999 MaxActive 10 SpawnCount 2 WaitBeforeStarting 7 WaitBetweenSpawns 1 RandomChoice { TFBot { Class Demoman Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_ScorchShot_FastShot ClassIcon pyro_scorch_spammer Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name w3-2 Where hatchgaurdian TotalCount 1 SpawnCount 1 MaxActive 1 WaitBeforeStarting 2 TotalCurrency 100 TFBot { Template T_TFBot_Heavyweapons_Heater UseMeleeThreatPrioritization 1 Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } CharacterAttributes {"move speed bonus" 0.001 "no_jump" 1 } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn // Dummy, makes wave seems infinite { TotalCount 0 SpawnCount 0 WaitBeforeStarting 9999 Where spawnbot RandomChoice { RandomChoice { TFBot { Class Scout } } } } } Wave // Wave 3 $1000 { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name blueicon Support 1 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 9999 TFBot { Class Scout ClassIcon blu2_lite } } WaveSpawn { Name "payload" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 Support Limited Tank { Health 30000 Speed 90 Scale 0.5 ClassIcon payload_blu Model "models/empty.mdl" StartSound "misc/null.wav" PingSound "misc/null.wav" EngineLoopSound "misc/null.wav" DisableTracks 1 DisableSmokestack 1 DisableChildModels 1 Name "payloadtank" StartingPathTrackNode "pl_path_1" TeamNum 3 SpawnTemplate { Name "payload" Origin "0 0 42" } } } WaveSpawn { Name "lose-condition" WaitForAllDead "payload" FirstSpawnOutput { Target redwin_relay Action Trigger } } WaveSpawn { Name w1-1 Where newsstand TotalCount 44 MaxActive 12 SpawnCount 1 WaitBetweenSpawns 0.5 WaitBeforeStarting 2 TotalCurrency 100 TFBot { Template T_TFBot_Sniper_Huntsman Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w1-2 Where portapotty TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 4 WaitBetweenSpawns 26 TotalCurrency 100 TFBot { Template T_TFBot_Giant_Soldier_Spammer Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2-1 Where mannholecover WaitForAllDead w1-1 TotalCount 28 MaxActive 12 SpawnCount 2 WaitBeforeStarting 3 TotalCurrency 100 WaitBetweenSpawns 5 TFBot { Template T_TFBot_Mafia_Heavy_Shotgun_Small Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2-2 Where mannholecover TotalCount 22 MaxActive 8 SpawnCount 1 WaitForAllDead w1-1 WaitBeforeStarting 5 WaitBetweenSpawns 3 TotalCurrency 100 TFBot { Class Soldier Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w3-1 Where dumptruck TotalCount 10 MaxActive 5 SpawnCount 1 WaitForAllDead w2-1 WaitBeforeStarting 5 WaitBetweenSpawns 24 TotalCurrency 300 Squad { TFBot { Template T_TFBot_Giant_Heavyweapons_Shotgun ClassIcon heavy_shotgun_red_giant Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Medic_BigHeal Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Medic_BigHeal Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Medic_BigHeal Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Medic_BigHeal Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name w3-2 Where dumptruck TotalCount 18 MaxActive 9 SpawnCount 1 WaitForAllDead w2-2 WaitBeforeStarting 2 WaitBetweenSpawns 3 TotalCurrency 100 TFBot { Template T_TFBot_Dragon_Fury Skill Easy Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w4-1 Where redspawn TotalCount 20 SpawnCount 1 MaxActive 10 WaitForAllDead w3-1 WaitBeforeStarting 8 WaitBetweenSpawns 0 TotalCurrency 100 TFBot { Template T_TFBot_Mafia_Heavy_Tomigun Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w4-2 Where hatchgaurdian TotalCount 1 SpawnCount 1 MaxActive 1 TotalCurrency 100 TFBot { Template T_TFBot_Giant_Soldier_Extended_Battalion UseMeleeThreatPrioritization 1 Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } CharacterAttributes {"move speed bonus" 0.001 "no_jump" 1 "increase buff duration" 90.0 } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name redicon Where spawnbot TotalCount 1 Support 1 SpawnCount 1 WaitBeforeStarting 9999 TFBot { Class Scout ClassIcon red2_lite } } WaveSpawn { Name w4-sup Where redspawn TotalCount 12 Support 1 MaxActive 12 SpawnCount 1 WaitBeforeStarting 2 WaitForAllSpawned w4-1 WaitBetweenSpawns 1 RandomChoice { TFBot { Class Soldier Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Demoman_Knight Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn // Dummy, makes wave seems infinite { TotalCount 0 SpawnCount 0 WaitBeforeStarting 9999 Where spawnbot RandomChoice { RandomChoice { TFBot { Class Scout } } } } } Wave // Wave 4 $900 { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name blueicon Support 1 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 9999 TFBot { Class Scout ClassIcon blu2_lite } } WaveSpawn { Name "payload" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 Support Limited Tank { Health 27000 Speed 90 Scale 0.5 ClassIcon payload_blu Model "models/empty.mdl" StartSound "misc/null.wav" PingSound "misc/null.wav" EngineLoopSound "misc/null.wav" DisableTracks 1 DisableSmokestack 1 DisableChildModels 1 Name "payloadtank" StartingPathTrackNode "pl_path2_1" TeamNum 3 SpawnTemplate { Name "payload" Origin "0 0 42" } } } WaveSpawn { Name "lose-condition" WaitForAllDead "payload" FirstSpawnOutput { Target redwin_relay Action Trigger } } WaveSpawn { Name w1-1 TotalCount 2 SpawnCount 1 MaxActive 2 WaitBeforeStarting 7 WaitBetweenSpawns 30 Where portapotty TotalCurrency 100 TFBot { Template T_TFBot_Giant_Heavyweapons Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w1-2 TotalCount 24 SpawnCount 2 MaxActive 12 WaitBeforeStarting 8 WaitBetweenSpawns 4 Where newsstand TotalCurrency 100 TFBot { Template T_TFBot_Demo_Burst ClassIcon demo_burst_red Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2-1 TotalCount 32 SpawnCount 1 MaxActive 14 WaitForAllDead w1-2 WaitBetweenSpawns 2.5 WaitBeforeStarting 2 Where mannholecover TotalCurrency 100 TFBot { Class Pyro Skill Expert ItemAttributes { ItemName "tf_weapon_flamethrower" "airblast_destroy_projectile" 1 } Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2-2 TotalCount 2 SpawnCount 1 MaxActive 2 WaitForAllDead w1-2 WaitBetweenSpawns 20 WaitBeforeStarting 3 Where mannholecover TotalCurrency 100 TFBot { Template T_TFBot_Giant_DemoMan_PrinceTavish Attributes AlwaysCrit Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w3-1 TotalCount 4 SpawnCount 1 MaxActive 2 WaitForAllDead w2-2 Where dumptruck WaitBeforeStarting 4 WaitBetweenSpawns 24 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Giant_Pyro Skill Expert Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } ItemAttributes { ItemName "tf_weapon_flamethrower" "airblast_destroy_projectile" 1 } Action FetchFlag AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Giant_Medic_Regen Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name w3-2 TotalCount 24 MaxActive 12 SpawnCount 2 Where dumptruck WaitForAllDead w2-2 WaitBeforeStarting 6 WaitBetweenSpawns 4 TotalCurrency 100 TFBot { Class Scout Attributes AlwaysCrit Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w4-1 TotalCount 28 MaxActive 5 SpawnCount 3 Where redspawn WaitForAllDead w3-1 WaitBeforeStarting 6 WaitBetweenSpawns 2 TotalCurrency 50 TFBot { Template T_TFBot_Loch_N_Load Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w4-2-1 TotalCount 3 MaxActive 3 SpawnCount 1 Where mannholecover WaitForAllDead w3-1 WaitBeforeStarting 6 WaitBetweenSpawns 10 TotalCurrency 50 TFBot { Template T_TFBot_Giant_Soldier_Spammer_Reload Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w4-2 TotalCount 1 MaxActive 1 SpawnCount 1 Where hatchgaurdian TotalCurrency 100 TFBot { Template T_TFBot_Giant_Soldier_Extended_Concheror UseMeleeThreatPrioritization 1 Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } CharacterAttributes {"move speed bonus" 0.001 "no_jump" 1 "increase buff duration" 90.0} AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name redicon Where spawnbot TotalCount 1 Support 1 SpawnCount 1 WaitBeforeStarting 9999 TFBot { Class Scout ClassIcon red2_lite } } WaveSpawn { TotalCount 10 SpawnCount 1 MaxActive 10 Support 1 Where redspawn WaitForAllDead w4-1 WaitBeforeStarting 4 WaitBetweenSpawns 1 TFBot { Class HeavyWeapons Skill Easy Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn // Dummy, makes wave seems infinite { TotalCount 0 SpawnCount 0 WaitBeforeStarting 9999 Where spawnbot RandomChoice { RandomChoice { TFBot { Class Scout } } } } } Wave // Wave 5 $800 { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name blueicon Support 1 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 9999 TFBot { Class Scout ClassIcon blu2_lite } } WaveSpawn { Name "payload" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 Support Limited Tank { Health 30000 Speed 90 Scale 0.5 ClassIcon payload_blu Model "models/empty.mdl" StartSound "misc/null.wav" PingSound "misc/null.wav" EngineLoopSound "misc/null.wav" DisableTracks 1 DisableSmokestack 1 DisableChildModels 1 Name "payloadtank" StartingPathTrackNode "pl_path_1" TeamNum 3 SpawnTemplate { Name "payload" Origin "0 0 42" } } } WaveSpawn { Name "lose-condition" WaitForAllDead "payload" FirstSpawnOutput { Target redwin_relay Action Trigger } } WaveSpawn { Name w1-1 Where portapotty TotalCount 4 SpawnCount 1 MaxActive 2 WaitBeforeStarting 4 WaitBetweenSpawns 22 TotalCurrency 200 TFBot { Template T_TFBot_Giant_Soldier_SlowBarrage Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w1-2 Where newsstand TotalCount 12 SpawnCount 1 MaxActive 4 WaitBeforeStarting 5 WaitBetweenSpawns 4.5 TotalCurrency 100 TFBot { Template T_TFBot_Mafia_Heavy_Shotgun Attributes AlwaysCrit Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2-1 Where mannholecover TotalCount 8 SpawnCount 1 MaxActive 4 WaitForAllDead w1-1 WaitBeforeStarting 4 WaitBetweenSpawns 22 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Giant_Soldier_Spammer Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Soldier_Extended_Concheror Attributes IgnoreFlag ClassIcon soldier_banner_trio Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Soldier_Extended_Battalion Attributes IgnoreFlag ClassIcon soldier_banner_trio Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Soldier_Extended_Buff_Banner Attributes IgnoreFlag ClassIcon soldier_banner_trio Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name w2-2 TotalCount 32 SpawnCount 4 Where mannholecover MaxActive 12 WaitForAllDead w1-1 WaitBeforeStarting 5 WaitBetweenSpawns 7 TotalCurrency 100 TFBot { Template T_TFBot_Bazooka_Soldier Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w3-1 TotalCount 3 MaxActive 2 SpawnCount 1 WaitForAllDead w2-1 WaitBeforeStarting 5 WaitBetweenSpawns 23 Where dumptruck TotalCurrency 50 TFBot { Template T_TFBot_Giant_Fury_Pyro Skill Expert ItemAttributes { ItemName "tf_weapon_flamethrower" "airblast_destroy_projectile" 1 } Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w3-2 TotalCount 16 MaxActive 8 SpawnCount 2 WaitForAllDead w2-1 WaitBeforeStarting 6 WaitBetweenSpawns 7 Where dumptruck TotalCurrency 50 Squad { TFBot { Template T_TFBot_Demo_Burst ClassIcon demo_burst_red Attributes IgnoreFlag Attributes AlwaysCrit Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Medic_SlowRecharge Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name w4-1 TotalCount 28 SpawnCount 4 MaxActive 12 Where redspawn WaitForAllDead w3-2 WaitBetweenSpawns 6 WaitBeforeStarting 9 TotalCurrency 50 TFBot { Template T_TFBot_Explosive_Soldier Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w4-2 TotalCount 1 SpawnCount 1 Where hatchgaurdian TotalCurrency 50 TFBot { Template T_TFBot_Giant_Soldier_Extended_Buff_Banner UseMeleeThreatPrioritization 1 Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } CharacterAttributes {"move speed bonus" 0.001 "no_jump" 1 "increase buff duration" 90.0 } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name red_icon TotalCount 100 SpawnCount 1 MaxActive 1 Support 1 WaitBeforeStarting 9999 Where spawnbot TFBot { Class Scout ClassIcon red2_lite } } WaveSpawn { Name w4-2-1 TotalCount 28 SpawnCount 1 MaxActive 4 Where mannholecover WaitForAllDead w3-2 WaitBetweenSpawns 15 WaitBeforeStarting 9 TotalCurrency 50 Support 1 TFBot { Template T_TFBot_Giant_Heavyweapons_Shotgun Attributes IgnoreFlag Action Mobber ClassIcon heavy_shotgun_red_giant InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name red_icon TotalCount 100 SpawnCount 4 MaxActive 12 Support 1 WaitForAllDead w4-1 Where redspawn TFBot { Template T_TFBot_Explosive_Demoman Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn // Dummy, makes wave seems infinite { TotalCount 0 SpawnCount 0 WaitBeforeStarting 9999 Where spawnbot RandomChoice { RandomChoice { TFBot { Class Scout } } } } } Wave // Wave 6 $1000 { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } Explanation { Line "{Red}_________________________________" Line "{Yellow} Mafia is tired of losing and decided to track you down themselves." Line "{Red}_________________________________" } WaveSpawn { Name blueicon Support 1 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 9999 TFBot { Class Scout ClassIcon blu2_lite } } WaveSpawn { Name "payload" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 Support Limited Tank { Health 27000 Speed 90 Scale 0.5 ClassIcon payload_blu Model "models/empty.mdl" StartSound "misc/null.wav" PingSound "misc/null.wav" EngineLoopSound "misc/null.wav" DisableTracks 1 DisableSmokestack 1 DisableChildModels 1 Name "payloadtank" StartingPathTrackNode "pl_path2_1" TeamNum 3 SpawnTemplate { Name "payload" Origin "0 0 42" } } } WaveSpawn { Name "lose-condition" WaitForAllDead "payload" FirstSpawnOutput { Target redwin_relay Action Trigger } } WaveSpawn { Name w1-1 TotalCount 2 MaxActive 2 SpawnCount 1 Where portapotty WaitBeforeStarting 4 TotalCurrency 100 Squad { TFBot { Template T_TFBot_Giant_Mafia_Heavy Attributes IgnoreFlag Action Mobber Action FetchFlag InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Giant_Mafia_Doctor Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name w1-2 TotalCount 32 MaxActive 12 SpawnCount 4 Where newsstand WaitBeforeStarting 2 WaitBetweenSpawns 6 TotalCurrency 100 TFBot { Template T_TFBot_Mafia_Heavy_Shotgun_Small Attributes AlwaysCrit Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2-1 TotalCount 28 MaxActive 12 SpawnCount 2 Where mannholecover WaitBeforeStarting 5 WaitBetweenSpawns 2 WaitForAllDead w1-1 TotalCurrency 100 TFBot { Template T_TFBot_Mafia_Heavy_Tomigun Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w2-2 TotalCount 2 MaxActive 1 SpawnCount 1 Where mannholecover WaitBeforeStarting 4 WaitBetweenSpawns 20 WaitForAllDead w1-1 TotalCurrency 100 TFBot { Template T_TFBot_Giant_Soldier_RocketShotgun Attributes AlwaysCrit Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w3-1 TotalCount 2 MaxActive 2 SpawnCount 1 Where dumptruck WaitBeforeStarting 6 WaitForAllDead w2-2 TotalCurrency 100 Squad { TFBot { Template T_TFBot_Giant_Mafia_Heavy Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } TFBot { Template T_TFBot_Giant_Mafia_Doctor Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } } WaveSpawn { Name w3-2 TotalCount 12 MaxActive 6 SpawnCount 2 Where dumptruck WaitBeforeStarting 8 WaitBetweenSpawns 8 WaitForAllDead w2-2 TotalCurrency 100 TFBot { Template T_TFBot_Mafia_Soldier Attributes AlwaysCrit Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w4-1 TotalCount 24 MaxActive 8 SpawnCount 2 Where redspawn WaitBeforeStarting 10 WaitBetweenSpawns 8 WaitForAllDead w3-1 TotalCurrency 100 TFBot { Template T_TFBot_Demo_Burst ClassIcon demo_burst_red Attributes IgnoreFlag Action Mobber InterruptAction // Stop current bot ai and force the bot to move to a location { Target "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer AimTarget "tank_boss" // Entity / bot / class name as an alternative. Also: RandomEnemy, ClosestPlayer KillAimTarget 1 // Attack aim target (Default: 0) Delay 5 // Time before the first task starts. Must be above 0, or it will not execute (Default: 10) Repeats 0 // How many times should bot do the task in total (Default: 0 - Infinite) Cooldown 5 //Time between each task (Default: 10) Duration 10 // How long should the ai be interrupted } AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { Name w4-2 TotalCount 1 SpawnCount 1 Where hatchgaurdian WaitBeforeStarting 12 WaitForAllDead w3-1 TotalCurrency 300 TFBot { Template T_TFBot_Giant_Chief_Mafia_Heavy Attributes IgnoreFlag Action Mobber Attributes UseBossHealthBar AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn { TotalCount 1 SpawnCount 1 Support 1 Where spawnbot WaitBeforeStarting 9999 TFBot { Class Scout ClassIcon red2_lite } } WaveSpawn { TotalCount 2 MaxActive 10 SpawnCount 1 WaitBeforeStarting 1 WaitBetweenSpawns 2 WaitForAllSpawned w4-2 Support 1 Where redspawn TFBot { Template T_TFBot_Soldier_Extended_Buff_Banner Attributes IgnoreFlag Action Mobber AddCond { Index 43 } AddCond { Index 5 Duration 2 } } } WaveSpawn // Dummy, makes wave seems infinite { TotalCount 0 SpawnCount 0 WaitBeforeStarting 9999 Where spawnbot RandomChoice { RandomChoice { TFBot { Class Scout } } } } } }