Вечер добрый форумчане и собственно такой вопрос - Как отловить срабатывание "заклинания крови"? То есть у меня есть идея отловить урон через GetEventDamage\Source и прочие костыли, но возможен ли более элегантный ход? Ну и вопрос на засыпку, собственно как отловить срабатывание крита/баша/уворота в триггерах? У меня есть конечно идеи насчет атакован/получил урон столько-то => был баш/крит/не получил урон => уворот. Но если у меня юнит с нулевой атакой, то как отловить сие срабатывание в коде?
Заранее спасибо за внимание!

Принятый ответ

Никак, очень сложное заклинание (близзарды пряма изощрялись и собирали совещание, как бы это сделать посложнее - Dracolich(c))
Там бафф по сути триггер с особым событием которое запилили специально для этой способности - юнит потерял ману от каста заклинания, до него можно добраться с помощью мемхака - но костыльно и сложно.
Баши и криты можно отловить косвенно, по получению урона \баффа. Но это ненадежный способ, атака обрабатывается в момент замаха и движок узже знает попадет юнит или промажет, забашит или кританет по цели, еще за долго до самого удара. Поэтому самый рациональный способ - триггерные аналоги этих пассивок - крит, ну тупо перед атакой вручает абилку крита со 100% шансом и усе, баш так же. Особо изворотливые могут сделать детект физического урона и сделать баш из дамми каста молотка бурь (нам же надо только отловить сам факт удара) ну а крит посложнее, но тоже вполне реализуемо.
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
32
6 лет назад
2
Никак, очень сложное заклинание (близзарды пряма изощрялись и собирали совещание, как бы это сделать посложнее - Dracolich(c))
Там бафф по сути триггер с особым событием которое запилили специально для этой способности - юнит потерял ману от каста заклинания, до него можно добраться с помощью мемхака - но костыльно и сложно.
Баши и криты можно отловить косвенно, по получению урона \баффа. Но это ненадежный способ, атака обрабатывается в момент замаха и движок узже знает попадет юнит или промажет, забашит или кританет по цели, еще за долго до самого удара. Поэтому самый рациональный способ - триггерные аналоги этих пассивок - крит, ну тупо перед атакой вручает абилку крита со 100% шансом и усе, баш так же. Особо изворотливые могут сделать детект физического урона и сделать баш из дамми каста молотка бурь (нам же надо только отловить сам факт удара) ну а крит посложнее, но тоже вполне реализуемо.
Принятый ответ
0
4
6 лет назад
0
quq_CCCP:
>ну а крит посложнее, но тоже вполне реализуемо.
А можно поподробней? Ну я думаю проще сделать триггерный крит на рандомных числах и даже отлавливать не придется. Энивей спасибо за дельный пост!
2
32
6 лет назад
2
Ingvar3, Ну тебе нужно для начала узнать -кол во урона на этот удар, это пилится через детект физического урона. Ну урон ты узнл, будь будет 79.403 физ урона получила цель, но криты множат урон от атаки до снижения резистами (итого числа не такие красивые), че мы делаем содзаём триггер с событием юнит получил урон, условием что урон выше нуля и источник урона дамми юнит ( в других триггерах ставим проверку что урон не от лица этого юнита), наносим от лица даммика физический урон по цели, триггер тут же выличит снятохе хп а в разницу между нанесенным (1 ед.) и полученным ( 0.39 ед. допустим.) мы смотрим и понимаем, какой велечины резист 1.00 - 0.39 = 61% снижения урон, умножаем наш урон на фактор 1. + фактор резиста, мы получили базовый урон с тычки без снижения резистом - ну далее все просто.
Отдельным куском кода ищем наличие вампиризмов (ибо от бонусного урона нанесенного триггерно мы не получим лечения) но тут нам тоже пригодится фактор физ резиста и мы рассчитаем кол-во лечения от бонусного урона.
Так же можно использовать мемхак, тогда с даммиками возится не придется.
0
4
6 лет назад
0
quq_CCCP:
Ingvar3, Ну тебе нужно для начала узнать -кол во урона на этот удар, это пилится через детект физического урона. Ну урон ты узнл, будь будет 79.403 физ урона получила цель, но криты множат урон от атаки до снижения резистами (итого числа не такие красивые), че мы делаем содзаём триггер с событием юнит получил урон, условием что урон выше нуля и источник урона дамми юнит ( в других триггерах ставим проверку что урон не от лица этого юнита), наносим от лица даммика физический урон по цели, триггер тут же выличит снятохе хп а в разницу между нанесенным (1 ед.) и полученным ( 0.39 ед. допустим.) мы смотрим и понимаем, какой велечины резист 1.00 - 0.39 = 61% снижения урон, умножаем наш урон на фактор 1. + фактор резиста, мы получили базовый урон с тычки без снижения резистом - ну далее все просто.
Отдельным куском кода ищем наличие вампиризмов (ибо от бонусного урона нанесенного триггерно мы не получим лечения) но тут нам тоже пригодится фактор физ резиста и мы рассчитаем кол-во лечения от бонусного урона.
Так же можно использовать мемхак, тогда с даммиками возится не придется.
Охёмаё, нет уж, такой огород городить что-то не очень, но все-равно спасибо за науку! В целом наработку уже придумал, так что думаю тред можно закрывать, еще раз спасибо :)
0
23
6 лет назад
0
Есть еще один способ логичный способ но он тоже геморный и не очень гибкий. Так вот: если у тебя все пасивки тригерные то можно также дополнительно при срабатывании прописать чтоб на юнита у которого что-то там прокнуло кидать баф-марке чтоб отследить срабатывание пасивки.
0
23
6 лет назад
0
такой подход я лучше писал триггерные пасс и актив, и создал новую функция который передает события то есть если триггерно сработал то передаю события равкод способность и юнит параметр в функцию а потом уже события ловит и отрабатыывает... другого не вижу
Чтобы оставить комментарий, пожалуйста, войдите на сайт.