You are on page 1of 26

-------------tr_walkway_rc2 by Washipato and Wiseguy149

-------------This is a practice map focused on bots walking in straight lines, useful for tra
ining general aim
or special techniques, like airshots, airblast and airstabs... or just fooling a
For playing the map, you MUST JOIN THE RED TEAM
If it's your first time with the map, read the "Just starting" section and the "
Notes" section
at the end of the file. Both have very useful information about the map that you
should know
when playing. Read "Special options" to know about strange buttons and options i
n the map.
It's recommended to have the developer console open for this map. You can find h
ow to open it in the
next section.
This map has sv_cheats turned on, so your stats won't be saved :)
Just starting
---------------------------------------------------------------------------------------------INSTALLING THE MAP
---------------------------------------------------------------------------------------------**Skip this section if you already know how to install the map and open the cons
Copy the .bsp file from this rar into
C:\Program Files\Steam\steamapps\<youraccoutname>\team fortress 2\tf\maps
Replace <YOURSTEAMID> with your steamID, the one you log in with
Also copy this readme file too, in case you want to know extra information about
the map
To play it, open TF2, press "Create server" and in map choose "tr_walkway_rc2".
Be sure to
choose to have more than 17 players slots so the bots can join.
---------------------------------------------------------------------------------------------OPENING THE CONSOLE
---------------------------------------------------------------------------------------------It's very important to have the console opened for binding keys and loading alia

ses. This section
explains how to open it, in case you don't know how to.
Go to the "My games" tab in steam and right-click the "Team Fortress 2" game. Fr
om the menu,
choose "Properties" and then click the "Set launch options..." button. In the te
xt box, add
"-console" without the quotes. The next time you open the game, the console will
be open.
---------------------------------------------------------------------------------------------CONTROL ROOM
---------------------------------------------------------------------------------------------It's possible to customize several options, like which classes spawn, how fast t
hey walk, how long
it takes to deploy more bots in the map, etc. Those options can be changed insid
e the "control room"
firing or hitting the buttons. There are 5 kind of buttons, all of them intuitiv
1 light: Stand in front of it to know what it does. Shoot or hit the button to a
ctivate it.
2 lights: Stand in front of it to know what it changes. The feature can be turne
d off and on. Green
light means that the feature is activated, red that it's deactivated.
3 lights: Stand in front to know what option is actually selected. Shoot or hit
the button to switch
between the different options. Doing this changes the text to show the actual st
Plus button: raises a certain variable (movement speed, deploy time or launch-pa
d power)
Minus button: lowers a certain variable (movement speed, deploy time or launch-p
ad power)
---------------------------------------------------------------------------------------------TELEPORTING AROUND
---------------------------------------------------------------------------------------------The players can teleport around the map using the console command "tr_teleport".
Hit or shoot the
yellow and black blocks around the map to change the teleport destination. Bind
tr_teleport to a
key of your keyboard to help you to move faster and lose less time walking. To d
o it, write
in the console:
bind <KEY> "tr_teleport"
Replace <KEY> to any key you want and then press enter to load it. Press the sel
ected key
to activate the teleport.
There are more commands for the map that can be useful to bind, like "tr_attacko
and "tr_stop". More information about these in the console commands section.

. change the maximum ammount of bots. There is no known way to fix this. **Headshot training spawn button** The bots and the way they move are not perfect. increasing the overall performance **tr_stop and no speed option+tr_attackonce** Stopping the bots can be useful to practice airblast and airblast jumps. snipers. They play the "run" animation wh en moving. The seconds turns the walls off. but the impact that it has on gameplay can be lowered using the "Spawn bots for headshot training" button. . to add some "realism" and challenge to your prac tice Note* Stay away from pyros.******************************************************************************** *************** I want to know more ******************************************************************************** *************** ---------------------------------------------------------------------------------------------SPECIAL OPTIONS ---------------------------------------------------------------------------------------------In this section I will explain uses for some features in the map that are not so obvious like the rest **Invisible walls** Those are the walls at the sides of the track to make the bots stay on the walkw ay. but their hitbox (the part of them that detects when they are shot) stay in the "standing" animation.. you can choose to simulate that behavior. **Resupply off** Turn it off to practice ammo management or if you want to play little games wher e there is a chance of dying **Resupply off+attack** This will make the bots attack. spies and demomen work and it's not perfect **Aim up + attack** Useful for practicing long range pipebombs airblast or airstabs with pyros **Aim down + attack** Real soldiers aim for your feet. Aim d own can also be used to practice "airblast jumps" **Bots ammount** If your computer can't manage the map. but don't damage bots that escaped from the walkway. The bots will be facing a way so their heads will match better with their hitbox. The first option of turning the walls off is to h urt every bot outside the walkway. You can turn them off to practice airshots. Only engineers.

