#base robot_giant.pop #base robot_standard.pop //todo: possibly reduce/remove fall damage on bots //needs more giants possibly // w1: jumping scouts + thermals, beggars + meds, jumper heavies // w2: samurai knights + meds + caber + gjumpings + blimp, missile medics // w3: trollders + loose cannon demos, air strike + soda popper scouts, grappling engies // wx: meme mecha bosses WaveSchedule { StartingCurrency 400 RespawnWaveTime 1 //to make up for dumb shenanigans CanBotsAttackWhileInSpawnRoom no ForceHoliday 2 NoThrillerTaunt 1 NoCritPumpkin 1 NoHolidayPickups 1 //ExtendedUpgradesOnly 1 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" PrecacheModel "models/weapons/c_models/c_bread/c_bread_baguette.mdl" PrecacheModel "models/props_trainyard/bomb_cart_red.mdl" PointTemplates { //washy's payload templates, modified/broken for red 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_red.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 to "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" "10 0 -10" } func_tracktrain { "classname" "func_tracktrain" "bank" "0" "disablereceiveshadows" "0" "disableshadows" "0" "dmg" "10000" "height" "1" //change this number to adjust the height of the paylaod 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" "minecart_path_172" //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 //default cancap_2 is 0 and cancap_3 is 1 { "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" "1" //reversed here "team_cancap_3" "0" "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" "2" //check teamnumber "touch_trigger" "cart_dispenser_trigger" "origin" "-31 -12 56" } 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" "39 5 46" } 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" "0.080101 14 -36" } 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" "0.080101 -14 -36" } 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" "14.29 0 -20" "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" "3" //check teamnum "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 { "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" "3" //probably ineffective "custom_position_x" "0.4" "custom_position_y" "-1" "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 { "teamnum" "2" //might not be necessary "classname" "team_train_watcher" "goal_node" "minecart_path_2" //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" "minecart_path_2" //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" "minecart_path_172" //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" "0" //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 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 cart_tracktrain Action Reverse } OnSpawnOutput { Target cart_tracktrain Action TeleportToPathTrack Param "minecart_path_150" } logic_relay { "targetname" "ReverseRelay" "OnSpawn" "cart_tracktrain, TeleportToPathTrack,minecart_path_150,0,-1" "OnSpawn" "cart_tracktrain, Reverse,,0,-1" } //OnSpawnOutput { // Target cart_tracktrain // Action StartBackward //} ////////////////////////////////////////////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 { Target minecart_path_2 Action AddOutput // Param "OnPass bots_win:RoundWin::0:-1" Param "OnPass win_bot:$Suicide::0:-1" //when cap is reached, then //tell win_bot to suicide, no parameter, no delay, infinitely } } capped { Target "!activator" Action AddOutput Param "targetname win_bot" Delay 0.1 } } ExtraTankPath { Name "tank_path_oob" Node "-2684 -2836 409" Node "-2165 -3708 390" Node "-1135 -3522 300" Node "343 -3548 160" Node "1916 -3918 50" Node "3553 -3125 50" Node "3792 835 50" Node "2533 2554 80" Node "-964 2770 600" Node "-1036 599 600" Node "-703 -839 660" Node "-178 -867 600" Node "478 -928 560" Node "509 -334 670" } ExtendedUpgrades { upgrade { Name "test" Attribute "increased jump height" Cap 1 Increment 0.25 Cost 200 AllowedWeapons { ItemName "The Winger" } } upgrade { Name "+25% damage" Attribute "damage bonus" Cap 1 Increment 0.25 Cost 200 AllowedWeapons { ItemName "The Winger" } } upgrade { Name "+50% clip size" Attribute "clip size bonus upgrade" Cap 3 Increment .5 Cost 200 AllowedWeapons { ItemName "The Winger" } } upgrade { Name "Projectile penetration" Attribute "projectile penetration" Cap 1 Increment 1 Cost 200 AllowedWeapons { ItemName "The Winger" } } upgrade { Name "+50% ammo capacity" Attribute "maxammo secondary increased" Cap 2.5 Increment .5 Cost 125 AllowedWeapons { ItemName "The Winger" } } upgrade { Name "+10% firing speed" Attribute "fire rate bonus" Cap .6 Increment -.1 Cost 100 AllowedWeapons { ItemName "The Winger" } } upgrade { Name "+25 health on kill" Attribute "heal on kill" Cap 100 Increment 25 Cost 100 AllowedWeapons { ItemName "The Winger" } } } //ItemReplacement { //threatening sideways pistol // "The Winger" { // Classname "TF_WEAPON_SYRINGEGUN_MEDIC" // Name "The Blutsauger" // Name "The Overdose" // Name "The Crusader's Crossbow" // Name "Festive Crusader's Crossbow" // } //} ForceItem { All { Item "The Winger" } } //ItemAttributes { // ItemName "The Beggar's Bazooka" // RocketCustomModel "models/weapons/c_models/c_bread/c_bread_baguette.mdl" //} //ExtraSpawnPoint { // Name "spawnair" // TeamNum 3 // X "-1274" // Y "-1557" // Z "1250" //} ExtraSpawnPoint { Name "spawnair" TeamNum 3 X "1904" Y "993" Z "1250" } Templates { MissileMedic { //stolen from remedic Name "Missile Medic" Class Medic Skill Normal WeaponRestrictions MeleeOnly //Item "The Quick-Fix" Item "Necro Smasher" Action FetchFlag Item "Medic's Mountain Cap" Action Mobber Attributes SuppressFire //UseMeleeThreatPrioritization 1 ItemAttributes { //ItemName "The Quick-Fix" ItemName "Necro Smasher" "stomp player time" .25 "stomp player damage" 10 "stomp player force" 130 } ItemAttributes { ItemName "Medic's Mountain Cap" "item color rgb" 7511618 } CharacterAttributes { "move speed bonus" 2 } } } Wave { //w1 StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaitWhenDone 65 Checkpoint Yes WaveSpawn { Name "wave1a" Where "spawn_blueA" TotalCount 32 MaxActive 16 SpawnCount 8 WaitBeforeStarting 0 WaitBetweenSpawns 5 TotalCurrency 240 TFBot { //should probably edit this later Template T_TFBot_Scout_Jumping_Sandman Item "The Atomizer" Attributes DisableDodge FireWeapon { Delay 15 Cooldown 1 Repeat 0 Duration .1 Type "Jump" } } } WaveSpawn { //something about thermal thrusters being bad at their job Name "wave1a" Where "spawn_blueA" TotalCount 20 MaxActive 12 SpawnCount 4 WaitBeforeStarting 1 WaitBetweenSpawns 7 TotalCurrency 120 TFBot { //could use a melee Name "Thruster Pyro" Class Pyro ClassIcon pyro_thruster_lite Skill Easy Item "The Thermal Thruster" Item "Hovering Hotshot" UseBestWeapon 1 WeaponSwitch { Delay 1 Cooldown 10 Repeats 0 IfSeeTarget 1 Type "Secondary" } ItemAttributes { ItemName "The Thermal Thruster" "boots falling stomp" 1 } CharacterAttributes { "cancel falling damage" 1 } } } WaveSpawn { Name "wave1b" Where "spawn_blueA" WaitForAllSpawned "wave1a" TotalCount 24 MaxActive 8 SpawnCount 8 WaitBeforeStarting 0 WaitBetweenSpawns 5 TotalCurrency 340 Squad { TFBot { Name "randomguy_rollout.mp4" Class Soldier ClassIcon soldier_beggars Skill Normal Item "The Beggar's Bazooka" Item "War Blunder" WeaponRestrictions PrimaryOnly RocketJump 1 Attributes IgnoreEnemies //more consistent jumps CharacterAttributes { "no self blast dmg" 1 "increased air control" 2 "reload time decreased" 0.25 } FireWeapon { //funny overload jumping attempt Delay 10 Cooldown 4 Repeat 0 Duration 4 //reload time is 1.2s then 1.04s Type "Primary" } } TFBot { Template T_TFBot_Medic_QuickFix Item "Baron von Havenaplane" Item "Rolfe Copter" } } } WaveSpawn { Name "wave1c" //Where "spawnair" Where "spawn_blueA" WaitForAllSpawned "wave1b" TotalCount 24 MaxActive 8 SpawnCount 8 WaitBetweenSpawns 10 TotalCurrency 300 TFBot { Name "Heavy Rain" Class Heavy Skill Easy Item "The B.A.S.E. Jumper" Item "The Chicken Kiev" Attributes Parachute CharacterAttributes { "cancel falling damage" 1 } } } } Wave { //w2 StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaitWhenDone 65 Checkpoint Yes WaveSpawn { Name "wave2a" Where "spawn_blueA" TotalCount 8 MaxActive 1 SpawnCount 1 WaitBetweenSpawns 10 TotalCurrency 410 TFBot { Template T_TFbot_Demoman_Samurai Name "Golf Knight" ClassIcon demoknight_nineiron Item "Nessie's Nine Iron" Item "Tam O'Shanter" Item "The Gaelic Golf Bag" } } WaveSpawn { Name "wave2a" Where "spawn_blueA" TotalCount 32 MaxActive 12 SpawnCount 6 WaitBetweenSpawns 5 TotalCurrency 150 TFBot { Name "Caberer" Class Demoman ClassIcon demo_caber_nys Item "The Ullapool Caber" Item "The Broadband Bonnet" WeaponRestrictions MeleeOnly CharacterAttributes { "no self blast dmg" 1 //"damage force increase" .5 } ItemAttributes { ItemName "The Ullapool Caber" "regenerate stickbomb" 1 } } } WaveSpawn { Name "wave2a" Where "spawn_blueAGiant" TotalCount 3 MaxActive 3 SpawnCount 1 WaitBeforeStarting 15 WaitBetweenSpawns 15 TotalCurrency 150 TFBot { Template T_TFBot_Giant_Scout_Jumping_Sandman //Health 1 Item "The Atomizer" FireWeapon { Delay 7 Cooldown 1 Repeat 0 Duration .1 Type "Jump" } } } WaveSpawn { Name "wave2a" WaitBeforeStarting 30 TotalCount 1 MaxActive 1 SpawnCount 1 Tank { Health 5000 ClassIcon blimp2_lite Speed 100 Scale .5 Model "models/bots/boss_bot/boss_blimp.mdl" DisableSmokestack 1 Gravity 0 RotatePitch 0 MaxTurnRate 25 DisableTracks 1 DisableChildModels 1 ReplaceModelCollisions 1 EngineLoopSound "npc\combine_gunship\dropship_engine_distant_loop1.wav" PingSound "npc\combine_gunship\ping_search.wav" Name "blimp" StartingPathTrackNode "tank_path_oob_1" OnKilledOutput //check relay names later { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name "wave2b" Where "spawn_blueA" WaitForAllDead "wave2a" TotalCount 24 SpawnCount 6 MaxActive 24 WaitBetweenSpawns 7 TotalCurrency 240 RandomChoice { TFBot { Template MissileMedic } TFBot { Template MissileMedic } TFBot { Template MissileMedic } TFBot { Template MissileMedic } TFBot { Template MissileMedic } TFBot { Template MissileMedic } TFBot { Template MissileMedic } TFBot { Template MissileMedic } TFBot { Template MissileMedic } TFBot { Template MissileMedic Name "Misfire Medic" Attributes DisableDodge ItemAttributes { //ItemName "The Quick-Fix" ItemName "Necro Smasher" "attach particle effect" 14 "stomp player force" 2401 //260 is min to push } CharacterAttributes { "move speed bonus" 4 } } } } } Wave { //w3 //time to soldierspam StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaitWhenDone 65 Checkpoint Yes WaveSpawn { Name "wave3a" Where "spawn_blueAGiant" TotalCount 1 SpawnCount 1 MaxActive 1 TotalCurrency 50 TFBot { Template T_TFBot_Giant_Soldier_SlowBarrage Name "Colonel Baggez" Item "The Beggar's Bazooka" Item "Vive La France" RocketCustomModel "models/weapons/c_models/c_bread/c_bread_baguette.mdl" CharacterAttributes { "no self blast dmg" 1 } ItemAttributes { ItemName "The Beggar's Bazooka" "clip size upgrade atomic" 26.0 "faster reload rate" 0.22 "fire rate bonus" 0.2 "projectile spread angle penalty" 5 } } } WaveSpawn { Name "wave3a" Where "spawn_blueA" TotalCount 24 SpawnCount 6 MaxActive 24 WaitBetweenSpawns 7 TotalCurrency 160 TFBot { Class Soldier ClassIcon soldier_jug_market Name "it's raining men" Skill Expert Action Sniper RocketJump 1 Item "Rocket Jumper" Item "The Market Gardener" Item "The Mantreads" Item "The Freedom Feathers" CharacterAttributes { "cancel falling damage" 1 } } } WaveSpawn { Name "wave3a" Where "spawn_blueA" TotalCount 24 SpawnCount 6 MaxActive 24 WaitBetweenSpawns 7 TotalCurrency 160 TFBot { Class Demoman ClassIcon demo_loosecannon Name "it's raining more men" Skill Expert RocketJump 1 StripItemSlot 1 Item "The Loose Cannon" Item "The Scottish Handshake" Item "Aerobatics Demonstrator" Action Sniper ItemAttributes { ItemName "The Loose Cannon" "grenade launcher mortar mode" 0 //mortar mode 0 has no charging "fuse bonus" .001 } CharacterAttributes { "cancel falling damage" 1 "no self blast dmg" 1 } } } WaveSpawn { Name "wave3b" Where "spawn_blueA" TotalCount 20 SpawnCount 5 MaxActive 10 WaitForAllSpawned "wave3a" WaitBetweenSpawns 5 TotalCurrency 120 TFBot { Class Soldier ClassIcon soldier_airstrike_lite Name "Air Strike Soldier" Skill Hard RocketJump 1 Item "The Air Strike" Item "The B.A.S.E. Jumper" Item "The Cloud Crasher" Attributes HoldFireUntilFullReload ItemAttributes { ItemName "The Air Strike" "faster reload rate" 0.5 "rocket jump damage reduction" .25 } CharacterAttributes { "cancel falling damage" 1 } } } WaveSpawn { Name "wave3b" Where "spawn_blueA" TotalCount 32 SpawnCount 8 MaxActive 12 WaitForAllSpawned "wave3a" WaitBetweenSpawns 4 TotalCurrency 320 TFBot { Class Scout ClassIcon scout_popper2 Name "bird scout" Skill Easy Item "The Soda Popper" Item "Grounded Flyboy" WeaponRestrictions PrimaryOnly Attributes SpawnWithFullCharge ItemAttributes { ItemName "The Soda Popper" //"hype decays over time" -10 //double check this } CharacterAttributes { "cancel falling damage" 1 } FireWeapon { Delay 10 Cooldown 10 Repeats 0 Duration .1 Type "Secondary" } FireWeapon { Delay 10 Cooldown 1 Repeat 0 Duration .1 Type "Jump" } } } WaveSpawn { //might make this funnier, who knows Name "wave3c" Where "spawn_blueA" TotalCount 24 SpawnCount 8 MaxActive 8 WaitForAllSpawned "wave3b" WaitBetweenSpawns 7 TotalCurrency 240w TFBot { Class Engineer Name "Enginear" Skill Normal Action FetchFlag Item "TF_WEAPON_GRAPPLINGHOOK" Item "Final Frontier Freighter" Attributes AutoJump AutoJumpMin 5 AutoJumpMax 5 UseMeleeThreatPrioritization 1 WeaponRestrictions PrimaryOnly ItemAttributes { ItemName "TF_WEAPON_GRAPPLINGHOOK" "is_passive_weapon" 1 "cancel falling damage" 1 "increased air control" 2 "damage penalty" 1 } } } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaitWhenDone 65 Checkpoint Yes WaveSpawn { Name "wave4a" Where "spawn_blueA" TotalCount 16 MaxActive 8 SpawnCount 8 TotalCurrency 200 TFBot { Name "Jumper Demo" Class Demoman Skill Expert RocketJump 1 Item "The B.A.S.E. Jumper" Item "Stickybomb Jumper" Action Sniper Attributes Parachute CharacterAttributes { "cancel falling damage" 1 } } } WaveSpawn { Name "wave4a" Where "spawn_blueA" TotalCount 16 MaxActive 8 SpawnCount 8 TotalCurrency 200 TFBot { Name "Jumping Pyro" Class Pyro Skill Normal RocketJump 1 WeaponRestrictions SecondaryOnly //Item "The B.A.S.E. Jumper" Item "The Detonator" //Item "The Powerjack" StripItemSlot 0 //Action Sniper CharacterAttributes { "cancel falling damage" 1 "no self blast dmg" 1 } } } WaveSpawn { Name "wave4b" WaitForAllSpawned "wave4a" Where "spawn_blueA" TotalCount 16 MaxActive 8 SpawnCount 8 TotalCurrency 200 TFBot { Name "Overload Demo" Class Demoman Skill Normal RocketJump 1 //Attributes AlwaysFireWeapon WeaponRestrictions PrimaryOnly //Attributes IgnoreEnemies Item "The Loose Cannon" ItemAttributes { ItemName "The Loose Cannon" //"grenade launcher mortar mode" 1 //mortar mode 0 has no charging } FireWeapon { Delay 10 Cooldown 1.1 Repeats 0 Duration 1.1 Type "Primary" } CharacterAttributes { "cancel falling damage" 1 "no self blast dmg" 1 } } } } Wave { //it's time for your 4pm mecha reminder StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } Checkpoint Yes WaveSpawn { Name "giant" Where "spawn_blueAGiant" TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 TFBot { //may need to fix knockback for this to work Template T_TFBot_Chief_Soldier Item "Rocket Jumper" RocketJump 1 Health 10000 tag bot_chief CharacterAttributes { "self dmg push force increased" 1 "damage force increase" 1 } } } WaveSpawn { Name "giant" Where "spawn_blueAGiant" TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 TFBot { Template T_TFBot_Giant_Metalbeard Health 10000 ItemAttributes { ItemName "TF_WEAPON_GRENADELAUNCHER" "damage penalty" .01 "damage causes airblast" 1 "damage force increase" 1 "self dmg push force increased" 1 "airblast dashes" 1 } } } WaveSpawn { Name "giant" Where "spawn_blueAGiant" TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 TFBot { Template T_TFBot_Chief_Gauntlet Attributes SpawnWithFullCharge Health 10000 CharacterAttributes { //might not work with rage "increase buff duration" 9.0 } ItemAttributes { ItemName "Fists of Steel" //"damage causes airblast" 1 //"airblast dashes" 1 //might be better to rage here "generate rage on damage" 3 "damage penalty" .01 } FireWeapon { Delay 10 Cooldown 10 Repeats 0 Duration .1 Type "Special" } } } WaveSpawn { Name "jump" Where "spawn_blueAGiant" WaitForAllDead "giant" TotalCount 1 MaxActive 1 WaitBeforeStarting 5 //add funny spawn sound? TFBot { Template T_TFBot_Chief_Gauntlet Attributes AutoJump AutoJumpMin 5 AutoJumpMax 5 CharacterAttributes { "increased jump height" 100000 "bot custom jump particle" 1 } } } } Wave { //the awful cursed wave SpawnTemplate payload StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { TotalCount 1 SpawnCount 1 MaxActive 1 //SpawnTemplate capped TFBot { Class Scout Action Mobber Attributes SuppressFire CharacterAttributes { "move speed penalty" 1 } } } } }