Tanki

WireLess

афк на год
Сообщения
10 280
Лайки
18 471
Шанс попасть или промахнуться по цели.

В первую очередь берем evasion цели. Затем считаем:

modified_evasion = evasion * evasion_move_mode_multiplier + evasion_move_mode_adder

evasion_move_mode_multiplier и evasion_move_mode_adder - модификаторы evasion в зависимости от стиля передвижения. Их четыре - сит, стенд, волк и ран. По дефолту они стоят в таком положении:
evasion_move_mode_multiplier = 1
evasion_move_mode_adder = 0
Для всех стилей. Пока есть только один скилл, который их модифицирует (возможно, в третьем троне появятся баффы наподобие +20% увернуться от атаки в режиме ходьбы - это уже прописано в игре). Пока у нас только acrobatic move и он прибавляет к evasion_move_mode_adder в режиме run какое-то значение к уклонение - сами найдете, какое.

Теперь считаем advantage:
advantage = modified_evasion - accuracy

Надеюсь, вы догадались, что accuracy считаем у того, кто бьет, а евагу - у того, кого бьют.

Считаем base_hit_chance:
base_hit_chance = 5 + max(-26811.9 * (advantage - 23.59581247155212), 0)^(1/3)

max -
это функция с двумя параметрами(разделены запятой, в скобках стоят), которая берет из них максимум. Кто хоть раз сходил в хабзе на компы - тот это понимает -). ^(1/3) - это кубический корень. Скобки расставлены. Посчитайте? Думаю да.
Если нет - то вам спойлер:
Спойлер
collapse_thead_collapsed.gif



Считаем hit_loc_bonus.
Пространство вокруг цели можно условно разделить на 4 сектора по 90 градусов - front (спереди, "в лоб"), back (сзади, "в спину как крыса") и 2 side ("бока").

Вот так, вид сверху:

sexyv.png


Если нападающий стоит во front от цели, то hit_loc_bonus = 1
Если нападающий стоит в side от цели, то hit_loc_bonus = 1.2
Если нападающий стоит в back от цели, то hit_loc_bonus = 1.3

Далее считаем hit_height_bonus.

dz - это разница высот, на которых стоят цель и атакующий персонаж (из координаты z цели вычитаем координату z атакующего).

Если dz <= -1100, то hit_height_bonus = 0
Если -1100 < dz <= -300 ,то hit_height_bonus = 1.375 + 0.00125 * dz
Если -300 < dz <= 100, то hit_height_bonus = 1
Если 100 < dz <= 500, то hit_height_bonus = 1.25 - 0.0025 * dz
Если dz > 500, то hit_height_bonus = 0

К сожалению, разница высот никогда не добавит шанса попасть, а вот уменьшить шанс может конкретно.

Итого, считаем предварительный шанс попасть:

prelim_chance = base_hit_chance * hit_loc_bonus * hit_height_bonus

Если prelim_chance < 30 то real_chance = 30
Если prelim_chance > 98 то real_chance = 98
Если 30 < prelim_chance < 98 то real_chance = prelim_chance

Выводы:
1.) Бить в спину можно точнее, чем в бок и еще точнее, чем в лицо. Много миссов? Стараемся забежать за спину, шанс попасть умножается на 1.3.
2.) Разница высот не поможет попасть в цель. Только может ухудшить шанс попадания. Поэтому держим ее от -300 до 100 (из координаты z цели вычитаем координату z атакующего). Стоим не более чем на 300 выше цели и не менее, чем на 100 ниже цели. Тогда никаких потерь не будет. 25 единиц - это примерно рост эльфа-файтера.
3.) Разгонять евагу не имеет смысла. 30% - это уже предел процента попаданий снизу. А вот точность - вполне, 98% - это почти всегда.
4.) Если вы не знали этих трех вышеперечисленных вещей - удалить компьютерную онлайн игру Lineage2.








почитать тебе перед сном
Лень читать
 

