Альтернативное применение способностей (база)

Added by , published
Алгоритмы, Наработки и Способности
Способ реализации:
GUI
Тип:
Наработка
Версия Warcraft:
Любая

Введение

Доброго времени суток. Решил переделать свою небольшую статью, значительно дополнив ее. Речь пойдет об альтернативном применении способностей. Суть в том, что автокасты большинства заклинаний можно отслеживать, а это дает огромный простор для более гибкого их применения. Небольшой пример для представления - заклинание священника «Духовное пламя», которое увеличивает урон и защиту выбранного юнита. Зная особенности автоприменения этой способности (об этом будет далее) и отследив приказ на автокаст (innerfireon и innerfireoff) можно добавить следующее свойство: при альтернативном применении заклинания (т.е. автоматическом) священник будет также восстанавливать союзнику 100 ед. здоровья.
С помощью Boolean-переменной мы будем отслеживать включено ли автоприменение
С помощью той же переменной мы проверяем на автоприменении ли способность или нет
Далее рассмотрим каждое из возможных заклинаний с альтернативным применением и особенности их автокастов.

Способности

Inner Fire
Автоприменение: применяет только в бою, предпочтение отдается юниту с самой высокой атакой (между пеоном с 30 ед. атаки и минотавром с 10 ед. - предпочтение будет всегда у первого). При равном значении атаки предпочтение отдается самому здоровому юниту (в процентном, а не количественном отношении, т.е. для кастера фуловый пеон с 250 ед. здоровья будет приоритетнее, чем раненый минотавр с 1200 ед. текущего здоровья). Уровень юнита и его тип (герой/не герой, наземный/воздушный и т.д.) не играют роли. Не кастует в юнитов не имеющих атаки.
Примечание:
логика ИИ, скорее всего в том, чтобы накинуть баф на того юнита, который выжмет из него максимум (получит больше атаки и сможет дольше жить).

Heal
Автоприменение: применяет всегда, если рядом есть раненый юнит. Выбирает в первую очередь самого раненого юнита (в процентах).

Slow
Автоприменение: применяется в бою. В приоритете враг прямо перед кастером (либо тот, который находится к заклинателю под наименьшим углом). При равном угле до врага, выбирается ближайший. Уровень юнита и его тип (герой/не герой, наземный/воздушный и т.д.) не играют роли. Не играет роли также скорость передвижения/атаки врага, а так же двигается он или стоит на месте.
Примечание:
думаю, логика в том, чтобы быстрее накладывать дебаф на врагов (тратить меньше времени на поворот к цели).

Spell Steal
Автоприменение: применяется в бою. В приоритете самая дальняя цель (независимо друг это или враг, а так же сколько на цели бафов/дебафов). Крадется баф с наибольшим приоритетом и переносится так же на самую дальнюю от кастера цель (с теми же оговорками).
Примечание:
предположительно, логика ИИ при выборе самой дальней цели в том, что эта самая цель может покинуть радиус применения каста, тем самым уменьшив количество потенциальных целей.
Примечание 2:
если в разрешенных целях выставить врагов и себя, убрав друзей и союзников, то кастер будет перекидывать дебафы только с себя, а бафы только на себя.

Repair/Restoration/Renew
Автоприменение: применяется всегда, если рядом есть поврежденные здания или механизмы. В приоритете ближайшее здание/механизм. Степень повреждения здания/механизма, производит оно исследование или тренирует войска, а так же стоимость ремонта не влияют на выбор цели.
Примечание:
можно ремонтировать живые войска, если выставить их в разрешенных целях.
Примечание 2:
у ремонта Альянса и Орды одинаковые id приказов, у нежити и ночных эльфов они отличаются и не конфликтуют.

Blood Lust/Frenzy
Автоприменение: применяется в бою. В приоритете самый дальний союзник, однако он должен быть атакован, т.е. между самым дальним союзником, атакующим врага, и ближайшим союзником, атакующим и атакованным, кастер всегда выбирает второго. Уровень юнита и его тип (герой/не герой, наземный/воздушный и т.д.) не играют роли в выборе цели. Не играет роли также скорость передвижения/атаки.
Примечание:
логика такая же, как и у Похищения магии, однако неясно почему ИИ отдает предпочтение атакованным юнитам, ведь блудласт не дает защиты или лечения.
Примечание 2:
у нейтралов есть способность Ярость (Frenzy) идентичная Кровожадности, но имеющая свой собственный id приказа, который не конфликтует с bloodlust.

Raise Dead
Автоприменение: применяется всегда, если рядом есть трупы. В приоритете ближайшие к кастеру трупы. Принадлежность трупов (союзный или вражеский), их уровень, а так же степень разложения не влияют на выбор цели.

