one-on-one diffs

Created Diff never expires
5 removals
280 lines
5 additions
280 lines
{
{
version_array: [
version_array: [
// Latest ME Version Physical Constraints always at the top, enter new ME version constraints here:
// Latest ME Version Physical Constraints always at the top, enter new ME version constraints here:


// January 2020 fix
// January 2020 fix
{
{
"min_me_version": 2037, // any match from this version onwards will use these constraints (if there are no newer sets)
"min_me_version": 2037, // any match from this version onwards will use these constraints (if there are no newer sets)


// Speed constraints - all values as ms-1 - used directly in the ME after being scaled
// Speed constraints - all values as ms-1 - used directly in the ME after being scaled
"speed_scaler": 10000, // below values are divided by this to get the correct Match Real value
"speed_scaler": 10000, // below values are divided by this to get the correct Match Real value
"very_slow_walk_speed": 4470,
"very_slow_walk_speed": 4470,
"slow_walk_speed": 8940,
"slow_walk_speed": 8940,
"walk_speed": 13410,
"walk_speed": 13410,
"fast_walk_speed": 17880,
"fast_walk_speed": 17880,
"slow_jog_speed": 23000,
"slow_jog_speed": 23000,
"jog_speed": 26820,
"jog_speed": 26820,
"moderate_jog_speed": 31290,
"moderate_jog_speed": 31290,
"fast_jog_speed": 35760,
"fast_jog_speed": 35760,
"run_speed": 44704,
"run_speed": 44704,
"sprint_speed": 67056,
"sprint_speed": 67056,
"top_speed": 89408,
"top_speed": 89408,
"base_top_speed": 78000,
"base_top_speed": 78000,
"theoretical_max_running_speed": 122700,
"theoretical_max_running_speed": 122700,
"theoretical_min_diving_speed": 50000,
"theoretical_min_diving_speed": 50000,
"theoretical_max_diving_speed": 75000,
"theoretical_max_diving_speed": 75000,


// The min/max speeds of walk/jog/run speed ranges are calculated in PHYSICAL_CONSTRAINTS helper class based on the above values
// The min/max speeds of walk/jog/run speed ranges are calculated in PHYSICAL_CONSTRAINTS helper class based on the above values


// Acceleration/deceleration constraints - all values as ms-2 - theoretical values
// Acceleration/deceleration constraints - all values as ms-2 - theoretical values
"acceleration_scaler": 10000, // below values are divided by this to get the correct Match Real value
"acceleration_scaler": 10000, // below values are divided by this to get the correct Match Real value
"theoretical_min_acceleration": 2500,
"theoretical_min_acceleration": 2500,
"theoretical_max_acceleration": 89408,
"theoretical_max_acceleration": 89408,
"theoretical_min_diving_acceleration": 25000,
"theoretical_min_diving_acceleration": 25000,
"theoretical_max_diving_acceleration": 89408, // should always be the same as top speed
"theoretical_max_diving_acceleration": 89408, // should always be the same as top speed
"theoretical_min_deceleration": 15000,
"theoretical_min_deceleration": 15000,
"theoretical_max_deceleration": 67056, // should always be top speed / 2
"theoretical_max_deceleration": 67056, // should always be top speed / 2


// Turning rate constraints for turning facing - all values as angles / second - theoretical values
// Turning rate constraints for turning facing - all values as angles / second - theoretical values
"theoretical_max_turning_rate": 180,
"theoretical_max_turning_rate": 180,
"theoretical_min_turning_rate": 30,
"theoretical_min_turning_rate": 30,


// Direction change rate constraints - all values as angles / second - theoretical values per speed range (walk/jog/run)
// Direction change rate constraints - all values as angles / second - theoretical values per speed range (walk/jog/run)
"theoretical_max_potential_direction_change_walk": 300,
"theoretical_max_potential_direction_change_walk": 300,
"theoretical_min_potential_direction_change_walk": 40,
"theoretical_min_potential_direction_change_walk": 40,
"theoretical_max_potential_direction_change_jog": 150,
"theoretical_max_potential_direction_change_jog": 150,
"theoretical_min_potential_direction_change_jog": 20,
"theoretical_min_potential_direction_change_jog": 20,
"theoretical_max_potential_direction_change_run": 75,
"theoretical_max_potential_direction_change_run": 75,
"theoretical_min_potential_direction_change_run": 10,
"theoretical_min_potential_direction_change_run": 10,


// Delays - all values as milliseconds at 250ms intervals (these will be stored internally as match slices - one slice is 0.25s, so 4 slices are 1s)
// Delays - all values as milliseconds at 250ms intervals (these will be stored internally as match slices - one slice is 0.25s, so 4 slices are 1s)
"min_delay_for_diving_header": 2000, // 2s - 8 slices
"min_delay_for_diving_header": 2000, // 2s - 8 slices
"min_delay_for_normal_header": 1000, // 1s - 4 slices
"min_delay_for_normal_header": 1000, // 1s - 4 slices


"min_delay_for_slide_tackle_do": 1700, // 1.5s - 6
"min_delay_for_slide_tackle_do": 1700, // 1.5s - 6
"max_delay_for_slide_tackle_do": 1800, // 1.5s - 6 slices
"max_delay_for_slide_tackle_do": 1800, // 1.5s - 6 slices
"min_delay_for_slide_tackle_receive": 750, // 0.75s - 3 slices
"min_delay_for_slide_tackle_receive": 750, // 0.75s - 3 slices
"min_delay_for_ball_lunge_do": 700, // 1.5s - 6 slices
"min_delay_for_ball_lunge_do": 700, // 1.5s - 6 slices
"max_delay_for_ball_lunge_do": 900, // 1.5s - 6 slices
"max_delay_for_ball_lunge_do": 900, // 1.5s - 6 slices
"min_delay_for_ball_lunge_receive": 750, // 0.75s - 3 slices
"min_delay_for_ball_lunge_receive": 750, // 0.75s - 3 slices
"min_delay_for_block_tackle_do": 450, // 0.5s - 2 slices
"min_delay_for_block_tackle_do": 450, // 0.5s - 2 slices
"max_delay_for_block_tackle_do": 550, // 0.5s - 2 slices
"max_delay_for_block_tackle_do": 550, // 0.5s - 2 slices
"min_delay_for_block_tackle_receive": 750, // 0.75s - 3 slices
"min_delay_for_block_tackle_receive": 750, // 0.75s - 3 slices
"min_delay_for_deflect_ball_do": 250, // 0.25s - 1 slices
"min_delay_for_deflect_ball_do": 250, // 0.25s - 1 slices
"min_delay_for_deflect_ball_receive": 500, // 0.5s - 2 slices
"min_delay_for_deflect_ball_receive": 500, // 0.5s - 2 slices
"min_delay_for_shoulder_charge_do": 500, // 0.5s - 2 slices
"min_delay_for_shoulder_charge_do": 500, // 0.5s - 2 slices
"min_delay_for_shoulder_charge_receive": 2000, // 2s - 8 slices
"min_delay_for_shoulder_charge_receive": 2000, // 2s - 8 slices
"min_delay_for_force_opponent_to_lose_ball_do": 450, // 0.5s - 2 slices
"min_delay_for_force_opponent_to_lose_ball_do": 450, // 0.5s - 2 slices
"max_delay_for_force_opponent_to_lose_ball_do": 550, // 0.5s - 2 slices
"max_delay_for_force_opponent_to_lose_ball_do": 550, // 0.5s - 2 slices
"min_delay_for_force_opponent_to_lose_ball_receive": 500, // 0.5s - 2 slices
"min_delay_for_force_opponent_to_lose_ball_receive": 500, // 0.5s - 2 slices
"min_delay_for_shirt_tug_do": 0, // 0
"min_delay_for_shirt_tug_do": 0, // 0
"min_delay_for_shirt_tug_receive": 500, // 0.5s - 2 slices
"min_delay_for_shirt_tug_receive": 500, // 0.5s - 2 slices
"min_delay_for_obstruct_do": 1000, // 1s - 4 slices
"min_delay_for_obstruct_do": 1000, // 1s - 4 slices
"min_delay_for_obstruct_receive": 2000, // 2s - 8 slices
"min_delay_for_obstruct_receive": 2000, // 2s - 8 slices
"min_delay_for_two_footed_tackle_do": 1500, // 1.5s - 6 slices
"min_delay_for_two_footed_tackle_do": 1500, // 1.5s - 6 slices
"min_delay_for_two_footed_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_two_footed_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_trip_do": 750, // 0.75s - 3 slices
"min_delay_for_trip_do": 750, // 0.75s - 3 slices
"min_delay_for_trip_receive": 3000, // 3s - 12 slices
"min_delay_for_trip_receive": 3000, // 3s - 12 slices
"min_delay_for_foot_up_in_tackle_do": 1000, // 1s - 4 slices
"min_delay_for_foot_up_in_tackle_do": 1000, // 1s - 4 slices
"min_delay_for_foot_up_in_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_foot_up_in_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_push_opponent_do": 500, // 0.5s - 2 slices
"min_delay_for_push_opponent_do": 500, // 0.5s - 2 slices
"min_delay_for_push_opponen_receive": 2000, // 2s - 8 slices
"min_delay_for_push_opponen_receive": 2000, // 2s - 8 slices
"min_delay_for_violent_act_do": 500, // 0.5s - 2 slices - elbow, punch, head butt, kick, shove
"min_delay_for_violent_act_do": 500, // 0.5s - 2 slices - elbow, punch, head butt, kick, shove
"min_delay_for_violent_act_receive": 1000, // 1s - 4 slices
"min_delay_for_violent_act_receive": 1000, // 1s - 4 slices
"min_delay_for_celebrating_a_goal": 3000, // 3s - 12 slices
"min_delay_for_celebrating_a_goal": 3000, // 3s - 12 slices


"min_delay_keeper_save_intentionally_drop_ball": 300, // 0.5s - 2 slices
"min_delay_keeper_save_intentionally_drop_ball": 300, // 0.5s - 2 slices
"min_delay_keeper_save_dive_and_hold_ball": 2000, // 2s - 8 slices
"min_delay_keeper_save_dive_and_hold_ball": 2000, // 2s - 8 slices
"min_delay_keeper_save_dive_but_not_held": 500, // 0.5s - 2 slices
"min_delay_keeper_save_dive_but_not_held": 600, // 0.5s - 2 slices
"max_delay_keeper_save_dive_but_not_held": 650, // 0.5s - 2 slices
"max_delay_keeper_save_dive_but_not_held": 750, // 0.5s - 2 slices
"min_delay_keeper_save_no_dive_hold_ball": 700, // 0.5s - 2 slices
"min_delay_keeper_save_no_dive_hold_ball": 800, // 0.5s - 2 slices
"min_delay_keeper_save_no_dive_not_held": 400, // 0.5s - 2 slices
"min_delay_keeper_save_no_dive_not_held": 500, // 0.5s - 2 slices
"max_delay_keeper_save_no_dive_not_held": 550, // 0.5s - 2 slices
"max_delay_keeper_save_no_dive_not_held": 650, // 0.5s - 2 slices
"min_delay_keeper_drop_ball_for_distribution": 1000, // 1s - 4 slices
"min_delay_keeper_drop_ball_for_distribution": 1000, // 1s - 4 slices


"min_delay_for_getting_injured": 2000, // 2s - 8 slices
"min_delay_for_getting_injured": 2000, // 2s - 8 slices
"min_extra_delay_for_falling_down_before_injury": 4000, // 4s - 16 slices
"min_extra_delay_for_falling_down_before_injury": 4000, // 4s - 16 slices


"min_delay_for_player_stop_to_avoid_collision": 200 // 0.5s - 2 slices
"min_delay_for_player_stop_to_avoid_collision": 200 // 0.5s - 2 slices
},
},


// October 2019 fix
// October 2019 fix
{
{
"min_me_version": 1957, // any match from this version onwards will use these constraints (if there are no newer sets)
"min_me_version": 1957, // any match from this version onwards will use these constraints (if there are no newer sets)


// Speed constraints - all values as ms-1 - used directly in the ME after being scaled
// Speed constraints - all values as ms-1 - used directly in the ME after being scaled
"speed_scaler": 10000, // below values are divided by this to get the correct Match Real value
"speed_scaler": 10000, // below values are divided by this to get the correct Match Real value
"very_slow_walk_speed": 4470,
"very_slow_walk_speed": 4470,
"slow_walk_speed": 8940,
"slow_walk_speed": 8940,
"walk_speed": 13410,
"walk_speed": 13410,
"fast_walk_speed": 17880,
"fast_walk_speed": 17880,
"slow_jog_speed": 23000,
"slow_jog_speed": 23000,
"jog_speed": 26820,
"jog_speed": 26820,
"moderate_jog_speed": 31290,
"moderate_jog_speed": 31290,
"fast_jog_speed": 35760,
"fast_jog_speed": 35760,
"run_speed": 44704,
"run_speed": 44704,
"sprint_speed": 67056,
"sprint_speed": 67056,
"top_speed": 89408,
"top_speed": 89408,
"base_top_speed": 78000,
"base_top_speed": 78000,
"theoretical_max_running_speed": 122700,
"theoretical_max_running_speed": 122700,
"theoretical_min_diving_speed": 50000,
"theoretical_min_diving_speed": 50000,
"theoretical_max_diving_speed": 75000,
"theoretical_max_diving_speed": 75000,


// The min/max speeds of walk/jog/run speed ranges are calculated in PHYSICAL_CONSTRAINTS helper class based on the above values
// The min/max speeds of walk/jog/run speed ranges are calculated in PHYSICAL_CONSTRAINTS helper class based on the above values


// Acceleration/deceleration constraints - all values as ms-2 - theoretical values
// Acceleration/deceleration constraints - all values as ms-2 - theoretical values
"acceleration_scaler": 10000, // below values are divided by this to get the correct Match Real value
"acceleration_scaler": 10000, // below values are divided by this to get the correct Match Real value
"theoretical_min_acceleration": 2500,
"theoretical_min_acceleration": 2500,
"theoretical_max_acceleration": 89408,
"theoretical_max_acceleration": 89408,
"theoretical_min_diving_acceleration": 25000,
"theoretical_min_diving_acceleration": 25000,
"theoretical_max_diving_acceleration": 89408, // should always be the same as top speed
"theoretical_max_diving_acceleration": 89408, // should always be the same as top speed
"theoretical_min_deceleration": 15000,
"theoretical_min_deceleration": 15000,
"theoretical_max_deceleration": 44704, // should always be top speed / 2
"theoretical_max_deceleration": 44704, // should always be top speed / 2


// Turning rate constraints for turning facing - all values as angles / second - theoretical values
// Turning rate constraints for turning facing - all values as angles / second - theoretical values
"theoretical_max_turning_rate": 180,
"theoretical_max_turning_rate": 180,


// Direction change rate constraints - all values as angles / second - theoretical values per speed range (walk/jog/run)
// Direction change rate constraints - all values as angles / second - theoretical values per speed range (walk/jog/run)
"theoretical_max_potential_direction_change_walk": 192,
"theoretical_max_potential_direction_change_walk": 192,
"theoretical_min_potential_direction_change_walk": 52,
"theoretical_min_potential_direction_change_walk": 52,
"theoretical_max_potential_direction_change_jog": 104,
"theoretical_max_potential_direction_change_jog": 104,
"theoretical_min_potential_direction_change_jog": 15,
"theoretical_min_potential_direction_change_jog": 15,
"theoretical_max_potential_direction_change_run": 53,
"theoretical_max_potential_direction_change_run": 53,
"theoretical_min_potential_direction_change_run": 15,
"theoretical_min_potential_direction_change_run": 15,


// Delays - all values as milliseconds at 250ms intervals (these will be stored internally as match slices - one slice is 0.25s, so 4 slices are 1s)
// Delays - all values as milliseconds at 250ms intervals (these will be stored internally as match slices - one slice is 0.25s, so 4 slices are 1s)
"min_delay_for_diving_header": 2000, // 2s - 8 slices
"min_delay_for_diving_header": 2000, // 2s - 8 slices
"min_delay_for_normal_header": 1000, // 1s - 4 slices
"min_delay_for_normal_header": 1000, // 1s - 4 slices


"min_delay_for_slide_tackle_do": 500, // 0.5s - 2 slices
"min_delay_for_slide_tackle_do": 500, // 0.5s - 2 slices
"min_delay_for_slide_tackle_receive": 750, // 0.75s - 3 slices
"min_delay_for_slide_tackle_receive": 750, // 0.75s - 3 slices
"min_delay_for_ball_lunge_do": 500, // 0.5s - 2 slices
"min_delay_for_ball_lunge_do": 500, // 0.5s - 2 slices
"min_delay_for_ball_lunge_receive": 750, // 0.75s - 3 slices
"min_delay_for_ball_lunge_receive": 750, // 0.75s - 3 slices
"min_delay_for_block_tackle_do": 250, // 0.25s - 1 slices
"min_delay_for_block_tackle_do": 250, // 0.25s - 1 slices
"min_delay_for_block_tackle_receive": 500, // 0.5s - 2 slices
"min_delay_for_block_tackle_receive": 500, // 0.5s - 2 slices
"min_delay_for_deflect_ball_do": 250, // 0.25s - 1 slices
"min_delay_for_deflect_ball_do": 250, // 0.25s - 1 slices
"min_delay_for_deflect_ball_receive": 500, // 0.5s - 2 slices
"min_delay_for_deflect_ball_receive": 500, // 0.5s - 2 slices
"min_delay_for_shoulder_charge_do": 500, // 0.5s - 2 slices
"min_delay_for_shoulder_charge_do": 500, // 0.5s - 2 slices
"min_delay_for_shoulder_charge_receive": 2000, // 2s - 8 slices
"min_delay_for_shoulder_charge_receive": 2000, // 2s - 8 slices
"min_delay_for_force_opponent_to_lose_ball_do": 500, // 0.5s - 2 slices
"min_delay_for_force_opponent_to_lose_ball_do": 500, // 0.5s - 2 slices
"min_delay_for_force_opponent_to_lose_ball_receive": 500, // 0.5s - 2 slices
"min_delay_for_force_opponent_to_lose_ball_receive": 500, // 0.5s - 2 slices
"min_delay_for_shirt_tug_do": 0, // 0
"min_delay_for_shirt_tug_do": 0, // 0
"min_delay_for_shirt_tug_receive": 500, // 0.5s - 2 slices
"min_delay_for_shirt_tug_receive": 500, // 0.5s - 2 slices
"min_delay_for_obstruct_do": 1000, // 1s - 4 slices
"min_delay_for_obstruct_do": 1000, // 1s - 4 slices
"min_delay_for_obstruct_receive": 2000, // 2s - 8 slices
"min_delay_for_obstruct_receive": 2000, // 2s - 8 slices
"min_delay_for_two_footed_tackle_do": 1000, // 1s - 4 slices
"min_delay_for_two_footed_tackle_do": 1000, // 1s - 4 slices
"min_delay_for_two_footed_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_two_footed_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_trip_do": 750, // 0.75s - 3 slices
"min_delay_for_trip_do": 750, // 0.75s - 3 slices
"min_delay_for_trip_receive": 3000, // 3s - 12 slices
"min_delay_for_trip_receive": 3000, // 3s - 12 slices
"min_delay_for_foot_up_in_tackle_do": 1000, // 1s - 4 slices
"min_delay_for_foot_up_in_tackle_do": 1000, // 1s - 4 slices
"min_delay_for_foot_up_in_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_foot_up_in_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_push_opponent_do": 500, // 0.5s - 2 slices
"min_delay_for_push_opponent_do": 500, // 0.5s - 2 slices
"min_delay_for_push_opponen_receive": 2000, // 2s - 8 slices
"min_delay_for_push_opponen_receive": 2000, // 2s - 8 slices
"min_delay_for_violent_act_do": 500, // 0.5s - 2 slices - elbow, punch, head butt, kick, shove
"min_delay_for_violent_act_do": 500, // 0.5s - 2 slices - elbow, punch, head butt, kick, shove
"min_delay_for_violent_act_receive": 1000, // 1s - 4 slices
"min_delay_for_violent_act_receive": 1000, // 1s - 4 slices
"min_delay_for_celebrating_a_goal": 3000, // 3s - 12 slices
"min_delay_for_celebrating_a_goal": 3000, // 3s - 12 slices


"min_delay_keeper_save_intentionally_drop_ball": 500, // 0.5s - 2 slices
"min_delay_keeper_save_intentionally_drop_ball": 500, // 0.5s - 2 slices
"min_delay_keeper_save_dive_and_hold_ball": 2000, // 2s - 8 slices
"min_delay_keeper_save_dive_and_hold_ball": 2000, // 2s - 8 slices
"min_delay_keeper_save_dive_but_not_held": 750, // 0.75s - 3 slices
"min_delay_keeper_save_dive_but_not_held": 750, // 0.75s - 3 slices
"min_delay_keeper_save_no_dive_hold_ball": 500, // 0.5s - 2 slices
"min_delay_keeper_save_no_dive_hold_ball": 500, // 0.5s - 2 slices
"min_delay_keeper_save_no_dive_not_held": 500, // 0.5s - 2 slices
"min_delay_keeper_save_no_dive_not_held": 500, // 0.5s - 2 slices
"min_delay_keeper_drop_ball_for_distribution": 1000, // 1s - 4 slices
"min_delay_keeper_drop_ball_for_distribution": 1000, // 1s - 4 slices


"min_delay_for_getting_injured": 2000, // 2s - 8 slices
"min_delay_for_getting_injured": 2000, // 2s - 8 slices
"min_extra_delay_for_falling_down_before_injury": 4000, // 4s - 16 slices
"min_extra_delay_for_falling_down_before_injury": 4000, // 4s - 16 slices


"min_delay_for_player_stop_to_avoid_collision": 500 // 0.5s - 2 slices
"min_delay_for_player_stop_to_avoid_collision": 500 // 0.5s - 2 slices
},
},


// Initial version
// Initial version
{
{
"min_me_version": 1, // any match from this version onwards will use these constraints (if there are no newer sets)
"min_me_version": 1, // any match from this version onwards will use these constraints (if there are no newer sets)


// Speed constraints - all values as ms-1 - used directly in the ME after being scaled
// Speed constraints - all values as ms-1 - used directly in the ME after being scaled
"speed_scaler": 10000, // below values are divided by this to get the correct Match Real value
"speed_scaler": 10000, // below values are divided by this to get the correct Match Real value
"very_slow_walk_speed": 4470,
"very_slow_walk_speed": 4470,
"slow_walk_speed": 8940,
"slow_walk_speed": 8940,
"walk_speed": 13410,
"walk_speed": 13410,
"fast_walk_speed": 17880,
"fast_walk_speed": 17880,
"slow_jog_speed": 23000,
"slow_jog_speed": 23000,
"jog_speed": 26820,
"jog_speed": 26820,
"moderate_jog_speed": 31290,
"moderate_jog_speed": 31290,
"fast_jog_speed": 35760,
"fast_jog_speed": 35760,
"run_speed": 44704,
"run_speed": 44704,
"sprint_speed": 67056,
"sprint_speed": 67056,
"top_speed": 89408,
"top_speed": 89408,
"base_top_speed": 78000,
"base_top_speed": 78000,
"theoretical_max_running_speed": 122700,
"theoretical_max_running_speed": 122700,
"theoretical_min_diving_speed": 50000,
"theoretical_min_diving_speed": 50000,
"theoretical_max_diving_speed": 75000,
"theoretical_max_diving_speed": 75000,


// The min/max speeds of walk/jog/run speed ranges are calculated in PHYSICAL_CONSTRAINTS helper class based on the above values
// The min/max speeds of walk/jog/run speed ranges are calculated in PHYSICAL_CONSTRAINTS helper class based on the above values


// Acceleration/deceleration constraints - all values as ms-2 - theoretical values
// Acceleration/deceleration constraints - all values as ms-2 - theoretical values
"acceleration_scaler": 10000, // below values are divided by this to get the correct Match Real value
"acceleration_scaler": 10000, // below values are divided by this to get the correct Match Real value
"theoretical_min_acceleration": 2500,
"theoretical_min_acceleration": 2500,
"theoretical_max_acceleration": 89408,
"theoretical_max_acceleration": 89408,
"theoretical_min_diving_acceleration": 25000,
"theoretical_min_diving_acceleration": 25000,
"theoretical_max_diving_acceleration": 89408, // should always be the same as top speed
"theoretical_max_diving_acceleration": 89408, // should always be the same as top speed
"theoretical_min_deceleration": 15000,
"theoretical_min_deceleration": 15000,
"theoretical_max_deceleration": 44704, // should always be top speed / 2
"theoretical_max_deceleration": 44704, // should always be top speed / 2


// Turning rate constraints for turning facing - all values as angles / second - theoretical values
// Turning rate constraints for turning facing - all values as angles / second - theoretical values
"theoretical_max_turning_rate": 180,
"theoretical_max_turning_rate": 180,


// Direction change rate constraints - all values as angles / second - theoretical values per speed range (walk/jog/run)
// Direction change rate constraints - all values as angles / second - theoretical values per speed range (walk/jog/run)
"theoretical_max_potential_direction_change_walk": 192,
"theoretical_max_potential_direction_change_walk": 192,
"theoretical_min_potential_direction_change_walk": 52,
"theoretical_min_potential_direction_change_walk": 52,
"theoretical_max_potential_direction_change_jog": 104,
"theoretical_max_potential_direction_change_jog": 104,
"theoretical_min_potential_direction_change_jog": 15,
"theoretical_min_potential_direction_change_jog": 15,
"theoretical_max_potential_direction_change_run": 53,
"theoretical_max_potential_direction_change_run": 53,
"theoretical_min_potential_direction_change_run": 15,
"theoretical_min_potential_direction_change_run": 15,


// Delays - all values as milliseconds at 250ms intervals (these will be stored internally as match slices - one slice is 0.25s, so 4 slices are 1s)
// Delays - all values as milliseconds at 250ms intervals (these will be stored internally as match slices - one slice is 0.25s, so 4 slices are 1s)
"min_delay_for_diving_header": 2000, // 2s - 8 slices
"min_delay_for_diving_header": 2000, // 2s - 8 slices
"min_delay_for_normal_header": 1000, // 1s - 4 slices
"min_delay_for_normal_header": 1000, // 1s - 4 slices


"min_delay_for_slide_tackle_do": 2000, // 2s - 8 slices
"min_delay_for_slide_tackle_do": 2000, // 2s - 8 slices
"min_delay_for_slide_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_slide_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_ball_lunge_do": 2000, // 2s - 8 slices
"min_delay_for_ball_lunge_do": 2000, // 2s - 8 slices
"min_delay_for_ball_lunge_receive": 3000, // 3s - 12 slices
"min_delay_for_ball_lunge_receive": 3000, // 3s - 12 slices
"min_delay_for_block_tackle_do": 1000, // 1s - 4 slices
"min_delay_for_block_tackle_do": 1000, // 1s - 4 slices
"min_delay_for_block_tackle_receive": 1000, // 1s - 4 slices
"min_delay_for_block_tackle_receive": 1000, // 1s - 4 slices
"min_delay_for_deflect_ball_do": 250, // 0.25s - 1 slices
"min_delay_for_deflect_ball_do": 250, // 0.25s - 1 slices
"min_delay_for_deflect_ball_receive": 500, // 0.5s - 2 slices
"min_delay_for_deflect_ball_receive": 500, // 0.5s - 2 slices
"min_delay_for_shoulder_charge_do": 500, // 0.5s - 2 slices
"min_delay_for_shoulder_charge_do": 500, // 0.5s - 2 slices
"min_delay_for_shoulder_charge_receive": 2000, // 2s - 8 slices
"min_delay_for_shoulder_charge_receive": 2000, // 2s - 8 slices
"min_delay_for_force_opponent_to_lose_ball_do": 500, // 0.5s - 2 slices
"min_delay_for_force_opponent_to_lose_ball_do": 500, // 0.5s - 2 slices
"min_delay_for_force_opponent_to_lose_ball_receive": 500, // 0.5s - 2 slices
"min_delay_for_force_opponent_to_lose_ball_receive": 500, // 0.5s - 2 slices
"min_delay_for_shirt_tug_do": 0, // 0
"min_delay_for_shirt_tug_do": 0, // 0
"min_delay_for_shirt_tug_receive": 500, // 0.5s - 2 slices
"min_delay_for_shirt_tug_receive": 500, // 0.5s - 2 slices
"min_delay_for_obstruct_do": 1000, // 1s - 4 slices
"min_delay_for_obstruct_do": 1000, // 1s - 4 slices
"min_delay_for_obstruct_receive": 2000, // 2s - 8 slices
"min_delay_for_obstruct_receive": 2000, // 2s - 8 slices
"min_delay_for_two_footed_tackle_do": 2000, // 2s - 8 slices
"min_delay_for_two_footed_tackle_do": 2000, // 2s - 8 slices
"min_delay_for_two_footed_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_two_footed_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_trip_do": 1000, // 1s - 4 slices
"min_delay_for_trip_do": 1000, // 1s - 4 slices
"min_delay_for_trip_receive": 3000, // 3s - 12 slices
"min_delay_for_trip_receive": 3000, // 3s - 12 slices
"min_delay_for_foot_up_in_tackle_do": 1000, // 1s - 4 slices
"min_delay_for_foot_up_in_tackle_do": 1000, // 1s - 4 slices
"min_delay_for_foot_up_in_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_foot_up_in_tackle_receive": 3000, // 3s - 12 slices
"min_delay_for_push_opponent_do": 500, // 0.5s - 2 slices
"min_delay_for_push_opponent_do": 500, // 0.5s - 2 slices
"min_delay_for_push_opponen_receive": 2000, // 2s - 8 slices
"min_delay_for_push_opponen_receive": 2000, // 2s - 8 slices
"min_delay_for_violent_act_do": 500, // 0.5s - 2 slices - elbow, punch, head butt, kick, shove
"min_delay_for_violent_act_do": 500, // 0.5s - 2 slices - elbow, punch, head butt, kick, shove
"min_delay_for_violent_act_receive": 1000, // 1s - 4 slices
"min_delay_for_violent_act_receive": 1000, // 1s - 4 slices
"min_delay_for_celebrating_a_goal": 3000, // 3s - 12 slices
"min_delay_for_celebrating_a_goal": 3000, // 3s - 12 slices


"min_delay_keeper_save_intentionally_drop_ball": 500, // 0.5s - 2 slices
"min_delay_keeper_save_intentionally_drop_ball": 500, // 0.5s - 2 slices
"min_delay_keeper_save_dive_and_hold_ball": 2000, // 2s - 8 slices
"min_delay_keeper_save_dive_and_hold_ball": 2000, // 2s - 8 slices
"min_delay_keeper_save_dive_but_not_held": 750, // 0.75s - 3 slices
"min_delay_keeper_save_dive_but_not_held": 750, // 0.75s - 3 slices
"min_delay_keeper_save_no_dive_hold_ball": 500, // 0.5s - 2 slices
"min_delay_keeper_save_no_dive_hold_ball": 500, // 0.5s - 2 slices
"min_delay_keeper_save_no_dive_not_held": 500, // 0.5s - 2 slices
"min_delay_keeper_save_no_dive_not_held": 500, // 0.5s - 2 slices
"min_delay_keeper_drop_ball_for_distribution": 1000, // 1s - 4 slices
"min_delay_keeper_drop_ball_for_distribution": 1000, // 1s - 4 slices


"min_delay_for_getting_injured": 2000, // 2s - 8 slices
"min_delay_for_getting_injured": 2000, // 2s - 8 slices
"min_extra_delay_for_falling_down_before_injury": 4000, // 4s - 16 slices
"min_extra_delay_for_falling_down_before_injury": 4000, // 4s - 16 slices


"min_delay_for_player_stop_to_avoid_collision": 500 // 0.5s - 2 slices
"min_delay_for_player_stop_to_avoid_collision": 500 // 0.5s - 2 slices
}
}


],
],
}
}