feat(isac): add OS protocol management
This commit is contained in:
@@ -348,3 +348,59 @@ CREATE TABLE IF NOT EXISTS weapon_base_attribute_bonuses (
|
||||
UNIQUE(weapon_id, stat_attribute_id),
|
||||
UNIQUE(weapon_id, sort_order)
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS os_protocols (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
quality TEXT NOT NULL CHECK(quality IN ('Standard', 'Specialized', 'Superior', 'High-end')),
|
||||
primary_attribute_type TEXT NOT NULL CHECK(primary_attribute_type IN ('Firepower', 'Toughness', 'Engineering')),
|
||||
active INTEGER NOT NULL DEFAULT 1 CHECK(active IN (0, 1)),
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS os_protocols_name_nocase_idx ON os_protocols(name COLLATE NOCASE);
|
||||
CREATE TABLE IF NOT EXISTS os_protocol_primary_effects (
|
||||
id TEXT PRIMARY KEY,
|
||||
protocol_id TEXT NOT NULL UNIQUE REFERENCES os_protocols(id) ON DELETE CASCADE,
|
||||
stat_attribute_id TEXT NOT NULL REFERENCES stat_attributes(id),
|
||||
base_value REAL NOT NULL CHECK(base_value >= 0)
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS os_protocol_secondary_profiles (
|
||||
id TEXT PRIMARY KEY,
|
||||
quality TEXT NOT NULL CHECK(quality IN ('Standard', 'Specialized', 'Superior', 'High-end')),
|
||||
primary_attribute_type TEXT NOT NULL CHECK(primary_attribute_type IN ('Firepower', 'Toughness', 'Engineering')),
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL,
|
||||
UNIQUE(quality, primary_attribute_type)
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS os_protocol_secondary_effects (
|
||||
id TEXT PRIMARY KEY,
|
||||
profile_id TEXT NOT NULL REFERENCES os_protocol_secondary_profiles(id) ON DELETE CASCADE,
|
||||
effect_role TEXT NOT NULL CHECK(effect_role IN ('Core', 'Damage', 'Health')),
|
||||
stat_attribute_id TEXT NOT NULL REFERENCES stat_attributes(id),
|
||||
value REAL NOT NULL CHECK(value >= 0),
|
||||
UNIQUE(profile_id, effect_role),
|
||||
UNIQUE(profile_id, stat_attribute_id)
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS os_protocol_talents (
|
||||
id TEXT PRIMARY KEY,
|
||||
protocol_id TEXT NOT NULL UNIQUE REFERENCES os_protocols(id) ON DELETE CASCADE,
|
||||
name TEXT NOT NULL,
|
||||
description_template TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS os_protocol_talents_name_nocase_idx ON os_protocol_talents(name COLLATE NOCASE);
|
||||
CREATE TABLE IF NOT EXISTS os_protocol_talent_triggers (
|
||||
talent_id TEXT NOT NULL REFERENCES os_protocol_talents(id) ON DELETE CASCADE,
|
||||
trigger_id TEXT NOT NULL REFERENCES talent_triggers(id),
|
||||
PRIMARY KEY(talent_id, trigger_id)
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS os_protocol_talent_effects (
|
||||
id TEXT PRIMARY KEY,
|
||||
talent_id TEXT NOT NULL REFERENCES os_protocol_talents(id) ON DELETE CASCADE,
|
||||
stat_attribute_id TEXT NOT NULL REFERENCES stat_attributes(id),
|
||||
base_value REAL NOT NULL,
|
||||
sort_order INTEGER NOT NULL CHECK(sort_order BETWEEN 1 AND 12),
|
||||
UNIQUE(talent_id, stat_attribute_id),
|
||||
UNIQUE(talent_id, sort_order)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user