ddon-server/Arrowgene.Ddon.Database/Files/Database/Script/schema_sqlite.sql

1251 lines
62 KiB
MySQL
Raw Permalink Normal View History

/* Style hints:
when a primary key is made up of a single column embed the primary key syntax in the column definition
embed AUTOINCREMENT in column definition
do not embed unique qualifier syntax, instead it should be part of a constraint definition
unique, foreign and primary key constraints should always be explicitly named via CONSTRAINT
naming convention for primary key constraints: pk_<full table name>
naming convention for unique constraints: uq_<full table name>_<col 1>_<col 2>_...
naming convention for foreign keys: fk_<full table name>_<foreign col>
quote all column and table references
*/
CREATE TABLE IF NOT EXISTS "meta"
(
"db_version" INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS "setting"
2022-01-14 15:09:22 +08:00
(
"key" VARCHAR(32) PRIMARY KEY NOT NULL,
"value" TEXT NOT NULL
2019-12-04 22:38:01 +08:00
);
CREATE TABLE IF NOT EXISTS "account"
2022-01-14 15:09:22 +08:00
(
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" TEXT NOT NULL,
"normal_name" TEXT NOT NULL,
"hash" TEXT NOT NULL,
"mail" TEXT NOT NULL,
"mail_verified" BOOLEAN NOT NULL,
"mail_verified_at" DATETIME DEFAULT NULL,
"mail_token" TEXT DEFAULT NULL,
"password_token" TEXT DEFAULT NULL,
"login_token" TEXT DEFAULT NULL,
"login_token_created" DATETIME DEFAULT NULL,
"state" INTEGER NOT NULL,
"last_login" DATETIME DEFAULT NULL,
"created" DATETIME NOT NULL,
"locale" VARCHAR(10) DEFAULT "en-US" NOT NULL,
CONSTRAINT "uq_account_name" UNIQUE ("name"),
CONSTRAINT "uq_account_normal_name" UNIQUE ("normal_name"),
CONSTRAINT "uq_account_login_token" UNIQUE ("login_token"),
CONSTRAINT "uq_account_mail" UNIQUE ("mail")
2022-01-14 15:09:22 +08:00
);
CREATE TABLE IF NOT EXISTS "account_ip_ban"
(
"addr" TEXT PRIMARY KEY NOT NULL,
"date" DATETIME NOT NULL DEFAULT (CURRENT_TIMESTAMP)
);
CREATE INDEX IF NOT EXISTS "idx_account_ip_ban_addr" ON "account_ip_ban" ("addr");
CREATE TABLE IF NOT EXISTS "ddon_schedule_next"
(
"type" INTEGER PRIMARY KEY NOT NULL,
"timestamp" BIGINT NOT NULL
);
CREATE TABLE IF NOT EXISTS "ddon_character_common"
(
"character_common_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"job" SMALLINT NOT NULL,
"hide_equip_head" BOOLEAN NOT NULL,
"hide_equip_lantern" BOOLEAN NOT NULL
);
CREATE TABLE IF NOT EXISTS "ddon_character"
2022-01-14 15:09:22 +08:00
(
"character_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"character_common_id" INTEGER NOT NULL,
"account_id" INTEGER NOT NULL,
"version" INTEGER NOT NULL,
"first_name" TEXT NOT NULL,
"last_name" TEXT NOT NULL,
"created" DATETIME NOT NULL,
"my_pawn_slot_num" SMALLINT NOT NULL,
"rental_pawn_slot_num" SMALLINT NOT NULL,
"hide_equip_head_pawn" BOOLEAN NOT NULL,
"hide_equip_lantern_pawn" BOOLEAN NOT NULL,
"arisen_profile_share_range" SMALLINT NOT NULL,
2023-10-13 17:52:06 +02:00
"fav_warp_slot_num" INTEGER NOT NULL,
2024-05-31 18:51:14 +02:00
"max_bazaar_exhibits" INTEGER NOT NULL,
"partner_pawn_id" INTEGER NOT NULL DEFAULT 0,
feat: Add support for Bitterblack Maze Added support for the player to participate in Bitterblack Maze. This content allows the player to collect bracelets and earrings which gain randomized stats based on the job they are collected on. The player uses currency earned during the event to transfer items from the bitterblack maze content to the normal game content. Co-authored-by: Cert Co-authored-by: @Conner-Schaffer Co-authored-by: Dark Warrior Co-authored-by: @Sehkah Co-authored-by: Sera Eidolon What works: - Add support for creating a new character for BBM - Add class randomized loot - Bitterblack Maze special jewelry rewards - Add BBM Spawns - Add support for different Lyka menu options - Report Search Results - Reset Progress - Bitterblack Shop - Rare Item Appraisal - Bitterblack Item Takeaway - Equip items directly from treasure chest - Homepoint to Bitterblack Maze Cove when dead in the maze - Update Schema for new tables and provide migration strategy What doesn't work: - Using Pawns - Bitterblack Equipment Effect Seal - Player ready up menu - Item sort messes up sort between different modes - Clear timestamp is incorrect - Tracking treasure claimed - Inventory is not deleted when home pointing after death - Some enemies get stuck on terrain (probably wrong mob for area) - Original quest to start BBM not implemented - Reset progress doesn't consume reset tickets - Reset tickets not awarded - Players not in party sometimes can't be seen DB Migration: To update an existing database run 'dotnet run dbmigration' to upgrade from version '11' to version '12'.
2024-08-17 21:43:16 -04:00
"game_mode" INTEGER NOT NULL,
CONSTRAINT "fk_ddon_character_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_character_account_id" FOREIGN KEY ("account_id") REFERENCES "account" ("id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_ddon_character_account_game_mode" ON "ddon_character" ("account_id", "game_mode");
CREATE TABLE IF NOT EXISTS "ddon_pawn"
(
"pawn_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"character_common_id" INTEGER NOT NULL,
"character_id" INTEGER NOT NULL,
"name" TEXT NOT NULL,
"hm_type" SMALLINT NOT NULL,
"pawn_type" SMALLINT NOT NULL,
2024-12-10 17:47:06 +01:00
"pawn_state" SMALLINT NOT NULL,
"training_points" INTEGER NOT NULL,
"available_training" INTEGER NOT NULL,
"craft_rank" INTEGER NOT NULL,
"craft_rank_limit" INTEGER NOT NULL,
"craft_exp" INTEGER NOT NULL,
"craft_points" INTEGER NOT NULL,
"production_speed_level" INTEGER NOT NULL,
"equipment_enhancement_level" INTEGER NOT NULL,
"equipment_quality_level" INTEGER NOT NULL,
"consumable_quantity_level" INTEGER NOT NULL,
"cost_performance_level" INTEGER NOT NULL,
"is_official_pawn" BOOLEAN NOT NULL,
CONSTRAINT "fk_ddon_pawn_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_pawn_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_ddon_pawn_character_id" ON "ddon_pawn" ("character_id");
CREATE TABLE IF NOT EXISTS "ddon_pawn_training_status"
2024-05-09 23:24:07 +02:00
(
"pawn_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"training_status" BLOB NOT NULL,
CONSTRAINT "pk_ddon_pawn_training_status" PRIMARY KEY ("pawn_id", "job"),
CONSTRAINT "fk_ddon_pawn_training_status_pawn_id" FOREIGN KEY ("pawn_id") REFERENCES "ddon_pawn" ("pawn_id") ON DELETE CASCADE
2024-05-09 23:24:07 +02:00
);
CREATE TABLE IF NOT EXISTS "ddon_edit_info"
(
"character_common_id" INTEGER PRIMARY KEY NOT NULL,
"sex" INTEGER NOT NULL,
"voice" INTEGER NOT NULL,
"voice_pitch" INTEGER NOT NULL,
"personality" INTEGER NOT NULL,
"speech_freq" INTEGER NOT NULL,
"body_type" INTEGER NOT NULL,
"hair" INTEGER NOT NULL,
"beard" INTEGER NOT NULL,
"makeup" INTEGER NOT NULL,
"scar" INTEGER NOT NULL,
"eye_preset_no" INTEGER NOT NULL,
"nose_preset_no" INTEGER NOT NULL,
"mouth_preset_no" INTEGER NOT NULL,
"eyebrow_tex_no" INTEGER NOT NULL,
"color_skin" INTEGER NOT NULL,
"color_hair" INTEGER NOT NULL,
"color_beard" INTEGER NOT NULL,
"color_eyebrow" INTEGER NOT NULL,
"color_r_eye" INTEGER NOT NULL,
"color_l_eye" INTEGER NOT NULL,
"color_makeup" INTEGER NOT NULL,
"sokutobu" INTEGER NOT NULL,
"hitai" INTEGER NOT NULL,
"mimi_jyouge" INTEGER NOT NULL,
"kannkaku" INTEGER NOT NULL,
"mabisasi_jyouge" INTEGER NOT NULL,
"hanakuchi_jyouge" INTEGER NOT NULL,
"ago_saki_haba" INTEGER NOT NULL,
"ago_zengo" INTEGER NOT NULL,
"ago_saki_jyouge" INTEGER NOT NULL,
"hitomi_ookisa" INTEGER NOT NULL,
"me_ookisa" INTEGER NOT NULL,
"me_kaiten" INTEGER NOT NULL,
"mayu_kaiten" INTEGER NOT NULL,
"mimi_ookisa" INTEGER NOT NULL,
"mimi_muki" INTEGER NOT NULL,
"elf_mimi" INTEGER NOT NULL,
"miken_takasa" INTEGER NOT NULL,
"miken_haba" INTEGER NOT NULL,
"hohobone_ryou" INTEGER NOT NULL,
"hohobone_jyouge" INTEGER NOT NULL,
"hohoniku" INTEGER NOT NULL,
"erahone_jyouge" INTEGER NOT NULL,
"erahone_haba" INTEGER NOT NULL,
"hana_jyouge" INTEGER NOT NULL,
"hana_haba" INTEGER NOT NULL,
"hana_takasa" INTEGER NOT NULL,
"hana_kakudo" INTEGER NOT NULL,
"kuchi_haba" INTEGER NOT NULL,
"kuchi_atsusa" INTEGER NOT NULL,
"eyebrow_uv_offset_x" INTEGER NOT NULL,
"eyebrow_uv_offset_y" INTEGER NOT NULL,
"wrinkle" INTEGER NOT NULL,
"wrinkle_albedo_blend_rate" INTEGER NOT NULL,
"wrinkle_detail_normal_power" INTEGER NOT NULL,
"muscle_albedo_blend_rate" INTEGER NOT NULL,
"muscle_detail_normal_power" INTEGER NOT NULL,
"height" INTEGER NOT NULL,
"head_size" INTEGER NOT NULL,
"neck_offset" INTEGER NOT NULL,
"neck_scale" INTEGER NOT NULL,
"upper_body_scale_x" INTEGER NOT NULL,
"belly_size" INTEGER NOT NULL,
"teat_scale" INTEGER NOT NULL,
"tekubi_size" INTEGER NOT NULL,
"koshi_offset" INTEGER NOT NULL,
"koshi_size" INTEGER NOT NULL,
"ankle_offset" INTEGER NOT NULL,
"fat" INTEGER NOT NULL,
"muscle" INTEGER NOT NULL,
"motion_filter" INTEGER NOT NULL,
CONSTRAINT "fk_ddon_edit_info_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_status_info"
(
"character_common_id" INTEGER PRIMARY KEY NOT NULL,
"revive_point" SMALLINT NOT NULL,
"hp" INTEGER NOT NULL,
"white_hp" INTEGER NOT NULL,
CONSTRAINT "fk_ddon_status_info_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
);
2022-09-22 20:37:13 +08:00
CREATE TABLE IF NOT EXISTS "ddon_character_matching_profile"
(
"character_id" INTEGER PRIMARY KEY NOT NULL,
"entry_job" SMALLINT NOT NULL,
"entry_job_level" INTEGER NOT NULL,
"current_job" SMALLINT NOT NULL,
"current_job_level" INTEGER NOT NULL,
"objective_type1" INTEGER NOT NULL,
"objective_type2" INTEGER NOT NULL,
"play_style" INTEGER NOT NULL,
"comment" TEXT NOT NULL,
"is_join_party" BOOLEAN NOT NULL,
CONSTRAINT "fk_ddon_character_matching_profile_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
2022-09-22 20:37:13 +08:00
CREATE TABLE IF NOT EXISTS "ddon_character_profile"
(
"character_common_id" INTEGER PRIMARY KEY NOT NULL,
"background_id" SMALLINT NOT NULL,
"title_uid" INTEGER NOT NULL,
"title_index" INTEGER NOT NULL,
"motion_id" SMALLINT NOT NULL,
"motion_frame_no" INTEGER NOT NULL,
"comment" TEXT NOT NULL,
CONSTRAINT "fk_ddon_character_profile_character_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
2022-01-18 15:28:26 +08:00
);
CREATE TABLE IF NOT EXISTS "ddon_character_job_data"
2022-09-02 21:15:48 +02:00
(
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"exp" INTEGER NOT NULL,
"job_point" INTEGER NOT NULL,
"lv" INTEGER NOT NULL,
"atk" SMALLINT NOT NULL,
"def" SMALLINT NOT NULL,
"m_atk" SMALLINT NOT NULL,
"m_def" SMALLINT NOT NULL,
"strength" SMALLINT NOT NULL,
"down_power" SMALLINT NOT NULL,
"shake_power" SMALLINT NOT NULL,
"stun_power" SMALLINT NOT NULL,
"consitution" SMALLINT NOT NULL,
"guts" SMALLINT NOT NULL,
"fire_resist" SMALLINT NOT NULL,
"ice_resist" SMALLINT NOT NULL,
"thunder_resist" SMALLINT NOT NULL,
"holy_resist" SMALLINT NOT NULL,
"dark_resist" SMALLINT NOT NULL,
"spread_resist" SMALLINT NOT NULL,
"freeze_resist" SMALLINT NOT NULL,
"shock_resist" SMALLINT NOT NULL,
"absorb_resist" SMALLINT NOT NULL,
"dark_elm_resist" SMALLINT NOT NULL,
"poison_resist" SMALLINT NOT NULL,
"slow_resist" SMALLINT NOT NULL,
"sleep_resist" SMALLINT NOT NULL,
"stun_resist" SMALLINT NOT NULL,
"wet_resist" SMALLINT NOT NULL,
"oil_resist" SMALLINT NOT NULL,
"seal_resist" SMALLINT NOT NULL,
"curse_resist" SMALLINT NOT NULL,
"soft_resist" SMALLINT NOT NULL,
"stone_resist" SMALLINT NOT NULL,
"gold_resist" SMALLINT NOT NULL,
"fire_reduce_resist" SMALLINT NOT NULL,
"ice_reduce_resist" SMALLINT NOT NULL,
"thunder_reduce_resist" SMALLINT NOT NULL,
"holy_reduce_resist" SMALLINT NOT NULL,
"dark_reduce_resist" SMALLINT NOT NULL,
"atk_down_resist" SMALLINT NOT NULL,
"def_down_resist" SMALLINT NOT NULL,
"m_atk_down_resist" SMALLINT NOT NULL,
"m_def_down_resist" SMALLINT NOT NULL,
CONSTRAINT "pk_ddon_character_job_data" PRIMARY KEY ("character_common_id", "job"),
CONSTRAINT "fk_ddon_character_job_data_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
2022-09-02 21:15:48 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_storage
(
"character_id" INTEGER NOT NULL,
"storage_type" SMALLINT NOT NULL,
"slot_max" SMALLINT NOT NULL,
"item_sort" BLOB NOT NULL,
CONSTRAINT "pk_ddon_storage" PRIMARY KEY ("character_id", "storage_type"),
CONSTRAINT "fk_ddon_storage_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
2023-03-13 21:20:09 +01:00
);
CREATE TABLE IF NOT EXISTS ddon_wallet_point
2023-03-13 21:20:09 +01:00
(
"character_id" INTEGER NOT NULL,
"type" SMALLINT NOT NULL,
"value" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_wallet_point" PRIMARY KEY ("character_id", "type"),
CONSTRAINT "fk_ddon_wallet_point_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_storage_item"
(
"item_uid" TEXT PRIMARY KEY NOT NULL,
"character_id" INTEGER NOT NULL,
"storage_type" SMALLINT NOT NULL,
"slot_no" SMALLINT NOT NULL,
"item_id" INTEGER NOT NULL,
"item_num" INTEGER NOT NULL,
2024-10-18 22:48:08 -07:00
"safety" SMALLINT NOT NULL,
"color" SMALLINT NOT NULL,
"plus_value" SMALLINT NOT NULL,
"equip_points" INTEGER NOT NULL,
CONSTRAINT "uq_ddon_storage_item_character_id_storage_type_slot_no" UNIQUE ("character_id", "storage_type", "slot_no"),
CONSTRAINT "fk_ddon_storage_item_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_equip_item"
2022-09-02 21:15:48 +02:00
(
"item_uid" TEXT NOT NULL,
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"equip_type" SMALLINT NOT NULL,
"equip_slot" SMALLINT NOT NULL,
CONSTRAINT "pk_ddon_equip_item" PRIMARY KEY ("character_common_id", "job", "equip_type", "equip_slot"),
CONSTRAINT "fk_ddon_equip_item_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
2022-09-02 21:15:48 +02:00
);
CREATE TABLE IF NOT EXISTS "ddon_equip_job_item"
2022-09-02 21:15:48 +02:00
(
"item_uid" TEXT NOT NULL,
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"equip_slot" SMALLINT NOT NULL,
CONSTRAINT "pk_ddon_equip_job_item" PRIMARY KEY ("character_common_id", "job", "equip_slot"),
CONSTRAINT "fk_ddon_equip_job_item_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
2022-09-02 23:56:54 +02:00
);
CREATE TABLE IF NOT EXISTS "ddon_normal_skill_param"
2022-09-04 15:00:04 +02:00
(
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"skill_no" INTEGER NOT NULL,
"index" INTEGER NOT NULL,
"pre_skill_no" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_normal_skill_param" PRIMARY KEY ("character_common_id", "job", "skill_no"),
CONSTRAINT "fk_ddon_normal_skill_param_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
2022-09-04 15:00:04 +02:00
);
CREATE TABLE IF NOT EXISTS "ddon_learned_custom_skill"
2023-06-07 21:03:49 +02:00
(
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"skill_id" INTEGER NOT NULL,
"skill_lv" SMALLINT NOT NULL,
CONSTRAINT "pk_ddon_learned_custom_skill" PRIMARY KEY ("character_common_id", "job", "skill_id"),
CONSTRAINT "fk_ddon_learned_custom_skill_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
2023-06-07 21:03:49 +02:00
);
CREATE TABLE IF NOT EXISTS "ddon_equipped_custom_skill"
(
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"slot_no" SMALLINT NOT NULL,
"skill_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_equipped_custom_skill" PRIMARY KEY ("character_common_id", "job", "slot_no"),
CONSTRAINT "fk_ddon_equipped_custom_skill_character_common_id" FOREIGN KEY ("character_common_id", "job", "skill_id") REFERENCES "ddon_learned_custom_skill" ("character_common_id", "job", "skill_id") ON DELETE CASCADE
2023-06-07 21:03:49 +02:00
);
CREATE TABLE IF NOT EXISTS "ddon_learned_ability"
2023-06-07 21:03:49 +02:00
(
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"ability_id" INTEGER NOT NULL,
"ability_lv" SMALLINT NOT NULL,
CONSTRAINT "pk_ddon_learned_ability" PRIMARY KEY ("character_common_id", "job", "ability_id"),
CONSTRAINT "fk_ddon_learned_ability_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_equipped_ability"
(
"character_common_id" INTEGER NOT NULL,
"equipped_to_job" SMALLINT NOT NULL,
"job" SMALLINT NOT NULL,
"slot_no" SMALLINT NOT NULL,
"ability_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_equipped_ability" PRIMARY KEY ("character_common_id", "equipped_to_job", "slot_no"),
CONSTRAINT "fk_ddon_equipped_ability_character_common_id" FOREIGN KEY ("character_common_id", "job", "ability_id") REFERENCES "ddon_learned_ability" ("character_common_id", "job", "ability_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_shortcut"
(
"character_id" INTEGER NOT NULL,
"page_no" INTEGER NOT NULL,
"button_no" INTEGER NOT NULL,
"shortcut_id" INTEGER NOT NULL,
u32_data INTEGER NOT NULL,
f32_data INTEGER NOT NULL,
"exex_type" SMALLINT NOT NULL,
CONSTRAINT "pk_ddon_shortcut" PRIMARY KEY ("character_id", "page_no", "button_no"),
CONSTRAINT "fk_ddon_shortcut_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_communication_shortcut"
(
"character_id" INTEGER NOT NULL,
"page_no" INTEGER NOT NULL,
"button_no" INTEGER NOT NULL,
"type" SMALLINT NOT NULL,
"category" SMALLINT NOT NULL,
"id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_communication_shortcut" PRIMARY KEY ("character_id", "page_no", "button_no"),
CONSTRAINT "fk_ddon_communication_shortcut_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_pawn_reaction"
(
"pawn_id" INTEGER NOT NULL,
"reaction_type" SMALLINT NOT NULL,
"motion_no" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_pawn_reaction" PRIMARY KEY ("pawn_id", "reaction_type"),
CONSTRAINT "fk_ddon_pawn_reaction_pawn_id" FOREIGN KEY ("pawn_id") REFERENCES "ddon_pawn" ("pawn_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_sp_skill"
(
"pawn_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"sp_skill_id" SMALLINT NOT NULL,
"sp_skill_lv" SMALLINT NOT NULL,
CONSTRAINT "pk_ddon_sp_skill" PRIMARY KEY ("pawn_id", "job", "sp_skill_id"),
CONSTRAINT "fk_ddon_sp_skill_pawn_id" FOREIGN KEY ("pawn_id") REFERENCES "ddon_pawn" ("pawn_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_released_warp_point"
2023-10-13 17:52:06 +02:00
(
"character_id" INTEGER NOT NULL,
"warp_point_id" INTEGER NOT NULL,
"favorite_slot_no" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_released_warp_point" PRIMARY KEY ("character_id", "warp_point_id"),
CONSTRAINT "fk_ddon_released_warp_point_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
2023-10-13 17:52:06 +02:00
CREATE TABLE IF NOT EXISTS "ddon_game_token"
2022-01-18 15:28:26 +08:00
(
"account_id" INTEGER PRIMARY KEY NOT NULL,
"character_id" INTEGER NOT NULL,
"token" TEXT NOT NULL,
"created" DATETIME NOT NULL,
CONSTRAINT "uq_ddon_game_token_token" UNIQUE ("token"),
CONSTRAINT "fk_ddon_game_token_account_id" FOREIGN KEY ("account_id") REFERENCES "account" ("id") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_game_token_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id")
2022-09-22 20:37:13 +08:00
);
CREATE TABLE IF NOT EXISTS "ddon_connection"
2022-09-22 20:37:13 +08:00
(
Fix: General Bugfixes, April 2026 (#1031) * Fix bug where appraising certain items in BBM while you had a copy of that item in your regular character's storage chest would throw an error. Fix bugs where SQLite would occasionally have a DB lock conflict due to poor connection management. * Be more aggressive when clearing out invalid priority quests. * Fix bug where the Beauty Shop would sometimes complain about PRICE_NO_MATCH when trying to pay with Silver Tickets. * Fix bugs where pawn search wouldn't display craft levels, and didn't support filtering by craft level. * Migrate 58 > 59. Store character_id in the connections table so we can use it for player tracking. Adjust player tracking to be driven by the DB. * Fix bugs where bazaar processes could sometimes delete items if the storage was full. * Add feature where you can sell special items (like PP crystals) to consume them, instead of having to spam use them. * Fix bug where deleting pawns would badly mangle the equipment entries of other pawns owned by the same character. * Add support for LightQuestRepeatsPerDay, limiting the number of times a board quest can be offered to a single player per day. * Research for EquipStatId. * Maybe fix bug where base game augments were secretly applying even in BBM? Maybe fix bug where certain alt-pallet skills wouldn't work in multiplayer due to missing context information. * Update database migration version. * Automatically promote localhost players to admin when running in debug mode. Adjust /finishquesttype to clear progress when finishing quests. * Fix bug where hired pawns wearing job emblems weren't benefiting from the stats on them. Hired pawns now reflect the hiring character's job emblems entirely.
2026-04-30 21:28:52 -07:00
"server_id" INTEGER NOT NULL,
"account_id" INTEGER NOT NULL,
"type" INTEGER NOT NULL,
"created" DATETIME NOT NULL,
"character_id" INTEGER,
CONSTRAINT "uq_ddon_connection_server_id_account_id" UNIQUE ("server_id", "account_id"),
CONSTRAINT "fk_ddon_connection_token_account_id" FOREIGN KEY ("account_id") REFERENCES "account" ("id") ON DELETE CASCADE
);
2024-04-27 15:44:19 -04:00
CREATE TABLE IF NOT EXISTS "ddon_dragon_force_augmentation"
(
"character_common_id" INTEGER NOT NULL,
"element_id" INTEGER NOT NULL,
"page_no" INTEGER NOT NULL,
"group_no" INTEGER NOT NULL,
"index_no" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_dragon_force_augmentation" PRIMARY KEY ("character_common_id", "element_id"),
CONSTRAINT "fk_ddon_dragon_force_augmentation_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_orb_gain_extend_param"
(
"character_common_id" INTEGER PRIMARY KEY NOT NULL,
"hp_max" INTEGER NOT NULL,
"stamina_max" INTEGER NOT NULL,
"physical_attack" INTEGER NOT NULL,
"physical_defence" INTEGER NOT NULL,
"magic_attack" INTEGER NOT NULL,
"magic_defence" INTEGER NOT NULL,
"ability_cost" INTEGER NOT NULL,
"jewelry_slot" INTEGER NOT NULL,
"use_item_slot" INTEGER NOT NULL,
"material_item_slot" INTEGER NOT NULL,
"equip_item_slot" INTEGER NOT NULL,
"main_pawn_slot" INTEGER NOT NULL,
"support_pawn_slot" INTEGER NOT NULL,
CONSTRAINT "fk_ddon_orb_gain_extend_param_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_unlocked_secret_ability"
(
"character_common_id" INTEGER NOT NULL,
"ability_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_unlocked_secret_ability" PRIMARY KEY ("character_common_id", "ability_id"),
CONSTRAINT "fk_unlocked_secret_ability_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_contact_list"
(
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
"requester_character_id" INTEGER NOT NULL,
"requested_character_id" INTEGER NOT NULL,
"status" SMALLINT NOT NULL,
"type" SMALLINT NOT NULL,
"requester_favorite" BOOLEAN NOT NULL,
"requested_favorite" BOOLEAN NOT NULL,
CONSTRAINT "fk_ddon_contact_list_requester_character_id" FOREIGN KEY ("requester_character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_contact_list_requested_character_id" FOREIGN KEY ("requested_character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE,
CONSTRAINT "uq_ddon_contact_list_requester_character_id_requested_char_id" UNIQUE ("requester_character_id", "requested_character_id")
);
CREATE INDEX IF NOT EXISTS "idx_ddon_contact_list_requester_character_id" ON "ddon_contact_list" ("requester_character_id");
CREATE INDEX IF NOT EXISTS "idx_ddon_contact_list_requested_character_id" ON "ddon_contact_list" ("requested_character_id");
2024-05-31 18:53:26 +02:00
CREATE TABLE IF NOT EXISTS "ddon_bazaar_exhibition"
(
2024-05-31 18:53:26 +02:00
"bazaar_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"character_id" INTEGER NOT NULL,
"sequence" INTEGER NOT NULL,
"item_id" INTEGER NOT NULL,
"num" INTEGER NOT NULL,
"price" INTEGER NOT NULL,
"exhibition_time" DATETIME NOT NULL,
"state" SMALLINT NOT NULL,
"proceeds" INTEGER NOT NULL,
"expire" DATETIME NOT NULL,
CONSTRAINT "fk_ddon_bazaar_exhibition_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_ddon_bazaar_exhibition_all_filter" ON "ddon_bazaar_exhibition" ("item_id", "state", "expire", "character_id", "price");
CREATE INDEX IF NOT EXISTS "idx_ddon_bazaar_exhibition_state_expire" ON "ddon_bazaar_exhibition" ("state", "expire");
CREATE TABLE IF NOT EXISTS "ddon_reward_box"
(
"uniq_reward_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"character_common_id" INTEGER NOT NULL,
"quest_schedule_id" INTEGER NOT NULL,
"num_random_rewards" INTEGER NOT NULL,
"random_reward0_index" INTEGER NOT NULL,
"random_reward1_index" INTEGER NOT NULL,
"random_reward2_index" INTEGER NOT NULL,
"random_reward3_index" INTEGER NOT NULL,
"is_repeat_reward" INTEGER NOT NULL DEFAULT 0,
"reward_flags" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "fk_ddon_reward_box_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_ddon_reward_box_character_common_id" ON "ddon_reward_box" ("character_common_id");
CREATE TABLE IF NOT EXISTS "ddon_reward_box_item"
(
"reward_box_item_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"uniq_reward_id" INTEGER NOT NULL,
"item_id" INTEGER NOT NULL,
"num" INTEGER NOT NULL,
"uid" TEXT NOT NULL,
"type" INTEGER NOT NULL,
"is_charge" INTEGER NOT NULL DEFAULT 0,
"is_help" INTEGER NOT NULL DEFAULT 0,
"select_group_id" INTEGER NOT NULL DEFAULT 0,
"is_instance" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "fk_ddon_reward_box_item_uniq_reward_id" FOREIGN KEY ("uniq_reward_id") REFERENCES "ddon_reward_box" ("uniq_reward_id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_ddon_reward_box_item_uniq_reward_id" ON "ddon_reward_box_item" ("uniq_reward_id");
CREATE TABLE IF NOT EXISTS "ddon_reward_staged_item"
(
"uid" TEXT PRIMARY KEY NOT NULL,
"reward_box_item_id" INTEGER NOT NULL,
"item_id" INTEGER NOT NULL,
"num" INTEGER NOT NULL DEFAULT 1,
"color" INTEGER NOT NULL DEFAULT 0,
"plus_value" INTEGER NOT NULL DEFAULT 0,
"safety_setting" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "fk_reward_staged_item_reward_box_item_id"
FOREIGN KEY ("reward_box_item_id")
REFERENCES "ddon_reward_box_item" ("reward_box_item_id")
ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_reward_staged_item_reward_box_item_id" ON "ddon_reward_staged_item" ("reward_box_item_id");
CREATE TABLE IF NOT EXISTS "ddon_reward_staged_item_crest"
(
"uid" TEXT NOT NULL,
"slot" INTEGER NOT NULL,
"crest_id" INTEGER NOT NULL,
"level" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "pk_reward_staged_item_crest" PRIMARY KEY ("uid", "slot"),
CONSTRAINT "fk_reward_staged_item_crest_uid"
FOREIGN KEY ("uid")
REFERENCES "ddon_reward_staged_item" ("uid")
ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_quest_progress"
(
"character_common_id" INTEGER NOT NULL,
"quest_type" INTEGER NOT NULL,
"quest_schedule_id" INTEGER NOT NULL,
"step" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_quest_progress" PRIMARY KEY ("character_common_id", "quest_schedule_id"),
CONSTRAINT "fk_ddon_quest_progress_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_ddon_quest_progress_character_common_id" ON "ddon_quest_progress" ("character_common_id");
CREATE TABLE IF NOT EXISTS "ddon_quest_delivery_progress"
(
"character_common_id" INTEGER NOT NULL,
"quest_schedule_id" INTEGER NOT NULL,
"item_id" INTEGER NOT NULL,
"amount_delivered" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "pk_ddon_quest_delivery_progress" PRIMARY KEY ("character_common_id", "quest_schedule_id", "item_id"),
CONSTRAINT "fk_ddon_quest_delivery_progress_quest_progress"
FOREIGN KEY ("character_common_id", "quest_schedule_id")
REFERENCES "ddon_quest_progress" ("character_common_id", "quest_schedule_id")
ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_completed_quests"
(
"character_common_id" INTEGER NOT NULL,
"quest_type" INTEGER NOT NULL,
"quest_id" INTEGER NOT NULL,
"clear_count" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "pk_ddon_completed_quests" PRIMARY KEY ("character_common_id", "quest_id"),
CONSTRAINT "fk_ddon_completed_quests_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_completed_quests_character_common_id_type" ON "ddon_completed_quests" ("character_common_id", "quest_type");
CREATE INDEX IF NOT EXISTS "idx_ddon_completed_quests_character_common_id_quest_id" ON "ddon_completed_quests" ("character_common_id", "quest_id");
CREATE TABLE IF NOT EXISTS "ddon_priority_quests"
(
"character_common_id" INTEGER NOT NULL,
"quest_schedule_id" INTEGER NOT NULL,
CONSTRAINT "fk_priority_to_progress" FOREIGN KEY ("character_common_id", "quest_schedule_id") REFERENCES "ddon_quest_progress" ("character_common_id", "quest_schedule_id") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_priority_quests_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE,
CONSTRAINT "uq_character_common_id_quest_schedule_id" UNIQUE ("character_common_id", "quest_schedule_id")
);
CREATE TABLE IF NOT EXISTS "ddon_mail"
(
"message_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"character_id" INTEGER NOT NULL,
"message_state" INTEGER NOT NULL,
"sender_id" INTEGER NOT NULL,
"message_title" VARCHAR(256) NOT NULL DEFAULT '',
"message_body" VARCHAR(2048) NOT NULL DEFAULT '',
"send_date" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "fk_ddon_mail_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_ddon_mail_character_id" ON "ddon_mail" ("character_id");
CREATE TABLE IF NOT EXISTS "ddon_quest_period_first_clear"
(
"character_common_id" INTEGER NOT NULL,
"quest_type" INTEGER NOT NULL,
"quest_schedule_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_quest_period_first_clear" PRIMARY KEY ("character_common_id", "quest_type", "quest_schedule_id"),
CONSTRAINT "fk_ddon_quest_period_first_clear_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_ddon_quest_period_first_clear_quest_type" ON "ddon_quest_period_first_clear" ("quest_type");
CREATE TABLE IF NOT EXISTS "ddon_system_mail"
(
"message_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"character_id" INTEGER NOT NULL,
"message_state" INTEGER NOT NULL,
"sender_name" VARCHAR(256) NOT NULL DEFAULT '',
"message_title" VARCHAR(256) NOT NULL DEFAULT '',
"message_body" VARCHAR(2048) NOT NULL DEFAULT '',
"send_date" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "fk_ddon_system_mail_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_ddon_system_mail_character_id" ON "ddon_system_mail" ("character_id");
CREATE TABLE IF NOT EXISTS "ddon_system_mail_attachment"
(
"attachment_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"message_id" INTEGER NOT NULL,
"attachment_type" INTEGER NOT NULL,
"is_received" BOOLEAN NOT NULL DEFAULT FALSE,
"param0" VARCHAR(256) NOT NULL DEFAULT '',
"param1" INTEGER NOT NULL DEFAULT 0,
"param2" INTEGER NOT NULL DEFAULT 0,
"param3" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "fk_ddon_system_mail_attachment_message_id" FOREIGN KEY ("message_id") REFERENCES "ddon_system_mail" ("message_id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_ddon_system_mail_attachment_message_id" ON "ddon_system_mail_attachment" ("message_id");
CREATE TABLE IF NOT EXISTS "ddon_character_playpoint_data"
(
"character_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"play_point" INTEGER NOT NULL DEFAULT 0,
"exp_mode" TINYINT NOT NULL DEFAULT 1,
CONSTRAINT "pk_ddon_character_playpoint_data" PRIMARY KEY ("character_id", "job"),
CONSTRAINT "fk_ddon_character_playpoint_data_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
2024-07-28 17:56:19 -07:00
);
CREATE TABLE IF NOT EXISTS "ddon_stamp_bonus"
2024-07-28 17:56:19 -07:00
(
"character_id" INTEGER PRIMARY KEY NOT NULL,
"consecutive_stamp" INTEGER NOT NULL,
"total_stamp" INTEGER NOT NULL,
"can_stamp" BOOLEAN NOT NULL,
CONSTRAINT "fk_ddon_stamp_bonus_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
2024-08-02 21:39:03 -07:00
);
CREATE TABLE IF NOT EXISTS "ddon_crests"
(
"character_common_id" INTEGER NOT NULL,
"item_uid" TEXT NOT NULL,
"slot" INTEGER NOT NULL,
"crest_id" INTEGER NOT NULL,
"crest_amount" INTEGER NOT NULL,
CONSTRAINT "fk_ddon_crests_item_uid" FOREIGN KEY ("item_uid") REFERENCES "ddon_storage_item" ("item_uid") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_crests_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_ddon_crests_item_uid" ON "ddon_crests" ("item_uid");
CREATE INDEX IF NOT EXISTS "idx_ddon_crests_character_item" ON "ddon_crests" ("character_common_id", "item_uid");
CREATE TABLE IF NOT EXISTS "ddon_preset_ability"
(
"character_id" INTEGER NOT NULL,
"preset_no" INTEGER NOT NULL,
"preset_name" TEXT,
"ability_1" INTEGER,
"ability_2" INTEGER,
"ability_3" INTEGER,
"ability_4" INTEGER,
"ability_5" INTEGER,
"ability_6" INTEGER,
"ability_7" INTEGER,
"ability_8" INTEGER,
"ability_9" INTEGER,
"ability_10" INTEGER,
CONSTRAINT "pk_ddon_preset_ability" PRIMARY KEY ("character_id", "preset_no"),
CONSTRAINT "fk_ddon_preset_ability_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_pawn_craft_progress"
(
"craft_character_id" INTEGER NOT NULL,
"craft_lead_pawn_id" INTEGER NOT NULL,
"craft_support_pawn_id1" INTEGER NOT NULL,
"craft_support_pawn_id2" INTEGER NOT NULL,
"craft_support_pawn_id3" INTEGER NOT NULL,
"recipe_id" INTEGER NOT NULL,
"exp" INTEGER NOT NULL,
"npc_action_id" INTEGER NOT NULL,
"item_id" INTEGER NOT NULL,
"unk0" INTEGER NOT NULL,
"finish_at" INTEGER NOT NULL,
"exp_bonus" BOOLEAN NOT NULL,
"create_count" INTEGER NOT NULL,
"plus_value" INTEGER NOT NULL,
"great_success" BOOLEAN NOT NULL,
"bonus_exp" INTEGER NOT NULL,
"additional_quantity" INTEGER NOT NULL,
CONSTRAINT "fk_ddon_pawn_craft_progress_craft_character_id" FOREIGN KEY ("craft_character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_pawn_craft_progress_craft_lead_pawn_id" FOREIGN KEY ("craft_lead_pawn_id") REFERENCES "ddon_pawn" ("pawn_id") ON DELETE CASCADE
);
2024-08-10 15:17:30 -07:00
CREATE TABLE IF NOT EXISTS "ddon_binary_data"
2024-08-10 15:17:30 -07:00
(
"character_id" INTEGER PRIMARY KEY NOT NULL,
"binary_data" BLOB NOT NULL,
CONSTRAINT "fk_ddon_binary_data_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
feat: Add support for Bitterblack Maze Added support for the player to participate in Bitterblack Maze. This content allows the player to collect bracelets and earrings which gain randomized stats based on the job they are collected on. The player uses currency earned during the event to transfer items from the bitterblack maze content to the normal game content. Co-authored-by: Cert Co-authored-by: @Conner-Schaffer Co-authored-by: Dark Warrior Co-authored-by: @Sehkah Co-authored-by: Sera Eidolon What works: - Add support for creating a new character for BBM - Add class randomized loot - Bitterblack Maze special jewelry rewards - Add BBM Spawns - Add support for different Lyka menu options - Report Search Results - Reset Progress - Bitterblack Shop - Rare Item Appraisal - Bitterblack Item Takeaway - Equip items directly from treasure chest - Homepoint to Bitterblack Maze Cove when dead in the maze - Update Schema for new tables and provide migration strategy What doesn't work: - Using Pawns - Bitterblack Equipment Effect Seal - Player ready up menu - Item sort messes up sort between different modes - Clear timestamp is incorrect - Tracking treasure claimed - Inventory is not deleted when home pointing after death - Some enemies get stuck on terrain (probably wrong mob for area) - Original quest to start BBM not implemented - Reset progress doesn't consume reset tickets - Reset tickets not awarded - Players not in party sometimes can't be seen DB Migration: To update an existing database run 'dotnet run dbmigration' to upgrade from version '11' to version '12'.
2024-08-17 21:43:16 -04:00
);
CREATE TABLE IF NOT EXISTS "ddon_bbm_character_map"
(
"character_id" INTEGER PRIMARY KEY NOT NULL,
"bbm_character_id" INTEGER NOT NULL,
CONSTRAINT "fk_ddon_bbm_character_map_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
feat: Add support for Bitterblack Maze Added support for the player to participate in Bitterblack Maze. This content allows the player to collect bracelets and earrings which gain randomized stats based on the job they are collected on. The player uses currency earned during the event to transfer items from the bitterblack maze content to the normal game content. Co-authored-by: Cert Co-authored-by: @Conner-Schaffer Co-authored-by: Dark Warrior Co-authored-by: @Sehkah Co-authored-by: Sera Eidolon What works: - Add support for creating a new character for BBM - Add class randomized loot - Bitterblack Maze special jewelry rewards - Add BBM Spawns - Add support for different Lyka menu options - Report Search Results - Reset Progress - Bitterblack Shop - Rare Item Appraisal - Bitterblack Item Takeaway - Equip items directly from treasure chest - Homepoint to Bitterblack Maze Cove when dead in the maze - Update Schema for new tables and provide migration strategy What doesn't work: - Using Pawns - Bitterblack Equipment Effect Seal - Player ready up menu - Item sort messes up sort between different modes - Clear timestamp is incorrect - Tracking treasure claimed - Inventory is not deleted when home pointing after death - Some enemies get stuck on terrain (probably wrong mob for area) - Original quest to start BBM not implemented - Reset progress doesn't consume reset tickets - Reset tickets not awarded - Players not in party sometimes can't be seen DB Migration: To update an existing database run 'dotnet run dbmigration' to upgrade from version '11' to version '12'.
2024-08-17 21:43:16 -04:00
);
CREATE TABLE IF NOT EXISTS "ddon_bbm_progress"
(
"character_id" INTEGER PRIMARY KEY NOT NULL,
"start_time" INTEGER NOT NULL,
"content_id" INTEGER NOT NULL,
"content_mode" INTEGER NOT NULL,
"tier" INTEGER NOT NULL,
"killed_death" BOOLEAN NOT NULL,
"last_ticket_time" INTEGER NOT NULL,
"is_paid_reset" BOOLEAN NOT NULL DEFAULT 0,
CONSTRAINT "fk_ddon_bbm_progress_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
feat: Add support for Bitterblack Maze Added support for the player to participate in Bitterblack Maze. This content allows the player to collect bracelets and earrings which gain randomized stats based on the job they are collected on. The player uses currency earned during the event to transfer items from the bitterblack maze content to the normal game content. Co-authored-by: Cert Co-authored-by: @Conner-Schaffer Co-authored-by: Dark Warrior Co-authored-by: @Sehkah Co-authored-by: Sera Eidolon What works: - Add support for creating a new character for BBM - Add class randomized loot - Bitterblack Maze special jewelry rewards - Add BBM Spawns - Add support for different Lyka menu options - Report Search Results - Reset Progress - Bitterblack Shop - Rare Item Appraisal - Bitterblack Item Takeaway - Equip items directly from treasure chest - Homepoint to Bitterblack Maze Cove when dead in the maze - Update Schema for new tables and provide migration strategy What doesn't work: - Using Pawns - Bitterblack Equipment Effect Seal - Player ready up menu - Item sort messes up sort between different modes - Clear timestamp is incorrect - Tracking treasure claimed - Inventory is not deleted when home pointing after death - Some enemies get stuck on terrain (probably wrong mob for area) - Original quest to start BBM not implemented - Reset progress doesn't consume reset tickets - Reset tickets not awarded - Players not in party sometimes can't be seen DB Migration: To update an existing database run 'dotnet run dbmigration' to upgrade from version '11' to version '12'.
2024-08-17 21:43:16 -04:00
);
CREATE TABLE IF NOT EXISTS "ddon_bbm_rewards"
(
"character_id" INTEGER NOT NULL,
"gold_marks" INTEGER NOT NULL,
"silver_marks" INTEGER NOT NULL,
"red_marks" INTEGER NOT NULL,
"stage_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_bbm_rewards" PRIMARY KEY ("character_id", "stage_id"),
CONSTRAINT "fk_ddon_bbm_rewards_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
feat: Add support for Bitterblack Maze Added support for the player to participate in Bitterblack Maze. This content allows the player to collect bracelets and earrings which gain randomized stats based on the job they are collected on. The player uses currency earned during the event to transfer items from the bitterblack maze content to the normal game content. Co-authored-by: Cert Co-authored-by: @Conner-Schaffer Co-authored-by: Dark Warrior Co-authored-by: @Sehkah Co-authored-by: Sera Eidolon What works: - Add support for creating a new character for BBM - Add class randomized loot - Bitterblack Maze special jewelry rewards - Add BBM Spawns - Add support for different Lyka menu options - Report Search Results - Reset Progress - Bitterblack Shop - Rare Item Appraisal - Bitterblack Item Takeaway - Equip items directly from treasure chest - Homepoint to Bitterblack Maze Cove when dead in the maze - Update Schema for new tables and provide migration strategy What doesn't work: - Using Pawns - Bitterblack Equipment Effect Seal - Player ready up menu - Item sort messes up sort between different modes - Clear timestamp is incorrect - Tracking treasure claimed - Inventory is not deleted when home pointing after death - Some enemies get stuck on terrain (probably wrong mob for area) - Original quest to start BBM not implemented - Reset progress doesn't consume reset tickets - Reset tickets not awarded - Players not in party sometimes can't be seen DB Migration: To update an existing database run 'dotnet run dbmigration' to upgrade from version '11' to version '12'.
2024-08-17 21:43:16 -04:00
);
CREATE TABLE IF NOT EXISTS "ddon_bbm_content_treasure"
(
"character_id" INTEGER NOT NULL,
"stage_id" INTEGER NOT NULL,
"group_id" INTEGER NOT NULL,
"index" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_bbm_content_treasure" PRIMARY KEY ("character_id", "stage_id", "group_id", "index"),
CONSTRAINT "fk_ddon_bbm_content_treasure_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
2024-09-16 23:15:31 -07:00
CREATE TABLE IF NOT EXISTS "ddon_clan_param"
(
"clan_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"clan_level" INTEGER NOT NULL,
"member_num" INTEGER NOT NULL,
"master_id" INTEGER NOT NULL,
"system_restriction" BOOLEAN NOT NULL,
"is_base_release" BOOLEAN NOT NULL,
"can_base_release" BOOLEAN NOT NULL,
"total_clan_point" INTEGER NOT NULL,
"money_clan_point" INTEGER NOT NULL,
"name" TEXT NOT NULL,
"short_name" TEXT NOT NULL,
"emblem_mark_type" SMALLINT NOT NULL,
"emblem_base_type" SMALLINT NOT NULL,
"emblem_main_color" SMALLINT NOT NULL,
"emblem_sub_color" SMALLINT NOT NULL,
"motto" INTEGER NOT NULL,
"active_days" INTEGER NOT NULL,
"active_time" INTEGER NOT NULL,
"characteristic" INTEGER NOT NULL,
"is_publish" BOOLEAN NOT NULL,
"comment" TEXT NOT NULL,
"board_message" TEXT NOT NULL,
"created" DATETIME NOT NULL
);
CREATE TABLE IF NOT EXISTS "ddon_clan_membership"
(
"character_id" INTEGER NOT NULL,
"clan_id" INTEGER NOT NULL,
"rank" INTEGER NOT NULL,
"permission" INTEGER NOT NULL,
"created" DATETIME NOT NULL,
CONSTRAINT "pk_ddon_clan_membership" PRIMARY KEY ("character_id", "clan_id"),
CONSTRAINT "fk_ddon_clan_membership_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_clan_membership_clan_id" FOREIGN KEY ("clan_id") REFERENCES "ddon_clan_param" ("clan_id") ON DELETE CASCADE
2024-09-16 23:15:31 -07:00
);
CREATE TABLE IF NOT EXISTS "ddon_clan_shop_purchases"
(
"clan_id" INTEGER NOT NULL,
"lineup_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_clan_shop_purchases" PRIMARY KEY ("clan_id", "lineup_id"),
CONSTRAINT "fl_ddon_clan_shop_purchases_clan_id" FOREIGN KEY ("clan_id") REFERENCES "ddon_clan_param" ("clan_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_clan_base_customization"
(
"clan_id" INTEGER NOT NULL,
"type" INTEGER NOT NULL,
"furniture_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_clan_base_customization" PRIMARY KEY ("clan_id", "type"),
CONSTRAINT "fl_ddon_clan_base_customization_clan_id" FOREIGN KEY ("clan_id") REFERENCES "ddon_clan_param" ("clan_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_epitaph_road_unlocks"
(
"character_id" INTEGER NOT NULL,
"epitaph_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_epitaph_road_unlocks" PRIMARY KEY ("character_id", "epitaph_id"),
CONSTRAINT "fk_ddon_epitaph_road_unlocks_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_epitaph_claimed_weekly_rewards"
(
"character_id" INTEGER NOT NULL,
"epitaph_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_epitaph_claimed_weekly_rewards" PRIMARY KEY ("character_id", "epitaph_id"),
CONSTRAINT "fk_ddon_epitaph_claimed_weekly_rewards_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_area_rank"
(
"character_id" INTEGER NOT NULL,
"area_id" INTEGER NOT NULL,
"rank" INTEGER NOT NULL,
"point" INTEGER NOT NULL,
"week_point" INTEGER NOT NULL,
"last_week_point" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_area_rank" PRIMARY KEY ("character_id", "area_id"),
CONSTRAINT "fk_ddon_area_rank_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_area_rank_supply"
(
"character_id" INTEGER NOT NULL,
"area_id" INTEGER NOT NULL,
"index" INTEGER NOT NULL,
"item_id" INTEGER NOT NULL,
"num" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_area_rank_supply" PRIMARY KEY ("character_id", "area_id", "index"),
CONSTRAINT "fk_ddon_area_rank_supply_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
INSERT INTO "ddon_schedule_next" ("type", "timestamp")
VALUES (4, 0);
2025-02-14 22:23:31 -08:00
CREATE TABLE IF NOT EXISTS "ddon_rank_record"
2025-02-14 22:23:31 -08:00
(
"record_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"character_id" INTEGER NOT NULL,
"quest_id" INTEGER NOT NULL,
"score" INTEGER NOT NULL,
"date" DATETIME NOT NULL,
CONSTRAINT "fk_ddon_rank_record_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
2025-02-14 22:23:31 -08:00
);
CREATE TABLE IF NOT EXISTS "ddon_partner_pawn"
(
"character_id" INTEGER NOT NULL,
"pawn_id" INTEGER NOT NULL,
"num_gifts" INTEGER NOT NULL,
"num_crafts" INTEGER NOT NULL,
"num_adventures" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_partner_pawn" PRIMARY KEY ("character_id", "pawn_id"),
CONSTRAINT "fk_ddonpartner_pawn_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_partner_pawn_last_affection_increase"
(
"character_id" INTEGER NOT NULL,
"pawn_id" INTEGER NOT NULL,
"action" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_partner_pawn_last_affection_increase" PRIMARY KEY ("character_id", "pawn_id", "action"),
CONSTRAINT "fk_ddon_partner_pawn_affection_increase_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_partner_pawn_pending_rewards"
(
"character_id" INTEGER NOT NULL,
"pawn_id" INTEGER NOT NULL,
"reward_level" INTEGER NOT NULL,
2026-03-17 16:16:43 +01:00
CONSTRAINT "pk_ddon_partner_pawn_pending_rewards" PRIMARY KEY ("character_id", "pawn_id", "reward_level"),
2026-03-18 23:15:44 +01:00
CONSTRAINT "fk_ddon_partner_pawn_pending_rewards_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE,
2026-03-18 23:12:03 +01:00
CONSTRAINT "fk_ddon_partner_pawn_pending_rewards_pawn_id" FOREIGN KEY ("pawn_id") REFERENCES "ddon_pawn" ("pawn_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_achievement_progress"
2025-03-16 18:55:35 -07:00
(
"character_id" INTEGER NOT NULL,
"achievement_type" INTEGER NOT NULL,
"achievement_param" INTEGER NOT NULL,
"progress" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_achievement_progress" PRIMARY KEY ("character_id", "achievement_type", "achievement_param"),
CONSTRAINT "fk_ddon_achievement_progress_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
2025-03-16 18:55:35 -07:00
);
CREATE TABLE IF NOT EXISTS "ddon_achievement"
2025-03-16 18:55:35 -07:00
(
"character_id" INTEGER NOT NULL,
"achievement_id" INTEGER NOT NULL,
"date" DATETIME NOT NULL,
CONSTRAINT "pk_ddon_achievement" PRIMARY KEY ("character_id", "achievement_id"),
CONSTRAINT "fk_ddon_achievement_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
2025-03-16 18:55:35 -07:00
);
CREATE TABLE IF NOT EXISTS "ddon_achievement_unique_crafts"
2025-03-16 18:55:35 -07:00
(
"character_id" INTEGER NOT NULL,
"item_id" INTEGER NOT NULL,
"craft_type" TINYINT NOT NULL,
CONSTRAINT "pk_ddon_achievement_unique_crafts" PRIMARY KEY ("character_id", "item_id"),
CONSTRAINT "fk_ddon_achievement_unique_crafts_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
2025-03-16 18:55:35 -07:00
);
CREATE TABLE IF NOT EXISTS "ddon_unlocked_items"
(
"character_id" INTEGER NOT NULL,
"category" INTEGER NOT NULL,
"item_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_unlocked_items" PRIMARY KEY ("character_id", "category", "item_id"),
CONSTRAINT "fk_ddon_unlocked_items_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_myroom_customization"
2025-04-05 03:43:04 -07:00
(
"character_id" INTEGER NOT NULL,
"layout_id" TINYINT NOT NULL,
"item_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_myroom_customization" PRIMARY KEY ("character_id", "layout_id"),
CONSTRAINT "fk_ddon_myroom_customization_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
2025-04-05 03:43:04 -07:00
);
CREATE TABLE IF NOT EXISTS "ddon_recycle_equipment"
(
"character_id" INTEGER NOT NULL,
"num_attempts" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_recycle_equipment" PRIMARY KEY ("character_id"),
CONSTRAINT "fk_ddon_recycle_equipment_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_equipment_limit_break"
(
"character_id" INTEGER NOT NULL,
"item_uid" TEXT NOT NULL,
"effect_id" INTEGER NOT NULL,
"unk1" INTEGER NOT NULL,
2025-08-25 21:18:16 -07:00
"effect_type" SMALLINT NOT NULL,
"unk0" SMALLINT NOT NULL,
CONSTRAINT "pk_ddon_equipment_limit_break" PRIMARY KEY ("character_id", "item_uid", "effect_type"),
CONSTRAINT "fk_ddon_equipment_limit_break_item_uid" FOREIGN KEY ("item_uid") REFERENCES "ddon_storage_item" ("item_uid") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_equipment_limit_break_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_ddon_equipment_limit_break_item_uid" ON "ddon_equipment_limit_break" ("item_uid");
CREATE TABLE IF NOT EXISTS "ddon_job_master_released_elements"
(
"character_id" INTEGER NOT NULL,
"job_id" INTEGER NOT NULL,
"release_type" INTEGER NOT NULL,
"release_id" INTEGER NOT NULL,
"release_level" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_job_master_released_elements" PRIMARY KEY ("character_id", "job_id", "release_type",
"release_id", "release_level"),
CONSTRAINT "fk_ddon_job_master_released_elements_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_job_master_active_orders"
(
"character_id" INTEGER NOT NULL,
"job_id" INTEGER NOT NULL,
"release_type" INTEGER NOT NULL,
"release_id" INTEGER NOT NULL,
"release_level" INTEGER NOT NULL,
"order_accepted" BOOLEAN NOT NULL,
CONSTRAINT "pk_ddon_job_master_active_orders" PRIMARY KEY ("character_id", "job_id", "release_type", "release_id"),
CONSTRAINT "fk_ddon_job_master_active_orders_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_job_master_active_orders_progress"
(
"character_id" INTEGER NOT NULL,
"job_id" INTEGER NOT NULL,
"release_type" INTEGER NOT NULL,
"release_id" INTEGER NOT NULL,
"target_id" INTEGER NOT NULL,
"condition" INTEGER NOT NULL,
"target_rank" INTEGER NOT NULL,
"target_num" INTEGER NOT NULL,
"current_num" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_job_master_active_orders_progress" PRIMARY KEY ("character_id", "job_id", "release_type", "release_id", "condition", "target_id", "target_rank"),
CONSTRAINT "fk_ddon_job_master_active_orders_progress" FOREIGN KEY ("character_id", "job_id", "release_type", "release_id") REFERENCES "ddon_job_master_active_orders" ("character_id", "job_id", "release_type", "release_id") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_job_master_active_orders_progress_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS ddon_skill_augmentation_released_elements (
"character_id" INTEGER NOT NULL,
"orb_tree_type" INTEGER NOT NULL,
"job_id" INTEGER NOT NULL,
"release_id" INTEGER NOT NULL,
CONSTRAINT pk_ddon_skill_augmentation_released_elements PRIMARY KEY ("character_id", "orb_tree_type", "job_id", "release_id"),
CONSTRAINT fk_ddon_skill_augmentation_released_elements_character_id FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_job_emblem" (
"character_id" INTEGER NOT NULL,
"job_id" INTEGER NOT NULL,
"emblem_level" SMALLINT NOT NULL,
"emblem_points_used" SMALLINT NOT NULL,
"physical_attack" SMALLINT NOT NULL,
"magick_attack" SMALLINT NOT NULL,
"physical_defense" SMALLINT NOT NULL,
"magick_defense" SMALLINT NOT NULL,
"max_hp" SMALLINT NOT NULL,
"max_stamina" SMALLINT NOT NULL,
"healing_power" SMALLINT NOT NULL,
"endurance" SMALLINT NOT NULL,
"blow_power" SMALLINT NOT NULL,
"chance_attack" SMALLINT NOT NULL,
"exhaust_attack" SMALLINT NOT NULL,
"knockout_power" SMALLINT NOT NULL,
"fire_resist" SMALLINT NOT NULL,
"ice_resist" SMALLINT NOT NULL,
"thunder_resist" SMALLINT NOT NULL,
"holy_resist" SMALLINT NOT NULL,
"dark_resist" SMALLINT NOT NULL,
CONSTRAINT pk_ddon_job_emblem PRIMARY KEY ("character_id", "job_id"),
CONSTRAINT fk_ddon_job_emblem_character_id FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_light_quests"
(
"variant_id" INTEGER NOT NULL,
"quest_schedule_id" INTEGER NOT NULL,
"quest_id" INTEGER NOT NULL,
"target" INTEGER NOT NULL,
"level" INTEGER NOT NULL,
"count" INTEGER NOT NULL,
"reward_xp" INTEGER NOT NULL,
"reward_g" INTEGER NOT NULL,
"reward_r" INTEGER NOT NULL,
"reward_ap" INTEGER NOT NULL,
"distribution_end" DATETIME NOT NULL,
CONSTRAINT "pk_ddon_light_quests_variant_id" PRIMARY KEY ("variant_id")
);
CREATE TABLE IF NOT EXISTS "ddon_pawn_favorites" (
"character_id" INTEGER NOT NULL,
"pawn_id" INTEGER NOT NULL,
CONSTRAINT pk_ddon_pawn_favorites PRIMARY KEY ("character_id", "pawn_id"),
CONSTRAINT fk_ddon_pawn_favorites_pawn_id FOREIGN KEY ("pawn_id") REFERENCES "ddon_pawn" ("pawn_id") ON DELETE CASCADE,
CONSTRAINT fk_ddon_pawn_favorites_character_id FOREIGN KEY ("character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_rental_pawn"
(
"hiring_character_id" INTEGER NOT NULL,
"pawn_id" INTEGER NOT NULL,
"data" BLOB NOT NULL,
"data_size" INTEGER NOT NULL,
"adventure_count" TINYINT NOT NULL,
"craft_count" TINYINT NOT NULL,
"kill_count" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_rental_pawn" PRIMARY KEY ("hiring_character_id", "pawn_id"),
CONSTRAINT "fk_ddon_rental_pawn_hiring_character_id" FOREIGN KEY ("hiring_character_id") REFERENCES "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_rental_pawn_feedback"
(
"hiring_character_id" INTEGER NOT NULL,
"pawn_id" INTEGER NOT NULL,
"hire_date" DATETIME NOT NULL,
"return_date" DATETIME NOT NULL,
"adventure_count" TINYINT NOT NULL,
"craft_count" TINYINT NOT NULL,
"kill_count" INTEGER NOT NULL,
"appearance_score" TINYINT,
"appearance_comment" TINYINT,
"combat_score" TINYINT,
"combat_comment" TINYINT,
"craft_score" TINYINT,
"craft_comment" TINYINT,
CONSTRAINT "fk_ddon_rental_pawn_feedback_pawn_id" FOREIGN KEY ("pawn_id") REFERENCES "ddon_pawn" ("pawn_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_dispel_seals"
(
"character_id" INTEGER NOT NULL,
"seal_index" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_dispel_seals" PRIMARY KEY ("character_id", "seal_index"),
CONSTRAINT "fk_ddon_dispel_seals_character_id" FOREIGN KEY ("character_id") references "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_bbm_reset_ticket"
(
"character_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_bbm_reset_ticket" PRIMARY KEY ("character_id"),
CONSTRAINT "fk_ddon_bbm_reset_ticket_character_id" FOREIGN KEY ("character_id") references "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_bbm_reset_gg"
(
"character_id" INTEGER NOT NULL,
"reset_count" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_bbm_reset_gg_ticket" PRIMARY KEY ("character_id"),
CONSTRAINT "fk_ddon_bbm_reset_gg_ticket_character_id" FOREIGN KEY ("character_id") references "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_group_chat_groups"
(
"group_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"group_name" TEXT NOT NULL,
"group_desc" TEXT NOT NULL,
"prevent_deletion" BOOLEAN NOT NULL
);
2026-03-14 19:24:33 +01:00
CREATE TABLE IF NOT EXISTS "ddon_group_chat"
(
"character_id" INTEGER NOT NULL,
"group_id" BIGINT NOT NULL,
CONSTRAINT "pk_ddon_group_chat" PRIMARY KEY ("character_id"),
CONSTRAINT "fk_ddon_group_chat_character_id" FOREIGN KEY ("character_id") references "ddon_character" ("character_id") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_group_chat_group_id" FOREIGN KEY ("group_id") references "ddon_group_chat_groups" ("group_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_black_list"
(
"character_id" INTEGER NOT NULL,
"target_id" INTEGER NOT NULL,
CONSTRAINT "pk_ddon_black_list" PRIMARY KEY ("character_id", "target_id"),
CONSTRAINT "fk_ddon_black_list_character_id" FOREIGN KEY ("character_id") references "ddon_character" ("character_id") ON DELETE CASCADE,
CONSTRAINT "fk_ddon_black_list_target_id" FOREIGN KEY ("target_id") references "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_communication_message_set"
(
"character_id" INTEGER NOT NULL,
"set_no" INTEGER NOT NULL,
"set_name" TEXT NOT NULL,
CONSTRAINT "pk_ddon_communication_message_set" PRIMARY KEY ("character_id", "set_no"),
CONSTRAINT "fk_ddon_communication_message_set_character_id" FOREIGN KEY ("character_id") references "ddon_character" ("character_id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_communication_message"
(
"character_id" INTEGER NOT NULL,
"set_no" INTEGER NOT NULL,
"message_no" INTEGER NOT NULL,
"message" TEXT NOT NULL,
"emotion" INTEGER NOT NULL,
"emotochat" BOOLEAN NOT NULL,
CONSTRAINT "pk_ddon_communication_message" PRIMARY KEY ("character_id", "set_no", "message_no"),
CONSTRAINT "fk_ddon_communication_message_character_id_set_no" FOREIGN KEY ("character_id", "set_no") references "ddon_communication_message_set" ("character_id", "set_no") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "ddon_substory_progress"
(
"character_id" INTEGER NOT NULL,
"substory_group_id" INTEGER NOT NULL,
"sequence_step" INTEGER NOT NULL DEFAULT 0,
"is_complete" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "pk_ddon_substory_progress" PRIMARY KEY ("character_id", "substory_group_id"),
CONSTRAINT "fk_ddon_substory_progress_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character"("character_id") ON DELETE CASCADE
);
INSERT INTO "ddon_schedule_next"(type, timestamp) VALUES
(2, 0),
(6, 0),
(8, 0),
(13, 0),
(19, 0),
(20, 0),
(23, 0),
(24, 0),
(25, 0),
(26, 0);