Files
2025-09-29 00:52:08 +02:00

579 lines
23 KiB
Scheme
Executable File

/********************************************************************************************************
///
/// Contains all the debug flags for the Tennis project, used for turning on and off print statements
/// Also contains all CONSTs and TWEAKs needed to debug and tweak Tennis
///
********************************************************************************************************/
CONST_INT TENNIS_DEBUG_RECORDING 0 // DO NOT SUBMIT WITH THIS EQUAL TO 1! YOU WILL BREAK RELEASE FOR REALS.
#IF IS_DEBUG_BUILD
// Used for widgets
BOOL RECORD_HEAPS_OF_DATA = TRUE
BOOL OPTIMIZE_PREDICTION = TRUE
BOOL DRAW_ANIM_HITBOX_OFFSETS = FALSE
BOOL DRAW_PREDICTION_BALLS = FALSE
BOOL DRAW_SWING_RADIUS = FALSE
BOOL IS_ANIM_PLAYING = FALSE
BOOL AI_SERVE_OVERRIDE = FALSE
BOOL PLAYER_SERVE_OVERRIDE = FALSE
BOOL DRAW_PREDICTION_POINTS = FALSE
BOOL DRAW_DROP_SHOT_DIST = FALSE
BOOL SHOULD_SWING_METER_SHOW = FALSE
BOOL USE_WALK_MOVE_NETWORK = FALSE
BOOL DRAW_ARRAY_MIN_DISTANCE = FALSE
BOOL PLAYER_STAT_OVERRIDE_STR = FALSE
BOOL ADJUST_DYNA_CAM_OFF_MICHAEL_VARS = FALSE
BOOL TEST_POWER_VOLLEY = FALSE
BOOL TEST_STRONG_SWING = FALSE
BOOL TEST_DROP_SHOT = FALSE
BOOL TEST_LOB = FALSE
BOOL DRAW_WILD_SWING_RADIUS = FALSE
BOOL OVERRIDE_SCLB_UPLOAD = FALSE
BOOL INCREASE_BALL_SIM_SPEED = FALSE
BOOL USE_DYNA_DEFAULTS = FALSE
BOOL NEVER_WALK_TO_POSITION = FALSE
BOOL ALWAYS_WALK_TO_POSITION = FALSE
BOOL DO_NOT_TRACK_SCORE = FALSE
BOOL DEBUG_LAUNCH_BALL_FROM_VECTORS = FALSE
BOOL AI_DEBUG_SWING_LOB = FALSE
BOOL SHOULD_SET_POWER_SHOT_FLAG = FALSE
BOOL SHOW_HEADSET_DRAW_LABELS = FALSE
BOOL DISPLAY_DYNA_CAM_VALUES = FALSE
#ENDIF
#IF IS_DEBUG_BUILD
STRUCT TENNIS_WIDGET_DATA
BOOL bAudio_TENNIS_PLYR_SMASH_MASTER
BOOL bAudio_TENNIS_PLYR_SMASH_BACKSLICE_MASTER
BOOL bAudio_TENNIS_PLYR_LOB_MASTER
BOOL bAudio_TENNIS_PLYR_FOREARM_MASTER
BOOL bAudio_TENNIS_PLYR_BACKSLICE_MASTER
BOOL bAudio_TENNIS_PLYR_TOPSPIN_MASTER
BOOL bAudio_TENNIS_NPC_SMASH_MASTER
BOOL bAudio_TENNIS_NPC_SMASH_BACKSLICE_MASTER
BOOL bAudio_TENNIS_NPC_LOB_MASTER
BOOL bAudio_TENNIS_NPC_FOREARM_MASTER
BOOL bAudio_TENNIS_NPC_BACKSLICE_MASTER
BOOL bAudio_TENNIS_NPC_TOPSPIN_MASTER
BOOL bTest_PlayerResetFlagStrafe = TRUE
BOOL bTest_PlayerResetFlagUseCamHeading = TRUE
BOOL bTest_AIResetFlagStrafe = TRUE
BOOL bTest_AIResetFlagUseCamHeading = TRUE
ENDSTRUCT
#ENDIF
///
/// Ambient Only Constants
///
CONST_INT AMBIENT_SHUTDOWN_DISTANCE 150
CONST_INT AMBIENT_GAMEPLAY_DISTANCE 75
CONST_FLOAT TIME_TO_BALL_IN_HAND 0.015
///
/// Tennis AI Constants
///
CONST_FLOAT TENNIS_AI_RUN_BACKWARD_CORRECTION 0.0
CONST_FLOAT TENNIS_PREDICTION_PLAYER_TO_BALL_SCALAR 0.15
CONST_FLOAT AI_HARD_UP_NORMAL_SCALAR -1.0
CONST_FLOAT AI_HARD_UP_TOPSPIN_SCALAR -2.0
CONST_FLOAT AI_HARD_UP_BACKSPIN_SCALAR 0.0
CONST_FLOAT AI_HELD_DIRECTION_REACT 0.5
CONST_INT AI_ACTION_TAKEN_DURATION 500
CONST_FLOAT DEBUG_LOD_SETTING 2.0
CONST_FLOAT AI_DROP_MAX 570.0
CONST_FLOAT AI_CHEAT_DIST_MAX 90.0
CONST_FLOAT HIGH_AI_CHEAT_CHANCE 0.75
CONST_FLOAT LOW_AI_CHEAT_CHANCE 0.05
CONST_FLOAT HIGH_AI_DROPLOB_CHANCE 0.50
CONST_FLOAT LOW_AI_DROPLOB_CHANCE 0.15
CONST_FLOAT FUCK_OFF_TIMER_THRESHOLD 5.0
CONST_FLOAT WILD_SWING_AI_DIST_THRESHOLD 1.200
CONST_FLOAT AD_EASY_FAULT_PROBABILITY 0.20
CONST_FLOAT AD_NORMAL_FAULT_PROBABILITY 0.10
CONST_FLOAT MAX_EASY_AI_REACTION_TIME 0.40
CONST_FLOAT MAX_NORMAL_AI_REACTION_TIME 0.20
CONST_FLOAT MAX_HARD_AI_REACTION_TIME 0.01
CONST_FLOAT CLOSEST_TENNIS_SWING_BAIL_HEIGHT 0.5
CONST_FLOAT TENNIS_PED_ABUSE_TIME 300.00
CONST_FLOAT TENNIS_PED_ABUSE_RATE 0.50
CONST_FLOAT AI_PREDICTION_SCALAR 2.100
CONST_INT AI_PREDICTION_START 0
CONST_FLOAT SERVE_BUCKET_RATE 0.5
CONST_FLOAT SERVE_BUCKET_MIN -1.5
CONST_FLOAT SERVE_BUCKET_MAX 1.5
CONST_FLOAT AI_REACTION_TIME_MAX 1.000
CONST_FLOAT NORMAL_SPIN_RATE 0.30
CONST_FLOAT HARD_SPIN_RATE 0.20
CONST_FLOAT HARD_TOPSPIN_RATE 0.60 // Rate at which AI uses topspin over backspin
CONST_FLOAT AI_SWING_RADIUS 0.0
CONST_FLOAT AI_STOP_RADIUS_SQUARED 50.0 // arbitrarily large so we can ignore it for testing, may not need this in the future -REP
CONST_INT MAX_HOME_POS 4
CONST_FLOAT LEFT_RIGHT_EASY_OFFSET 2.000
CONST_FLOAT LEFT_RIGHT_NORM_OFFSET 10.00
CONST_FLOAT LEFT_RIGHT_NORM_MULT 2.000
CONST_FLOAT LEFT_RIGHT_HARD_MULT 4.300
CONST_FLOAT UP_DOWN_EASY_BASE 155.000
CONST_FLOAT UP_DOWN_NORM_BASE 164.000
CONST_FLOAT UP_DOWN_HARD_BASE 166.625
CONST_FLOAT UP_DOWN_RANGE 2.000
CONST_FLOAT MULT_1 4.000
CONST_FLOAT MULT_2 8.000
CONST_FLOAT MULT_3 2.165
CONST_FLOAT MULT_4 6.000
CONST_FLOAT MULT_5 1.000
CONST_FLOAT MULT_6 0.500
//CONST_FLOAT BUCKET_FORWARD_MAX 2.000
//CONST_FLOAT BUCKET_FORWARD_MIN -2.928
CONST_FLOAT BUCKET_RIGHT_MAX 2.000
CONST_FLOAT BUCKET_RIGHT_MIN -2.000
CONST_FLOAT BUCKET_BACK_MAX 2.000
CONST_FLOAT BUCKET_BACK_MIN -2.000
CONST_FLOAT BUCKET_CHANGE_RATE_EASY 0.500
CONST_FLOAT BUCKET_CHANGE_RATE_NORM 0.250
CONST_FLOAT BUCKET_CHANGE_RATE_HARD 0.050
CONST_FLOAT BUCKET_CHANGE_RATE_BACK_HARD 0.10
CONST_FLOAT AI_HARD_SHOTTYPE_RATE 0.60 // Rate at which the AI uses normal shots
CONST_FLOAT AI_AVERAGE_SHOTTYPE_RATE 0.75 // Rate at which the AI uses normal shots
TWEAK_INT DEBUG_SERVE_OVERRIDE 0
CONST_FLOAT SERVICE_RECEIVE_DIST_THRESHOLD 0.10 // How close the ped has to be to be considered "there" when going to service position
///
/// Tennis Ball Constants
///
CONST_FLOAT NET_PREDICTION_FUDGE_VALUE 0.100 // fudge for predicting when the ball goes over the net, we don't want to predict a net hit when there's a chance it won't actually hit
CONST_FLOAT BALL_SIM_SPEED_INCREASE 0.750
CONST_FLOAT SIXTY_FPS 0.0166666666
CONST_FLOAT TENNIS_BALL_BOUNCE_RADIUS 0.050
CONST_FLOAT NO_BOUNCE_TIMEOUT 5.000
TWEAK_INT MAX_FRAMES_IN_THE_FUTURE 3
CONST_FLOAT CALCULATION_OFFSET_RADIUS 0.175
CONST_INT MAX_BOUNCE_SIM_ITERATIONS 180
CONST_FLOAT RICOCHET_OFF_NET_POSITIVE 125.000
CONST_FLOAT RICOCHET_OFF_NET_NEGATIVE 55.000
CONST_FLOAT TENNIS_BALL_RADIUS 0.025
CONST_INT COLLIDE_WITH_PLAYER_THRESH 5 //how long after a hit we can start checking for collision with a player again, in frames
CONST_FLOAT TOPSPIN_MOD 1.0
CONST_FLOAT SLICE_MOD 0.015
CONST_FLOAT SLICE_SUBTRACT -0.10
CONST_FLOAT TOPSPIN_APPLY_DURATION 0.1
CONST_FLOAT TOPSPIN_APPLY_TIME 0.455
CONST_FLOAT SLICE_APPLY_TIME 0.05
CONST_FLOAT EASY_VOLLEY_SCALAR 0.100 //Currently unused but may still apply
CONST_FLOAT NORMAL_VOLLEY_SCALAR 0.130 //Currently unused but may still apply
CONST_FLOAT HARD_VOLLEY_SCALAR 0.163 //Currently unused but may still apply
CONST_INT FRAME_THRESHOLD_FOR_BOUNCE 4
CONST_FLOAT OVERHEAD_HEIGHT 2.000
CONST_FLOAT MID_HEIGHT 0.613
CONST_FLOAT TEST_X 0.0
CONST_FLOAT TEST_Y 0.0
CONST_FLOAT TEST_Z 0.0
CONST_FLOAT TEST_RADIUS 0.1
// Debug only tweaks
#IF IS_DEBUG_BUILD
VECTOR DEBUG_LAUNCH_POS = <<0,0,0>>
VECTOR DEBUG_LAUNCH_VEL = <<0,0,0>>
#ENDIF
///
/// Tennis Cameras Constants
///
CONST_INT MAX_WALKS_IN_A_ROW 3
CONST_INT NUM_PLAYER_ANIMS 4
CONST_INT NUM_AI_ANIMS 6
CONST_FLOAT WANDER_CAM_PUSH_OPP_SCALAR 0.9
CONST_FLOAT WANDER_CAM_ORBIT_SCALAR 0.85
TWEAK_INT WANDER_CAM_PUSH_OPP_ROT 357
CONST_FLOAT INTERSTITIAL_LERP_RATE 0.120
CONST_FLOAT INTERSTITIAL_FORWARD_LERP 0.088
CONST_FLOAT INTERSTITIAL_FORWARD_SCALAR 1.300
//TWEAK_INT CAMERA_ANGLE_OVERRIDE 0
CONST_FLOAT BALL_BEHIND_PAN_BACK_THRESH -2.0
CONST_INT MAX_STISH_CAM_ANGLES 6
CONST_FLOAT TUT_STAGE_SHIFT -1.9475
CONST_INT SIDE_CHANGE_LENGTH 3500
CONST_FLOAT CUT_TIMEOUT 10.0
// Camera Tuning CONSTs
CONST_FLOAT FAR_CAM_UP_VENICE 0.033 // Vespucci Beach
CONST_FLOAT FAR_CAM_LOOK_VENICE 0.588
CONST_FLOAT FAR_CAM_FORWARD_VENICE 0.461
CONST_FLOAT FAR_CAM_FOV_VENICE 45.000
CONST_FLOAT FAR_CAM_UP_MICHAEL 0.063 // Michael's House
CONST_FLOAT FAR_CAM_LOOK_MICHAEL 0.491
CONST_FLOAT FAR_CAM_FORWARD_MICHAEL 0.484
CONST_FLOAT FAR_CAM_FOV_MICHAEL 50.000
CONST_FLOAT FAR_CAM_UP_VeH 0.039 // Vespucci Hotel
CONST_FLOAT FAR_CAM_LOOK_VeH 0.401
CONST_FLOAT FAR_CAM_FORWARD_VeH 0.334
CONST_FLOAT FAR_CAM_FOV_VeH 50.000
CONST_FLOAT FAR_CAM_UP_RICHMAN 0.032 // Richman Hotel
CONST_FLOAT FAR_CAM_LOOK_RICHMAN 0.588
CONST_FLOAT FAR_CAM_FORWARD_RICHMAN 0.442
CONST_FLOAT FAR_CAM_FOV_RICHMAN 45.000
CONST_FLOAT FAR_CAM_UP_LSU 0.036 // LSU Courts
CONST_FLOAT FAR_CAM_LOOK_LSU 0.606
CONST_FLOAT FAR_CAM_FORWARD_LSU 0.468
CONST_FLOAT FAR_CAM_FOV_LSU 45.000
CONST_FLOAT FAR_CAM_UP_WEAZEL 0.037 // Weazel 1 Court
CONST_FLOAT FAR_CAM_LOOK_WEAZEL 0.506
CONST_FLOAT FAR_CAM_FORWARD_WEAZEL 0.428
CONST_FLOAT FAR_CAM_FOV_WEAZEL 45.000
CONST_FLOAT FAR_CAM_UP_CHUMASH 0.032 // Chumash Hotel
CONST_FLOAT FAR_CAM_LOOK_CHUMASH 0.420
CONST_FLOAT FAR_CAM_FORWARD_CHUMASH 0.341
CONST_FLOAT FAR_CAM_FOV_CHUMASH 50.000
CONST_FLOAT FAR_CAM_UP_VINE 0.034 // Vinewood Hotel
CONST_FLOAT FAR_CAM_LOOK_VINE 0.503
CONST_FLOAT FAR_CAM_FORWARD_VINE 0.418
CONST_FLOAT FAR_CAM_FOV_VINE 45.000
//Multipliers for the dynamic camera, MAXes and MINs
CONST_FLOAT DYNA_NUDGE_RS_LR 2.000
CONST_FLOAT DYNA_NUDGE_RS_UD 2.000
CONST_FLOAT DYNA_DOLLY_LERP 0.200
CONST_FLOAT DYNA_NUDGE_LERP 0.150
CONST_FLOAT DYNA_CAM_SWING_LERP 0.235
CONST_FLOAT DYNA_CAM_SWING_WIDTH 0.500
CONST_FLOAT MIN_DIST_TO_NET 4.921
CONST_FLOAT MAX_DIST_TO_NET 11.200
CONST_FLOAT DYNA_CENTER_LINE 4.113
CONST_FLOAT DEFAULT_DYNA_DIST 12.72 //Distance from center court when set to serve
CONST_FLOAT LOOK_AT_TOWARD_VENICE_MAX 6.116
CONST_FLOAT LOOK_AT_TOWARD_MIKE_MAX 6.116
CONST_FLOAT LOOK_AT_TOWARD_MIN 15.543
CONST_FLOAT LOOK_AT_AWAY_MIN 14.140
CONST_FLOAT WHY_TOWARD_MAX_VENICE -7.003
CONST_FLOAT WHY_TOWARD_MAX_MICHAEL -6.008
CONST_FLOAT ZEE_TOWARD_MAX_VENICE 6.701
CONST_FLOAT ZEE_TOWARD_MAX_MICHAEL 6.566
CONST_FLOAT ZEE_TOWARD_MIN_VENICE 4.538
CONST_FLOAT ZEE_TOWARD_MIN 4.538
CONST_FLOAT DYNA_BOOM_LERP 0.211
CONST_FLOAT DYNA_FOV_LERP 0.330
CONST_FLOAT DYNAMOVER_FOV_MIN 18.600
CONST_FLOAT DYNAMOVER_FOV_VENICE_MAX 45.000
CONST_FLOAT DYNAMOVER_FOV_MIKE_MAX 50.000
CONST_FLOAT DYNA_SNAP_DIST 1.5
CONST_FLOAT DYNA_SNAP_FOV 5.0
CONST_FLOAT LOOK_AT_TOWARD_MAX_VeH 6.871
CONST_FLOAT WHY_TOWARD_MAX_VeH -7.003
CONST_FLOAT ZEE_TOWARD_MAX_VeH 6.851
CONST_FLOAT DYNAMOVER_FOV_MAX_VeH 45.00
CONST_FLOAT LOOK_AT_TOWARD_RICHMAN 6.374
CONST_FLOAT WHY_TOWARD_MAX_RICHMAN -6.656
CONST_FLOAT DYNAMOVER_FOV_MAX_RICHMAN 45.000
CONST_FLOAT LOOK_AT_TOWARD_LSU 6.454
CONST_FLOAT WHY_TOWARD_MAX_LSU -6.621
CONST_FLOAT DYNAMOVER_FOV_MAX_LSU 45.000
CONST_FLOAT DYNAMOVER_FOV_MAX_WEAZEL 45.000
CONST_FLOAT LOOK_AT_TOWARD_CHUMASH 6.439
CONST_FLOAT WHY_TOWARD_MAX_CHUMASH -6.608
CONST_FLOAT DYNAMOVER_FOV_MAX_CHUMASH 45.00
CONST_FLOAT LOOK_AT_TOWARD_VINE 6.521
CONST_FLOAT WHY_TOWARD_MAX_VINE -6.681
CONST_FLOAT DYNAMOVER_FOV_MAX_VINE 45.000
///
/// Tennis Court Constants
///
CONST_FLOAT BACK_TO_COURT_SCALAR 0.93
CONST_FLOAT DEBUG_COURT_FRAME_MULTIPLIER 0.496
CONST_FLOAT DEBUG_COURT_SERVICE_RATIO 0.433
CONST_FLOAT COURT_DEPTH_SCALAR 0.191
CONST_FLOAT COURT_WIDTH_SCALAR 1.800
CONST_FLOAT COURT_DEPTH_JUST_OOB 0.018
CONST_FLOAT COURT_WIDTH_JUST_OOB 1.038
CONST_FLOAT TENNIS_ANGLED_AREA_CHECK_ADD_HEIGHT 30.0
CONST_FLOAT TENNIS_ANGLED_AREA_CHECK_SUB_HEIGHT 5.0
CONST_FLOAT NET_HEIGHT_MIDDLE 0.859
CONST_FLOAT NET_HEIGHT_END 0.949
CONST_FLOAT SIDELINE_MULT 1.0
CONST_FLOAT COURT_RANGE 26.750
CONST_FLOAT SERVICE_AREA_WIDTH 4.153
CONST_FLOAT OFFSIDES_WIDTH 25.000
CONST_FLOAT COURT_OOB_WIDTH_1 14.160
CONST_FLOAT COURT_OOB_WIDTH_2 11.995
CONST_FLOAT COURT_OOB_WIDTH_3 23.820
CONST_FLOAT QUIT_WARNING_TIMEOUT 5.000
CONST_FLOAT NET_LENGTH_1_VENICE -0.694
CONST_FLOAT NET_LENGTH_2_VENICE 0.693
CONST_FLOAT NET_ENDS_HEIGHT_VENICE 1.075
CONST_FLOAT NET_MIDDLE_HEIGHT_VENICE 0.870
CONST_FLOAT NET_LENGTH_1_MICHAEL -0.834
CONST_FLOAT NET_LENGTH_2_MICHAEL 0.834
CONST_FLOAT NET_ENDS_HEIGHT_MICHAEL 1.148
CONST_FLOAT NET_MIDDLE_HEIGHT_MICHAEL 0.928
CONST_FLOAT TENNIS_SPECTATOR_PLACEMENT_OFFSET 20.0
CONST_FLOAT COURT_VEHICLE_REPOSITION_DISTANCE 100.0
///
/// Dialogue
///
CONST_FLOAT LONG_RALLY_CONVO_RATE 0.15
TWEAK_INT LONG_RALLY_CONVO_WAIT 2700
///
/// Tennis Leaderboard Widgets
///
CONST_INT SCLB_RANK_PRED_TIMEOUT 10000
TWEAK_INT MATCHES_WON_OVERRIDE 0
TWEAK_INT MATCHES_LOST_OVERRIDE 0
TWEAK_INT SETS_WON_OVERRIDE 0
TWEAK_INT SETS_LOST_OVERRIDE 0
TWEAK_INT GAMES_WON_OVERRIDE 0
TWEAK_INT GAMES_LOST_OVERRIDE 0
TWEAK_INT POINTS_WON_OVERRIDE 0
TWEAK_INT ACES_OVERRIDE 0
TWEAK_INT ACED_OVERRIDE 0
///
/// Tennis MP Constants
///
CONST_FLOAT DISABLE_TENNIS_MODE_ANIM_PHASE 0.9
CONST_INT ATTACH_TENNIS_BALL_STAMP 580
CONST_INT HEADSHOT_WAIT_LIMIT 1000
TWEAK_INT MP_BALL_LERP_DURATION 500
CONST_FLOAT WAITING_FOR_PLAYERS_TIMEOUT 20.00
CONST_FLOAT TENNIS_WAIT_TIMEOUT__MESSAGE_PROMPT 15.000
CONST_FLOAT DESYNC_THRESHOLD 5.000
CONST_FLOAT GET_OFF_MY_SIDE 11.818
CONST_INT BAD_BOUNCE_THRESHOLD 3
CONST_INT TENNIS_XP_PARTICIPATION 100
CONST_INT TENNIS_XP_GAME_WON 50
CONST_INT TENNIS_XP_SET_WON 250
CONST_INT TENNIS_XP_MATCH_WON 500
CONST_FLOAT SIDE_CHANGE_MID_DEST_SCALAR 7.2
///
/// Tennis Player Constants
///
CONST_FLOAT RACKET_X_DIST_SCALAR 0.3
CONST_FLOAT MIN_DIST_NO_FRILLS_SPEED_ADJUST 5.0
TWEAK_INT SWING_ANIM_MIN_DURATION 2
TWEAK_INT TENNIS_PROPS_DIVE_DURATION 2871
CONST_INT TENNIS_PLAYER_REACT_DURATION 2442
CONST_INT TENNIS_WIN_STRENGTH_INC 3
CONST_INT CUTSCENE_SKIP_RALLY_COUNT 4
CONST_FLOAT CUTSCENE_SKIP_DIST_SQUARED 12.25 // 3.5m^2
CONST_INT MAX_SWING_BUCKETS 10
CONST_INT MAX_SWINGS_PER_BUCKET 10
CONST_FLOAT SWING_BUCKET_STEP_SIZE 0.20
//CONST_FLOAT IDLE_TIMER_LIMIT 27.000
TWEAK_INT PLAYER_OOB_CHECK_LIMIT 8
CONST_FLOAT WILD_SWING_HEIGHT_THRESHOLD 2.0
CONST_FLOAT WILD_SWING_MAX_DIST_FAIL 7.600
CONST_FLOAT WILD_SWING_MIN_DIST_FAIL 2.000
TWEAK_INT MAX_SLOWDOWN_FRAMES 5
CONST_FLOAT WILD_SWING_MAX_DEPTH 0.500
CONST_FLOAT MIN_DIVE_SEGMENT_RATIO 0.000
CONST_FLOAT MAX_DIVE_SEGMENT_RATIO 1.000
CONST_FLOAT DIVE_DIST_TO_SIDE_THRESHOLD 2.850
CONST_FLOAT SWING_DAMN_IT_THRESHOLD 0.400
CONST_FLOAT CROSS_BAT_PLANE_THRESHOLD 0.350
CONST_FLOAT X_DIST_FROM_RACKET_THRESHOLD 0.650
CONST_FLOAT Y_DIST_BEHIND_RACKET_THRESHOLD -0.90
CONST_FLOAT Z_DIST_FROM_RACKET_THRESHOLD 0.9
CONST_FLOAT MISS_FLAG_TIMEOUT 0.5
CONST_FLOAT OOB_AIM_IN_SCALAR_MAX 1.000
CONST_FLOAT OOB_AIM_IN_SCALAR_MIN 0.400
TWEAK_INT MISS_CHECK_INDEX 1
TWEAK_INT SWING_DELAY_TIME 1000
CONST_FLOAT WILD_SWING_RADIUS_PLAYER 20.000
CONST_FLOAT NORMAL_RACKET_RANGE_ALLOWANCE 2.000
CONST_FLOAT DIVE_RACKET_RANGE_ALLOWANCE 0.450
CONST_FLOAT TRUNC_RACKET_RANGE_ALLOWANCE 1.500
CONST_INT TRUNCATED_SHRINK_THRESHOLD 5
TWEAK_INT DIVE_DURATION_IN_FRAMES 82
CONST_INT RALLY_XP_THRESHOLD 20
CONST_INT RALLY_XP_BONUS 50
TWEAK_INT FRAME_TASK_BUFFER -2
CONST_FLOAT UPCOURT_ERROR_REDUCTION 0.3
CONST_FLOAT MAX_STRENGTH_BOOST 1.2
CONST_FLOAT TENNIS_PLAYER_RUN_VELOCITY 5.0
CONST_FLOAT SERVE_ACTIVE_PHASE 0.720 // Global because it's used in SP and MP in separate functions
CONST_FLOAT TENNIS_PLAYER_WALK_VELOCITY 2.6 // Varies from 2.38 to 2.73
CONST_FLOAT TENNIS_PLAYER_ACCEL_ALLOW 2.0
CONST_FLOAT STRONG_SWING_HOLD_THRESHOLD 0.500
CONST_FLOAT MIN_DIVE_DISTANCE 5.0
CONST_FLOAT AI_TAKEOVER_DISTANCE 4.000
CONST_FLOAT POWER_VOLLEY_HEIGHT_FLOOR 0.800
CONST_FLOAT POWER_VOLLEY_HEIGHT_MID 1.200
CONST_FLOAT POWER_VOLLEY_HEIGHT_CEILING 1.400
CONST_FLOAT SERVICE_Y_BASELINE 0.025
CONST_INT PLAYER_PREDICTION_START 0
CONST_FLOAT STRONG_SWING_THRESHOLD 3.000
CONST_INT SERVE_OOB_THRESHOLD 125
CONST_FLOAT STRONG_SWING_POWER_ADD 10.0 //Used only in CREATE_TENNIS_FORCE_VECTOR
CONST_INT SHAKE_DURATION_SLIDE 50
CONST_INT SHAKE_DURATION_FREQUENCY 256
CONST_INT STRONG_SWING_SHAKE_FREQ 85
CONST_FLOAT OUTER_IN_BOUNDS 0.550
CONST_FLOAT OUTER_CORNER_MULT 2.500
CONST_FLOAT INNER_LEFT_MULT 0.750
CONST_FLOAT INNER_RIGHT_MULT 0.500
CONST_FLOAT PLAYER_HIT_BY_BALL_RADIUS 0.880
CONST_FLOAT AUTOMATIC_SWING 30.000 //In seconds
CONST_FLOAT SWING_TIMEOUT 0.9500 //In seconds
VECTOR RACKET_OFFSET = << 0.034, 0.002, -0.007 >>
VECTOR RACKET_ROTATION = << 70.560, 72.360, 67.680 >>
//Shot constants
#IF NOT IS_TENNIS_MULTIPLAYER CONST_FLOAT SWING_BASE_LOWEST_COST 0.750 #ENDIF
#IF IS_TENNIS_MULTIPLAYER CONST_FLOAT SWING_BASE_LOWEST_COST 0.400 #ENDIF
CONST_FLOAT RACKET_RADIUS_FOR_CONNECTION 0.250
#IF NOT IS_TENNIS_MULTIPLAYER CONST_FLOAT BIAS_AGAINST_OUTSIDE_SHOT 2.500 #ENDIF
#IF IS_TENNIS_MULTIPLAYER CONST_FLOAT BIAS_AGAINST_OUTSIDE_SHOT 3.500 #ENDIF
//Costs are applied in distance comparisons
CONST_FLOAT GOOD_SHOT_ALLOWANCE 0.15 //distance from centre that we consider our shot good anyway
CONST_FLOAT HIGH_COST_SHOT_COST 0.4 //Mainly for dives, expensive
CONST_FLOAT MEDIUM_COST_SHOT_COST 0.1 //extra distance used to weight against some shots
CONST_FLOAT LOW_COST_SHOT_COST 0.05 //extra distance used to weight against some shots
CONST_INT DEAD_ZONE_THRESHOLD 15
CONST_FLOAT SERVE_SIM_INCREASE 0.995 //SP only, MP uses SERVE_S_PLUS
#IF NOT IS_TENNIS_MULTIPLAYER CONST_FLOAT SERVE_S_PLUS 0.965 #ENDIF
#IF IS_TENNIS_MULTIPLAYER CONST_FLOAT SERVE_S_PLUS 0.985 #ENDIF
CONST_FLOAT SERVE_S 0.90
CONST_FLOAT SERVE_A 0.70
CONST_FLOAT SERVE_B 0.45
CONST_FLOAT SERVE_C 0.20
CONST_FLOAT SERVE_D 0.00
CONST_FLOAT UI_ON 1.1
CONST_FLOAT NO_PRESS_BUFFER 1.25
VECTOR DIVE_Right_TopLeft = <<2.00,-0.04,0.60>>
VECTOR DIVE_Right_TopRight = <<3.20, -0.04,0.60>>
VECTOR DIVE_Right_BottomRight = <<3.20, -0.04, -0.60>>
VECTOR DIVE_Right_BottomLeft = <<2.00, -0.04, -0.60>>
VECTOR DIVE_Left_TopLeft = <<-3.20,-0.04,0.60>>
VECTOR DIVE_Left_TopRight = <<-2.00,-0.04,0.60>>
VECTOR DIVE_Left_BottomRight = <<-2.00, -0.04, -0.60>>
VECTOR DIVE_Left_BottomLeft = <<-3.20, -0.04, -0.60>>
CONST_INT POWER_SHAKE_DURATION 100
CONST_INT NORMAL_SHAKE_DURATION 80
CONST_INT LOB_SHAKE_DURATION 60
CONST_FLOAT SERVE_WALK_MAX 7.783
CONST_FLOAT SERVE_WALK_MID 4.425
CONST_FLOAT SERVE_WALK_MIN 1.300
CONST_FLOAT SERVE_WALK_MOD_RIGHT 1.000
CONST_FLOAT SERVE_WALK_MOD_LEFT 0.700
//These control the angle and power which the ball is hit at by the forecourt player
CONST_FLOAT NET_SCALAR 107.0 //Scalar for the power of the shot as the player nears the net.
CONST_FLOAT NET_SCALAR_LOB 85.750
CONST_INT MAX_FORCE_REDUCTION 5
//Used for testing power and angle and the height at which a shot is taken
CONST_FLOAT TEST_HEIGHT 0.0 //0.613
CONST_FLOAT TEST_FORWARD_SCALAR 0.000
//Used only in CREATE_TENNIS_FORCE_VECTOR
CONST_FLOAT MAX_UPWARD_ZEE 7.200
CONST_FLOAT MIN_UPWARD_ZEE 5.500
CONST_FLOAT MAX_DOWNWARD_ZEE -1.50
CONST_FLOAT MIN_DOWNWARD_ZEE 0.900
CONST_FLOAT MIN_SHOT_POWER 8.000
CONST_FLOAT MAX_SHOT_POWER 30.00
CONST_FLOAT MAX_SHOT_POWER_PV 45.00 // "PV" denotes a Power Volley
CONST_FLOAT MIN_SHOT_POWER_PV 15.00
CONST_FLOAT MAX_DOWNWARD_ZEE_PV -2.00
CONST_FLOAT MAX_UPWARD_ZEE_PV 0.000
CONST_FLOAT MIN_UPWARD_ZEE_PV 7.500
CONST_FLOAT MAX_UPWARD_ZEE_LOB 15.000 // "LOB" denotes a Lob
CONST_FLOAT MIN_UPWARD_ZEE_LOB 12.500
CONST_FLOAT MAX_DOWNWARD_ZEE_LOB 1.380
CONST_FLOAT MIN_DOWNWARD_ZEE_LOB_NEAR 8.000
CONST_FLOAT MIN_DOWNWARD_ZEE_LOB_FAR 15.000
CONST_FLOAT MAX_POWER_HIGH_LOB_NEAR_NET 14.350
CONST_FLOAT MAX_SHOT_POWER_LOB_FAR 30.000
CONST_FLOAT MAX_SHOT_POWER_LOB_NEAR 15.000
CONST_FLOAT MIN_SHOT_POWER_LOB 12.325
CONST_FLOAT MAX_POWER_HIGH_FAR_DROP 7.000 // "DROP" denotes the drop shot, "FAR/CLOSE" refers to distance to net
CONST_FLOAT MAX_POWER_LOW_FAR_DROP 27.550
CONST_FLOAT MAX_DOWNWARD_ZEE_DROP 0.000
CONST_FLOAT MIN_SHOT_POWER_DROP 3.000
CONST_FLOAT MIN_DOWNWARD_ZEE_DROP 1.580
//Used for testing MoVE and animations
CONST_FLOAT RUN_THRESH 1.5
CONST_FLOAT BLEND_RATE 0.130
CONST_INT FRAME_ADJUST 2
CONST_FLOAT MIN_ANIM_SPEED 0.5
CONST_FLOAT MAX_ANIM_SPEED 1.5
TWEAK_INT TEST_SWING_STATE 35
CONST_INT MAX_FUTURE_POINTS 24
CONST_FLOAT THIRTY_FPS 0.0333333333
CONST_FLOAT AIR_FRICTION 0.065
CONST_FLOAT SLICE_AIR_FRICTION 0.073
CONST_FLOAT GROUND_BOUNCE_COEFF 1.000
CONST_FLOAT BOUNCE_MIN_Z 0.010
CONST_FLOAT NET_BOUNCE_HOR_COEFF 1.400
CONST_FLOAT NET_BOUNCE_VERT_COEFF 0.400
//Used for the rate of foot squeaks while running in the same direction
CONST_FLOAT SQUEAK_RATE_RUNNING 0.10
CONST_FLOAT SQUEAK_RATE_COD 0.08
//#IF IS_DEBUG_BUILD
// VECTOR PREDICTION_PATH[MAX_FUTURE_POINTS]
//#ENDIF
///
/// Tennis SCTV added CONSTs
///
CONST_INT TENNIS_MAX_SCTV 4
CONST_INT TENNIS_INVALID_PARTICIPANT_ID -1
///
/// Tennis UI Constants
///
CONST_INT TENNIS_TEXTURE_LOAD_FAILSAFE 10
CONST_INT TENNIS_HEADSHOT_FAILSAFE_ATTEMPTS 50
TWEAK_INT DELAY_NEXT_UI_DURATION 1500
CONST_FLOAT SERVE_METER_LEFT_MAX 0.10
CONST_FLOAT SERVE_METER_RIGHT_MAX 0.90
CONST_INT MENU_STAMP_DELAY 250
CONST_FLOAT CUT_DELAY_ANIM_ADD 1.0
CONST_INT TENNIS_RALLY_CONVO_THRESHOLD 9
CONST_FLOAT FIRST_MENU_OFFSET -1.0
CONST_FLOAT SECOND_MENU_OFFSET 0.132
CONST_FLOAT THIRD_MENU_OFFSET 0.064
CONST_FLOAT FOURTH_MENU_OFFSET 0.460
CONST_FLOAT FIFTH_MENU_OFFSET -1.0
CONST_INT AMANDA_DSTAR_DEUCE_COUNT 5
CONST_FLOAT TENNIS_AWARD_VIEW_TIME 2.0 // in seconds
CONST_INT SPLASH_UI_DURATION 2000
CONST_INT SCOREBOARD_WAIT_THRESHOLD 1700
CONST_FLOAT MICHAEL_SERVE_METER_X_OFFSET_DYNA -0.1
CONST_FLOAT MICHAEL_SERVE_METER_X_OFFSET_STAT -0.1
CONST_FLOAT MICHAEL_SERVE_METER_Y_OFFSET_DYNA -0.036
CONST_FLOAT MICHAEL_SERVE_METER_Y_OFFSET_STAT -0.090
CONST_FLOAT MICHAEL_SERVE_METER_X_RIGHT_ADJ -0.025
CONST_FLOAT MICHAEL_SERVE_METER_X_OFF_4BY3 -0.127
CONST_FLOAT SERVE_X_OFFSET 0.0
CONST_FLOAT SERVE_Y_OFFSET 0.678
CONST_FLOAT FINAL_MENU_TIMEOUT 30.000
CONST_FLOAT MARKER_POSITION 0.0
CONST_FLOAT APEX_POSITION 0.0
CONST_FLOAT TARGET_SPAN 0.703
CONST_FLOAT TARGET_POSITION 0.140
CONST_FLOAT FILL_SPAN 0.449
CONST_FLOAT FILL_STATE 0.850
CONST_FLOAT FADE_OUT_DURATION 1000.0
CONST_FLOAT PERFECT_HIT_TIME 1.800
CONST_FLOAT END_HIT_TIME 3.666
CONST_INT METER_SCALAR 100
CONST_INT EXPONENT 3
CONST_FLOAT HIT_OFFSET 0.005
CONST_FLOAT MESSAGE_THRESHOLD 0.75
CONST_FLOAT F_METER_RESET -100.0
CONST_FLOAT UI_SCALAR 0.6
CONST_FLOAT X_MARKER_RADIUS 0.673
CONST_FLOAT Z_MARKER_RADIUS 0.65
TWEAK_INT ARRR 64
TWEAK_INT GEE 255
TWEAK_INT BEE 64
TWEAK_INT ARVA 255
CONST_FLOAT TUF_NO_SPLASH_TIME_OUT 3.500
CONST_INT HELP_TEXT_TIME 4000
CONST_INT LONG_ENOUGH_THRESHOLD 2000
CONST_INT EXTRA_HELP_TEXT_TIME 8000