Files
Lineage-2/docker/initdb/02b_game_classes_ref.sql

69 lines
2.6 KiB
SQL

-- Справочники рас/классов и стартовые наборы (L2J / Essence, protocol 520).
-- Основные шаблоны всё равно в XML datapack; это минимум для БД и отладки.
CREATE TABLE IF NOT EXISTS ref_races (
race_id SMALLINT NOT NULL PRIMARY KEY,
code VARCHAR(20) NOT NULL UNIQUE,
name_en VARCHAR(40) NOT NULL,
name_ru VARCHAR(40) NOT NULL,
enabled BOOLEAN NOT NULL DEFAULT TRUE,
spawn_x INTEGER NOT NULL,
spawn_y INTEGER NOT NULL,
spawn_z INTEGER NOT NULL,
spawn_heading INTEGER NOT NULL DEFAULT 0
);
CREATE TABLE IF NOT EXISTS ref_classes (
class_id INTEGER NOT NULL PRIMARY KEY,
code VARCHAR(40) NOT NULL,
name_en VARCHAR(60) NOT NULL,
name_ru VARCHAR(60) NOT NULL,
race_id SMALLINT NOT NULL REFERENCES ref_races (race_id),
parent_id INTEGER REFERENCES ref_classes (class_id),
class_level SMALLINT NOT NULL DEFAULT 0,
is_mage BOOLEAN NOT NULL DEFAULT FALSE,
is_summoner BOOLEAN NOT NULL DEFAULT FALSE,
can_create BOOLEAN NOT NULL DEFAULT FALSE,
sex_restrict SMALLINT NOT NULL DEFAULT 0,
CONSTRAINT chk_sex_restrict CHECK (sex_restrict IN (0, 1, 2))
);
CREATE INDEX IF NOT EXISTS idx_ref_classes_race ON ref_classes (race_id);
CREATE INDEX IF NOT EXISTS idx_ref_classes_parent ON ref_classes (parent_id);
CREATE INDEX IF NOT EXISTS idx_ref_classes_create ON ref_classes (can_create) WHERE can_create;
-- Совместимость со старыми инсталляторами L2J
CREATE TABLE IF NOT EXISTS class_list (
id INTEGER NOT NULL PRIMARY KEY,
class_name VARCHAR(40) NOT NULL
);
CREATE TABLE IF NOT EXISTS starter_equipment (
id SERIAL PRIMARY KEY,
class_id INTEGER NOT NULL REFERENCES ref_classes (class_id),
sex SMALLINT NOT NULL DEFAULT 0,
item_id INTEGER NOT NULL,
amount BIGINT NOT NULL DEFAULT 1,
enchant_level INTEGER NOT NULL DEFAULT 0,
equipped BOOLEAN NOT NULL DEFAULT FALSE,
paperdoll_slot SMALLINT NOT NULL DEFAULT 0,
UNIQUE (class_id, sex, item_id)
);
CREATE TABLE IF NOT EXISTS starter_skills (
class_id INTEGER NOT NULL REFERENCES ref_classes (class_id),
skill_id INTEGER NOT NULL,
skill_level INTEGER NOT NULL DEFAULT 1,
PRIMARY KEY (class_id, skill_id)
);
-- Упрощённые приросты HP/MP на 1–20 ур. (если сервер читает из БД)
CREATE TABLE IF NOT EXISTS lvlupgain (
class_id INTEGER NOT NULL,
level SMALLINT NOT NULL,
hp_gain DOUBLE PRECISION NOT NULL DEFAULT 0,
mp_gain DOUBLE PRECISION NOT NULL DEFAULT 0,
cp_gain DOUBLE PRECISION NOT NULL DEFAULT 0,
PRIMARY KEY (class_id, level)
);