Перейти к содержанию
Друзья, важная новость! ×

Расчет истинных повреждений


Рекомендуемые сообщения

Камрады, помогите разобраться!

1)

Смотрю в конфиги и вижу: Fire Warrior

damage: 63-72

AP против типа брони inf_heavy_med: 50

По какой формуле расчитать действительные повреждения по данному типу брони?

2)

AP против типа брони mon_high: 0

Данный тип брони получит min_damage?

З.Ы. Поиск юзал. Не нашел. Просьба не орать ;)

Ссылка на комментарий
Поделиться на другие сайты

Introduction

This is reproduced from the Working on an armour explanation thread.

Armor

The armor system in Dawn of War is quite complicated. Each entity has an armor type, an armor amount, and an armour minimum. Each weapon has damage, a default armor-piercing value, and optional armor-piercing values for each armor type.

Final Damage Multiplier = min( (100 - armour + armour_piercing_value) , 100 - armour_minimum ) / 100

armour and armour_minimum are in the ebp. armour_piercing_value is from the weapon blueprint.

Taking it

How to set up the armor. Armor is defined in the entity blueprint.

\W40K\Data\attrib\ebps\races\racename\troops\

for infantry and vehicles

\W40K\Data\attrib\ebps\races\racename\structures\

for buildings

GameData["health_ext"]["armour"] = 100.000

The percentage of damage blocked, if the weapon is not armour-piercing. Usually 100.

GameData["health_ext"]["armour_minimum"] = 0.000

The percentage of damage blocked no matter what armor-piercing value the weapon has. Usually 0.

GameData["type_ext"]["type_armour"] = Reference("tp_infantry_high")

The armour type. Most weapons have specific armour-piercing values for each armour type.

For most units, all you should have to do is set the first value to 100, the second to 0, then pick an appropriate type for the third value. Here are the pre-defined armour types:

tp_infantry_low

tp_infantry_med

tp_infantry_high

tp_infantry_heavy_med

tp_infantry_heavy_high

tp_vehicle_low

tp_vehicle_med

tp_vehicle_high

tp_monster_med

tp_monster_high

tp_commander

tp_building_low

tp_building_med

tp_building_high

Dishing it out

GameData["area_effect"]["weapon_damage"]["armour_damage"]["armour_piercing"] = 10.000

This defines the default armor-piercing value of the weapon. Armor-piercing values for specific armor types can be defined (and are described later) but if the weapon encounters something that does not have an armor type listed in the table, it will use this value.

GameData["area_effect"]["weapon_damage"]["armour_damage"]["armour_piercing_types"]["entry_01"]["armour_piercing_value"] = 30.600

GameData["area_effect"]["weapon_damage"]["armour_damage"]["armour_piercing_types"]["entry_01"]["armour_type"] = Reference("tp_infantry_low")

Here's an entry defining the armour-piercing value of a weapon vs. one armour type. This example shows a weapon dealing 30% damage against targets with tp_infantry_low armour. If the target's armour value is less than 100, the weapon would do more than 30% damage, but all stantard units have an armour value of 100. That is another reason to set your custom units' armour values to 100.

Often, a .NIL file, like eldar_shooting_weapons.nil, will create a table of armour_piercing_types for all 14 armor types, and leave it to other weapons (which inherit from it) to fill in the armour_piercing_value. I don't really like this, since 1) if the entry is created, the armour_piercing_value defaults to 0, so if you forget a damage type, your weapon won't even scratch it, and 2) the weapon files have lists of multipliers, but the armour types they go to are in a different file, making it hard to tell at a glance what armour types the weapon is effective against.

Additional notes

The damage multiplier is clamped to the range [0,1]

A weapon will never do less than min_damage_value. This trumps even "armour_minimum."

Изменено пользователем BrCasius
Ссылка на комментарий
Поделиться на другие сайты

