You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1.3 KiB
SQL
31 lines
1.3 KiB
SQL
-- Migration 000010: Extended equipment slots (head, feet, neck).
|
|
|
|
-- ============================================================
|
|
-- Equipment items table (all slots beyond legacy weapon/armor).
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS equipment_items (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
slot TEXT NOT NULL, -- gear.slot.head, gear.slot.feet, gear.slot.neck, etc.
|
|
form_id TEXT NOT NULL DEFAULT '',
|
|
name TEXT NOT NULL,
|
|
rarity TEXT NOT NULL DEFAULT 'common',
|
|
ilvl INT NOT NULL DEFAULT 1,
|
|
base_primary INT NOT NULL DEFAULT 0,
|
|
primary_stat INT NOT NULL DEFAULT 0, -- computed: ScalePrimary(base_primary, ilvl, rarity)
|
|
stat_type TEXT NOT NULL DEFAULT 'defense', -- attack, defense, speed, mixed
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- ============================================================
|
|
-- Hero equipment (one row per equipped slot).
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS hero_equipment (
|
|
hero_id BIGINT NOT NULL REFERENCES heroes(id) ON DELETE CASCADE,
|
|
slot TEXT NOT NULL,
|
|
item_id BIGINT NOT NULL REFERENCES equipment_items(id),
|
|
equipped_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
PRIMARY KEY (hero_id, slot)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_hero_equipment_hero ON hero_equipment(hero_id);
|