Criteria data
Таблица criteria_data
Таблица criteria_data из базы данных world хранит **дополнительные требования/ограничения** для критериев (criteria) системы достижений. Каждая строка описывает одно условие, привязанное к criteria_id. Поля value1 и value2 интерпретируются в зависимости от type.
PRIMARY KEY составной: (criteria_id, type).
| Field | Type | Attributes | Key | Null | Default | Extra |
|---|---|---|---|---|---|---|
| criteria_id | int | PRIMARY | NO | |||
| type | tinyint | UNSIGNED | PRIMARY | NO | 0 | |
| value1 | int | UNSIGNED | NO | 0 | ||
| value2 | int | UNSIGNED | NO | 0 | ||
| ScriptName | varchar(64) | utf8mb4_unicode_ci | NO |
criteria_id
ID критерия из клиентских данных (Achievement Criteria). Используется как ключ, к которому добавляются дополнительные проверки через записи в этой таблице.
Пример: 3882
type
Тип дополнительного требования. Именно он определяет смысл value1 и value2.
| Value | Name | Краткое назначение |
|---|---|---|
| 0 | TYPE_NONE | Нет доп. требования |
| 1 | TYPE_T_CREATURE | Требование к цели: существо определённого entry |
| 2 | TYPE_T_PLAYER_CLASS_RACE | Требование к цели-игроку: класс + раса |
| 3 | TYPE_T_PLAYER_LESS_HEALTH | Требование к цели-игроку: здоровье ниже процента |
| 4 | TYPE_T_PLAYER_DEAD | Требование к цели-игроку: мёртв + проверка фракции |
| 5 | TYPE_S_AURA | Требование к источнику: на игроке должна быть аура (spell + effectIndex) |
| 6 | TYPE_S_AREA | Требование к источнику: быть в Area |
| 7 | TYPE_T_AURA | Требование к цели: на цели должна быть аура (spell + effectIndex) |
| 8 | TYPE_VALUE | Числовое сравнение (value1 сравнивается по правилу из value2) |
| 9 | TYPE_T_LEVEL | Требование к цели: минимальный уровень |
| 10 | TYPE_T_GENDER | Требование к цели: пол (0/1) |
| 11 | TYPE_SCRIPT | Проверка через ScriptName (логика ядра/SmartTrigger) |
| 12 | TYPE_MAP_DIFFICULTY | Требование: сложность (dungeon/raid) |
| 13 | TYPE_MAP_PLAYER_COUNT | Требование: число игроков на карте/в зоне (по реализации) |
| 14 | TYPE_T_TEAM | Требование к цели: команда (Alliance/Horde) |
| 15 | TYPE_S_DRUNK | Требование к источнику: степень опьянения |
| 16 | TYPE_HOLIDAY | Требование: активный праздник (Holiday) |
| 17 | TYPE_BG_LOSS_TEAM_SCORE | Требование: победа команды и диапазон счёта противника (min/max) |
| 18 | TYPE_INSTANCE_SCRIPT | Проверка через instance script |
| 19 | TYPE_S_EQUIPED_ITEM | Требование к источнику: экипированный предмет (уровень предмета + качество) |
| 20 | TYPE_MAP_ID | Требование: находиться на конкретной карте (mapId) |
| 21 | TYPE_S_PLAYER_CLASS_RACE | Требование к источнику-игроку: класс + раса |
| 22 | TYPE_NTH_BIRTHDAY | Требование: N-ый “день рождения” (событие/счётчик) |
| 23 | TYPE_S_KNOWN_TITLE | Требование: известен титул (titleId) |
Пример: 5
value1
Первое значение условия. Смысл зависит от type:
| type | value1 — что хранится |
|---|---|
| TYPE_T_CREATURE | entry цели из creature_template |
| TYPE_T_PLAYER_CLASS_RACE | classId цели (при этом value2 = raceId) |
| TYPE_T_PLAYER_LESS_HEALTH | порог здоровья цели в процентах |
| TYPE_T_PLAYER_DEAD | фракция/команда цели-игрока (должна совпасть с игроком, выполняющим критерий) |
| TYPE_S_AURA | spellId ауры на игроке (при этом value2 = effectIndex) |
| TYPE_S_AREA | AreaID (AreaTable) |
| TYPE_T_AURA | spellId ауры на цели (при этом value2 = effectIndex) |
| TYPE_VALUE | значение для сравнения |
| TYPE_T_LEVEL | минимальный уровень цели |
| TYPE_T_GENDER | пол цели: 0 = Male, 1 = Female |
| TYPE_SCRIPT | не используется как данные (обычно 0) |
| TYPE_MAP_DIFFICULTY | “map difficulty” (см. описание ниже) |
| TYPE_MAP_PLAYER_COUNT | количество игроков (трактовка min/max зависит от реализации) |
| TYPE_T_TEAM | команда цели: Alliance = 469, Horde = 67 |
| TYPE_S_DRUNK | степень опьянения (0..3) |
| TYPE_HOLIDAY | HolidayID (Holiday + game_event) |
| TYPE_BG_LOSS_TEAM_SCORE | min score противника |
| TYPE_INSTANCE_SCRIPT | не используется как данные (обычно 0) |
| TYPE_S_EQUIPED_ITEM | item level |
| TYPE_MAP_ID | mapId (Map) |
| TYPE_S_PLAYER_CLASS_RACE | classId источника (при этом value2 = raceId) |
| TYPE_NTH_BIRTHDAY | номер “дня рождения” |
| TYPE_S_KNOWN_TITLE | titleId (CharTitles) |
Пример: 48890
value2
Второе значение условия. Используется только у части типов:
| type | value2 — что хранится |
|---|---|
| TYPE_T_PLAYER_CLASS_RACE | raceId цели (ChrRaces) |
| TYPE_S_PLAYER_CLASS_RACE | raceId источника (ChrRaces) |
| TYPE_S_AURA | effectIndex ауры |
| TYPE_T_AURA | effectIndex ауры |
| TYPE_BG_LOSS_TEAM_SCORE | max score противника |
| TYPE_S_EQUIPED_ITEM | item quality |
| TYPE_VALUE | тип сравнения (ComparisationType) |
Для TYPE_VALUE сравнение задаётся так:
| Value | ComparisationType | Описание |
|---|---|---|
| 0 | COMP_TYPE_EQ | равно |
| 1 | COMP_TYPE_HIGH | строго больше |
| 2 | COMP_TYPE_LOW | строго меньше |
| 3 | COMP_TYPE_HIGH_EQ | больше или равно |
| 4 | COMP_TYPE_LOW_EQ | меньше или равно |
Пример: 0
ScriptName
Имя скрипта для проверки условия на стороне ядра (используется, когда type требует скриптовой проверки: TYPE_SCRIPT / TYPE_INSTANCE_SCRIPT и т. п.). Также может использоваться специальное имя, чтобы проверка выполнялась через SmartAI-триггер.
Пример: "SmartTrigger"