StarCraft 2: Создание простой ауры через валидаторы

» Раздел: 1. Основы
Небольшой дисклеймер:
  1. Статья для редактора на английском, если кто даст название всех полей на русском - добавлю в статью в скобочках
  2. Статья ориентирована на все уровни, ибо видел очень много статей как делать ауры неправильно
  3. Вы должны четко представлять себе что такое аура ;)
Итак, вы здесь для того, чтобы создать ауру для юнита.
Наша аура будет называться Slowness, и будет замедлять вражеских юнитов на 60%
Носителем будет любой юнит, например марик.
Работа будет проходить так - вначале мы создадим все необходимые эффекты, а потом будет менять в них всякие данные и скреплять между собой. Ориентироваться я буду по их названиям.
Под "Создаем" имеется ввиду - правый клик, Add нечто. Мы ничего не копируем, и создадим всё сами, своими руками.
Настройки редактора: Английский язык, Table View: Show Field Categories, Combine Structure Values
Проверяем: Найдите в Units Марика и проверьте что первое поле у него называется: Ability: Abilities +
Окей, начнём:

Подготовительные Работы

Behaviors:

  1. Создаем новый behavior типа buff с именем Slowness (Aura).
Тот, у кого будет этот behavior - будет носителем ауры.
Не забывайте жать Suggest, чтобы ID был красивым и правильным (в данном случае это будет SlownessAura)
  1. Создаем другой behavior, опять же buff с именем Slowness.
Этот behavior будет вешаться на юнитов, находящихся под воздействием ауры.
Собственно всё, к ним мы вернемся чуть позже.

Effects:

С Вашего позволения, я перестану писать слово "создаем", додумайте его сами.
  1. Эффект Slowness (Search) типа Search Area
Основной эффект, отвечающий за то, чтобы аура искала себе юнитов
  1. Эффект Slowness (Search Apply) типа Apply Behavior
Эффект, который будет накладывать Slowness на жертву.
Собственно костяк готов, теперь самый большой раздел, который мы будет сразу наполнять.

Validators:

(Надеюсь, все знают, как открыть эту вкладку)
Причина этой статьи, нигде не видел чтобы ауру делали так, хотя это проще, логичнее и естественней
  1. Создаем валидатор с именем Enemies (Target Filter) типа Unit Filters
  • и сразу в Validator:Filters ставим в Excluded следующие параметры: Dead, Structure, HarvestableResource, RawResource, Missile, Destructible, Item, UnderConstruction, Invulnerable
  • а также, внизу (всё там же, в Validator:Filters): снимаем: Player, Ally и Neutral
Этот валидатор будет отвечать за определение юнитов-врагов, на которых будет накладываться аура. Назван он не по имени спелла, так как его вполне можно применять и к другим заклинаниям. То, что он делает конкретно - должно быть вполне понятно, если нет - пишите, я разъясню.
  1. Создаем валидатор с именем Slowness (Caster Alive) такого же типа - Unit Filters
  • в Validator:Filters ставим Dead: Excluded, остальное оставим по умолчанию
  • а в Validator:Unit + ставим Slowness (Search Apply): Source
то есть Effect в этом поле будет Slowness (Search Apply), а Value - Source
Этот валидатор будет проверять, что Source (тот, кто наложил эффект) Slowness (Search Apply) не является мёртвым.
  1. Создаем валидатор с именем Slowness (Range) типа - Location Range
  • в Target: Location + мы вставляем Target Unit
  • Validator: Compare => Less Than Or Equal To
  • Validator: Range => 3
  • Validator: Value + уже знакомое нам Slowness (Search Apply): Source
Здесь всё не менее логично - мы уже берём знакомого Source (того, кто наложил эффект) Slowness (Search Apply)
и сверяем его дистанцию до цели - она должна быть меньше или равна трём.
  1. Последний валидатор - Slowness (Not Exist) типа Unit Compare Behavior Count
  • Validator: Behavior будет Slowness
Всё более чем просто, мы проверяем что behavior отсутствует на юните

Основное

