Battle pets
Таблица battle_pets
Таблица battle_pets из базы данных auth хранит список боевых питомцев (Pet Journal) для Battle.net аккаунтов: вид питомца, порода (breed), уровень, опыт, качество, имя и флаги (избранное/заблокировано/выбор способностей и т.п.).
Структура таблицы
| Field | Type | Attributes | Key | Null | Default | Extra |
|---|---|---|---|---|---|---|
| guid | bigint | PRIMARY | NO | |||
| battlenetAccountId | int | NO | ||||
| species | int | NO | ||||
| breed | smallint | NO | ||||
| displayId | int | NO | 0 | |||
| level | smallint | NO | 1 | |||
| exp | smallint | NO | 0 | |||
| health | int | NO | 1 | |||
| quality | tinyint | NO | 0 | |||
| flags | smallint | NO | 0 | |||
| name | varchar(12) | CHARACTER SET utf8mb4, COLLATE utf8mb4_unicode_ci | NO | |||
| nameTimestamp | bigint | NO | 0 | |||
| owner | bigint | YES | NULL | |||
| ownerRealmId | int | YES | NULL |
guid
Глобальный уникальный идентификатор боевого питомца. Используется как первичный ключ и как ссылка из других таблиц (например battle_pet_declinedname).
Пример: 900000123
battlenetAccountId
ID Battle.net аккаунта, которому принадлежит питомец. Значение соответствует таблице battlenet_accounts (поле `battlenet_accounts.id`).
Пример: 1001
species
ID вида питомца (идентификатор из клиентских данных BattlePetSpecies DB2). Это “какой питомец”, а не конкретная особь.
Пример: 39
breed
ID породы (breed) питомца (идентификатор из клиентских данных BattlePetBreedState DB2). Определяет распределение статов/вариантов.
Пример: 3
displayId
ID модели отображения (display id). По умолчанию `0` (если используется стандартное отображение вида/специеса).
Пример: 0
level
Текущий уровень питомца. По умолчанию `1`.
Пример: 25
exp
Текущий опыт питомца. По умолчанию `0`.
Пример: 0
health
Текущее/сохранённое здоровье питомца (как число). По умолчанию `1`.
Пример: 1400
quality
Качество (rarity/quality) питомца. По умолчанию `0`. Это поле “с выбором”, но конкретные значения могут зависеть от версии/ядра. Если нужно — сделаю отдельную таблицу значений *строго по исходникам ядра/DB2*, чтобы не было ошибок.
Пример: 3
flags
Набор флагов (битовая маска) состояния питомца (избранное, блокировки, выбранные способности и т.п.).
Таблица основных флагов (битовая маска):
| Flag value | Name | Значение |
|---|---|---|
| 0x000 | None | Нет флагов |
| 0x001 | Favorite | Помечен как избранный |
| 0x002 | Converted | Преобразован (служебный флаг) |
| 0x004 | Revoked | Заблокирован в журнале питомцев |
| 0x008 | LockedForConvert | Заблокирован для преобразования |
| 0x010 | Ability0Selection | Выбрана вторая способность в слоте 0 |
| 0x020 | Ability1Selection | Выбрана вторая способность в слоте 1 |
| 0x040 | Ability2Selection | Выбрана вторая способность в слоте 2 |
| 0x080 | FanfareNeeded | Отмечен как “подарок/новинка” в журнале |
| 0x100 | DisplayOverridden | Переопределено отображение |
Пример: 1
name
Текущее имя питомца (кастомное). Хранится как `varchar(12)` в utf8mb4.
Пример: Мурзик
nameTimestamp
Служебная метка времени, связанная с именем (например момент присвоения/изменения). По умолчанию `0`.
Пример: 1700000000
owner
Служебное поле владельца (может быть NULL). Используется ядром для привязки к владельцу/контексту.
Пример: NULL
ownerRealmId
ID реалма владельца (может быть NULL). Используется совместно с `owner`, если ядру нужно хранить “реалм-владельца”.
Пример: NULL