#base robot_giant.pop #base robot_standard.pop #base robot_standard_red.pop #base robot_giant_red.pop WaveSchedule { StartingCurrency 20000 CanBotsAttackWhileInSpawnRoom Yes //keep this so companion bots can combat spawn camping RespawnWaveTimeBlue 1 //replaces the normal respawn kv's FixedRespawnWaveTimeBlue 1 // Essential stuff ReverseWinConditions 1 AllowJoinTeamBlueMax 6 AllowJoinTeamBlue 1 HumansMustJoinTeam Blue SetCreditTeam 3 SniperAllowHeadshots 1 //sniper and amby un-exist without this // MaxTotalPlayers 6 // currently doesn't work in reverse PointTemplates { payload { NoFixup 1 prop_dynamic { "classname" "prop_dynamic" "angles" "0 180 0" "DisableBoneFollowers" "0" "disablereceiveshadows" "0" "disableshadows" "1" "ExplodeDamage" "0" "ExplodeRadius" "0" "fademaxdist" "0" "fademindist" "-1" "fadescale" "0" "MaxAnimTime" "10" "MinAnimTime" "5" "model" "models/props_trainyard/bomb_cart.mdl" //you can change the cart model if you know the file name. if you change it, there are four entities that may be misaligned which are the cart_dispenser, cart_flashinglight, cart_spark_left, and cart_spark_right, change the origins of these particles to realign them where you see fit "modelscale" "1.0" "parentname" "cart_tracktrain" "PerformanceMode" "0" "pressuredelay" "0" "RandomAnimation" "0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "0" "SetBodyGroup" "0" "skin" "0" "solid" "0" "spawnflags" "0" "StartDisabled" "0" "targetname" "cart_physprop" "origin" "1 0 8" } func_tracktrain { "classname" "func_tracktrain" "bank" "0" "disablereceiveshadows" "0" "disableshadows" "0" "dmg" "10000" "height" "1" //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" "payload1_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" "-44 -44 -34" "maxs" "44 44 34" } 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 { "classname" "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" "cart_tracktrain" "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 { "classname" "dispenser_touch_trigger" "parentname" "cart_tracktrain" "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 { "classname" "mapobj_cart_dispenser" "parentname" "cart_tracktrain" "spawnflags" "12" "targetname" "cart_dispenser" "TeamNum" "3" "touch_trigger" "cart_dispenser_trigger" "origin" "-41 -12 72" } info_particle_system { "classname" "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" "cart_tracktrain" "start_active" "0" "targetname" "cart_particles" "origin" "31 5 62" } env_spark { "classname" "env_spark" "angles" "0 0 0" "Magnitude" "1" "MaxDelay" "0" "parentname" "cart_tracktrain" "spawnflags" "0" "targetname" "cart_spark_left" "TrailLength" "2" "origin" "-10 14 -20" } env_spark { "classname" "env_spark" "angles" "0 0 0" "Magnitude" "1" "MaxDelay" "0" "parentname" "cart_tracktrain" "spawnflags" "0" "targetname" "cart_spark_right" "TrailLength" "2" "origin" "-10 -14 -20" } trigger_hurt { "classname" "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" "46 0 0" "parentname" "cart_tracktrain" "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" "1" //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" } logic_case { "classname" "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" "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" "cpm_restrict_team_cap_win" "2" //probably ineffective "custom_position_x" "0.4" "custom_position_y" "-1" "partial_cap_points_rate" "0" //this keyvalue allows money to be gained by capturing points, by default a payload gives scoreboard points for pushing however here it is set to 0 "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" "payload1_75" //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" "payload1_75" //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" "payload1_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" "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 the next 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 payload1_75 Action AddOutput Param "OnPass bots_win:RoundWin::0:-1" } OnSpawnOutput { Target payload1_75 Action AddOutput Param "OnPass cart_constraint:Break::0:-1" } } payload2 { NoFixup 1 prop_dynamic { "classname" "prop_dynamic" "angles" "0 180 0" "DisableBoneFollowers" "0" "disablereceiveshadows" "0" "disableshadows" "1" "ExplodeDamage" "0" "ExplodeRadius" "0" "fademaxdist" "0" "fademindist" "-1" "fadescale" "0" "MaxAnimTime" "10" "MinAnimTime" "5" "model" "models/props_trainyard/bomb_cart.mdl" //you can change the cart model if you know the file name. if you change it, there are four entities that may be misaligned which are the cart_dispenser, cart_flashinglight, cart_spark_left, and cart_spark_right, change the origins of these particles to realign them where you see fit "modelscale" "1.0" "parentname" "cart_tracktrain" "PerformanceMode" "0" "pressuredelay" "0" "RandomAnimation" "0" "renderamt" "255" "rendercolor" "255 255 255" "renderfx" "0" "rendermode" "0" "SetBodyGroup" "0" "skin" "1" "solid" "0" "spawnflags" "0" "StartDisabled" "0" "targetname" "cart_physprop" "origin" "1 0 8" } func_tracktrain { "classname" "func_tracktrain" "bank" "0" "disablereceiveshadows" "0" "disableshadows" "0" "dmg" "10000" "height" "1" //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" "payload2_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" "-44 -44 -34" "maxs" "44 44 34" } 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 { "classname" "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" "cart_tracktrain" "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 { "classname" "dispenser_touch_trigger" "parentname" "cart_tracktrain" "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 { "classname" "mapobj_cart_dispenser" "parentname" "cart_tracktrain" "spawnflags" "12" "targetname" "cart_dispenser" "TeamNum" "3" "touch_trigger" "cart_dispenser_trigger" "origin" "-41 -12 72" } info_particle_system { "classname" "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" "cart_tracktrain" "start_active" "0" "targetname" "cart_particles" "origin" "31 5 62" } env_spark { "classname" "env_spark" "angles" "0 0 0" "Magnitude" "1" "MaxDelay" "0" "parentname" "cart_tracktrain" "spawnflags" "0" "targetname" "cart_spark_left" "TrailLength" "2" "origin" "-10 14 -20" } env_spark { "classname" "env_spark" "angles" "0 0 0" "Magnitude" "1" "MaxDelay" "0" "parentname" "cart_tracktrain" "spawnflags" "0" "targetname" "cart_spark_right" "TrailLength" "2" "origin" "-10 -14 -20" } trigger_hurt { "classname" "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" "46 0 0" "parentname" "cart_tracktrain" "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" "2" //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" } logic_case { "classname" "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" "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" "cpm_restrict_team_cap_win" "2" //probably ineffective "custom_position_x" "0.4" "custom_position_y" "-1" "partial_cap_points_rate" "0" //this keyvalue allows money to be gained by capturing points, by default a payload gives scoreboard points for pushing however here it is set to 0 "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" "payload2_49" //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" "payload2_49" //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" "payload2_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" "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 the next 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 payload2_49 Action AddOutput Param "OnPass bots_win:RoundWin::0:-1" } OnSpawnOutput { Target payload2_49 Action AddOutput Param "OnPass cart_constraint:Break::0:-1" } OnSpawnOutput { Target gate_relay Action Trigger } } } ItemAttributes //test x3 speed on scout { ItemName "The Holy Mackerel" "increase player capture value" 1 } ExtraTankPath //75 nodes for first track { Name payload1 Node "1375.86 -5487.73 400.508" //1 Node "1375.86 -5031.73 354.508" //2 Node "1367.86 -4967.73 354.508" //3 Node "1351.86 -4927.73 354.508" //4 Node "1327.86 -4903.73 354.508" //5 Node "1287.86 -4887.73 354.508" //6 Node "1223.86 -4879.73 354.508" //7 Node "567.861 -4839.73 322.508" //8 Node "503.861 -4831.73 322.508" //9 Node "463.861 -4815.73 322.508" //10 Node "439.861 -4791.73 322.508" //11 Node "423.861 -4751.73 322.508" //12 Node "415.861 -4687.73 322.508" //13 Node "428.591 -4249.75 321.993" //14 Node "439.375 -4186.16 321.993" //15 Node "457.104 -4146.9 321.993" //16 Node "482.129 -4123.96 321.993" //17 Node "522.789 -4109.73 321.993" //18 Node "587.077 -4104.52 321.993" //19 Node "840.077 -4104.13 322.156" //20 Node "912.077 -4103.85 357.251" //21 Node "988 -4104 357.251" //22 Node "1068 -4104 357.251" //23 Node "1124 -4096 357.251" //24 Node "1168 -4072 357.251" //25 Node "1200 -4024 357.251" //26 Node "1200 -3736 357.251" //27 Node "1200 -3512 309.251" //28 Node "1200 -3264 309.251" //29 Node "1248 -3172 309.251" //30 Node "1308 -3096 309.251" //31 Node "1360 -3044 309.251" //32 Node "1416 -2980 309.251" //33 Node "1456 -2896 309.251" //34 Node "1456 -2744 309.251" //35 Node "1456 -2512 237.251" //36 Node "1456 -2204 237.251" //37 Node "1472 -2148 237.251" //38 Node "1504 -2092 237.251" //39 Node "1544 -2060 237.251" //40 Node "1604 -2048 237.251" //41 Node "1684 -2048 237.251" //42 Node "1948 -2048 237.251" //43 Node "2012 -2044 237.251" //44 Node "2056 -2028 237.251" //45 Node "2088 -2000 237.251" //46 Node "2096 -1952 237.251" //47 Node "2096 -1812 237.251" //48 Node "2096 -1608 105.251" //49 Node "2096 -1460 105.251" //50 Node "2092 -1384 105.251" //51 Node "2084 -1356 105.251" //52 Node "2068 -1332 105.251" //53 Node "2040 -1320 105.251" //54 Node "2008 -1312 105.251" //55 Node "1332 -1312 105.251" //56 Node "1220 -1312 177.251" //57 Node "1052 -1272 177.251" //58 Node "924 -1224 177.251" //59 Node "804 -1148 177.251" //60 Node "720 -1068 177.251" //61 Node "612 -988 177.251" //62 Node "496 -944 177.251" //63 Node "112 -944 81.251" //64 Node "32 -944 81.251" //65 Node "-8 -940 81.251" //66 Node "-36 -916 81.251" //67 Node "-44 -872 81.251" //68 Node "-44 -744 81.251" //69 Node "-44 -668 33.251" //70 Node "-128 -468 33.251" //71 Node "-236 -308 33.251" //72 Node "-412 -132 33.251" //73 Node "-512 120 33.251" //74 Node "-512 176 33.251" //75 } ExtraTankPath //49 nodes for second track, recycled from tank path { Name payload2 Node "755 -5616 452" //1 Node "755 -5432 452" //2 Node "755 -5280 376" //3 Node "700 -5036 376" //4 Node "632 -4884 376" //5 Node "556 -4732 376" //6 Node "544 -4472 376" //7 Node "544 -3968 324" //8 Node "544 -3312 404" //9 Node "544 -3272 404" //10 Node "536 -3208 404" //11 Node "520 -3168 404" //12 Node "496 -3144 404" //13 Node "323 -2984 404" //14 Node "299 -2960 404" //15 Node "283 -2920 404" //16 Node "275 -2856 404" //17 Node "275 -2760 404" //18 Node "275 -2336 220" //19 Node "275 -1984 220" //20 Node "275 -1872 220" //21 Node "267 -1808 220" //22 Node "251 -1768 220" //23 Node "227 -1744 220" //24 Node "187 -1728 220" //25 Node "123 -1720 220" //26 Node "-144 -1720 244" //27 Node "-400 -1720 292" //28 Node "-496 -1720 292" //29 Node "-1168 -1720 292" //30 Node "-1336 -1720 292" //31 Node "-1400 -1712 292" //32 Node "-1440 -1696 292" //33 Node "-1464 -1672 292" //34 Node "-1480 -1632 292" //35 Node "-1488 -1568 292" //36 Node "-1488 -1424 292" //37 Node "-1496 -1360 292" //38 Node "-1512 -1320 292" //39 Node "-1536 -1296 292" //40 Node "-1576 -1280 292" //41 Node "-1640 -1272 292" //42 Node "-2392 -1272 404" //43 Node "-2456 -1280 404" //44 Node "-2496 -1296 404" //45 Node "-2520 -1320 404" //46 Node "-2536 -1360 404" //47 Node "-2544 -1424 404" //48 Node "-2544 -1440 404" //49 } Wave { SpawnTemplate "payload" InitWaveOutput { //showing annotations Target hint Action Show } StartWaveOutput { Target wave_start_relay_classic Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } Explanation { Line "{yellow}Explanation Text {blue}is useful for conveying information" } //-------------------------- //RED WAVESPAWNS //-------------------------- WaveSpawn { Name "rWave1a" Where tunnelspawn RandomSpawn 1 TotalCount 3 MaxActive 1 SpawnCount 1 //recommended that you give DisableDodge to giants with Mobber AI TFBot { Template T_TFBot_Red_Giant_Demo_RapidFire Attributes DisableDodge } } WaveSpawn { Name "rWave1a" Where tunnelspawn RandomSpawn 1 TotalCount 20 MaxActive 8 SpawnCount 2 RandomChoice { TFBot { Template T_TFBot_Red_Soldier ClassIcon red2_lite } TFBot { Template T_TFBot_Red_Scout ClassIcon red2_lite } TFBot { Template T_TFBot_Red_Demoman ClassIcon red2_lite } TFBot { Template T_TFBot_Red_Pyro ClassIcon red2_lite } } } WaveSpawn { //tower defender Name "rWave1b" Where towerspawn RandomSpawn 1 TotalCount 1 MaxActive 1 SpawnCount 1 WaitForAllDead "rWave1a" //comented out due to a collision bug on potato servers, otherwise works // FirstSpawnOutput { //disable tunnel barrier forcefield // Target barrierB1 // Action Disable // } // LastSpawnOutput { //disable tunnel barrier prop // Target barrierB // Action Disable // } TFBot { Template T_TFBot_Red_Giant_Demo_Burst Attributes AlwaysCrit Attributes DisableDodge Tag bot_tower //our tag } } WaveSpawn { Name "rWave1b" Where towerspawn RandomSpawn 1 TotalCount 20 MaxActive 8 SpawnCount 2 WaitForAllDead "rWave1a" RandomChoice { TFBot { Template T_TFBot_Red_Soldier ClassIcon red2_lite } TFBot { Template T_TFBot_Red_Scout ClassIcon red2_lite } TFBot { Template T_TFBot_Red_Demoman ClassIcon red2_lite } TFBot { Template T_TFBot_Red_Pyro ClassIcon red2_lite } } } WaveSpawn { Name "rWave1c" Where RedSpawn_giant RandomSpawn 1 TotalCount 3 MaxActive 1 SpawnCount 1 WaitBetweenSpawnsAfterDeath 5 WaitForAllSpawned "rWave1b" TFBot { Template T_TFBot_Red_Giant_Heavyweapons_Shotgun Attributes DisableDodge Tag bot_hatch //our tag } } WaveSpawn { //hatch defender Name "rWave1c" Where hatchspawn RandomSpawn 1 TotalCount 1 MaxActive 1 SpawnCount 1 WaitForAllDead "rWave1a" TFBot { Template T_TFBot_Red_Giant_Pyro Attributes DisableDodge Attributes AlwaysCrit Tag bot_hatch //our tag } } WaveSpawn { Name "rWave1c" Where red_player_teamspawn // Where "" //not sure if this trick works for red bots, also map dependent RandomSpawn 1 TotalCount 959 //nice clean 999 on the wavebar MaxActive 8 SpawnCount 2 WaitForAllSpawned "rWave1b" RandomChoice { TFBot { Template T_TFBot_Red_Soldier ClassIcon red2_lite } TFBot { Template T_TFBot_Red_Scout ClassIcon red2_lite } TFBot { Template T_TFBot_Red_Demoman ClassIcon red2_lite } TFBot { Template T_TFBot_Red_Pyro ClassIcon red2_lite } } } //-------------------------- //BLU WAVESPAWNS //-------------------------- WaveSpawn { Name "bWave1a" Where spawnbot MaxActive 1 SpawnCount 1 RandomSpawn 1 Support 1 WaitBetweenSpawnsAfterDeath 6 TFBot { Template T_TFBot_Giant_Scout_FAN ClassIcon scout_fan Action Mobber } } WaveSpawn { Name "bWave1a1" Where spawnbot TotalCount 999 MaxActive 2 SpawnCount 1 RandomSpawn 1 Support Limited //Support Limited and TotalCount 999 for RandomChoice/Squadded support WaitBetweenSpawns 3 RandomChoice { TFBot { Class Scout Skill Normal Action Mobber } TFBot { Template T_TFBot_Scout_FAN Action Mobber } } } } Wave { SpawnTemplate "payload2" StartWaveOutput { Target wave_start_relay_endurance Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name "redtank" TotalCount 1 WaitBeforeStarting 3 Tank { Health 40000 Speed 1 Name "tankbossred" ClassIcon tank_red_lite Model "models/bots/boss_bot/boss_tankred.mdl" StartingPathTrackNode "tankpath1_1" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target redwin_relay Action Trigger } } } } Wave { InitWaveOutput { Target boss_deploy_relay Action Trigger } } //Bug: final wave doesn't reset correctly, use this workaround for now }