*** Just for fun ---------------------------------------------------------------------------------------------EXAMPLE GAMEMODES ---------------------------------------------------------------------------------------------**Rocket+shotgun training** Configuration: . When they are flying in the air shoot him with the shotgun. If it' s done well. **Slope change** Useful for training stairstabs. Pyros will have 26 HP. For trying again. **Raise and lower the hill** Lower the hill if it's bothering you when training airshots or you want the bots to run in a straight line. It s also great for fooling around. instead of walking to the spot where you started.Play spy Stand in a catwalk or somewhere high where bots walk (preferably near a black an d yellow square).Bind tr_teleport to any key (for example. shoot the yellow and black square and press the key you bound to tr_teleport. the launchpad changes his power (how strong it pushes the bots) and his trajectory (the initial strength s angle) in small lapses of time. you will do a backstab. **Launch pad random power and trajectory** By default. Try approaching the bots from different angles and distances.Spawn light classes . **. It's possible to use scouts. spies or medics too to practice. **Airstab training** Configuration: . crouch and stab him as soon as you touch his back. Airshooting bec omes more realistic with these features on. When a bot comes nearby. but the random power can be turned off to select which one you want and the random trajectory can be disabled too to get the same flying pattern for every bot. Light classes will spawn with 1 hp when you enab le it. bind f tr_teleport) . This is a useful technique that can be used in r eal servers.**Hurt bots** One of the most useful options. This will teleport you to that position (note that the tel .Play soldier Fire one rocket under a bot. This can be very useful to know how much damage are you d oing with every shot.. drop or jump over him..

No random power . like overhead stab. This is a famous trick. spin 180º and hit him with the knife when he is below you. try to get to the catwalks BEHIND of the launchpad or disable the random trajectory and usi ng air strafe. Find a quiet place and shoot them to the head. especially when it s done to a real player.Any dodging option (jump. **Stairstab training** Configuration: . You can change t he movement speed to scout to increase .eport don't change after using it. get a bigger distance when traveling in a straight line. **Sniper training** Configuration: . The airstab technique is very useful to all spies. You can also use the teleporters located on the beams in the roof for airstabing. For ex ample. compared to normal spawns. This readme will not go deep in this move but basically. When one of them is coming.High launch-pad power Air strafing is useful for increasing rocket jump distance and decreasing the ch ances of being hit while flying. hard to pull off but really rewarding. With the launch pad. so its recommended that you know the timing for usi ng it in real games. I used airstab and stairstab to differentiate the gamemodes. jump over him. Notice that you can change the speed to scout to make the training more difficul t.Play spy Stand on the slope where the bots walk uphill. The bots spawned for headshot training work quite well for shooting them from the side. this means that you don't need to shoot the square again every time you want to telep ort to that place). to practice this technique you need to to rocket jump to get the initial impulse.Launch-pad . Some p eoples says that they don't even need a name. strafe or back and forth) . height advantage. etc. crouch. NOTE: airstabs has many names. Hopefully you will land a backstab. move slowly the mouse to the left). Normally.Play sniper Find a good spot and practice. **Basic air-strafing** Configuration: .Spawn bots for headshot training . You ca n also stand on the track and do twitch-shots.Remove all bots . you need to press the strafe key without pressing neither "w" or "a" and slowly move the mouse in the direction o f the strafe key (if you are strafing with "a". you can get the initial impulse easier and practice airstrafing after being launched.

Bots strafe . Posit ion yourself near the rocket hit and closer to the soldier.Play pyro with default flamethrower Practice rockets and pipebombs reflection.Bots aim down .Random bots . Jump ar ound a move like crazy for making the practice more realistic **Airblast jump** Configuration: .Bots move back and forth . Find a soldier with an open space in front of him. preferably at the beginning of the walkway and press the key binded to tr_attackonce. Hurt bots will make them easier to ki ll and bots aim down gives soldiers a more realistic behavior.Make bots attack .Short strafe time .Play spy Train aim with the revolver. Try to reach high .Bots strafe .Bots jump .Spawn bots for headshot training . jump. crouch and airblast the rocket under you.Spawn soldiers .tr_attackonce bound to any key (for example. make the bot fi re.Play sniper Gamemode designed to make snipers cry (or feel godlike) **Airblast training** Configuration: .Hurt bots (optional) . You can also use tr_stop console command.Play pyro with default flamethrower Use the stop movement button after some soldiers are in the track to make them s top. To airblast jump. bind f tr_attackonce) .Stop movement button or tr_stop .Scout speed .the difficulty.Spawn airblast training classes .Critical hits off (optional) .Bots aim down (optional) .Long strafe timer . Snipe with the revolver low health classes.Bots move back and forth . **Revolver training** Configuration: . Don't forget to change the slope too! **ULTIMATE Sniper training** Configuration: . when the rocket is about to hit you.

Engineer. like catwalks. use kick <name> ---------------------------------------------------------------------------------------------BOT COMMANDS ---------------------------------------------------------------------------------------------Valve included some bot commands inside the game. NOTE: sometimes the pyro's flame will be invi sible. or Spy <botname>: name of the bot ****************************** ****************************** kick <bot>: kick bot with <bot> name . Soldier.places. spawn them using: bot -team 0 -name <name> For kicking them. This also s imulates real pyros behaviour and let you see the real area of effect from the flame. HeavyWeapons. Scout. Snipe r. Pyro. Use bot_refill to g ive the soldiers ammo and health. 1 red <classname>: Demoman.Play spy It's just like stairstabs.Bots aim up . but it makes them a lot more challenging. Fail onc e and you will be on fire. rushing to the medkit. Critical hits are turned off just in case you receive a c ritical rocket to your face. Medic. but it can be turned on to perform high jumps. If you want more bots. To fix it you need to turn on and off the bot's attack (binding tr_attack to some key h elps too) ---------------------------------------------------------------------------------------------EXTRA BOTS ---------------------------------------------------------------------------------------------The map will always spawn 16 bots.Spawn pyros .Resupply off . ****************************** Add more bots: bot -team <teamname/number> -class <classname> -name <botname> <teamname/number>: 0 blu.Make bots attack . More bots can be spawned manually and will be teleported to the map. Here I list some of those comm ands that can be used inside the map. **Hard airstab** Configuration: .

2 = melee ****************************** Source and more info: http://tf2wiki. don't inside the control room can be accessed by console commands.872070 -94.444855 3314.000000 To use it in bot_teleport to teleport mybot there: bot_teleport mybot -418.027405 13. 0 = primary.****************************** ****************************** bot_teleport <botname> <X> <Y> <Z> <Pitch> <Yaw> <Roll> Teleports a specified bot to a given coordinate.0000 00 ****************************** ****************************** bot_refill: Refills ammo.setang 13.872070 -94. --. Map coordinates of where you ar e standing can be found by typing getpos in the ---------------------------------------------------------------------------------------------CONSOLE COMMANDS ---------------------------------------------------------------------------------------------All the options h this feature you can ime without looking for all ault TF2 commands.444855 3314.970791 0.027405.970791 0.Bots management --tr_kill tr_kick || Kill all bots || Kick all bots tr_maxbots_up tr_maxbots_down || Raises maximum ammount of bots on the walkway || Lowers maximum ammount of bots on the walkway tr_default l height and slope) || Reset map configurations (except "less bots". health and metal to bots ****************************** ****************************** bot_selectweaponslot <botname> <n> This makes specified bot select a specified weapon. Example: getpos output setpos -418.Console only commands --tr_teleport || Teleports the player to the last teleport destina tion selected tr_help || Shows the tr_ cvar list tr_loadcvars || Enables all cvars (for clients) tr_attackonce || Makes all bots attack once (turns off constant at tack) tr_deployonce || Deploy one bot in the track --.508876 -2. Some of them are mirrors from the def use valve ones here because it can make buttons to malfunction. 1 = secondary. Wit create your own configurations and load them on the map at any t the buttons that you need.508876 -2. hil tr_maxbots_16 || Set the maximum ammount of bots to 16 (default) .

snipers and demomen with || Spawn scouts.tr_maxbots_14 tr_maxbots_12 tr_maxbots_10 tr_maxbots_08 tr_maxbots_05 tr_maxbots_03 tr_maxbots_01 tr_maxbots_00 || || || || || || || || tr_firewall tr_firewall_ON rack tr_firewall_OFF || Toggles the firewall || Kill the bots when they reach the middle of the t --. soldiers.Movement speed --tr_speed_up tr_speed_down || Raises movement speed || Lowers movement speed tr_speed_no || tr_speed_snail || tr_speed_heavy || tr_speed_soldier || tr_speed_demoman || tr_speed_normal || tr_speed_medic || tr_speed_scout || tr_speed_jet || For chosing other speeds. snipers and spies engineers. scouts. spies.Spawn options --tr_spawn_random tr_spawn_all tr_spawn_light tr_spawn_headshot headshot correction tr_spawn_comp tr_spawn_airblast Set the maximum ammount Set the maximum ammount Set the maximum ammount Set the maximum ammount Set the maximum ammount Set the maximum ammount Set the maximum ammount Do not spawn bots of of of of of of of bots bots bots bots bots bots bots to to to to to to to 14 12 10 8 5 3 1 || Do not kill the bots (default) || || || || Spawn Spawn Spawn Spawn random classes (starting bots) 2 bots of every class engineers. demomen and medics || Spawn soldiers and demomen tr_spawn_pyros tr_spawn_scouts tr_spawn_heavies tr_spawn_medics tr_spawn_spies tr_spawn_demomen tr_spawn_soldiers tr_spawn_engineers tr_spawn_snipers || || || || || || || || || Spawn Spawn Spawn Spawn Spawn Spawn Spawn Spawn Spawn pyros scouts heavies medics spies demomen soldiers engineers snipers tr_spawn_1pyro tr_spawn_1scout tr_spawn_1heavy tr_spawn_1medic tr_spawn_1spy tr_spawn_1demoman tr_spawn_1soldier tr_spawn_1engineer tr_spawn_1sniper tr_spawn_1random || || || || || || || || || || Spawn Spawn Spawn Spawn Spawn Spawn Spawn Spawn Spawn Spawn one one one one one one one one one one --. use: ent_fire walk addoutput "speed pyro scout heavy medic spy demoman soldier engineer sniper random bot Stops movement Snail movement speed Heavy movement speed Soldier movement speed Demoman movement speed Average movement speed (default) Medic movement speed Scout movement speed Jet movement speed xxx" .

Enter this command aga in to resume spawning and movement (turns off all dodge options) --. use: ent_fire strafe_timer refiretime <time> tr_crouch tr_crouch_ON tr_crouch_ONR tr_crouch_OFF --.5 seconds between bots spawns in the map Set 2 seconds between bots spawns in the map Set 3 seconds between bots spawns in the map (def Set 4 seconds between bots spawns in the map Set 6 seconds between bots spawns in the map Set 12 seconds between bots spawns in the map <time> --.Bots dodge options --tr_jump || Toggles bots jump tr_jump_ON || Forces the bots to jump tr_jump_OFF || Makes the bots stop jumping (default) You can modify the time between jumps using (default 1.5 seconds Toggles bots crouch option Make bots crouch Make bots crouch randomly Bots don't crouch (default) || Toggles bots attack || Forces the bots to attack (same effect as bot_for || Forces the bots to attack once every 3 seconds || Forces the bots to attack randomly || Forces bots to stop attacking (same effect as bot || Toggles bots hurting || Hurt the bots by 124 damage at the beginning of t .5 seconds between bots spawns in the map Set 1 second between bots spawns in the map Set 1.tr_stop || Stops spawns and movement.Deploy time --tr_deploy_up tr_deploy_down || Raises deploy time || Lowers deploy time tr_deploy_no || tr_deploy_05 || tr_deploy_10 || tr_deploy_15 || tr_deploy_20 || tr_deploy_30 || ault) tr_deploy_40 || tr_deploy_60 || tr_deploy_120 || For choosing other times.75): ent_fire jump_timer refiretime <time> tr_back tr_back_ON tr_back_OFF || Toggles bots "back and forth" movement || Turns "back and forth" movement on || Turns "back and forth" movement off (default) tr_strafe tr_strafe_ON tr_strafe_ONR tr_strafe_OFF || || || || Toggles bots strafe movement Make bots strafe left and right Make bots strafe randomly Turns bots strafe movement off (default) tr_strafe_timer || Switch between tr_strafe_timer_default || Set the strafe tr_strafe_timer_long || Set the strafe tr_strafe_timer_short || Set the strafe For chosing other times.Bots actions --tr_attack tr_attack_ON ceattack 1) tr_attack_ON3 tr_attack_ONR tr_attack_OFF _forceattack 0 ) (default) tr_hurt tr_hurt_ON he track || || || || the different strafe times time to 1 second (default) time to 2 seconds time to 0. use: ent_fire spawntimer refiretime Stops deploy Set 0.

it's possible to move it to a position between 0.0 and 1.tr_hurt_ONlow e track tr_hurt_OFF tr_aim tr_aim_default tr_aim_up tr_aim_down For more customization in || Hurt the bots by 75 damage at the beginning of th || Stop hurting bots (default) || || || || bot Switchs between the bots aim direction options Makes bots aim forward (default) Makes bots aim up Makes bots aim down aiming.Map options --tr_crits tr_crits_ON riticals 1) (default) tr_crits_OFF criticals 0) Try it Nothing (default) Try it Try it || Toggles crits || Turn critical hits on (same effect as tf_weapon_c || Turn critical hits off (same effect as tf_weapon_ tr_resupply tr_resupply_ON tr_resupply_OFF || Toggles resupply || Enables the resupply (default) || Disables the resupply tr_panic tr_panic_ON tr_panic_OFF || Toggles panic mode || Enables panic mode || Disable panic mode tr_grav tr_grav_default tr_grav_low tr_grav_verylow || || || || tr_walls tr_walls_ON tr_walls_OFF the walkway tr_walls_OFFnd kway || Toggles invisible walls at the sides of the track || Turn walls on (default) || Turn walls off and damage bots that fall outside tr_deploy_rand tr_deploy_rand_ON default) tr_deploy_rand_OFF || Toggles random deploy position || Deploy bots in a random position in the walkway ( Switches between the gravity options Changes to 800 gravity (default) Changes to 600 gravity Changes to 400 gravity || Turn walls off. you need first to set a speed to the deployer entity using: ent_fire mytrain setspeed 200 Then. don't damage bots outside the wal || Don't deploy bots randomly tr_deploy_left || Move the deploy position to the left tr_deploy_right || Move the deploy position to the right tr_deploy_stop || Stop the deploy position is movement To choose a specific deploy position. go to the "Customize" section tr_botresupply tr_botresupply_ON tr_botresupply_OFF || Toggles bot resupply || Bots regenerate health and ammo constantly || Disables the bot resupply (default) tr_spam tr_spam_none tr_spam_dispenser tr_spam_spy || || || || --.0 with: ent_fire mytrain setposition X .

enter: ent_fire launchpad_power addoutput power is not selected) launch-pad launch-pad launch-pad launch-pad launch-pad launch-pad launch-pad launch-pad launch-pad power power power power power power power power power to to to to to to to to to 1000 1100 1250 1350 1500 (default) 1600 1700 1850 1950 "speed xxxx" (this only works when the random .Retractable platform --tr_platform || Toggles retractable platform tr_platform_ON || Extend the retractable platform tr_platform_OFF || Hide the retractable platform tr_platform_up tr_platform_down tr_platform_left tr_platform_right tr_platform_stop || || || || || --.Launchpad --tr_lp tr_lp_ON tr_lp_OFF || Toggles the launch-pad on and off || Turns the launchpad on || Turns the launchpad off (default) tr_lp_randpow tr_lp_randpow_ON efault) tr_lp_randpow_OFF Move Move Move Move Stop the the the the the platform platform platform platform platform up down left right movement || Toggles launch-pad random power || Changes the launchpad power 2 times per second (d || Turns random launchpad power off tr_lp_randtraj || Toggles launch-pad random trajectory tr_lp_randtraj_ON || Turns on random trajectory.Hill and ramp --tr_hill_up tr_hill_down || Move hill up || Move hill down tr_ramp_up tr_ramp_down || Move ramp up || Move ramp down tr_ramp_full tr_ramp_full_up tr_ramp_full_down || Hide or lift the ramp || Lift the ramp fully || Hide the ramp --.tr_deployonlp tr_deployonlp_ON tr_deployonlp_OFF || Toggle bots being deployed on the launch-pad || Deploy bots on the launch-pad || Deploy bots at the start of the track (default) --. overrides the power m eter configuration (default) tr_lp_randtraj_OFF || Turns off random trajectory tr_lp_traj_up tr_lp_traj_down tr_lp_traj_stop || Raises the trajectory of the launch-pad || Lowers the trajectory of the launch-pad || Stops the trajectory change of the launch-pad tr_lp_pow_up tr_lp_pow_down || Raises launch-pad power || Lowers launch-pad power tr_lp_pow_1 || Set tr_lp_pow_2 || Set tr_lp_pow_3 || Set tr_lp_pow_4 || Set tr_lp_pow_5 || Set tr_lp_pow_6 || Set tr_lp_pow_7 || Set tr_lp_pow_8 || Set tr_lp_pow_9 || Set For choosing other powers.

) ---------------------------------------------------------------------------------------------ALIASES ---------------------------------------------------------------------------------------------You can enter a string of these commands using a simple alias and change between different ways of playing the map.Teleport destinations --tr_tele_0 || Changes the teleport destination tr_tele_1 || Changes the teleport destination tr_tele_2 || Changes the teleport destination tr_tele_3 || Changes the teleport destination tr_tele_4 || Changes the teleport destination tr_tele_5 || Changes the teleport destination tr_tele_6 || Changes the teleport destination tr_tele_7 || Changes the teleport destination tr_tele_8 || Changes the teleport destination tr_tele_9 || Changes the teleport destination tr_tele_10 || Changes the teleport destination By the way.Sentry room --tr_sentry1 tr_sentry2 tr_sentry3 tr_disp1 tr_disp2 tr_disp3 tr_blocks tr_blockl tr_deploengi tr_changeteam tr_eraseone tr_eraseall tr_sr_up tr_sr_down tr_sr_left tr_sr_right tr_sr_cw tr_sr_ccw || || || || || || || || || || || || || || || || || || tr_sr tr_sr_ON tr_sr_OFF || Toggle sentry room || Activate sentry room || Deactivate sentry room (default) tr_wrench tr_wrench_ON tr_wrench_OFF h (default) || Toggle wrench attack || Forces all engineers to attack with the wrench || Makes the engineers stop attacking with the wrenc Create a level 1 sentry Create a level 2 sentry Create a level 3 sentry Create a level 1 dispenser Create a level 2 dispenser Create a level 3 dispenser Create a small block Create a large block Deploy an engineer Change the team of the deployed buildings Destroy everything under the spawner Destroy everything in the sentry room Move spawner up Move spawner down Move spawner to the left Move spawner to the right Turn the spawner clockwise Turn the spawner counter-clockwise --. you can use the cheat command tr_iwantmyhoovy to disable the restric tion for one of the easter eggs . Example: .--. Alias are used to call a group of commands and are very useful for general scripting in the source engine.

tr_deploy_4. Most commands are aliases. tr_aim_up" You can practice stairstabs (or how you like to call them) with any class or spe ed. compared and reset. decrease. but some others are ent_f ire commands ************************************************************************* Events ************************************************************************* Events are the response of the coding system. a customizable buttons and text. wait 10. It nds and hurt them by 124 (soldiers will start with 76 and you will have a perfect setup for practicing is. It also has 3 timers. It has 5 variables that can be increase d. writing "tr_airblast" without the q default. but with this alias pyros will spawn firing their flamethrowers aiming upwards and resupply wi ll be turned off. tr_spawn_airblast. it's a more powerful version of the scripts that come with TF2 by default and let you c reate simple testing tools and mini-games inside the walkway. which you can use anytime until you close TF2. tr_hurt_ON" Copy and paste the whole sentence in the console and press enter. tr_spawn_pyros. tr_atta ck_ON. The code is case sensitive. Another example would be: alias tr_hardstab "tr_default. Though it's hard to use and counter-intuitiv e. tr_resupply_OFF. . Go pyro airblast. ******************************************************************************** *************** The hard part of the walkway ******************************************************************************** *************** ---------------------------------------------------------------------------------------------CODING SYSTEM ---------------------------------------------------------------------------------------------The map features programming tools. making the practice a bit more challenging. tr_speed_heavy. then spawn soldiers and demome will also make them appear every 4 seco hitpoints and demomen with 51). wait 10. Entering this alias in the console (that uotes and pressing enter) will set every option to n and force them to attack and move slower. This will crea te the "tr_airblast" alias.Enter this string in the console to create the "tr_airblast" alias: alias tr_airblast "tr_default. tr_attac k_ON. They are commands that are loaded in the console. All of these c an be manipulated using console commands.

use: ================== alias tr_ON<event> "<action>" // Will do <action> every time the <event> happens alias tr_ON<event> // Will do nothing when the <event> happens ================== For example. deploy a bot in the walkway ================== alias tr_ONTIMERA "tr_deployonce" ================== More than one commands can be issued to a single event. wait and make every bot att ack once and then set the next activation to do nothing: ================== alias tr_ONTIMERA "wait 120. Here. If you want or need. tr_ONEQUAL is loaded in the console every time 2 variables are comp ared and they are equal All events don't have any effect in the game. tr_attackonce. The user must program them. you can activate them li ke any command using ================== tr_ON<event> ================== Complete list of events and when they trigger: ================== Bot positions: tr_ONSTART: a bot enters the start part of the walkway tr_ONMID: a bot enters the middle part of the walkway tr_ONEND: a bot enters the end of the walkway tr_ONLEAVE: a bot leaves the walkway Timers: tr_ONTIMERA: tr_ONTIMERB: tr_ONTIMERC: tr_ONTIMERD: timer timer timer timer A B C D runs runs runs runs out out out out Comparer: tr_ONCMPEQUAL: X=Y after calling tr_CMP tr_ONCMPNOTEQUAL: X=/=Y after calling tr_CMP tr_ONCMPGREATERTHAN: X>Y after calling tr_CMP tr_ONCMPLESSTHAN: X<Y after calling tr_CMP Variables: .There is an event after comparing 2 variables. every time the timer A reaches zero. alias tr_ONTIMERA" ================== Events are the core of the system. This can be used to modi fy the event that just happened. when a bot walks to the end of th e walkway. To do this. All of them have the form: ================== tr_ON<event> ================== For example. when a timer reach zero and so on. after the timer A is activated.

tr_ONAEQUAL: A is equal than his compare value after changing the value of A tr_ONANOTEQUAL: A is not equal than his compare value after changing the value o f A tr_ONAGREATERTHAN: A is greater than his compare value after changing the value of A tr_ONALESSTHAN: A is less than his compare value after changing the value of A tr_ONBEQUAL: B is equal than his compare value after changing the value of B tr_ONBNOTEQUAL: B is not equal than his compare value after changing the value o f B tr_ONBGREATERTHAN: B is greater than his compare value after changing the value of B tr_ONBLESSTHAN: B is less than his compare value after changing the value of B tr_ONCEQUAL: C is equal than his compare value after changing the value of C tr_ONCNOTEQUAL: C is not equal than his compare value after changing the value o f C tr_ONCGREATERTHAN: C is greater than his compare value after changing the value of C tr_ONCLESSTHAN: C is less than his compare value after changing the value of C tr_ONDEQUAL: D is equal than his compare value after changing the value of D tr_ONDNOTEQUAL: D is not equal than his compare value after changing the value o f D tr_ONDGREATERTHAN: D is greater than his compare value after changing the value of D tr_ONDLESSTHAN: D is less than his compare value after changing the value of D tr_ONEEQUAL: E is equal than his compare value after changing the value of E tr_ONENOTEQUAL: E is not equal than his compare value after changing the value o f E tr_ONEGREATERTHAN: E is greater than his compare value after changing the value of E tr_ONELESSTHAN: E is less than his compare value after changing the value of E tr_ONBUFFEREQUAL: BUFFER is equal than his compare value after changing the valu e of BUFFER tr_ONBUFFERNOTEQUAL: BUFFER is not equal than his compare value after changing t he value of BUFFER tr_ONBUFFERGREATERTHAN: BUFFER is greater than his compare value after changing the value of BUFFER tr_ONBUFFERLESSTHAN: BUFFER is less than his compare value after changing the va lue of BUFFER Switch: tr_ONCASE00: BUFFER=0 after calling a tr_CASE tr_ONCASE01: BUFFER=1 after calling a tr_CASE tr_ONCASE02: BUFFER=2 after calling a tr_CASE tr_ONCASE03: BUFFER=3 after calling a tr_CASE tr_ONCASE04: BUFFER=4 after calling a tr_CASE tr_ONCASE05: BUFFER=5 after calling a tr_CASE tr_ONCASE06: BUFFER=6 after calling a tr_CASE tr_ONCASE07: BUFFER=7 after calling a tr_CASE tr_ONCASE08: BUFFER=8 after calling a tr_CASE tr_ONCASE09: BUFFER=9 after calling a tr_CASE tr_ONCASE10: BUFFER=10 after calling a tr_CASE tr_ONCASE11: BUFFER=11 after calling a tr_CASE tr_ONCASE12: BUFFER=12 after calling a tr_CASE tr_ONCASE13: BUFFER=13 after calling a tr_CASE tr_ONCASE14: BUFFER=14 after calling a tr_CASE tr_ONCASE15: BUFFER=15 after calling a tr_CASE tr_ONCASEDEF: tr_CASE do not trigger any of the other cases ================== ************************************************************************* .

is ok. All of them start disabled. the last one is a random time r. x must be a float a value with 2 decimals (5. When the timers are activate d. they start a countdown of x seconds. When they reach zero. it's possible to set the refire time for 3 of them (A.Timers ************************************************************************* Timers are an important part of the programming system.05.01 seconds --COMMANDS tr_ONTIMERA: event tr_TIMERA_ON: turn on timer A tr_TIMERA_OFF: turn off timer A ent_fire custom_timer_a refiretime x: set x as time for the timer A Note: this will be a special timer useful to load and compare variable Timer B ------Entity name: custom_timer_b Event: tr_ONTIMERB Initial refire time: 1 second --COMMANDS-tr_ONTIMERB: event tr_TIMERB_ON: turn on timer B tr_TIMERB_OFF: turn off timer B ent_fire custom_timer_b refiretime x: set x as time for the timer B Timer C ------Entity name: custom_timer_c Event: tr_ONTIMERC Initial refire time: 1 second --COMMANDS-tr_ONTIMERC: event tr_TIMERC_ON: turn on timer C tr_TIMERC_OFF: turn off timer C ent_fire custom_timer_c refiretime x: set x as time for the timer B Timer D ------Entity name: custom_timer_D Event: tr_ONTIMERD Initial refire time: 5(lower limit) to 10(upper limit) seconds --COMMANDS-tr_ONTIMERD: event tr_TIMERD_ON: turn on timer D tr_TIMERD_OFF: turn off timer D ent_fire custom_timer_d addoutput "LowerRandomBound x": set the lower limit of t he random timer to x . 5. They are 4 logic_timer e ntities. a command is loaded in the console and the timer restart. B and C).006 is not) Timers (entity name): Timer A ------Entity name: custom_timer_a Event: tr_ONTIMERA Initial refire time: 0. they must be turned on to work with them.

Triggers one second after calling the relay ************************************************************************* Position ************************************************************************* It's possible to detect when a blu bot enters different parts of the walkway. You need to enable the event s before using them tr_POSEVENT_ON: Enables position events tr_POSEVENT_OFF: Disables position events tr_ONSTART: event. Triggered when a bot enters the final part of the walkway tr_ONLEAVE: event. The upper limit MUST be bigger t han the lower limit ************************************************************************* Relay ************************************************************************* The relay is an event that triggers one second after it was called. Triggered when a bot enters the middle part of the walkway tr_ONEND: event.ent_fire custom_timer_d addoutput "UpperRandomBound x": set the upper limit of t he random timer to x NOTE: It's impossible to use "" inside aliases. because some commands need other features activated to work (like moving the trajectory selection for the launchpad. It's useful for setting up a program without using a timer. This will be triggered once per time they enter it. More about it later You can do 4 operations with variables ================== INC: increase by 1 DEC: decrease by 1 RESET: reset to 0 LOAD: load the variable in the buffer ent_fire custom_<VARIABLE>var setvalue x : Set the value of VARIABLE to x ================== All of these are issued by console commands in the way . that is when they enter it (START) are in the middle (MID) or at the end (END). Their names are: ====== A B C D E BUFFER ====== BUFFER is a special variable. Triggered when a bot leaves the walkway (this includes being killed) ************************************************************************* Variables ************************************************************************* All of them are integers. Triggered when a bot enters the first part of the walkway tr_ONMID: event. first you need to disable trajectory selection) tr_RELAY: call the relay tr_ONTRIGGER: event. and their starting value is 0.

wait 0. ================== tr_ON<VARIABLE>EQUAL: <VARIABLE> is equal than his compare value after changing the value of <VARIABLE> tr_ON<VARIABLE>NOTEQUAL: <VARIABLE> is not equal than his compare value after ch anging the value of <VARIABLE> tr_ON<VARIABLE>GREATERTHAN: <VARIABLE> is greater than his compare value after c hanging the value of <VARIABLE> tr_ON<VARIABLE>LESSTHAN: <VARIABLE> is less than his compare value after changin g the value of <VARIABLE> ent_fire custom_<VARIABLE>varcomp setcomparevalue x: set the compare value of <V ARIABLE> to x ================== ********* Loading variables ********* Always after changing the value of a variable. a time lapse is needed before usi ng that variable with the new value.================== tr_<VARIABLE><OPERATION> ================== For example: tr_TIMERA_ON alias tr_ONTIMERA "step1" alias step1 "tr_ARESET. alias tr_ONTIMERA. The best way to be sure of getting the new value is using the special timer A and creating a line of steps in the form: ================== alias tr_ONTIMERA "step1" alias step1 "<action 1>. Th e compare value can be changed in any moment. the new value is compared to a special number. Final result: A = 1. tr_TIMERA_OFF" More about this structure in the next section This lines will reset the variable A.01 seconds using the timer A and in crease the variable A by 1. alias tr_ONTIMERA step2" . You can also do more advanced operations using ent_fire commands: ================== ent_fire custom_<VARIABLE>var ent_fire custom_<VARIABLE>var ent_fire custom_<VARIABLE>var ent_fire custom_<VARIABLE>var ================== add x : Add x to VARIABLE subtract x : Subtract x to VARIABLE multiply x : Multiply VARIABLE by x divide x : Divide VARIABLE by x EVENTS FOR VARIABLES: When a value from a variable is changed. By default. alias tr_ONTIMERA step2" alias step2 "tr_AINC. The comparison will output a command depending on wha t is the relation between the value in the variable and the one used for comparing it. that number is 0.

Always: 1) Load variables one step after the value has changed 2) Change the value of a compare event one step before comparing or changing the variable 3) If it's the last step. All actions in a step are done simultaneously. alias tr_ONTIMERA.... so you can manipulate it like one. except it cannot be loaded. their values can be changed using tr_LOADX and tr_LOADY.alias step2 "<action 2>. smaller or bigger. not equ al. Only one variable can be buffered at the same time. Those commands change the variables to the value in the buffer. so the order is not really import ant. alias laststep "<last action>.01 seconds delay between them. tr_ONTIMERA is set to nothing. Special operations with the buffer: ================== tr_LOADX: load the integer in the buffer to the X variable tr_LOADY: load the integer in the buffer to the y variable tr_CASE: load the integer in the buffer to a the switch ================== ************************************************************************* Compare ************************************************************************* It's possible to compare one variable to another and know if it's equal. tr_TIMERA_OFF" ================== There is a good example in the "Compare" section ************************************************************************* Buffer ************************************************************************* To do any operation between two variables. you need to load them in the buffer f irst. The engine always compares the variable X to Y. In every s tep. disable the timer or change the event of the timer to nothing ================== alias laststep "<last action>. The timer can also be disabled in this point until it's needed again an d the next step can be set to be the initial one. tr_TIMERA_OFF" ================== All actions will be activated with a 0. alias tr_ONTIMERA step4" . tr_ONTIMERA is set to the next step and in the final one. The buffer is a variable. alias tr_ONTIMERA step3" alias step3 "<action 3>. . alias tr_ONTIMERA step1.

01 seconds) and "O" is echoed in the co nsole // to keep track on the time alias tr_ONTIMERA "step1" // We set the fast timer to the first step in the line alias step1 "tr_ALOAD.alias tr_ONTIMERA step2" // A is loaded set the next step to be step 2 alias step2 "tr_LOADX.alias tr_ONTIMERA step3" // X is loaded the buffer and set the next step to be step 3 alias step3 "tr_BLOAD. ************************************************************************* . we want to compare variable A with B.To compare X and Y. set the n After loading the code. //////////////////////////////////////////// // tr_ONGREATERTHAN will stop movement and deploy and then say "A is bigger than B" in the // console. bots will stop moving and spawning and "A is bigger than B" will appear in the console.cfg. tr_TIMERB_OFF" ent_fire custom_Bvar setvalue 3 // Initial value of B = 3 tr_ARESET // A is reset to 0 tr_TIMERB_ON // The timer B (1 second) is activated alias tr_ONTIMERB "tr_AINC.echo O" // Each time the timer B trigge rs. Load it inside the game using "exec var_test". the B variables has an initial value and A increases with the time . use: ================== tr_CMP ================== It will compare them and call the following commands in the console (events): ================== if X equal to Y: tr_ONCMPEQUAL if X not equal to Y: tr_ONCMPNOTEQUAL if X is bigger than Y: tr_ONCMPGREATERTHAN if X is smaller than Y: tr_ONCMPLESSTHAN ================== For example. timer A is activated (0. Put the file in the /tf/cfg folder. echo A is bigger than B. A // is increased. It also stops the main timer alias "tr_ONCMPGREATERTHAN" "tr_stop.tr_TIMERA_OFF" // ext step to be the first step and turn off timer A //////////////////////////////////////////// in the buffer and with the value in in the buffer and with the value in Compare. Copy this text in a cfg file and name it var_test. tr_TIMERA_ON. stop m ovement and deploy.alias tr_ONTIMERA step1.alias tr_ONTIMERA step5" // Y is loaded the buffer and set the next step to be step 5 alias step5 "tr_CMP.alias tr_ONTIMERA step4" // B is loaded set the next step to be step 4 alias step4 "tr_LOADY. Here. if A is bigger than B.