Final Damage Multiplier = min( (100 - armour + armour_piercing_value) , 100 - armour_minimum ) / 100

Я правильно понял, что ФВ супротив ТСМ (при арморе 100) будет иметь коэффициент 50/100=0.5 ?

То есть при дамаге 63-72 он будет наносить 31.5-36 действительных повреждений?

Ссылка на комментарий
Поделиться на другие сайты

Я правильно понял, что ФВ супротив ТСМ (при арморе 100) будет иметь коэффициент 50/100=0.5 ?

То есть при дамаге 63-72 он будет наносить 31.5-36 действительных повреждений?

Армор у всех стоит 100 - так что понял не правильно.

Ссылка на комментарий
Поделиться на другие сайты

Я правильно понял, что ФВ супротив ТСМ (при арморе 100) будет иметь коэффициент 50/100=0.5 ?

То есть при дамаге 63-72 он будет наносить 31.5-36 действительных повреждений?

Сорри, я щас хз про дамаг ФВ и ТСМ, но формуль разъясню.

Final Damage Multiplier = min( (100 - armour + armour_piercing_value) , 100 - armour_minimum ) / 100

Если по русски, то

минимальный_дамаг_оружия помножить на ((100 - армор_целевого_юнита + армор_пирсинг_оружия_против_типа_брони_целевого_юнита) делить на 100

Если урон в итоге нулевой, то берётся параметр min_damage_value (НЕ min_damage!) данного оружия (и уже не важно, что за тип брони у цели - урон будет равен этому самому минимальному дамагу).

Если отцутствует армор_пирсинг против какого-либо типа брони, то насколько я помню будет взята цихверка из armour_piercing ...

Ах да, стоит отметить так же, что после экспериментов я вывел немного другую формулу - минимальный_дамаг*армор_пирсигн_против_данного_вида_брони/100

Что делает хренька через запятую (..., 100 - armour_minimum) я не знаю. Точнее как её считать...

Ссылка на комментарий
Поделиться на другие сайты

Армор у всех стоит 100 - так что понял не правильно.

Это понятно. Просто при АР=50 будет (100-100+50)/100 = 50/100 = 0.5

Коэффициент правильный?

И правильный ли получился результат расчета истинных повреждений (32-36)?

берётся параметр min_damage_value (НЕ min_damage!)

Я min_damage_value и имел в виду :)
Ссылка на комментарий
Поделиться на другие сайты

Хм... ЧТо за коэффициент? Эта формула рассчитывает конечный урон, а не коэфф ;) Т.е. у тебя получается, что у ФВ против ТСМ урон 0.5 ;) А по факту он... Ща посчитаю.

[Добавлено позже]

Так. Минимальный дамаг пульс райфл ФВ 63 еденицы (без грейда есесено беру). Максимальный - 72... Маринад у нас инфантри_хеви_мед. Модификатор урона у винтовки ФВ по этому типу брони 50.

Итого урон будет колебаться от и до:

63*50/100=31.5

72*50/100=36.0

Т.е. за выстрел ФВ без грейда будет отнимать у ТСМа по 31.5-36 едениц хдоровья. Так вроде...

[Добавлено позже]

Учитывая, что без грейдов у ТСМа 390 ед. здоровья, ФВ замочит его примерно с 12 выстрелов.

Ссылка на комментарий
Поделиться на другие сайты

Хм... ЧТо за коэффициент? Эта формула рассчитывает конечный урон, а не коэфф ;) Т.е. у тебя получается, что у ФВ против ТСМ урон 0.5 ;) А по факту он... Ща посчитаю.

Final Damage Multiplier = min( (100 - armour + armour_piercing_value) , 100 - armour_minimum ) / 100

multiplier — это множитель, т. е. коэффициент. он умножается на табличные повреждения.

Ну, в общем, мы про одно и то же говорим, так что считаем тему закрытой :)

Всем спасибо!

Ссылка на комментарий
Поделиться на другие сайты

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...