Creature
Таблица creature
Таблица creature из базы данных world содержит данные о конкретных спавнах существ (индивидуальные экземпляры в мире). Каждая строка — это один спавн с уникальным GUID, который ссылается на шаблон creature_template через поле id.
| Field | Type | Attributes | Key | Null | Default | Extra |
|---|---|---|---|---|---|---|
| guid | bigint | UNSIGNED | PRIMARY | NO | 0 | |
| id | int | UNSIGNED | INDEX | NO | 0 | Creature Identifier |
| map | smallint | UNSIGNED | INDEX | NO | 0 | Map Identifier |
| zoneId | smallint | UNSIGNED | NO | 0 | Zone Identifier | |
| areaId | smallint | UNSIGNED | NO | 0 | Area Identifier | |
| spawnDifficulties | varchar(100) | utf8mb4_unicode_ci | NO | '0' | ||
| phaseUseFlags | tinyint | UNSIGNED | NO | 0 | ||
| PhaseId | int | YES | 0 | |||
| PhaseGroup | int | YES | 0 | |||
| terrainSwapMap | int | NO | -1 | |||
| modelid | int | UNSIGNED | NO | 0 | ||
| equipment_id | tinyint | NO | 0 | |||
| position_x | float | NO | 0 | |||
| position_y | float | NO | 0 | |||
| position_z | float | NO | 0 | |||
| orientation | float | NO | 0 | |||
| spawntimesecs | int | UNSIGNED | NO | 120 | ||
| wander_distance | float | NO | 0 | |||
| currentwaypoint | int | UNSIGNED | NO | 0 | ||
| curHealthPct | int | UNSIGNED | NO | 100 | ||
| MovementType | tinyint | UNSIGNED | NO | 0 | ||
| npcflag | bigint | UNSIGNED | YES | NULL | ||
| unit_flags | int | UNSIGNED | YES | NULL | ||
| unit_flags2 | int | UNSIGNED | YES | NULL | ||
| unit_flags3 | int | UNSIGNED | YES | NULL | ||
| ScriptName | varchar(64) | utf8mb4_unicode_ci | NO | |||
| StringId | varchar(64) | utf8mb4_unicode_ci | YES | NULL | ||
| VerifiedBuild | int | NO | 0 |
guid
Уникальный GUID спавна. Два разных спавна не могут иметь одинаковый GUID.
В TrinityDB принято выдавать GUID из диапазона «той экспансии, в которой спавн впервые появился на retail». Это организационное правило, помогающее не пересекаться диапазонами.
| Экспансия | Диапазон GUID (start) | Диапазон GUID (end) | Поддиапазон для ивентов (start) | Поддиапазон для ивентов (end) |
|---|---|---|---|---|
| Wrath of the Lich King (3.x) | 2000000 | 2989999 | 2800000 | 2989999 |
| Cataclysm (4.x) | 3000000 | 3989999 | 3800000 | 3989999 |
| Mists of Pandaria (5.x) | 4000000 | 4999999 | 4800000 | 4999999 |
| Warlords of Draenor (6.x) | 5000000 | 5999999 | 5800000 | 5999999 |
| Legion (7.x) | 6000000 | 6999999 | 6800000 | 6999999 |
| Battle for Azeroth (8.x) | 7000000 | 7999999 | 7800000 | 7999999 |
| Shadowlands (9.x) | 8000000 | 8999999 | 8800000 | 8999999 |
| Dragonflight (10.x) | 9000000 | 9999999 | 9800000 | 9999999 |
| The War Within (11.x) | 10000000 | 10999999 | 10800000 | 10999999 |
Пример: 9000123
id
ID существа (Creature entry). Ссылка на creature_template → entry.
Пример: 1976
map
ID карты, на которой расположен спавн. Обычно соответствует клиентским данным (DB2: Map.db2).
Пример: 0
zoneId
ID зоны, в которой расположен спавн. Обычно соответствует клиентским данным (DB2: AreaTable.db2, зона).
Пример: 1519
areaId
ID области (area), в которой расположен спавн. Обычно соответствует клиентским данным (DB2: AreaTable.db2, sub-area).
Пример: 5150
spawnDifficulties
Список сложностей, на которых должен существовать данный спавн. Формат: список ID сложностей, разделённых запятыми.
Пример: "1,2,23"
Возможные значения (Difficulty ID)
| Name | Value |
|---|---|
| DIFFICULTY_NONE | 0 |
| DIFFICULTY_NORMAL | 1 |
| DIFFICULTY_HEROIC | 2 |
| DIFFICULTY_10_N | 3 |
| DIFFICULTY_25_N | 4 |
| DIFFICULTY_10_HC | 5 |
| DIFFICULTY_25_HC | 6 |
| DIFFICULTY_LFR | 7 |
| DIFFICULTY_MYTHIC_KEYSTONE | 8 |
| DIFFICULTY_40 | 9 |
| DIFFICULTY_3_MAN_SCENARIO_HC | 11 |
| DIFFICULTY_3_MAN_SCENARIO_N | 12 |
| DIFFICULTY_NORMAL_RAID | 14 |
| DIFFICULTY_HEROIC_RAID | 15 |
| DIFFICULTY_MYTHIC_RAID | 16 |
| DIFFICULTY_LFR_NEW | 17 |
| DIFFICULTY_EVENT_RAID | 18 |
| DIFFICULTY_EVENT_DUNGEON | 19 |
| DIFFICULTY_EVENT_SCENARIO | 20 |
| DIFFICULTY_MYTHIC | 23 |
| DIFFICULTY_TIMEWALKING | 24 |
| DIFFICULTY_WORLD_PVP_SCENARIO | 25 |
| DIFFICULTY_5_MAN_SCENARIO_N | 26 |
| DIFFICULTY_20_MAN_SCENARIO_N | 27 |
| DIFFICULTY_PVEVP_SCENARIO | 29 |
| DIFFICULTY_EVENT_SCENARIO_6 | 30 |
| DIFFICULTY_WORLD_PVP_SCENARIO_2 | 32 |
| DIFFICULTY_TIMEWALKING_RAID | 33 |
| DIFFICULTY_PVP | 34 |
| DIFFICULTY_NORMAL_ISLAND | 38 |
| DIFFICULTY_HEROIC_ISLAND | 39 |
| DIFFICULTY_MYTHIC_ISLAND | 40 |
| DIFFICULTY_PVP_ISLAND | 45 |
| DIFFICULTY_NORMAL_WARFRONT | 147 |
| DIFFICULTY_HEROIC_WARFRONT | 149 |
| DIFFICULTY_LFR_15TH_ANNIVERSARY | 151 |
| DIFFICULTY_VISIONS_OF_NZOTH | 152 |
| DIFFICULTY_TEEMING_ISLAND | 153 |
phaseUseFlags
Флаги применения фазирования (битовая маска) для полей PhaseId и PhaseGroup.
| Name | Value (hex) | Описание |
|---|---|---|
| PHASE_USE_FLAGS_NONE | 0x0 | Обычное поведение (как задано PhaseId/PhaseGroup) |
| PHASE_USE_FLAGS_ALWAYS_VISIBLE | 0x1 | Всегда видим (игнорирует фазирование) |
| PHASE_USE_FLAGS_INVERSE | 0x2 | Инвертировать условие фазирования |
Пример: 0
PhaseId
Фаза, в которой находится спавн. Ссылка на клиентские данные (DB2: Phase.db2).
| Value | Описание |
|---|---|
| 0 | Фаза не задана (обычное поведение) |
| >0 | ID фазы (Phase.db2) |
Пример: 1234
PhaseGroup
Группа фаз, в которой находится спавн. Группа задаёт «набор фаз одновременно».
Ссылка на клиентские данные (DB2: PhaseGroup.db2).
| Value | Описание |
|---|---|
| 0 | Группа фаз не задана |
| >0 | ID группы фаз (PhaseGroup.db2) |
Пример: 55
terrainSwapMap
ID «terrain swap» (переключение террейна/варианта карты). Обычно соответствует клиентским данным (DB2: TerrainSwapMap.db2).
| Value | Описание |
|---|---|
| -1 | Не используется / без terrain swap |
| 0..N | ID terrain swap (TerrainSwapMap.db2) |
Пример: -1
modelid
Переопределение модели (DisplayID) для конкретного спавна.
| Value | Описание |
|---|---|
| 0 | Модель выбирается ядром из набора моделей, заданных в creature_template (случайная/подходящая) |
| >0 | Явный DisplayID (как правило из CreatureDisplayInfo.db2)
|
Пример: 98765
equipment_id
Набор экипировки спавна из creature_equip_template.
| Value | Описание |
|---|---|
| -1 | Выбрать случайный набор экипировки из доступных наборов для этого существа |
| 0 | Экипировка не задана |
| 1..N | ID набора (поле creature_equip_template.id)
|
Пример: -1
position_x
X-координата точки спавна.
Пример: -8833.12
position_y
Y-координата точки спавна.
Пример: 628.44
position_z
Z-координата точки спавна.
Пример: 94.23
orientation
Ориентация (угол поворота) в радианах.
Север = 0.0, юг = pi (≈ 3.14159).
Пример: 1.5708
spawntimesecs
Время респавна в секундах.
Пример: 300
wander_distance
Максимальная дистанция, в пределах которой существо может «гулять» относительно точки спавна. Также влияет на то, насколько далеко существо может уходить от точки спавна при MovementType = 1.
Пример: 10
currentwaypoint
Текущая точка пути (waypoint), если существо использует движение по маршруту (waypoints). Используется как «с какой точки продолжать».
Пример: 0
curHealthPct
Процент здоровья, с которым существо появляется при спавне (1–100).
| Value | Описание |
|---|---|
| 1..100 | Процент здоровья при появлении |
Пример: 100
MovementType
Тип движения спавна. Значение из спавна переопределяет значение из creature_template.
| Value | Описание |
|---|---|
| 0 | Idle — стоит на месте |
| 1 | Random — случайное перемещение в радиусе wander_distance |
| 2 | Waypoint — движение по маршруту (waypoint) |
Пример: 2
npcflag
Переопределение флагов NPC (npcflag) для конкретного спавна. Если значение NULL, используется npcflag из creature_template. Если задано — значение спавна перекрывает шаблон.
Пример: 1
unit_flags
Переопределение unit_flags для конкретного спавна. Если значение NULL, используется unit_flags из creature_template.
Это битовая маска; полный список флагов находится в исходниках TrinityCore (UnitDefines.h).
Пример: 0
unit_flags2
Переопределение unit_flags2 для конкретного спавна. Если значение NULL, используется unit_flags2 из creature_template.
Это битовая маска; полный список флагов находится в исходниках TrinityCore (UnitDefines.h).
Пример: NULL
unit_flags3
Переопределение unit_flags3 для конкретного спавна. Если значение NULL, используется unit_flags3 из creature_template.
Это битовая маска; полный список флагов находится в исходниках TrinityCore (UnitDefines.h).
Пример: NULL
ScriptName
Имя C++-скрипта, который использует данный спавн (если нужно). Привязывает запись БД к коду ядра.
Пример: npc_my_custom_ai
StringId
Строковый идентификатор спавна (string id). Используется ядром как «именованный идентификатор» для ссылок на конкретный спавн в логике/скриптах/условиях. Если NULL, строковый идентификатор не задан.
Пример: "stormwind_guard_gate_01"
VerifiedBuild
Служебное поле TrinityDB Team: отметка, из какого client build подтверждены данные.
| Value | Описание |
|---|---|
| 0 | Не проверено/не распарсено |
| >0 | Распарсено из WDB указанного build клиента |
| -1 | Заглушка до появления корректных данных |
| -(Client Build) | Распарсено из WDB указанного build и затем вручную правилось |
Пример: 0