Switch ************************************************************************* The switch compares the variable in the buffer with numbers between 0 and 15. To call the switch use ================== tr_CASE: compares the buffer to numbers between 0 and 15. Warning: don't use the " symbol inside the message. Only one text can stay on screen at the same time. Commands: ================== tr_TEXT1: Display text 1 on screen ent_fire custom_text1 addoutput "message <your message here>": Change the text 1 tr_TEXT2: Display text 2 on screen . tr_CASERAND: choose one of the cases randomly tr_CASERANDSHUF: choose one of the cases randomly. then it triggers a case depending on the value. The cases don't repeat until all cases have been chosen ================== If the value of the buffer is equal to any of these numbers. Can save up to 3 different lines. an event will be triggered in the form ================== tr_ONCASE00: if buffer tr_ONCASE01: if buffer tr_ONCASE02: if buffer tr_ONCASE03: if buffer tr_ONCASE04: if buffer tr_ONCASE05: if buffer tr_ONCASE06: if buffer tr_ONCASE07: if buffer tr_ONCASE08: if buffer tr_ONCASE09: if buffer tr_ONCASE10: if buffer tr_ONCASE11: if buffer tr_ONCASE12: if buffer tr_ONCASE13: if buffer tr_ONCASE14: if buffer tr_ONCASE15: if buffer ================== is is is is is is is is is is is is is is is is 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 In case of the value not being equal to any of these values. it will trigger ano ther event ================== tr_ONCASEDEF ================== The switch can work like a randomizer using tr_CASERAND and tr_CASERANDSHUF ************************************************************************* Custom text ************************************************************************* Text that appears on screen.

