////////////////////////////////////////////////////////
//
//  default.h - TF bot configuration file
//
//  to produce correct default.cfg file for bot engine
//  you have to filter this file with some C preprocessor
//
//  we used Generic Preprocessor version 2.1 (c) Denis Auroux 1996-2001
//  http://math.polytechnique.fr/cmat/auroux/prog/gpp.html
//
//  to make this config execute from the command line: 
//  gpp.exe -C -x +z -o veteran.cfg veteran.h
//

// useful macros
#define SQR(x) x*x
#define METER(x) 100*x
#define SECOND(x) 1000*x

// distances
REPLAN_DISTANCE                     SQR(METER(5))       // square of distance which is considered to be far enough for full path replaning when goal wakes up
REACH_DISTANCE                      SQR(METER(0.7))     // IMPORTANT !
DIF_DISTANCE                        SQR(METER(3))       // distance considered as "falling down"
MOVE_ZERO_TEST                      SQR(METER(1))       // NOT USED

FIRE                                1                   // is firing enabled ?
STATISTICS_ENABLED                  0                   // is advanced danger statistics enabled ? (too slow with current raycast implementation in engine)
AGP_SEARCH_RANGE                    6                   // range for searching new actual gridpoint

BOT_HEIGHT                          0.7                 // NOT USED

ROUND_START_DELAY                   SECOND(8)           // delay from doing anything but buing weapons when round starts
ROUND_START_PERTURBATION            SECOND(4)           // delay perturbation from doing anything but buing weapons when round starts

NOIDLE_DELAY                        SECOND(12)          // delay from doing anything but buing weapons when round starts

// smoothing move
NORMAL_WANTPOS_SHIFT                METER(0.3)          // want position shift (in the direction of move)
NORMAL_HORIZONTAL_PRECISION         0.1                 // NOT USED dot product test for reaching want position
NORMAL_DIRECT_PRECISION             0                   // NOT USED dot product test for reaching want position
CROSS_WANTPOS_SHIFT                 METER(0.3)          // want position shift (in the direction of move)
CROSS_HORIZONTAL_PRECISION          0.1                 // NOT USED dot product test for reaching want position
CROSS_DIRECT_PRECISION              0                   // NOT USED dot product test for reaching want position
COMBAT_WANTPOS_SHIFT                METER(0.3)          // want position shift (in the direction of move)
COMBAT_HORIZONTAL_PRECISION         0.1                 // NOT USED dot product test for reaching want position
COMBAT_DIRECT_PRECISION             0                   // NOT USED dot product test for reaching want position

STANDSTATE_TIMEOUT                  SECOND(1.0)         // forces no standstate changes after last stand state change 

AIM_DISTANCE                        SQR(METER(1.5))     // NOT USED minimal aim_pos distance from player's eye, to prevent jerky aiming

DEFAULT_MANUAL                      false               // default manual bot moving
PIVOT_SHIFT                         METER(0)            // shift of pivot point (for moving calculations)
HISTORY_SIZE                        50                  // size of bot history memory (=#goals)
PROJECTED_MOVE_ZERO_X               0.2                 // anti-jittering constant
PROJECTED_MOVE_ZERO_Y               0.2                 // anti-jittering constant
MOVE_ZERO                           SQR(METER(0.001))   // distance considered to be not a reason for moving
 
WR_REPEAT_TIME                      SECOND(60)          // NOT USED

KEY_CHANGE_DELAY                    SECOND(0.1)         // delay between stroking key again (anti-jitter code)

// combat distances
COMBAT_DISTANCE_SOLDIER             SQR(METER(120))      // distance with zero perception
COMBAT_DISTANCE_SCOUT               SQR(METER(110))      // distance with zero perception
COMBAT_DISTANCE_SNIPER              SQR(METER(180))     // distance with zero perception
COMBAT_DISTANCE_SPECIALIST          SQR(METER(130))     // distance with zero perception

COMBAT_NEARDISTANCE_SOLDIER         METER(30)           // distance with full perception
COMBAT_NEARDISTANCE_SCOUT           METER(30)           // distance with full perception
COMBAT_NEARDISTANCE_SNIPER          METER(30)           // distance with full perception
COMBAT_NEARDISTANCE_SPECIALIST      METER(30)           // distance with full perception