Всё готово, скрутим всё вместе!

Effects

  1. Slowness (Search)
  • в Search: Areas добавляем новую область, с эффектом Slowness (Search Apply) и дистанцией (Range): 3
Должно выглядеть так:
Search: Areas: (360):(-1):(3):(0):(Slowness (Search Apply))
И переводится как - Дорогой Slowness (Search), каждый раз, как ты будешь вызван, ищи, пожалуйста, в области радиусом 3 вокруг себя юниты, и накладывай на них (Slowness (Search Apply))
Что же, займемся этим эффектом
  1. Slowness (Search Apply)
  • Effect: Behavior => Slowness, надеюсь тут всё понятно
  • Effect: Validators +
  • Enemies (Target Filter) Мы говорим, что накладывать этот эффект можно только если цель пройдет проверку валиатором, в котором мы указали, что подходят только живые враги-юниты.
  • туда же добавляем Slowness (Not Exist), чтобы эффект не накладывал behavior на уже замедленных. Ничем особым это не грозит, но, у нас всё чисто и красиво. Да и в графике это потом поможет.
C эффектами кончено, возвращаемся оттуда, откуда мы начали - к Behaviors

Behaviors:

  1. Slowness. Наш дополнительный behavior, тот самый, что замедляет юнитов.
  • Behavior: Modification+ -> Movement -> Movement Speed Multiplier ставим 0.4 (что означает 40%)
  • Behavior: Validators (Remove) +
    • Slowness (Caster Alive) удалить этот behavior, если тот, кто его наложил (тот самый Source) умер
    • Slowness (Range) удалить этот behavior, если расстояние между Source и юнитом-под-замедлением больше чем указано в этом валидаторе
  • Behavior: Alignment - Negative
  • UI: Icon так как наш валидатор не мигает, можно поставить няшную иконку
  • UI: Tooltip - тут можно вписать такую классную вещь:
Этот бедняга замедлен на <d ref="100 - (Behavior,Slowness,Modification[0].MoveSpeedMultiplier[0]*100)"/>%
Это классая тема только потому, что просто <d ref="Behavior,Slowness,Modification[0].MoveSpeedMultiplier[0]"/>% будет выдавать *40%*, хотя на самом деле юнит замедляется на *60%* (а вот его скорость умножается на *0.4*)
  1. Slowness (Aura) Наш основной behavior, дает ауру.
  • Behavior: Alignment - Positive
  • Effect: Effect - Periodic => Slowness (Search)
Этот behavior отвечает за ауру, соответственно он должен применять эффект поиска юнитов вокруг себя как можно чаще, поэтому второе изменение будет:
  • Stats: Period => 0.1
В своей карте я ставлю 0.0625 и не парюсь, так что здесь дело вкуса и оптимизации.
Ещё раз для закрепления: Effect: Effect - Periodic будет применятся каждый Stats: Period на том юните, на котором висит данный
behavior. Так что сейчас самое время повесить его на марика...
А, стоп, поставьте няшную иконочку в UI: Icon и напишите что-нибудь в UI: Tooltip :P

Проверка

В Units выделите марика и поставьте ему в Behavior: Behaviors + Slowness (Aura)
В основном окне редатора поставьте 10-30 лингов и 1-2 марика, естественно за разных игроков - вуаля, аура работает

Возможные неполадки

  • Иконка на линге не появляется => вы напутали что-то с эффектами/behavior'ами
  • Иконка на линге ужасно мигает => вы напутали что-то с валидаторами
  • Аура сохраняется даже после гибели марика / после разрыва дистанции => вы напутали что-то с валидаторами
  • Все прекрасно работает, но нет никакой графики => В этой статье она и не рассматривается, ибо она достаточно пробная, и больше ориентирована на правильное создание ауры, без мигающего UI и постоянно накладываемых behavior'ов

Тестовая карта для проверки

Заключение

Ну и ради интереса, стоит ещё писать? О чём? Будет ли эта статья кем-нибудь увидена? So many questions ^_^

Просмотров: 1 441

2 комментария удалено