Take in mind that all of the commands listed use ent_fire and some of them use "addoutput". It goes from 0 to 360. it is 248 and will r eset to that value with tr_default) ************************************************************************* Galaga soldier mini-game ************************************************************************* The map includes a mini-game showing some of the functions. MOVEMENT SPEED **** ent_fire walk addoutput "speed <speed>" **** Replace <speed> with the speed you want AIM DIRECTION **** ent_fire destination_walkway addoutput "angles x y 0" **** x: This is the pitch.If you want to damage a bot (or a player) by 124 hp using the "hurt bot" optio n. Those include the bot movement speed. It goes from -90 to 90. use the following command: ent_fire hurtstart_trigger SetDamage X Where X is two times the damage you want to do (by default. the player/bot must be teleported to (1664 566 510) . Commands with "" inside them cannot be used in aliases. 270 is forward. ---------------------------------------------------------------------------------------------CUSTOMIZE ---------------------------------------------------------------------------------------------There are some options around the map that can be tweaked by the user with comma nds.To change the damage inflicted by the hurt option.cfg To run it. timers used for different features and the angle the bots ai m. 90 is backward. y: This is the yaw.0 and 180 are left and right DEPLOY TIME **** ent_fire spawntimer refiretime <time> **** .ent_fire custom_text2 addoutput "message <your message here>": Change the text 2 tr_TEXT1: Display text 3 on screen ent_fire custom_text3 addoutput "message <your message here>": Change the text 3 ================== ************************************************************************* Notes ************************************************************************* . It's located inside tf/cfg/tr_walkway/minigames/gsoldier. so han dle them with care and check if they are well written before loading the command in the console. -90 is straight up and 90 is strai ght down. enter "exec tr_walkway/minigames/gsoldier" in the console.

Replace <time> with the t ime you want (default 1.The bots don't walk. so the behavior when the y are pushed (airblast.5 If you want to change these values. FaN) or exploded is a little different from real players walking.Replace <time > with the time you want (default 1. they are pushed using the track. Every time it triggers. That difference is hard to perceive now (rc) . ---------------------------------------------------------------------------------------------NOTES (Important) ---------------------------------------------------------------------------------------------.25).75) STRAFE TIMER **** ent_fire strafe_timer refiretime <time> **** Time it takes for the bots to change strafe direction. This time goes from <lowertime> to <uppertime>. Choosing a small one will make bots accelerate. It's random. that means the time r changes it's refire time everytime it ends counting.Replace <time> with the time you want JUMP TIMER **** ent_fire jump_timer refiretime <time> **** Time between jumps.5 <uppertime> = 4. Default values are <lowertime> = 2.75) BACK AND FORTH TIMERS "Backward timer" **** ent_fire back_timeron addoutput "LowerRandomBound <lowertime>" ent_fire back_timeron addoutput "UpperRandomBound <uppertime>" **** This timer controls when the bots go backwards. make sure the <uppertime> is bigger than the <lowertime> "Forward timer" **** ent_fire back_timeroff refiretime <time> **** This timer triggers every <time> seconds (default 1. it makes the bots go forward LAUNCH PAD POWER **** ent_fire launchpad_power addoutput "speed <power>" **** This changes the power the launchpad pushes the bots. Use this command only when the "random power" option is not selected or the power will be reset to random after a fraction of a second.

SV_CHEATS in ENABLED. certain cvars are disabled for clients . Having it enabled breaks the "hurt" func tion. sv_cheats is turned on automatically after it is turned off. Good luck! **** NOTES FOR SERVER OWNERS **** The map will set at the start of the round the following configurations: # sv_cheats 1 # mp_teams_unbalance_limit 0 # mp_disable_respawn_times 1 # mp_waitingforplayers_cancel 1 # tf_damage_disablespread 1 # tf_weapon_criticals 1 sv_cheats is turned on. If you have any suggestion or find a bug. The map would not be what now i s without their help.The hitboxes from the bots behaves in a different way from real walking bots. sometimes doing more than 124 da mage and killing light classes .Don't use commands that issue move orders to bots (bot_flipout. .com or by steam (ID: washipato/profile: 76561197995187989) I hope you enjoy the map and find it fun and useful. Th ey will break the bots deploy system . making the 124 damage done by it suffer the damage spread. contact one of the mappers (Wiseguy149 or Washipato) sending a mail to washipato@gmail. so it's recommended to use a plugin to disallow player f rom using ent_fire commands.Thanks a lot to wiseguy149 for his huge help in the last part of the project. so play w ith people you trust. bot_mimic). . . People from ESG are NOT elitist. ROCKZO for his great work with the posters and the pacience to d eal with my suggestions . Disable any kind of external team-balancer plugin that the server could be running ---------------------------------------------------------------------------------------------Credits and thanks ---------------------------------------------------------------------------------------------..Thanks to Dr. . adding new features.When playing multiplayer. Players can easily abuse this in LOTS of ways. The g roup gave me great feedback in many stages of the develpment.Thanks to the Argentina community for the early help with the alpha (y disculp .The map is a release candidate (rc).Thanks to the ESG (elite spy group) community for his support and ideas. cleaning up the map. general mapping and lots of ideas and bug reports that made the map work a lot better than it was before.Damage spread is DISABLED by default. optimizing. There is no way to fix this. They are just a group of people who enjoy a lot to play the spy class.

Thanks to the following mappers for inspirating this work * tr_airshot.Thanks to tf2maps.en todas las veces que no pude meterme a mix ni a los pub para terminar esto) . community for the useful tutorials and answering some di fficult questions about hammer. by metalpiss * tr_airstab. . by The Ultimate Potato (also thanks to him for the good ideas a nd tips while I was mapping) . Wiseguy149. by gmannick * tr_aim. The Big Cheese. Dr. Squible. Fede22 an d Arctic Vampire for their help beta testing the last versions of the beta. Special thanks to A Boojum Snark for his useful addon to hammer. Special thanks to Arc tic Vampire for lending me the server to try this map in multiplayer .Thanks to Kakihara.