COMBAT_PERCEPTION_SOLDIER           METER(90)           // when random from 0-(enemy_distance-NEARDISTANCE) gets higher than perception - enemy is overlooked
COMBAT_PERCEPTION_SCOUT             METER(90)           // when random from 0-(enemy_distance-NEARDISTANCE) gets higher than perception - enemy is overlooked
COMBAT_PERCEPTION_SNIPER            METER(90)           // when random from 0-(enemy_distance-NEARDISTANCE) gets higher than perception - enemy is overlooked
COMBAT_PERCEPTION_SPECIALIST        METER(90)           // when random from 0-(enemy_distance-NEARDISTANCE) gets higher than perception - enemy is overlooked

// evaluation frequency (CPU usage)
EVAL0_FREQUENCY                     SECOND(0.02)        // frequency of evaluating short-term goals
EVAL1_FREQUENCY                     SECOND(0.2)         // frequency of evaluating mid-term goals
EVAL2_FREQUENCY                     SECOND(0.5)         // frequency of evaluating long-term goals
GARBAGE_FREQUENCY                   SECOND(6)           // frequency of goal garbage collector
STATISTICS_FREQUENCY                SECOND(0.1)         // dynamic maps (of seen dangerpoints) update frequency (update from viewports)
STATISTICS_DECAY_FREQUENCY          SECOND(0.1)         // seen dangerpoints forgeting frequency (128 steps) 
PLANER_FREQUENCY                    SECOND(0.2)         // frequency of bot planer
UNLAG_FREQUENCY                     SECOND(0.5)         // frequency of unlag code
COLLISION_FREQUENCY                 SECOND(0.5)         // frequency of collision detection test
 
// aiming module
MOUSE_MAX_SPEED                     1.0                 // NOT USED
MOUSE_MAX_ACCEL                     0.5                 // NOT USED
 
MOUSE_ACCEL_X                       0.2                 // mouse acceleration (moving mode)
MOUSE_ACCEL_Y                       0.2                 // mouse acceleration (moving mode)
MOUSE_SPEED_DECAY_X                 0.85                // mouse "friction" (moving mode)
MOUSE_SPEED_DECAY_Y                 0.85                // mouse "friction" (moving mode)

MOUSE_COMBAT_ACCEL_X                0.7                 // mouse acceleration (combat mode)
MOUSE_COMBAT_ACCEL_Y                0.7                 // mouse acceleration (combat mode)
MOUSE_COMBAT_DECAY_X                0.5                 // mouse "friction" (combat mode)
MOUSE_COMBAT_DECAY_Y                0.5                 // mouse "friction" (combat mode)
MOUSE_COMBAT_PERTURBATION_X         1000000             // perturbation of aiming when in combat (1/x)
MOUSE_COMBAT_PERTURBATION_Y         1000000             // perturbation of aiming when in combat (1/x)

MOUSE_CALIBRATION_X                 80                  // mouse calibration into device units
MOUSE_CALIBRATION_Y                 64                  // mouse calibration into device units
MOUSE_SPEED_LIMIT_X                 0.8                 // mouse speed limit
MOUSE_SPEED_LIMIT_Y                 0.4                 // mouse spedd limit
MOUSE_LIMIT_X                       80                  // per frame limit for mouse in x-axis (input device units)
MOUSE_LIMIT_Y                       40                  // per frame limit for mouse in y-axis (input device units)

MOUSE_COMBAT_DIRECTL_X              3.14/8              // direct linear aiming constant
MOUSE_COMBAT_DIRECTL_Y              3.14/8              // direct linear aiming constant
MOUSE_COMBAT_DIRECTK_X              0.2                 // delta angle scale when direct linear aiming 
MOUSE_COMBAT_DIRECTK_Y              0.2                 // delta angle scale when direct linear aiming 

// goal priorities
MANUFACTURE_PRIORITY                10                  // priority for all manufactuerd goals