Carrion Scarabs
Автоприменение: применяется всегда, если рядом есть трупы. В приоритете ближайшие к кастеру трупы. Принадлежность трупов (союзный или вражеский), их уровень, а так же степень разложения не влияют на выбор цели.

Replenish Health
Автоприменение: применяется всегда, если в радиусе применения есть хотя бы один раненый юнит.

Replenish Mana
Автоприменение: применяется всегда, если в радиусе применения есть хотя бы один юнит с неполной маной.

Web
Автоприменение: применяется в бою. В приоритете ближайший летающий враг.
Примечание:
если в разрешенных целях добавить наземных и союзников, кастер все равно будет выбирать ближайшую цель.

Curse
Автоприменение: применяется в бою. В приоритете ближайший враг. Не кастует в юнитов без атаки.
Примечание:
обратная логика от заклинаний с выбором самой дальней цели - ближайший враг наиболее вероятно вступит в бой (или уже в нем), соответственно нужно чтобы именно он промахивался.

Frost Armor
Автоприменение: применяется в бою. Применяется на случайного союзника, которого атакует враг.

Faerie Fire
Автоприменение: применяется в бою. В приоритете ближайший враг в бою (не важно атакован ли он при этом союзными войсками или нет). Не кастуется на юнитов без атаки.

Vengeance
Автоприменение: применяется всегда, если рядом есть трупы. В приоритете ближайшие к кастеру трупы. Принадлежность трупов (союзный или вражеский), их уровень, а так же степень разложения не влияют на выбор цели. Прекращает автокаст при достижении максимума поднятых существ.

Auto Dispel
Автоприменение: применяется всегда пока есть негатив эффекты на союзных войсках либо в бою при наличии бафов/дебафов. В приоритете союзники с дебафами, при их отсутствии - враги с бафами. Для каждой из категорий в приоритете самая дальняя цель. Не кастуется в призванных юнитов на автокасте (даже при отсутствии каких либо других бафов/дебафов на поле боя, может выбрать суммона целью только при наличии на нем бафа).
Примечание:
логика такая же как и в Похищении магии. С первого взгляда то, что на автокасте не выбирает суммонов кажется не очень удобным, однако это можно использовать при альтернативном касте, например, наносить урон юниту, вызвавшего этого суммона

Phase Shift
Автоприменение: применяется в бою при получении урона кастером. С учетом времени каста в 100% случаев получает урон от заклинаний после чего уходит в шифт. В зависимости от времени перезарядки умения (чем меньше тем лучше) и скорости анимации атаки врага, может доджить атаки в 2 атаках из 10 против милишников и в 3 атаках из 10 против ренжей (результат при времени каста и кд в 2 сек.) Не уходит в шифт при получении урона от бафов типа DOT, не уходит в шифт при применении на юнита заклинаний с дебафами но без урона, уходит в шифт при получении триггерного урона (однако не доджит его), так же получает урон в шифте если триггерный урон наносится по самому юниту (без проверки условия в шифте он или нет).
Примечание:
наверное, самый бесполезный скил, если смотреть со стороны автокаста. На автомате не доджит практически ничего, только при ручном применении. Но и с ним можно придумать альтер.применение, к примеру вызов иллюзии юнита, пока он в шифте и развеивании ее во время его выхода.

Recharge
Автоприменение: применяется всегда, если рядом есть хотя бы один юнит с неполной маной или здоровьем. В приоритете юнит с самым большим количеством отсутствующего поинта, т.е. не самый раненый или самый истощенный, а тот у кого отсутствующих поинтов больше (например, целью каста будет не футман с 20 ед. здоровья из 100, а герой с 100 ед. маны из 1000).
Примечание:
невозможно нормально рассчитать расход маны у данной способности, т.к. как такового манакоста у нее нет, но она тратит ману на каждую восстановленную единицу здоровья и маны у цели, т.е. можно легко лишиться всей маны за 1 каст.

Parasite
Автоприменение: применяется в бою. Выбирает всегда самую дальнюю цель, независимо от количества здоровья.

Self Destruct
Автоприменение: применяется в бою. В приоритете ближайший враг. Не зависимо от того здание это или юнит, одна цель или несколько.

Arrows-способности

Cold Arrows/Incinerate/Poison Arrows/Searing Arrows/Black Arrow
Автоприменение: применяется всегда при атаке при наличии необходимого количества маны.
Самый интересный тип заклинаний с позиции их применения. Являясь атакой, это заклинание может не попасть по цели (промахнуться). И самое главное, что у этих заклинаний целых 3 id приказов: включить автоприменение, выключить автоприменение и ручное применение. Комбинируя эти приказы между собой можно создать 3 вариации каста (автоприменение, ручное при включенном автоприменении, ручное при выключенном автоприменении).

