At what range do various weapons get range bonuses?

Solution 1:

There are three types of weapon range available for player characters: Short, Medium and Long. The exact bonus/penalty changes a little depending on tech level (conventional, magnetic or beam).

  • Short Range applies to shotguns, it gives you up to +40 aim at point-blank range and up to -30 at extreme distances with +0 modifier at 11 tiles.
  • Medium Range applies to most weapons and gives up to +20-22 bonus aim at point-blank range with no long range penalty and slower drop-off.
  • Long Range applies to Sniper Rifles and is actually the easiest to account for because of its linear nature. They give -30 at point-blank range and +0 at 11 tiles. Long Range weapons don't give you an aim bonus.

Weapons don't have crit bonuses from range unless they are equipped with a laser sight. The bonus is +10 at 0 tiles distance and drops-off at a rate of 0.5 points per tile.

Weapon Range Tables from DefaultGameData_WeaponData.ini

This file is located under C:\Program Files (x86)\Steam\steamapps\common\XCOM 2\XComGame\Config\DefaultGameData_WeaponData.ini.

Short range:

SHORT_CONVENTIONAL_RANGE[0] = 0
SHORT_CONVENTIONAL_RANGE[1] = 40
SHORT_CONVENTIONAL_RANGE[2] = 35
SHORT_CONVENTIONAL_RANGE[3] = 32
SHORT_CONVENTIONAL_RANGE[4] = 28
SHORT_CONVENTIONAL_RANGE[5] = 23
SHORT_CONVENTIONAL_RANGE[6] = 19
SHORT_CONVENTIONAL_RANGE[7] = 16
SHORT_CONVENTIONAL_RANGE[8] = 12
SHORT_CONVENTIONAL_RANGE[9] = 6
SHORT_CONVENTIONAL_RANGE[10] = 2
SHORT_CONVENTIONAL_RANGE[11] = 0
SHORT_CONVENTIONAL_RANGE[12] = -2
SHORT_CONVENTIONAL_RANGE[13] = -4
SHORT_CONVENTIONAL_RANGE[14] = -7
SHORT_CONVENTIONAL_RANGE[15] = -10
SHORT_CONVENTIONAL_RANGE[16] = -12
SHORT_CONVENTIONAL_RANGE[17] = -15
SHORT_CONVENTIONAL_RANGE[18] = -17
SHORT_CONVENTIONAL_RANGE[19] = -18
SHORT_CONVENTIONAL_RANGE[20] = -18
SHORT_CONVENTIONAL_RANGE[21] = -19
SHORT_CONVENTIONAL_RANGE[22] = -19
SHORT_CONVENTIONAL_RANGE[23] = -21
SHORT_CONVENTIONAL_RANGE[24] = -25
SHORT_CONVENTIONAL_RANGE[25] = -30

Medium range:

MEDIUM_CONVENTIONAL_RANGE[0] = 0
MEDIUM_CONVENTIONAL_RANGE[1] = 20
MEDIUM_CONVENTIONAL_RANGE[2] = 19
MEDIUM_CONVENTIONAL_RANGE[3] = 17
MEDIUM_CONVENTIONAL_RANGE[4] = 16
MEDIUM_CONVENTIONAL_RANGE[5] = 13
MEDIUM_CONVENTIONAL_RANGE[6] = 11
MEDIUM_CONVENTIONAL_RANGE[7] = 9
MEDIUM_CONVENTIONAL_RANGE[8] = 7
MEDIUM_CONVENTIONAL_RANGE[9] = 5
MEDIUM_CONVENTIONAL_RANGE[10] = 4
MEDIUM_CONVENTIONAL_RANGE[11] = 3
MEDIUM_CONVENTIONAL_RANGE[12] = 2
MEDIUM_CONVENTIONAL_RANGE[13] = 1
MEDIUM_CONVENTIONAL_RANGE[14] = 1
MEDIUM_CONVENTIONAL_RANGE[15] = 1
MEDIUM_CONVENTIONAL_RANGE[16] = 0
MEDIUM_CONVENTIONAL_RANGE[17] = 0
MEDIUM_CONVENTIONAL_RANGE[18] = 0
MEDIUM_CONVENTIONAL_RANGE[19] = 0
MEDIUM_CONVENTIONAL_RANGE[20] = 0
MEDIUM_CONVENTIONAL_RANGE[21] = 0
MEDIUM_CONVENTIONAL_RANGE[22] = 0
MEDIUM_CONVENTIONAL_RANGE[23] = 0
MEDIUM_CONVENTIONAL_RANGE[24] = 0
MEDIUM_CONVENTIONAL_RANGE[25] = 0

Long range:

LONG_CONVENTIONAL_RANGE[0] = 0
LONG_CONVENTIONAL_RANGE[1] = -30
LONG_CONVENTIONAL_RANGE[2] = -27
LONG_CONVENTIONAL_RANGE[3] = -24
LONG_CONVENTIONAL_RANGE[4] = -21
LONG_CONVENTIONAL_RANGE[5] = -18
LONG_CONVENTIONAL_RANGE[6] = -15
LONG_CONVENTIONAL_RANGE[7] = -12
LONG_CONVENTIONAL_RANGE[8] = -9
LONG_CONVENTIONAL_RANGE[9] = -6
LONG_CONVENTIONAL_RANGE[10] = -3
LONG_CONVENTIONAL_RANGE[11] = 0
LONG_CONVENTIONAL_RANGE[12] = 0
LONG_CONVENTIONAL_RANGE[13] = 0
LONG_CONVENTIONAL_RANGE[14] = 0
LONG_CONVENTIONAL_RANGE[15] = 0
LONG_CONVENTIONAL_RANGE[16] = 0
LONG_CONVENTIONAL_RANGE[17] = 0
LONG_CONVENTIONAL_RANGE[18] = 0
LONG_CONVENTIONAL_RANGE[19] = 0
LONG_CONVENTIONAL_RANGE[20] = 0
LONG_CONVENTIONAL_RANGE[21] = 0
LONG_CONVENTIONAL_RANGE[22] = 0
LONG_CONVENTIONAL_RANGE[23] = 0
LONG_CONVENTIONAL_RANGE[24] = 0
LONG_CONVENTIONAL_RANGE[25] = 0