Spell scripts
Таблица spell_scripts
Таблица spell_scripts из базы данных world — часть Script System. Содержит **скриптовые шаги** (команды), которые выполняются при срабатывании заклинаний с эффектом SPELL_EFFECT_DUMMY (3) или SPELL_EFFECT_SCRIPT_EFFECT (77). Для одного и того же id может быть несколько строк — каждая строка отдельная команда с собственным delay.
| Field | Type | Attributes | Key | Null | Default | Extra |
|---|---|---|---|---|---|---|
| id | int | UNSIGNED | NO | 0 | ||
| effIndex | tinyint | UNSIGNED | NO | 0 | ||
| delay | int | UNSIGNED | NO | 0 | ||
| command | int | UNSIGNED | NO | 0 | ||
| datalong | int | UNSIGNED | NO | 0 | ||
| datalong2 | int | UNSIGNED | NO | 0 | ||
| dataint | int | NO | 0 | |||
| x | float | NO | 0 | |||
| y | float | NO | 0 | |||
| z | float | NO | 0 | |||
| o | float | NO | 0 | |||
| Comment | varchar(255) | utf8mb4_unicode_ci | NO |
id
Для spell_scripts — это Spell ID, который триггерит данный скрипт.
Пример: 53823
effIndex
Индекс эффекта заклинания, к которому применяется скрипт (обычно 0–2).
| Value | Описание |
|---|---|
| 0 | Effect #0 |
| 1 | Effect #1 |
| 2 | Effect #2 |
Пример: 0
delay
Задержка перед выполнением этого шага, в секундах.
0— выполнить сразу.
Пример: 2
command
Тип действия, которое будет выполнено после delay.
| Value | Name | Описание |
|---|---|---|
| 0 | TALK | Реплика/крик/шёпот/эмоут-текст |
| 1 | EMOTE | Проиграть emote |
| 2 | FIELD_SET | Установить значение поля по индексу |
| 3 | MOVE_TO | Переместить существо в точку |
| 4 | FLAG_SET | Установить флаги (битовую маску) в поле |
| 5 | FLAG_REMOVE | Снять флаги (битовую маску) в поле |
| 6 | TELEPORT_TO | Телепортировать в точку |
| 7 | QUEST_EXPLORED | Засчитать «исследование» для квеста |
| 8 | KILL_CREDIT | Выдать kill credit |
| 9 | RESPAWN_GAMEOBJECT | Респавн GameObject по GUID |
| 10 | TEMP_SUMMON_CREATURE | Временно призвать существо |
| 11 | OPEN_DOOR | Открыть дверь (GameObject) |
| 12 | CLOSE_DOOR | Закрыть дверь (GameObject) |
| 13 | ACTIVATE_OBJECT | Активировать объект (GameObject) |
| 14 | REMOVE_AURA | Снять ауру по Spell ID |
| 15 | CAST_SPELL | Каст Spell ID по заданным правилам |
| 16 | PLAY_SOUND | Проиграть звук |
| 17 | CREATE_ITEM | Создать предмет(ы) игроку |
| 18 | DESPAWN_SELF | Деспавн существа/объекта |
| 20 | LOAD_PATH | Запустить waypoint-движение по пути |
| 21 | CALLSCRIPT_TO_UNIT | Вызвать другой *_scripts на юните |
| 22 | KILL | Убить существо (опционально удалить труп) |
| 30 | ORIENTATION | Повернуть юнит (к цели или к углу) |
| 31 | EQUIP | Поставить комплект экипировки |
| 32 | MODEL | Сменить модель |
| 33 | CLOSE_GOSSIP | Закрыть окно gossip |
| 34 | PLAYMOVIE | Проиграть ролик (movie) |
Пример: 15
datalong
Параметр №1. Смысл зависит от command:
| command | datalong — что хранится |
|---|---|
| TALK | Режим текста (0=say, 1=yell, 2=text emote, 3=boss emote, 4=whisper, 5=boss whisper) |
| EMOTE | Emote ID |
| FIELD_SET | Индекс поля |
| FLAG_SET / FLAG_REMOVE | Индекс поля |
| TELEPORT_TO | MapID |
| QUEST_EXPLORED | Quest ID |
| KILL_CREDIT | Creature entry (kill credit) |
| RESPAWN_GAMEOBJECT | GameObject GUID |
| TEMP_SUMMON_CREATURE | Creature entry |
| OPEN_DOOR / CLOSE_DOOR | Door GameObject GUID |
| REMOVE_AURA | Spell ID |
| CAST_SPELL | Spell ID |
| PLAY_SOUND | Sound ID |
| CREATE_ITEM | Item entry |
| DESPAWN_SELF | Задержка деспавна |
| LOAD_PATH | Path ID (waypoint_data.id) |
| CALLSCRIPT_TO_UNIT | entry или GUID искомого существа (см. dataint) |
| ORIENTATION | 0 — повернуть по углу из o; !=0 — повернуть к цели |
| EQUIP | ID набора экипировки (equipment entry) |
| MODEL | Model ID |
| PLAYMOVIE | Movie ID |
Пример: 12345
datalong2
Параметр №2. Смысл зависит от command:
| command | datalong2 — что хранится |
|---|---|
| EMOTE | >0 — emote state, 0 — oneshot |
| MOVE_TO | Длительность движения (время) |
| FLAG_SET / FLAG_REMOVE | Бит(ы) флагов |
| TELEPORT_TO | 0 — телепорт Player, 1 — телепорт Creature |
| QUEST_EXPLORED | Дистанция (min 5), на которой зачтётся условие |
| KILL_CREDIT | >0 — кредит группе, 0 — только игроку |
| RESPAWN_GAMEOBJECT | Despawn time (сек), min 5 |
| TEMP_SUMMON_CREATURE | Despawn time (мс) |
| OPEN_DOOR | Задержка перед закрытием (мс), min 15000 |
| CLOSE_DOOR | Задержка перед открытием (мс), min 15000 |
| REMOVE_AURA | >0 — снять с source; иначе с target |
| CAST_SPELL | Направление/режим каста (0..4) |
| PLAY_SOUND | Режим проигрывания (0..3) |
| CREATE_ITEM | Количество предметов |
| LOAD_PATH | >0 — повторяемое движение |
| CALLSCRIPT_TO_UNIT | ID скрипта из *_scripts |
Пример: 0
dataint
Параметр №3. Используется не всеми командами.
| command | dataint — что хранится |
|---|---|
| TALK | BroadcastText ID (broadcast_text.id) |
| CAST_SPELL | При datalong2=4 — creature entry цели; иначе — trigger flags/атрибут для CastSpell |
| CALLSCRIPT_TO_UNIT | Какую таблицу *_scripts вызвать: 3=spell_scripts, 5=event_scripts, 6=waypoint_scripts |
| KILL | 1 — удалить труп |
Пример: 3
x
Float-параметр X. Чаще всего координата для команд, работающих с точками (например MOVE_TO/TELEPORT_TO/TEMP_SUMMON_CREATURE). Также может использоваться как радиус поиска (например, при CAST_SPELL с datalong2=4).
Пример: -9465.12
y
Float-параметр Y (обычно координата).
Пример: 64.80
z
Float-параметр Z (обычно координата).
Пример: 56.15
o
Float-параметр O (orientation). Используется в командах, где нужна ориентация (например TELEPORT_TO, TEMP_SUMMON_CREATURE, ORIENTATION).
Пример: 3.14159
Comment
Комментарий/пояснение строки (для удобства сопровождения).
Пример: "Cast spell on target after 2s"