PRIORITY_ATDUMMY                    0
PRIORITY_LTPATROL                   10                  // = MANUFACTURE PRIORITY
PRIORITY_LTPLANTBOMB                10                  // = MANUFACTURE PRIORITY
PRIORITY_LTGOTOPOSITION             10                  // = MANUFACTURE PRIORITY
PRIOROTY_LTSPECIALACTION            10                  // = MANUFACTURE PRIORITY
PRIORITY_LTCAMP                     10                  // = MANUFACTURE PRIORITY
PRIORITY_LTFOLLOWPLAYER             10                  // = MANUFACTURE PRIORITY
PRIORITY_MTFOLLOWPLAYER             10
PRIORITY_MTGOTOWP                   10
PRIORITY_MTPLANTBOMB                10
PRIORITY_MTDEFUSEBOMB               10
PRIOROTY_MTSPECIALACTION            10
PRIORITY_MTGOTOGP                   10
PRIORITY_MTCAMP                     10
PRIORITY_STCOMBATG                  15
PRIORITY_STCAMP                     5
PRIORITY_STCROSSPLATFORMS           5
PRIORITY_STGOTOGP                   5
PRIORITY_STCROSSPLATFORMS_FOLLOW    5
PRIORITY_STGOTOGP_FOLLOW            5
PRIORITY_STGOTOPOS                  5
PRIORITY_STWAIT                     5                   // PRIORITY_STGOTOGP_FOLLOW
PRIORITY_STHIDE                     16                  // PRIORITY_STCOMBATG + 1
PRIORITY_STRELOAD                   17                  // PRIORITY_STCOMBATG + 2
PRIORITY_STPLANTBOMB                10
PRIORITY_STLOOKROUND                10
PRIORITY_STDEFUSEBOMB               10
PRIOROTY_STSPECIALACTION            10
PRIORITY_FREEAIMING                 0
PRIORITY_STCHECKBACK                10                  // PRIORITY_STLOOKROUND
PRIORITY_STCHECKDIR                 10                  // PRIORITY_STLOOKROUND
PRIORITY_STIDLE                     20

// clear platform
MAX_GPS_CHECK                       10                  // maximum count of gridpoints to be checked for visibility in one call of Evaluate

// taking lost bomb/item
LOOKROUND_PROBABILITY               5                   // probability of look round (note: it is checked after every (!) GoToGP is completed => this probability should be quite small
CLOSE_TO_BOMB                       SQR(METER(0.5))     // distance to bomb which is treated close enough for defusing (squared)

// following
NO_NEED_TO_FOLLOW                   SQR(METER(5))       // distance (squared) which is treated as close enough for following => when distance between player and bot is shorter than this, then bot won't go closer to the player

// looking round
CHECK_DELAY                         SECOND(3)           // time delay between changes of look direction
CHECK_PERTURBATION                  SECOND(2)           // delay time perturbation
CHECK_DURATION                      SECOND(1)           // NOT USED
MIN_COORD_MOVE                      0.2                 // defines camp aiming range (rad)
MAX_COORD_MOVE                      1.5                 // defines camp aiming range (rad)
LOOKING_TIMELIMIT                   SECOND(10)          // minimal time to do LOOKROUND again
NERVOUS_DISTANCE                    SQR(METER(2))       // when enemy is closer than this distance, bot is forced to do LOOKROUND (BOT's TRICK)
LOOKROUND_ANGLE                     2.6                 // ammount of angle to look behind (left or right)
LOOKROUND_ACCEPTANCE_ANGLE          0.8                 // in which (max) angle must be the view direction to accept as checked look direction

// checking back (arbitrary direction)
DIR_CHECKING_PROB                   20                  // direction checking probability
DIR_CHECKING_TIMELIMIT              SECOND(4)           // minimal time to do CHECKBACK again
DIR_CHECKING_DELAY                  SECOND(1.0)         // time delay for staying in check direction
DIR_CHECKING_DELAY_PERTURB          SECOND(0.5)         // time delay perturbation
DIR_CHECKING_ANGLE_PERTURB          3.14/16             // angle perturbation
DEFAULT_CHECK_TIME                  SECOND(1.2)         // default direction checking time

