330 lines
8.9 KiB
SQL
330 lines
8.9 KiB
SQL
/*
|
|
@BLOG
|
|
*/
|
|
DROP TABLE IF EXISTS blog;
|
|
CREATE TABLE blog (
|
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
`author_id` INTEGER NOT NULL,
|
|
`title` TEXT NOT NULL,
|
|
`slug` TEXT NOT NULL UNIQUE,
|
|
`content` TEXT NOT NULL,
|
|
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
`updated` DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
CREATE INDEX idx_blog_author_id ON blog (`author_id`);
|
|
CREATE INDEX idx_blog_slug ON blog (`slug`);
|
|
|
|
/*
|
|
@CHARS
|
|
*/
|
|
DROP TABLE IF EXISTS characters;
|
|
CREATE TABLE characters (
|
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
`user_id` INTEGER NOT NULL,
|
|
`name` TEXT NOT NULL UNIQUE,
|
|
`title_id` INTEGER NOT NULL DEFAULT 1,
|
|
`level` INTEGER NOT NULL DEFAULT 1,
|
|
`xp` INTEGER NOT NULL DEFAULT 0,
|
|
`xp_to_level` INTEGER NOT NULL DEFAULT 100,
|
|
`hp` INTEGER NOT NULL DEFAULT 20,
|
|
`m_hp` INTEGER NOT NULL DEFAULT 20,
|
|
`mp` INTEGER NOT NULL DEFAULT 10,
|
|
`m_mp` INTEGER NOT NULL DEFAULT 10,
|
|
`tp` INTEGER NOT NULL DEFAULT 1,
|
|
`m_tp` INTEGER NOT NULL DEFAULT 1,
|
|
`pow` INTEGER NOT NULL DEFAULT 0, -- Power
|
|
`acc` INTEGER NOT NULL DEFAULT 0, -- Accuracy
|
|
`pen` INTEGER NOT NULL DEFAULT 0, -- Penetration
|
|
`foc` INTEGER NOT NULL DEFAULT 0, -- Focus
|
|
`tou` INTEGER NOT NULL DEFAULT 0, -- Toughness
|
|
`arm` INTEGER NOT NULL DEFAULT 0, -- Armor
|
|
`res` INTEGER NOT NULL DEFAULT 0, -- Resist
|
|
`pre` INTEGER NOT NULL DEFAULT 0, -- Precision
|
|
`fer` INTEGER NOT NULL DEFAULT 0, -- Ferocity
|
|
`luck` INTEGER NOT NULL DEFAULT 0, -- Luck
|
|
`inv_slots` INTEGER NOT NULL DEFAULT 10,
|
|
`att_points` INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX idx_characters_user_id ON characters (`user_id`);
|
|
|
|
/*
|
|
@CHARGEAR
|
|
*/
|
|
DROP TABLE IF EXISTS char_gear;
|
|
CREATE TABLE char_gear (
|
|
`char_id` INTEGER NOT NULL,
|
|
`head` INTEGER NOT NULL DEFAULT 0,
|
|
`chest` INTEGER NOT NULL DEFAULT 0,
|
|
`boots` INTEGER NOT NULL DEFAULT 0,
|
|
`hands` INTEGER NOT NULL DEFAULT 0,
|
|
`m_hand` INTEGER NOT NULL DEFAULT 0,
|
|
`o_hand` INTEGER NOT NULL DEFAULT 0,
|
|
`rune` INTEGER NOT NULL DEFAULT 0,
|
|
`ring` INTEGER NOT NULL DEFAULT 0,
|
|
`amulet` INTEGER NOT NULL DEFAULT 0,
|
|
`pow` INTEGER NOT NULL DEFAULT 0, -- Power
|
|
`acc` INTEGER NOT NULL DEFAULT 0, -- Accuracy
|
|
`pen` INTEGER NOT NULL DEFAULT 0, -- Penetration
|
|
`foc` INTEGER NOT NULL DEFAULT 0, -- Focus
|
|
`tou` INTEGER NOT NULL DEFAULT 0, -- Toughness
|
|
`arm` INTEGER NOT NULL DEFAULT 0, -- Armor
|
|
`res` INTEGER NOT NULL DEFAULT 0, -- Resist
|
|
`pre` INTEGER NOT NULL DEFAULT 0, -- Precision
|
|
`fer` INTEGER NOT NULL DEFAULT 0, -- Ferocity
|
|
`luck` INTEGER NOT NULL DEFAULT 0, -- Luck
|
|
`max_hp` INTEGER NOT NULL DEFAULT 0,
|
|
`max_mp` INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX idx_char_gear_char_id ON char_gear (`char_id`);
|
|
|
|
/*
|
|
@CHARINV
|
|
*/
|
|
DROP TABLE IF EXISTS char_inventory;
|
|
CREATE TABLE char_inventory (
|
|
`char_id` INTEGER NOT NULL,
|
|
`item_id` INTEGER NOT NULL
|
|
);
|
|
CREATE INDEX idx_inventory_char_id ON char_inventory (`char_id`);
|
|
|
|
/*
|
|
@WALLETS
|
|
*/
|
|
DROP TABLE IF EXISTS wallets;
|
|
CREATE TABLE wallets (
|
|
`user_id` INTEGER NOT NULL,
|
|
`silver` INTEGER NOT NULL DEFAULT 10,
|
|
`stargem` INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX idx_wallets_user_id ON wallets (`user_id`);
|
|
|
|
/*
|
|
@CHARBANK
|
|
*/
|
|
DROP TABLE IF EXISTS char_bank;
|
|
CREATE TABLE char_bank (
|
|
`char_id` INTEGER NOT NULL,
|
|
`slots` INTEGER NOT NULL DEFAULT 5,
|
|
`silver` INTEGER NOT NULL DEFAULT 0,
|
|
`tier` INTEGER NOT NULL DEFAULT 0,
|
|
`can_collect` INTEGER NOT NULL DEFAULT 1,
|
|
`last_collect` DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
CREATE INDEX idx_bank_char_id ON char_bank (`char_id`);
|
|
|
|
/*
|
|
@CHARBANKITEMS
|
|
*/
|
|
DROP TABLE IF EXISTS char_banked_items;
|
|
CREATE TABLE char_banked_items (
|
|
`char_id` INTEGER NOT NULL,
|
|
`item_id` INTEGER NOT NULL
|
|
);
|
|
CREATE INDEX idx_banked_items_char_id ON char_banked_items (`char_id`);
|
|
CREATE INDEX idx_banked_items_item_id ON char_banked_items (`item_id`);
|
|
|
|
/*
|
|
@TOWNS
|
|
*/
|
|
DROP TABLE IF EXISTS towns;
|
|
CREATE TABLE towns (
|
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
`name` TEXT NOT NULL,
|
|
`x` INTEGER NOT NULL,
|
|
`y` INTEGER NOT NULL,
|
|
`type` INTEGER NOT NULL,
|
|
`lore` TEXT NOT NULL,
|
|
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
`updated` DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
CREATE INDEX idx_towns_location ON towns (`x`, `y`);
|
|
|
|
/*
|
|
@SHOPS
|
|
*/
|
|
DROP TABLE IF EXISTS shops;
|
|
CREATE TABLE shops (
|
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
`name` TEXT NOT NULL,
|
|
`type` INTEGER NOT NULL,
|
|
`lore` TEXT NOT NULL,
|
|
`x` INTEGER NOT NULL,
|
|
`y` INTEGER NOT NULL,
|
|
`items` TEXT NOT NULL,
|
|
`gear` TEXT NOT NULL,
|
|
`materials` TEXT NOT NULL,
|
|
`b_mod` INTEGER NOT NULL DEFAULT 100,
|
|
`s_mod` INTEGER NOT NULL DEFAULT 100,
|
|
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
`updated` DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
CREATE INDEX idx_shops_location ON shops (`x`, `y`);
|
|
|
|
/*
|
|
@INNS
|
|
*/
|
|
DROP TABLE IF EXISTS inns;
|
|
CREATE TABLE inns (
|
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
`name` TEXT NOT NULL,
|
|
`type` INTEGER NOT NULL,
|
|
`lore` TEXT NOT NULL,
|
|
`x` INTEGER NOT NULL,
|
|
`y` INTEGER NOT NULL,
|
|
`cost` INTEGER NOT NULL,
|
|
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
`updated` DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
CREATE INDEX idx_inns_location ON inns (`x`, `y`);
|
|
|
|
/*
|
|
@GUILDS
|
|
*/
|
|
DROP TABLE IF EXISTS guilds;
|
|
CREATE TABLE guilds (
|
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
`name` TEXT NOT NULL,
|
|
`lore` TEXT NOT NULL DEFAULT "",
|
|
`leader_id` INTEGER NOT NULL,
|
|
`silver` INTEGER NOT NULL DEFAULT 0,
|
|
`rep` INTEGER NOT NULL DEFAULT 0,
|
|
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
`updated` DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
CREATE INDEX idx_guilds_leader_id ON guilds (`leader_id`);
|
|
|
|
/*
|
|
@GUILDRANKS
|
|
*/
|
|
DROP TABLE IF EXISTS guild_ranks;
|
|
CREATE TABLE guild_ranks (
|
|
`guild_id` INTEGER NOT NULL,
|
|
`order` INTEGER NOT NULL,
|
|
`name` TEXT NOT NULL,
|
|
`permissions` TEXT NOT NULL,
|
|
`leader` INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX idx_guild_ranks_guild_id ON guild_ranks (`guild_id`);
|
|
|
|
/*
|
|
@GUILDMEMBERS
|
|
*/
|
|
DROP TABLE IF EXISTS guild_members;
|
|
CREATE TABLE guild_members (
|
|
`guild_id` INTEGER NOT NULL,
|
|
`char_id` INTEGER NOT NULL,
|
|
`rank` INTEGER NOT NULL,
|
|
`rep` INTEGER NOT NULL DEFAULT 0,
|
|
`donated` INTEGER NOT NULL DEFAULT 0,
|
|
`joined` DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
CREATE INDEX idx_guild_members_guild_id ON guild_members (`guild_id`);
|
|
CREATE INDEX idx_guild_members_char_id ON guild_members (`char_id`);
|
|
|
|
/*
|
|
@NPCS
|
|
*/
|
|
DROP TABLE IF EXISTS npcs;
|
|
CREATE TABLE npcs (
|
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
`name` TEXT NOT NULL,
|
|
`type` INTEGER NOT NULL,
|
|
`lore` TEXT NOT NULL,
|
|
`conversation` TEXT NOT NULL,
|
|
`x` INTEGER NOT NULL,
|
|
`y` INTEGER NOT NULL,
|
|
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
`updated` DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
CREATE INDEX idx_npcs_location ON npcs (`x`, `y`);
|
|
|
|
/*
|
|
@TOWNREP
|
|
*/
|
|
DROP TABLE IF EXISTS char_town_rep;
|
|
CREATE TABLE char_town_rep (
|
|
`char_id` INTEGER NOT NULL,
|
|
`town_id` INTEGER NOT NULL,
|
|
`rep` INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX idx_char_town_rep_char_id ON char_town_rep (`char_id`);
|
|
|
|
/*
|
|
@ITEMS
|
|
*/
|
|
DROP TABLE IF EXISTS items;
|
|
CREATE TABLE items (
|
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
`name` TEXT NOT NULL,
|
|
`type` TEXT NOT NULL DEFAULT 0,
|
|
`rarity` INTEGER NOT NULL DEFAULT 0,
|
|
`forged` INTEGER NOT NULL DEFAULT 0,
|
|
`quality` INTEGER NOT NULL DEFAULT 0,
|
|
`value` INTEGER NOT NULL DEFAULT 0,
|
|
`consumable` INTEGER NOT NULL DEFAULT 0,
|
|
`duration` INTEGER NOT NULL DEFAULT 0,
|
|
`durability` INTEGER NOT NULL DEFAULT 0,
|
|
`m_durability` INTEGER NOT NULL DEFAULT 0,
|
|
`pow` INTEGER NOT NULL DEFAULT 0, -- Power
|
|
`acc` INTEGER NOT NULL DEFAULT 0, -- Accuracy
|
|
`pen` INTEGER NOT NULL DEFAULT 0, -- Penetration
|
|
`foc` INTEGER NOT NULL DEFAULT 0, -- Focus
|
|
`tou` INTEGER NOT NULL DEFAULT 0, -- Toughness
|
|
`arm` INTEGER NOT NULL DEFAULT 0, -- Armor
|
|
`res` INTEGER NOT NULL DEFAULT 0, -- Resist
|
|
`pre` INTEGER NOT NULL DEFAULT 0, -- Precision
|
|
`fer` INTEGER NOT NULL DEFAULT 0, -- Ferocity
|
|
`luck` INTEGER NOT NULL DEFAULT 0, -- Luck
|
|
`reqs` TEXT NOT NULL DEFAULT "",
|
|
`traits` TEXT NOT NULL DEFAULT "",
|
|
`lore` TEXT NOT NULL DEFAULT "",
|
|
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
`updated` DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
/*
|
|
@CHARTRAITS
|
|
*/
|
|
DROP TABLE IF EXISTS char_traits;
|
|
CREATE TABLE char_traits (
|
|
`char_id` INTEGER NOT NULL,
|
|
`trait_id` INTEGER NOT NULL,
|
|
`value` INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX idx_char_traits_char_id ON char_traits (`char_id`);
|
|
|
|
/*
|
|
@CHARLOCATIONS
|
|
*/
|
|
DROP TABLE IF EXISTS char_locations;
|
|
CREATE TABLE char_locations (
|
|
`char_id` INTEGER NOT NULL,
|
|
`x` INTEGER NOT NULL,
|
|
`y` INTEGER NOT NULL,
|
|
`currently` INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX idx_char_locations_char_id ON char_locations (`char_id`);
|
|
CREATE INDEX idx_char_locations_location ON char_locations (`x`, `y`);
|
|
|
|
/*
|
|
@TITLES
|
|
*/
|
|
DROP TABLE IF EXISTS titles;
|
|
CREATE TABLE titles (
|
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
`name` TEXT NOT NULL DEFAULT 'Title',
|
|
`lore` TEXT
|
|
);
|
|
|
|
/*
|
|
@OWNEDTITLES
|
|
*/
|
|
DROP TABLE IF EXISTS owned_titles;
|
|
CREATE TABLE owned_titles (
|
|
`title_id` INTEGER NOT NULL,
|
|
`char_id` INTEGER NOT NULL,
|
|
`awarded` DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
CREATE INDEX idx_owned_titles_char_id ON owned_titles (`char_id`);
|
|
CREATE INDEX idx_owned_titles_owned ON owned_titles (`char_id`, `title_id`);
|