BathMan

Виконт
Сообщения
304
Лайки
110
Шанс попасть или промахнуться по цели.

В первую очередь берем evasion цели. Затем считаем:

modified_evasion = evasion * evasion_move_mode_multiplier + evasion_move_mode_adder

evasion_move_mode_multiplier и evasion_move_mode_adder - модификаторы evasion в зависимости от стиля передвижения. Их четыре - сит, стенд, волк и ран. По дефолту они стоят в таком положении:
evasion_move_mode_multiplier = 1
evasion_move_mode_adder = 0
Для всех стилей. Пока есть только один скилл, который их модифицирует (возможно, в третьем троне появятся баффы наподобие +20% увернуться от атаки в режиме ходьбы - это уже прописано в игре). Пока у нас только acrobatic move и он прибавляет к evasion_move_mode_adder в режиме run какое-то значение к уклонение - сами найдете, какое.

Теперь считаем advantage:
advantage = modified_evasion - accuracy

Надеюсь, вы догадались, что accuracy считаем у того, кто бьет, а евагу - у того, кого бьют.

Считаем base_hit_chance:
base_hit_chance = 5 + max(-26811.9 * (advantage - 23.59581247155212), 0)^(1/3)

max -
это функция с двумя параметрами(разделены запятой, в скобках стоят), которая берет из них максимум. Кто хоть раз сходил в хабзе на компы - тот это понимает -). ^(1/3) - это кубический корень. Скобки расставлены. Посчитайте? Думаю да.
Если нет - то вам спойлер:
Спойлер
collapse_thead_collapsed.gif



Считаем hit_loc_bonus.
Пространство вокруг цели можно условно разделить на 4 сектора по 90 градусов - front (спереди, "в лоб"), back (сзади, "в спину как крыса") и 2 side ("бока").

Вот так, вид сверху:

sexyv.png


Если нападающий стоит во front от цели, то hit_loc_bonus = 1
Если нападающий стоит в side от цели, то hit_loc_bonus = 1.2
Если нападающий стоит в back от цели, то hit_loc_bonus = 1.3

Далее считаем hit_height_bonus.

dz - это разница высот, на которых стоят цель и атакующий персонаж (из координаты z цели вычитаем координату z атакующего).

Если dz <= -1100, то hit_height_bonus = 0
Если -1100 < dz <= -300 ,то hit_height_bonus = 1.375 + 0.00125 * dz
Если -300 < dz <= 100, то hit_height_bonus = 1
Если 100 < dz <= 500, то hit_height_bonus = 1.25 - 0.0025 * dz
Если dz > 500, то hit_height_bonus = 0

К сожалению, разница высот никогда не добавит шанса попасть, а вот уменьшить шанс может конкретно.

Итого, считаем предварительный шанс попасть:

prelim_chance = base_hit_chance * hit_loc_bonus * hit_height_bonus

Если prelim_chance < 30 то real_chance = 30
Если prelim_chance > 98 то real_chance = 98
Если 30 < prelim_chance < 98 то real_chance = prelim_chance

Выводы:
1.) Бить в спину можно точнее, чем в бок и еще точнее, чем в лицо. Много миссов? Стараемся забежать за спину, шанс попасть умножается на 1.3.
2.) Разница высот не поможет попасть в цель. Только может ухудшить шанс попадания. Поэтому держим ее от -300 до 100 (из координаты z цели вычитаем координату z атакующего). Стоим не более чем на 300 выше цели и не менее, чем на 100 ниже цели. Тогда никаких потерь не будет. 25 единиц - это примерно рост эльфа-файтера.
3.) Разгонять евагу не имеет смысла. 30% - это уже предел процента попаданий снизу. А вот точность - вполне, 98% - это почти всегда.
4.) Если вы не знали этих трех вышеперечисленных вещей - удалить компьютерную онлайн игру Lineage2.








почитать тебе перед сном
не устал?
 
Верх