// combat
COMBAT_SHORT_VISIBILITY_DISTANCE    METER(8)            // when visibility is less than this constant, bot is checking last danger position (corner)
STEP_ASIDE_PROBABILITY              30                  // probability of stepping aside during combat
JUMP_PROBABILITY                    5                   // probability of jump when stepping aside
CLOSE_DISTANCE                      SQR(METER(10))      // distance (squared) between bot and player, which is close enough to fire
LOW_AMMO                            1                   // critically low ammo
LOW_HEALTH                          15                  // health of opponent, that forces bot to shoot despite low ammo (BOT's TRICK)
MAX_MATERIAL_BARRIER                30                  // what material is considered to be shootable through
HIDEANDWAITTIMEOUT                  SECOND(8)           // timeout for ending combat (when in hide mode)
HIDEANDWAITTIMEOUT_PERTURB          SECOND(5)           // timeout for ending combat perturbation
LOSTENEMYTIMEOUT                    SECOND(5)           // when enemy is lost from view, after this time choose a new tactics
LOSTENEMYTIMEOUT_PERTURB            SECOND(4)           // this is  above time perturbation
FINDANDKILLHEALTH                   20                  // health under this limit forces HIDEANDWAIT combat tactics instead of GOTOLASTKNOWNPOS
HEALTHPANIC                         10                  // health under this limit forces FLEE combat tactics
GENERAL_ATTACK_DISTANCE             SQR(METER(20))      // when bot is going to enemy last_known_postion, this is distance where he starts to fight again when he sees the enemy again
COMBAT_TIMEOUT                      SECOND(45)          // hard combat timeout
COMBAT_TIMEOUT_PERTURB              SECOND(10)          // hard combat timeout perturbation
MAX_HOLDFIRE_COUNT                  4                   // max number of holdfire actions, then change tactics to GOTOLASTKNOWNPOS
AIM_LOST_LOOKROUND_PROB             100                 // check back probability, when lost enemy
AIM_LOST_ENEMY_PROB                 1000                // NOT USED
COMBAT_DANGER_REACH_DISTANCE        SQR(METER(1))       // reach distance when bot is forced to check previous player pos (returning from check danger)
COMBAT_DANGER_TIMEOUT               SECOND(2)           // timeout to forget doing checking danger
COMBAT_TACTICS_TIMEOUT              SECOND(1.5)         // minimal timeout to change combat tactics again
COMBAT_MOVECROUCH_MIXING            40                  // probability for mixing MOVE/CROUCH in combat
ENEMY_DIR_CHECKING_PROB             2000                // cheat - 10000 = allways

// defuse bomb
DEFUSE_TIME                         SECOND(5)           // how long does it take to defuse a bomb

// free aiming
GFREEAIMING_NOACTIVITYLIMIT             SECOND(10)      // reset limit
GFREEAIMING_WANT_POS_ACCEPTANCE_ANGLE   0.5             // in which (max) angle must be dangerpoint(usually) seen to be accepted as "seen"; in radians
GFREEAIMING_RECOUNT_FREQUENCY_LIMIT     SECOND(0.1)     // minimum time between two computations of statistics rayspheres
GFREEAIMING_ALWAYS_DIRECT_TURN_ANGLE    1.57            // when "from-to" angle is less or equal, no "turn-over-forward-direction" testing is done; in radians

// hide
HIDEJUMP_PROBABILITY                5                   // probability to do jump when hiding from enemy fire
CIRCLE_RADIUS                       METER(10)           // ???
ANGLE_STEP                          ((2*3.14)/60)       // NOT USED
PLANT_TIME                          SECOND(5)           // default time for planting bomb
DEFAULT_TIME                        SECOND(1)           // default time for reloading
HIDE_RANGE                          10                  // in this range all gridpoints will be tested whether they are good hide place
HIDE_PLACE_QUALITY                  0                   // max value of ray in static raysphere of hide gridpoint in danger-direction
HIDE_PLACE_OVERALL_QUALITY          15                  // max value of ray_sum in static raysphere of hide gridpoint candidate
DOWNLOAD_TIME                       SECOND(15)

// danger statistics
BOTSTAT_DYNAMIC_RATIO               0.7                 // ratio between dynamic raysphere and static raysphere in "final" raysphere
BOTSTAT_FORWARD_PREFERENCE_0        40                  // forward-ray (in forward-raysphere)
BOTSTAT_FORWARD_PREFERENCE_1        20                  // neighbouring rays of forward-ray (in forward-raysphere)
BOTSTAT_FORWARD_PREFERENCE_2        10                  // rays next to neighbouring rays of forward-ray (in forward-raysphere)
BOTSTAT_HORIZONTAL_PLANE_PREFERENCE 5                   // central horizontal plane (in forward-raysphere)

// code for detecting lags
SHORT_FORWARD_STRAFE_TIMEOUT        SECOND(0)           // how long to do short forward strafe to unlag bot 
LONG_FORWARD_STRAFE_TIMEOUT         SECOND(0.7)         // how long to do long forward strafe to unlag bot  
SHORT_BACKWARD_STRAFE_TIMEOUT       SECOND(0)           // how long to do short backward strafe to unlag bot
LONG_BACKWARD_STRAFE_TIMEOUT        SECOND(0.5)         // how long to do long backward strafe to unlag bot 
GET_BETTER_POS_TIMEOUT              SECOND(1.0)         // how long it takes bot to get better position before give it up
GET_BETTER_POS_DISTANCE             500                 // projected (cosine)
LAG_TIME_PERTURBATION               SECOND(0.2)         // random perturbation of lag timeouts

