Не буду лукавить, искал не особо упорно, но там кроме этого особо ничего и нет 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
И в игре, когда юнита дамажат, урон всегда 1.00, сколько бы урона ему не наносилось, хотя по идее урон должен быть 0.00
И то этот урон лишь, такой потому, что такое значение выводит игра
По факту у юнита не тратится хп вообще! Но тогда урон должен бы выводиться как 0.00
По факту у юнита не тратится хп вообще! Но тогда урон должен бы выводиться как 0.00
Из этого следует, что формула, которую я для этого подгонял либо не верная, хотя я проверял её на разных значениях и вроде подходило всё, либо там какая-то механика непонятная?!
Обсудим? Или мб кто в курсе что и как там работает?
Обсудим? Или мб кто в курсе что и как там работает?
Принятый ответ
Хотелось бы лучше понимать что за магия такая)
Вот ещё такой прикол
Добавляем функцию BlzSetEventDamage
Добавляем функцию BlzSetEventDamage
При этом юнит всё так же не получает урон, но на экран выводится, что урон получает 100.00
А ещё если в константах поставить значение больше 0, хотя бы 0.01, то урон снова наносится
Но и это ещё не всё!))
Если у юнита атака 0 - 0, он не наносит тоже урон, только вообще никому.
Если у юнита атака 0 - 0, он не наносит тоже урон, только вообще никому.
А если атака 0-1, например, то урон будет наносится через раз))
Короче,
- если урон 0 или отрицательный, то функция BlzSetEventDamage бесполезна
- если в константах по определённому типу брони стоит 0% урона, то функция BlzSetEventDamage также бесполезна
- скорее всего там и есть 0.00, просто на экран выводится как 1.00. Ну в смысле ничего более замудренного
- вот полная формула полученного урона
BASE ATTACK * K / ( 1 + Multiplier * UNIT ARMOR), где
BASE ATTACK - ожидаемый урон (атака юнита, просто не всегда она 70-70, обычно 45-62 и т.д.)
K - коэффициент получаемого урона определённым типом брони от определённого типа урона (игровые константы)
Multiplier - прирост порчи брони при уроне (игровые константы)
UNIT ARMOR - защита юнита
K - коэффициент получаемого урона определённым типом брони от определённого типа урона (игровые константы)
Multiplier - прирост порчи брони при уроне (игровые константы)
UNIT ARMOR - защита юнита
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
У юнита не тратится хп в этот момент
Ред. PROSHELDOTU
Один юнит просто бьёт другого юнита, у которого урон по его типу брони стоит 0%
И просто выводится урон на экран
1.00, а хп не тратится!
Ред. PROSHELDOTU
Добавляем функцию BlzSetEventDamage
Если у юнита атака 0 - 0, он не наносит тоже урон, только вообще никому.
K - коэффициент получаемого урона определённым типом брони от определённого типа урона (игровые константы)
Multiplier - прирост порчи брони при уроне (игровые константы)
UNIT ARMOR - защита юнита