Геракл [11]       (16.10.2022 23:41)
 Исходные данные:
 
 Урон (Y) - наше искомое значение
 Базовый урон (B) - мин значение 5, макс значение 9 (урон на 0м лвле при силе 3)
 Уровень (L) - уровень персонажа
 Урон оружия (W) (минимальный урон оружия добавляется к минимальному, максимальный - к максимальному)
 Мастерство владения оружием (U) - усиливает только урон оружия, а не весь урон. +7% к урону оружием за каждое владение
 Мощность урона (M) Мощность урона выбирается в соответствии с профилем атаки (через if/then, думаю)
 Мощность крита (K)Влияние статов (S) - влияние наших статов на профильный урон
 Колющий: S = Сила * 0,3 + Ловкость * 0,7
 Рубящий: S = Сила * 0,5 + Ловкость * 0,25 + Интуиция * 0,25
 Дробящий: S = Сила * 1
 Режущий: S = Сила * 0,3 + Интуиция * 0,7
 
 Формула урона выглядит так:
 Y = (B+L+S+W*(1+0,07*U))*(1+M/100) для обычного удара
 
 Y = (B+L+S+W*(1+0,07*U))*(1+M/100)*2*(1+K/100) - для критического удара (умножаем сначала на 2, потому что крит наносит
 даже без мощи крита в 2 раза больше урона. А потом уже умножаем полученный урон на мощь крита).
 
 Для минимального и максимального урона формулы выглядят следующим образом:
 Y(min) = (B(min)+L+S+W(min)*(1+0,07*U))*(1+M/100)
 Y(max) = (B(max)+L+S+W(max)*(1+0,07*U))*(1+M/100)
 
 Вероятности атак оружия:
 
 Ничтожно редки 1% - 9%
 Редки 10% - 19%
 Малы 20% - 39%
 Временами 40% - 69%
 Регулярны 70% - 89%
 Часты 90% - 99%
 
 Перейдем к броне, защите от урона и пробою брони.
 
 Параметр БРОНЯ является *плавающим*. Для примера возьмем осаду.
 Броня по частям тела:
 Голова 44-192
 Корпус 39-192
 Пояс 40-217
 Ноги 55-232
 Как работает пробой брони? Рассмотрим на примере удара ножом с пробоем в 70% (Pr) в голову осаднику. Расчетный урон (по формуле выше) у нас Y.
 Обязательно необходимо учитывать тот факт, что пробой работает только на *плавающей* части брони. У нас *плавающая* часть являет собой диапазон 44-192. Это значит, что урон меньше 44 не может не поглотиться по определению.
 Для примера возьмем урон Y = 200.
 Для начала *кидается кубик*, то-есть, с помощью генератора случайных чисел в диапазоне от 44 до 192 решается, какая броня *сработает*
 на данный удар. Br=random(44,192). Допустим, выпало число 100. Наш пробой на ноже в 70% означает, что сработает лишь 30% от сыгравшей брони, то есть, броня должна поглотить всего 30 урона. НО!!! Меньше минимального значения брони (у нас он 44) поглотиться не может по определению.
 Поэтому, после *работы* брони наш урон Y1 будет следующим: Y1 = Y - (100 - 100 * 70/100) = Y-30 = Y-44
 Сама формула имеет вид:
 
 Y1 = Y - (Br-BR*Pr/100). (в коде удобно будет скобки (Br-BR*Pr/100) представить отдельной переменной для упрощения проверки на допустимость
 поглощаемого урона)
 
 при условии, что Y=200, имеем:
 Y1 = 156
 
 Обязательно необходимо ввести ограничение, что броня не может уменьшать урон Y более, чем в 3 раза (во избежание ударов на 0).
 
 После брони начинает работать Защита от урона.
 
 Точная формула зависимости поглощения урона от параметра *Защита от урона*:
 
 x=(1-0.5^(N/250))*100, где:
 
 х - процент поглощаемого урона
 N - наш параметр *Защита от урона*
 Пример: у нас 400 защиты от урона, имеем:
 
 x=(1-0,5^(400/250))*100 = (1-0,5^1,6)*100 = 67,0123% . То есть, при защите от урона в 400 ед по нам пройдет лишь 33% урона.
 Еще необходимо учесть такой момент, как атака старшего уровня по младшему. В таком случае защита от урона у младшего уровня работает не на 100%. Если атакующий игрок на 1 уровень выше, то показатель защиты от урона (N) предварительно умножаем на 0,83, если 10-ый - на 0,69, если 11-ый - на 0,58.
 
 В нашем примере (оба бойца одного уровня) урон после работы брони (Y1) равен 156. При защите от урона в 400 единиц, итоговый урон будет:
 156*0,33 = 51,48 = 51 (округляем)
 
 При действии приемов на усиление удара (сильный удар, удачный удар, усиленные удары) значение урона этих приемов можно как добавлять к
 полученному с помощью расчетов урону, так и добавлять в саму формулу начального урона (Y = (B+L+S+W*(1+0,07*U))*(1+M/100)) к параметрам B,L,S и W.
 В разное время по-разному пробовали. От этого зависел, к примеру, сумасшедший руль уворотов в свое время.  |