Не буду лукавить, искал не особо упорно, но там кроме этого особо ничего и нет xgm.guru/p/wc3/worldeditfaq#h6
Снижение полученного урона за единицу брони:
Damage Reduction = Multiplier * Armor / (1 + Multiplier * Armor);
где Multiplier - это значение из Gameplay Constants - Combat - Armor Damage Reduction Multiplier, по умолчанию равное 0.06
Это ведь не полная формула урона, потому что есть ещё такое понятие как % определённого типа урона по определённому типу брони
Довольно давно, я сам попробовал подогнать формулу под все эти нюансы, но!
Буквально сейчас я поставил в константах значение по типу брони 0.00
И в игре, когда юнита дамажат, урон всегда 1.00, сколько бы урона ему не наносилось, хотя по идее урон должен быть 0.00
И то этот урон лишь, такой потому, что такое значение выводит игра
По факту у юнита не тратится хп вообще! Но тогда урон должен бы выводиться как 0.00
Из этого следует, что формула, которую я для этого подгонял либо не верная, хотя я проверял её на разных значениях и вроде подходило всё, либо там какая-то механика непонятная?!
Обсудим? Или мб кто в курсе что и как там работает?

Хотелось бы лучше понимать что за магия такая)

Вот ещё такой прикол
Добавляем функцию BlzSetEventDamage
При этом юнит всё так же не получает урон, но на экран выводится, что урон получает 100.00
А ещё если в константах поставить значение больше 0, хотя бы 0.01, то урон снова наносится

Но и это ещё не всё!))
Если у юнита атака 0 - 0, он не наносит тоже урон, только вообще никому.
А если атака 0-1, например, то урон будет наносится через раз))

Короче,
  1. если урон 0 или отрицательный, то функция BlzSetEventDamage бесполезна
  2. если в константах по определённому типу брони стоит 0% урона, то функция BlzSetEventDamage также бесполезна
  3. скорее всего там и есть 0.00, просто на экран выводится как 1.00. Ну в смысле ничего более замудренного

  1. вот полная формула полученного урона
BASE ATTACK * K / ( 1 + Multiplier * UNIT ARMOR), где
BASE ATTACK - ожидаемый урон (атака юнита, просто не всегда она 70-70, обычно 45-62 и т.д.)
K - коэффициент получаемого урона определённым типом брони от определённого типа урона (игровые константы)
Multiplier - прирост порчи брони при уроне (игровые константы)
UNIT ARMOR - защита юнита
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
24
Там вроде просто не дает нанести меньше 1 урона.
21
prog:
Там вроде просто не дает нанести меньше 1 урона.
Блин забыл дописать, важное замечание!)
У юнита не тратится хп в этот момент
24
Proshel_Doty, ок, какая версия игры? каким событием детектиш урон?
21
prog:
Proshel_Doty, ок, какая версия игры? каким событием детектиш урон?
1.31
Загруженные файлы
24
Просто на всякий случай, напоминаю, что на 1.31 есть новое событие, которое работает до обсчета брони и функция, которая позволяет менять сколько урона будет нанесено. А еще функции позволяющие получить тип брони у юнита, а также типы атаки и урона для произошедшего события урона.
21
Для тех, кто не вкуривает что тут происходит))
Один юнит просто бьёт другого юнита, у которого урон по его типу брони стоит 0%
И просто выводится урон на экран
1.00, а хп не тратится!
Загруженные файлы
24
А так - там реально магия творится вокруг 0 и 1 значений урона - они используются движком для особых целей и вроде как в 1.31 что-то с этим связаное поломали.
21
Хотелось бы лучше понимать что за магия такая)

Вот ещё такой прикол
Добавляем функцию BlzSetEventDamage
При этом юнит всё так же не получает урон, но на экран выводится, что урон получает 100.00
А ещё если в константах поставить значение больше 0, хотя бы 0.01, то урон снова наносится

Но и это ещё не всё!))
Если у юнита атака 0 - 0, он не наносит тоже урон, только вообще никому.
А если атака 0-1, например, то урон будет наносится через раз))

Короче,
  1. если урон 0 или отрицательный, то функция BlzSetEventDamage бесполезна
  2. если в константах по определённому типу брони стоит 0% урона, то функция BlzSetEventDamage также бесполезна
  3. скорее всего там и есть 0.00, просто на экран выводится как 1.00. Ну в смысле ничего более замудренного

  1. вот полная формула полученного урона
BASE ATTACK * K / ( 1 + Multiplier * UNIT ARMOR), где
BASE ATTACK - ожидаемый урон (атака юнита, просто не всегда она 70-70, обычно 45-62 и т.д.)
K - коэффициент получаемого урона определённым типом брони от определённого типа урона (игровые константы)
Multiplier - прирост порчи брони при уроне (игровые константы)
UNIT ARMOR - защита юнита
Загруженные файлы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.