Сломанные способности

Ensnare/Unstable Concontion
Не смотря на то, что в варкрафте есть id приказов на автокаст и его прекращение (ensnareon и ensnareoff, unstableconcontionon и unstableconcontionoff), а у Самоубийства еще и в РО прописана подсказка в описании автоматического применения, данные способности невозможно поставить на автокаст, даже при помощи триггеров (принудительного выполнения указанных приказов).

Orb of Death/Undead Load On
Хоть и автоприменение у этих способностей работает, у них напрочь отсутствуют приказы включения и отключения оного. Соответственно автоприменение не отследить и в рамках этой статьи, для нас эти способности бесполезны.

P.S:
идея на подумать: можно создать способность-пустышку с автоматическим применением, например, Лечение, указать в разрешенных целях - Нет, и отслеживать включение автоприменения у этого каста. Таким образом можно изменить способ каста вообще любого заклинания в игре))

Послесловие

В данной статье я разобрал все доступные в игре заклинания с автоприменением. Многие скажут, что в статье были простенькие примеры альтернативного применения способностей, да они здесь и не к чему. Моей целью было дать базу по тому, как эти заклинания применяются в авто-режиме, далее все зависит только от вашей фантазии. Дерзайте, никогда не поздно открывать Warcraft по-новому.
`
LOADING AD...
16
От себя добавлю что прикольно бы было сделать что-то типа этого:
Есть абилка на основе автокаста, допустим без цели. При нажатии по ней ПКМ менять ее на другую абилку техникой для того чтоб иконка менялась, т.е. туда-сюда менять можно дроча ПКМ. Суть в том что сама абилка не кастится сама на автокасте, а возможность нажать по ней ПКМ служит исключительно для переключения "режима" абилки. Недавно даже эту тему тестил и вроде нашел способ не отображать анимацию автокаста вокруг иконки не отдавая повторный приказ юниту тем самым не стопая его (естесна для 1.26).
4
Немного ещё интересного факта о "трупоеды" и "оживить мертвых".
Нельзя заставить бота вызывать эти способности руками (напрямую нажимая на способность) или через триггер (отдать приказ вызова способности)
Т.е.:
Если поставить поставить некроманта за синего игрока рядом с кладбищем и получить над ним контроль, после нажать "оживить мертвых" он выдаст "рядом нет трупов" хотя трупы есть.
Аналогично через триггер (если контролирует бот)
26
Уверен что погрузка трупов и сфера сфинкса не имеет ордера вообще? Может оно как с инвентарём - только числовое значение, без строчного аналога.
Replies (3)
9
Да, уверен. Перепробовал все, что только можно
26
Kalvin273, даже числовой не показывает?
8
Лайк, крутая статья, пожалуй в избранное поставлю, может пригодится.
14
Хоть и автоприменение у этих способностей работает, у них напрочь отсутствуют приказы включения и отключения оного. Соответственно автоприменение не отследить и в рамках этой статьи, для нас эти способности бесполезны.
Orb of Death
OrderOn = 852540
OrderOff = 852541
Undead Load On
OrderOn = 852051
OrderOff = 852052
1
Spell Steal. Примечание 2
Балуюсь сейчас немного с заклинаниями. В задумке была идея сделать воина ближнего боя, способного воровать для себя любимого чужие заклинания и снимать с себя же дебаффы, исключая других союзников.
Тут и получился подводный камень: даже настроив приоритеты у заклинаний, воины напрочь отказываются снимать с самих себя замедление (на другом пока не тестировал). Даже исключая все заклинания, что могли конфликтовать и сбивать приоритеты, экспериментальным путём я выяснил, что они, почему-то, не кастую Spell Steal на самих себя, чтобы сбросить дебафф замедления, несмотря на доступ к заклинанию и отсутсвием онного в куллдауне. Когда же ты лично, каждому прокликиваешь приминение на самих себя, то только в таком случае заклинатель снимает с себя дебаффы.
Кратко: Spell Steal не кастуется на самого заклинателя при автокасте. Нужно его прокликивать самостоятельно. Вероятно конфликт с оригинальным персонажем: Ведьмак. Ведьмак имеет невосприимчивость, а значит Близзарды не добавили в интеллект автокаста применение на самого себя, если невосприимчивость отсутствует. (2-е фото автокаст не реагирует, 3-е фото применение способности на кастере "ручками")
P.S. Также, если не поставить в области воздействия 1 или любое близкое к минимуму значение, заклинания будут автоматически "прыгать" к союзникам, даже если стоят значения Враг и Сам воин (тестировал на внутреннем огне)
To leave a comment please sign in to the site.