Areatrigger actions: различия между версиями
User1 (обсуждение | вклад) |
User1 (обсуждение | вклад) |
||
| (не показаны 2 промежуточные версии этого же участника) | |||
| Строка 11: | Строка 11: | ||
Флаги момента срабатывания. Бывают следующих видов: | Флаги момента срабатывания. Бывают следующих видов: | ||
{| class="wikitable" | {| class="wikitable" | ||
!Название | !'''Название''' | ||
!№ | !'''№ (hex)''' | ||
!Комментарий/описание | !'''Комментарий/описание''' | ||
|- | |- | ||
|'''AT_ACTION_MOMENT_ENTER''' | |'''AT_ACTION_MOMENT_ENTER''' | ||
|''' | |'''0x0001''' | ||
| | |Срабатывает при входе в зону действия AreaTrigger | ||
|- | |- | ||
|'''AT_ACTION_MOMENT_LEAVE''' | |'''AT_ACTION_MOMENT_LEAVE''' | ||
|''' | |'''0x0002''' | ||
| | |Срабатывает, когда цель покидает зону действия AreaTrigger | ||
|- | |- | ||
|''' | |'''AT_ACTION_MOMENT_UPDATE_TARGET''' | ||
|''' | |'''0x0004''' | ||
| | |Срабатывает при обновлении цели (для одиночных спеллов) | ||
|- | |- | ||
|'''AT_ACTION_MOMENT_DESPAWN''' | |'''AT_ACTION_MOMENT_DESPAWN''' | ||
|''' | |'''0x0008''' | ||
| | |Срабатывает, когда AreaTrigger исчезает (despawn) | ||
|- | |- | ||
|'''AT_ACTION_MOMENT_SPAWN''' | |'''AT_ACTION_MOMENT_SPAWN''' | ||
|''' | |'''0x0010''' | ||
| | |Срабатывает, когда AreaTrigger появляется (spawn) | ||
|- | |- | ||
|'''AT_ACTION_MOMENT_REMOVE''' | |'''AT_ACTION_MOMENT_REMOVE''' | ||
|''' | |'''0x0020''' | ||
| | |Срабатывает при удалении AreaTrigger | ||
|- | |- | ||
|'''AT_ACTION_MOMENT_ON_THE_WAY''' | |'''AT_ACTION_MOMENT_ON_THE_WAY''' | ||
|''' | |'''0x0040''' | ||
| | |Момент, когда цель находится между начальной и конечной точкой. Работает только с флагом '''ENTER''' | ||
|- | |- | ||
|'''AT_ACTION_MOMENT_ON_STOP_MOVE''' | |'''AT_ACTION_MOMENT_ON_STOP_MOVE''' | ||
|''' | |'''0x0080''' | ||
| | |Момент, когда цель остановилась между начальной и конечной точкой. Также требует флаг '''ENTER''' | ||
|- | |- | ||
|'''AT_ACTION_MOMENT_ON_ACTIVATE''' | |'''AT_ACTION_MOMENT_ON_ACTIVATE''' | ||
|''' | |'''0x0100''' | ||
| | |Срабатывает при активации AreaTrigger | ||
|- | |- | ||
|'''AT_ACTION_MOMENT_ON_CAST_ACTION''' | |'''AT_ACTION_MOMENT_ON_CAST_ACTION''' | ||
|''' | |'''0x0200''' | ||
| | |Вызывается из тика ауры (spell_aura_trigger с опцией 10) или вручную из скриптов. Требует `AT_TARGET_FLAG_ALWAYS_TRIGGER` | ||
|- | |||
|'''AT_ACTION_MOMENT_UPDATE''' | |||
|'''0x0400''' | |||
|Срабатывает при обновлении (tick'е) AreaTrigger (обычно AOE-эффекты) | |||
|- | |||
|'''AT_ACTION_MOMENT_ON_DESPAWN''' | |||
|'''0x0800''' | |||
|Срабатывает при исчезновении AreaTrigger (вариант для AOE) | |||
|- | |||
|'''AT_ACTION_MOMENT_LEAVE_ALL''' | |||
|'''0x1000''' | |||
|Срабатывает, когда **все** цели покинули зону действия AreaTrigger | |||
|} | |} | ||
| Строка 155: | Строка 167: | ||
|Удаляет объект из мира (деспаун) | |Удаляет объект из мира (деспаун) | ||
|- | |- | ||
|''' | |'''AT_ACTION_TYPE_AT_CASTER_CAST_SPELL''' | ||
|''' | |'''23''' | ||
| | |Применить заклинание от кастера АТ | ||
|} | |} | ||
Текущая версия от 15:22, 21 июля 2025
areatrigger_actions - таблица выполнения действий для areatriggers
Структура таблицы:
entry
Берется из EffectMiscValueA в спелах с эфектом SPELL_EFFECT_CREATE_AREATRIGGER или из ауры SPELL_AURA_CREATE_AREATRIGGER берется misc
id
Уникальный номер действия.
moment
Флаги момента срабатывания. Бывают следующих видов:
| Название | № (hex) | Комментарий/описание |
|---|---|---|
| AT_ACTION_MOMENT_ENTER | 0x0001 | Срабатывает при входе в зону действия AreaTrigger |
| AT_ACTION_MOMENT_LEAVE | 0x0002 | Срабатывает, когда цель покидает зону действия AreaTrigger |
| AT_ACTION_MOMENT_UPDATE_TARGET | 0x0004 | Срабатывает при обновлении цели (для одиночных спеллов) |
| AT_ACTION_MOMENT_DESPAWN | 0x0008 | Срабатывает, когда AreaTrigger исчезает (despawn) |
| AT_ACTION_MOMENT_SPAWN | 0x0010 | Срабатывает, когда AreaTrigger появляется (spawn) |
| AT_ACTION_MOMENT_REMOVE | 0x0020 | Срабатывает при удалении AreaTrigger |
| AT_ACTION_MOMENT_ON_THE_WAY | 0x0040 | Момент, когда цель находится между начальной и конечной точкой. Работает только с флагом ENTER |
| AT_ACTION_MOMENT_ON_STOP_MOVE | 0x0080 | Момент, когда цель остановилась между начальной и конечной точкой. Также требует флаг ENTER |
| AT_ACTION_MOMENT_ON_ACTIVATE | 0x0100 | Срабатывает при активации AreaTrigger |
| AT_ACTION_MOMENT_ON_CAST_ACTION | 0x0200 | Вызывается из тика ауры (spell_aura_trigger с опцией 10) или вручную из скриптов. Требует `AT_TARGET_FLAG_ALWAYS_TRIGGER` |
| AT_ACTION_MOMENT_UPDATE | 0x0400 | Срабатывает при обновлении (tick'е) AreaTrigger (обычно AOE-эффекты) |
| AT_ACTION_MOMENT_ON_DESPAWN | 0x0800 | Срабатывает при исчезновении AreaTrigger (вариант для AOE) |
| AT_ACTION_MOMENT_LEAVE_ALL | 0x1000 | Срабатывает, когда **все** цели покинули зону действия AreaTrigger |
actionType
Действие, которое выполняется на таргет (цель) при срабатывании
| Название | № | Комментарий/описание |
|---|---|---|
| AT_ACTION_TYPE_CAST_SPELL | 0 | Кастовать способность |
| AT_ACTION_TYPE_REMOVE_AURA | 1 | Удалить ауру |
| AT_ACTION_TYPE_ADD_STACK | 2 | Добавить стак |
| AT_ACTION_TYPE_REMOVE_STACK | 3 | Удалить стак |
| AT_ACTION_TYPE_CHANGE_SCALE | 4 | Изменить размер |
| AT_ACTION_TYPE_SHARE_DAMAGE | 5 | Деление урона на количество целей |
| AT_ACTION_TYPE_APPLY_MOVEMENT_FORCE | 6 | Применяет ветер (сдувает персонажей) |
| AT_ACTION_TYPE_REMOVE_MOVEMENT_FORCE | 7 | Удаляет ветер |
| AT_ACTION_TYPE_CHANGE_DURATION_ANY_AT | 8 | Изменить задержку для AreaTrigger (например, цепной реакция при взрыве бомбы - взрываются и остальные близлежащие |
| AT_ACTION_TYPE_CHANGE_AMOUNT_FROM_HEALT | 9 | Уменьшение количества возможного исцеления (волна отхила может хильнуть 100к. Первого хильнула 10к, значит, осталось 90к для последующих) |
| AT_ACTION_TYPE_RE_PATCH | 10 | hit mask 0x0400 вызывает обратное движение АТ к кастеру |
| AT_ACTION_TYPE_SET_AURA_CUSTOM_ADD | 11 | Добавляет кастомное поведение или эффект при применении ауры |
| AT_ACTION_TYPE_SET_AURA_CUSTOM_REMOVE | 12 | Удаляет кастомный эффект или поведение, связанное с аурой |
| AT_ACTION_TYPE_REMOVE_AURA_BY_CASTER | 13 | Удаляет ауру, если она была наложена текущим кастером |
| AT_ACTION_TYPE_CAST_SPELL_NOT_TRIGGER | 14 | Применяет заклинание, игнорируя все триггеры (proc, on-hit и т.д.) |
| AT_ACTION_TYPE_NO_ACTION | 15 | Ничего не делает (пустое действие, используется как заглушка) |
| AT_ACTION_TYPE_RE_PATCH | 16 | hit mask 0x0400 вызывает обратное движение АТ к кастеру |
| AT_ACTION_TYPE_REMOVE_OWNED_AURA | 17 | Удаляет ауру, принадлежащую текущему объекту (владельцу) |
| AT_ACTION_TYPE_OWNER_CAST_SPELL | 18 | Заставляет владельца текущего объекта применить заклинание |
| AT_ACTION_TYPE_RE_PATCH_SCRIPT | 19 | Запускает движение по скрипту, аналогично RE_PATCH, но с кастомным поведением |
| AT_ACTION_TYPE_CASTER_GUID_REMOVE_AURA | 20 | Удаляет ауру только в том случае, если кастер соответствует GUID |
| AT_ACTION_TYPE_CAST_SPELL_WITH_ORIGINAL_CASTER | 21 | Применяет заклинание от имени оригинального кастера |
| AT_ACTION_TYPE_DESPAWN | 22 | Удаляет объект из мира (деспаун) |
| AT_ACTION_TYPE_AT_CASTER_CAST_SPELL | 23 | Применить заклинание от кастера АТ |
targetFlags
Кого считать целью?
| Название | № (hex) | Комментарий/описание |
|---|---|---|
| AT_TARGET_FLAG_FRIENDLY | 0x0000001 | Применяется к целям, которые дружелюбны для владельца AreaTrigger (кто призвал его) |
| AT_TARGET_FLAG_VALIDATTACK | 0x0000002 | Применяется к целям, которых может атаковать владелец AreaTrigger |
| AT_TARGET_FLAG_OWNER | 0x0000004 | Применяется к владельцу AreaTrigger |
| AT_TARGET_FLAG_PLAYER | 0x0000008 | Применяется только к игрокам |
| AT_TARGET_FLAG_NOT_PET | 0x0000010 | Применяется ко всем, кроме петов |
| AT_TARGET_FLAG_CAST_AT_SRC | 0x0000020 | Применяется к местоположению AreaTrigger`а |
| AT_TARGET_FLAG_CASTER_IS_TARGET | 0x0000040 | Применяется к кастеру |
| AT_TARGET_FLAG_NOT_FULL_HP | 0x0000080 | Применяется к целям с неполным здоровьем |
| AT_TARGET_FLAG_ALWAYS_TRIGGER | 0x0000100 | Применяется к любым действиям, направленным на владельца |
| AT_TARGET_FLAG_IN_FRONT | 0x0000200 | Если цель подойдет со спины, то скилл не сработает |
| AT_TARGET_FLAG_NOT_FULL_ENERGY | 0x0000400 | Применяется к целям с неполной энергией |
| AT_TARGET_FLAG_GROUP_OR_RAID | 0x0000800 | Применяется к целям в группе или рейде с владельцем |
| AT_TARGET_FLAG_HOSTILE | 0x0001000 | Применяется к враждебным целям |
| AT_TARGET_FLAG_TARGET_IS_CASTER | 0x0002000 | Применяется к цели, если она является кастером |
| AT_TARGET_FLAG_CAST_AURA_TARGET | 0x0004000 | Применяется к цели ауры |
| AT_TARGET_FLAG_NOT_AURA_TARGET | 0x0008000 | Применяется, если цель — не цель ауры |
| AT_TARGET_FLAG_TARGET_IS_SUMMONER | 0x0010000 | Применяется к суммонеру (призывателю) |
| AT_TARGET_FLAG_NOT_OWNER | 0x0020000 | Применяется к целям, которые не являются владельцем |
| AT_TARGET_FLAG_NPC_ENTRY | 0x0040000 | Применяется к мобам по Entry |
| AT_TARGET_FLAG_TARGET_PASSANGER | 0x0080000 | Применяется к пассажирам |
| AT_TARGET_FLAG_TARGET_PASSANGER_VEH | 0x0100000 | Применяется к пассажирам в транспорте (vehicle) |
| AT_TARGET_FLAG_TARGET_IS_CASTER_2 | 0x0200000 | Альтернативная проверка на то, что цель — кастер |
| AT_TARGET_FLAG_SCRIPT | 0x0400000 | Цель определяется через скрипт |
| AT_TARGET_FLAG_CASTER_AURA_TARGET | 0x0800000 | Цель — та, на кого воздействует аура кастера |
| AT_TARGET_FLAG_NOT_IN_LOS | 0x1000000 | Применяется к целям вне Line of Sight (прямой видимости) |
| AT_TARGET_FLAG_NOT_IN_LOS_Z | 0x2000000 | Игнорирует видимость по оси Z (высота) |
| AT_TARGET_FLAG_NOT_TARGET_FALL | 0x4000000 | Не применяется к целям, находящимся в падении |
spellId
Скилл, с которым выполняется действие
maxCharges
Количество срабатываний, после которых AreaTrigger исчезнет. Например, если стоит 0, то не используется; Если = 3, то повесит ауру 3 раза, после чего исчезнет
aura
Проверяет наличие ауры на цели - если ауры нету, то действие не выполнится. Может быть отрицательным значением - тогда если есть аура, то действие не выполнится.
hasspell
Проверяет наличие выученного спела у цели. Так же может быть отрицательным, как и aura
chargeRecoveryTime
Время отката. Грубо говоря - КД между срабатываниями. T.е. если кто-то наступил на АТ, тогда повесит ауру, а следующее срабатывание будет только через выставленное КД
scale
Если не равно 0, то при попадании по цели изменяет свой размер. Может быть отрицательным и положительным, соответственно увеличивает или уменьшает размер на заданное значение
hitMaxCount
Максимально возможное число срабатываний АreaТrigger
amount
Используется только в AT_ACTION_TYPE_CHANGE_AMOUNT_FROM_HEALT. Когда amont заканчивается, АreaТrigger исчезает