Techies' Land Mines

I'm living like a landmine,
waiting to explode

Реализация хардкодных  наземных мин оставляет желать лучшего. Не имеет значения, какие цели настроены — взрываются всегда только наземные юниты. Парящие и летающие просто не воспринимаются движком. Что-то на уровне Entangle или Cyclone, или даже хуже. Не менее интересен и игнор неуязвимых юнитов.

Причина бага

Первый баг — подрыв летающих и парящих. Если кто-то помнит старые ченжлоги, то практически в каждой версии, где появлялся новый летающий герой, в следующем патче была строка "%HERONAME% теперь подрывается на Landmines". Проблема в том, что мины не реагируют на юнитов, которые не ходят по земле. Парящие, т.е. те, которые физически не ходят, но и через препятствия не летают, тоже являются исключением. Поэтому их подрывают при помощи триггеров, где перечислены все ID юнитов, при обнаружении которых мина уничтожается самим кодом.

Триггер сконструирован так, что проверяет каждые 0.1 секунды на присутствие конкретных юнитов в радиусе поражения. Как только такой обнаруживается, мина уничтожается, выпуская при этом урон по площади или запуская триггер на нанесение урона (в зависимости от версии). Проблема в том, что это не стандартное поведение для мин. Ведь наземные юниты активируют её, и только через 0.5 секунды мина, потеряв невидимость, взрывается. У этих героев есть шанс отойти. У парящих — ни единого, взрыв мгновенный. С другой стороны, и урон парящий получат только вторичный — до центра AoE взрыва дойти просто не успеют, мина рванет быстрее.

Другая особенность триггера — игнорирование свойств юнита. Неуязвимость не имеет значения — мина взорвется сразу и под героем во сне, и в Cyclone от  Eul.

Второй баг — игнорирование неуязвимых наземных юнитов. В основе работы мин Blizzard, на которые полагается фрог, лежит стандартная способность наземных мин  варкрафта. Внутри неё используется стандартный триггер UNIT_IN_RANGE, который реагирует на появление в некотором радиусе юнитов. Очевидно, что войдя в радиус один раз, проверяться юнит больше не будет, пока снова не зайдет в радиус извне. При этом неуязвимые юниты не проходят фильтр и игнорируются как недопустимые цели.

Соответственно,  Storm может приземлиться ультой прямо на кладку мин и ни в чем себе не отказывать — на него они не среагируют. Но если кто-то еще подойдет к герою, они, естественно, активируются.

Кто использует неуязвимость?

Интересуют только те, кто при этом двигается:
 Storm,  Juggernaut,  Tuskarr,  Void,  Ember Spirit

Статус бага в Allstars

Полностью исправлены.

Мины в Allstars не имеют мало общего со стандартными минами. Они проверяют уязвимость цели, не реагируют на юнитов в циклоне и периодически проверяют зону взрыва на наличие целей. Плюс время взрыва одинаково для парящих и наземных — 0.5 секунд.

12 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.