-- Справочники рас/классов и стартовые наборы (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) );