LAG_DETECTING_DISTANCE_RUN          METER(0.6)          // very important, smaller elapsed distance between two seconds is considered as lag
FORWARD_UNLAG_DISTANCE_RUN          SQR(METER(1))       // what distance is considered to be out of lag
BACKWARD_UNLAG_DISTANCE_RUN         SQR(METER(2))       // what distance is considered to be out of lag

LAG_DETECTING_DISTANCE_WALK         METER(0.3)          // very important, smaller elapsed distance between two seconds is considered as lag
FORWARD_UNLAG_DISTANCE_WALK         SQR(METER(1))       // what distance is considered to be out of lag
BACKWARD_UNLAG_DISTANCE_WALK        SQR(METER(2))       // what distance is considered to be out of lag

LAG_DETECTING_DISTANCE_CROUCH       METER(0.3)          // very important, smaller elapsed distance between two seconds is considered as lag
FORWARD_UNLAG_DISTANCE_CROUCH       SQR(METER(1))       // what distance is considered to be out of lag
BACKWARD_UNLAG_DISTANCE_CROUCH      SQR(METER(2))       // what distance is considered to be out of lag

LAG_DETECTING_DISTANCE_PRONE        METER(0.1)          // very important, smaller elapsed distance between two seconds is considered as lag
FORWARD_UNLAG_DISTANCE_PRONE        SQR(METER(1))       // what distance is considered to be out of lag
BACKWARD_UNLAG_DISTANCE_PRONE       SQR(METER(2))       // what distance is considered to be out of lag

UNLAG_LEFT_YAW                      -0.8                // angle to reach when trying to get off lag with left strafe
UNLAG_RIGHT_YAW                     0.8                 // angle to reach when trying to get off lag with right strafe

// splatbox related
RESIZE_2DSB_X                       0.05                // how to resize 2d splatbox bounding box in x axis (camera space)
RESIZE_2DSB_Y                       0.05                // how to resize 2d splatbox bounding box in y axis (camera space)

// bleeding
BLEEDING_TIME                       SECOND(0.5)         // how long player signalisates bleeding
BLEEDING_FEEDBACK_TIME              SECOND(0.4)         // after this time firing bot checks if opponent is bleeding, if not -> HOLDFIRE
HOLDFIRE_TIMEOUT                    SECOND(0.1)         // after this time bot tries to fire again

// last minute hacks
OSCILATION_TIMEOUT                  SECOND(5)           // per meter, timelimit for running/walking one meter, if slower => reset
REPLAN_TIMEOUT                      SECOND(3)           // timeout to replan whole bot memory again 

// attack & fear points
ENEMY_ATTACK_BASE_CPOINTS           1000
ENEMY_ATTACK_SEEHIM_LPOINTS         10000
ENEMY_ATTACK_SEEHIM_CPOINTS         3000
ENEMY_ATTACK_VISIBILITYTOHIM_LPOINTS 5000
ENEMY_ATTACK_VISIBILITYTOHIM_CPOINTS 1500
ENEMY_ATTACK_SHOOTINGME_LPOINTS     7000
ENEMY_ATTACK_SHOOTINGME_CPOINTS     6000
ENEMY_ATTACK_CLOSETODEATH_CPOINTS   7000

FRIEND_ATTACK_SEEHIM_LPOINTS        4000                 // attack bonus for enemy targets
FRIEND_ATTACK_SEEHIM_CPOINTS        1500                 // attack bonus for enemy targets

ENEMY_FEAR_SEESME_LPOINTS           1000
ENEMY_FEAR_SEESME_CPOINTS           400
ENEMY_FEAR_NOTSEEHIM_CPOINTS        600
ENEMY_FEAR_SHOOTINGME_LPOINTS       220
ENEMY_FEAR_SHOOTINGME_CPOINTS       2000

FRIEND_FEAR_SEEHIM_CPOINTS          -1000
FRIEND_FEAR_SEESME_LPOINTS          -3000
FRIEND_FEAR_SEESME_CPOINTS          -1000
FRIEND_FEAR_NOTSEEHIM_CPOINTS       -300

