Battle pets

Материал из World of WarCraft Developers Wiki
Перейти к навигации Перейти к поиску

Таблица 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