FEAR_BLEEDING_CPOINTS               6000

STD_KEY_DELAY                       300                  // NOT USED
STD_KEY_PAUSE                       100                  // NOT USED

// radio related
RADIO_DISTANCE                      SQR(METER(45))       // distance limit, who will listen radio command
RADIO_TIMELIMIT                     SECOND(3)            // minimal time to do radio message again
RADIO_SPOTED_REPORTING_PROB         0                    // probability of reporting enemies by radio
RADIO_NEGATIVE_PROB                 30                   // probability of negative radio response
RADIO_REACTION_TIME                 SECOND(1.5)          // reaction time for radio command
RADIO_REACTION_TIME_PERTURB         SECOND(0.5)          // reaction time perturbation for radio command

RADIO_GENERAL_RESPECT               70                   // probability of doing radio command (%)
RADIO_FOLLOWPLAYER_RESPECT          100                  // respect from FOLLOW PLAYER radio command
RADIO_WATCHYOURXXX_RESPECT          60                   // respect from WATCH YOUR >ASS< radio command
RADIO_ENEMYSIGHTED_RESPECT          70                   // respect from ENEMY SIGHTED reporting
RADIO_HOLDPOS_RESPECT               100                  // respect from HOLD POSITION radio command
DEAFAULT_CAMP_TIME                  SECOND(45)           // timelimit for doing HOLD POSITION radio command
DEAFAULT_CAMP_TIME_PERTURB          SECOND(15)           // timelimit perturbation for doing HOLD POSITION radio command
RADIO_HOLDPOS_MODE                  2                    // mode for doing HOLD POSITION radio command

FOLLOW_PLAYER_TIME                  0                    // default time to follow player (0 = no timelimit)

// Idling
IDLE_TIME                           SECOND(1)            // idle time
IDLE_TIME_PERTURB                   SECOND(0.5)          // idle time perturbation
IDLE_COUNT                          6                    // num idle events to do hard reset

CONSOLIDATE_TIMEOUT                 SECOND(6)            // timeout between two consolodidations
FRONT_CHECKING_TIMELIMIT            SECOND(0.5)          // limit to do two free direction checks
FRONT_CHECKING_DISTANCE             METER(1.5)           // distance to do free direction check

SPRINT_MODE_COMBAT_DISTANCE         METER(10)            // when in sprint mode, do not react to enemies further than this limit

FRAGHUNT_TIME                       SECOND(60)           // when to enable fraghunt mode (from round begin)
FRAGHUNT_FRIEND_PLAYERS             2                    // minimal number of living friend players in game
FRAGHUNT_ENEMY_PLAYERS              3                    // maximal number of living enemy players in game

TRACE_RESET_DISTANCE                SQR(METER(20))       // if actual grid point is further than this distance, bot is reseted (bad map topology?)
MATRAY_TIMELIMIT                    SECOND(0.5)          // timelimit to do two material ray casts

SHORT_AIM_DISTANCE                  SQR(METER(2))        // minimal aim_pos distance from player's eye, to prevent jerky aiming
COLLISION_LAG_DISTANCE              0.005                // length difference koef between projected vectors considered as lag

CHECK_GP_DISTANCE                   SQR(METER(2.0))      // distance before reaching the GP, when check GP test is executed
CHECK_GP_MINRAY                     5                    // minimal max ray to do check GP
CHECK_GP_MINDIFF                    3                    // minimal (positive) diference from source GP
CHECK_GP_PROB                       60                   // probability of doing check GP

RUNNING_OUT_OF_TIME_REPORT_PROB     0                    // probability of reporting "We are running out of time" when RUNNING_OUT_OF_TIME remains

UNLAG_NOTVISIBLE_RESET_TIMEOUT      SECOND(2)            // when destination GP is not visible for bot, this timeout causes bot restart
BACK_CHECKING_PROB                  60                   // probability to check back (aplied when reaching gridpoint)
BACK_CHECKING_MINDANGER             7                    // minimal danger for checking back

UNLAG_JUMP_PROBABILITY              1                    // unlag jump probability

COMBAT_SNIPER_DISTANCE              SQR(METER(40))       // snipers try to be further from the enemy

COLLISION_ENABLED                   0                    // enables collision detection calls to help bots avoid obstacles (slow)
COLLISION_RAY_LENGTH                METER(0.5)           // maximal length of collision ray casted