From 4f60b228d50c7cfbc1f4808a8a69e4e243ed06dd Mon Sep 17 00:00:00 2001 From: SlaveOfMagicbot Date: Thu, 1 Oct 2026 17:08:45 -0500 Subject: [PATCH] Complete documentation for all 44 database handlers with centralized performance considerations --- schema.sql | 8203 +++++++++++++++++ .../dbAccountHandler_Documentation.md | 87 + .../dbBaneHandler_Documentation.md | 63 + .../dbBaseClassHandler_Documentation.md | 73 + .../dbBlueprintHandler_Documentation.md | 119 + .../dbBoonHandler_Documentation.md | 43 + .../dbBuildingHandler_Documentation.md | 98 + ...dbBuildingLocationHandler_Documentation.md | 61 + .../dbCSSessionHandler_Documentation.md | 77 + .../dbCharacterPowerHandler_Documentation.md | 71 + .../dbCharacterRuneHandler_Documentation.md | 63 + .../dbCharacterSkillHandler_Documentation.md | 71 + .../dbCityHandler_Documentation.md | 97 + .../dbContractHandler_Documentation.md | 82 + .../dbEffectsBaseHandler_Documentation.md | 57 + ...ffectsResourceCostHandler_Documentation.md | 40 + .../dbEnchantmentHandler_Documentation.md | 46 + .../dbGuildHandler_Documentation.md | 118 + .../dbHeightMapHandler_Documentation.md | 42 + .../dbItemBaseHandler_Documentation.md | 71 + .../dbItemHandler_Documentation.md | 64 + .../dbKitHandler_Documentation.md | 54 + .../dbLootHandler_Documentation.md | 91 + .../dbMenuHandler_Documentation.md | 49 + .../dbMineHandler_Documentation.md | 83 + .../dbMobBaseHandler_Documentation.md | 66 + .../dbMobHandler_Documentation.md | 70 + .../dbNPCHandler_Documentation.md | 71 + .../dbPetitionHandler_Documentation.md | 72 + .../dbPlayerCharacterHandler_Documentation.md | 149 + .../dbPowerHandler_Documentation.md | 81 + .../dbPromotionClassHandler_Documentation.md | 77 + .../dbRaceHandler_Documentation.md | 45 + .../dbRealmHandler_Documentation.md | 78 + .../dbResistHandler_Documentation.md | 69 + ...bRuneBaseAttributeHandler_Documentation.md | 77 + .../dbRuneBaseEffectHandler_Documentation.md | 77 + .../dbRuneBaseHandler_Documentation.md | 76 + .../dbRunegateHandler_Documentation.md | 78 + .../dbShrineHandler_Documentation.md | 78 + .../dbSkillBaseHandler_Documentation.md | 81 + .../dbSkillReqHandler_Documentation.md | 75 + .../dbVendorDialogHandler_Documentation.md | 72 + .../dbWarehouseHandler_Documentation.md | 83 + .../Handler_Documentation_Index.md | 201 + 45 files changed, 11599 insertions(+) create mode 100644 schema.sql create mode 100644 src/engine/documentation/Handler Specific Documentation/dbAccountHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbBaneHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbBaseClassHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbBlueprintHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbBoonHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbBuildingHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbBuildingLocationHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbCSSessionHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbCharacterPowerHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbCharacterRuneHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbCharacterSkillHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbCityHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbContractHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbEffectsBaseHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbEffectsResourceCostHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbEnchantmentHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbGuildHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbHeightMapHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbItemBaseHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbItemHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbKitHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbLootHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbMenuHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbMineHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbMobBaseHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbMobHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbNPCHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbPetitionHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbPlayerCharacterHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbPowerHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbPromotionClassHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbRaceHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbRealmHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbResistHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbRuneBaseAttributeHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbRuneBaseEffectHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbRuneBaseHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbRunegateHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbShrineHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbSkillBaseHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbSkillReqHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbVendorDialogHandler_Documentation.md create mode 100644 src/engine/documentation/Handler Specific Documentation/dbWarehouseHandler_Documentation.md create mode 100644 src/engine/documentation/Handler_Documentation_Index.md diff --git a/schema.sql b/schema.sql new file mode 100644 index 00000000..f8d29bbc --- /dev/null +++ b/schema.sql @@ -0,0 +1,8203 @@ +-- MySQL dump 10.13 Distrib 8.0.23, for Linux (x86_64) +-- +-- Host: localhost Database: mbdb_108 +-- ------------------------------------------------------ +-- Server version 8.0.23 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!50503 SET NAMES utf8mb4 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `_city_audit` +-- + +DROP TABLE IF EXISTS `_city_audit`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `_city_audit` ( + `uid` int NOT NULL AUTO_INCREMENT, + `zone_name` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `zoneID` int DEFAULT NULL, + `guildUID` int NOT NULL DEFAULT '0', + `basic_zone_template_id` int DEFAULT NULL, + `city_prop_gm_guild` int DEFAULT NULL, + `city_prop_gm_nation` int DEFAULT NULL, + `city_prop_asset_rank` int DEFAULT NULL, + PRIMARY KEY (`uid`) +) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `_contract_equipment` +-- + +DROP TABLE IF EXISTS `_contract_equipment`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `_contract_equipment` ( + `contractID` int unsigned NOT NULL, + `templateID` int DEFAULT NULL, + `dropChance` float(10,2) DEFAULT '0.00' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `_mobile_booties` +-- + +DROP TABLE IF EXISTS `_mobile_booties`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `_mobile_booties` ( + `zoneID` int DEFAULT NULL, + `parent` int DEFAULT NULL, + `mob_index` int DEFAULT NULL, + `mobile_type` varchar(255) DEFAULT NULL, + `booty_type` varchar(255) DEFAULT NULL, + `booty_item` int DEFAULT NULL, + `booty_percent` float DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `_mobile_data` +-- + +DROP TABLE IF EXISTS `_mobile_data`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `_mobile_data` ( + `num_of_columns` int DEFAULT NULL, + `zoneID` int DEFAULT NULL, + `parent` int DEFAULT NULL, + `mob_index` int DEFAULT NULL, + `mobile_type` varchar(255) DEFAULT NULL, + `mobile_number_in_group` int DEFAULT NULL, + `mobile_change_to_find` int DEFAULT NULL, + `mobile_level` int DEFAULT NULL, + `mobile_behavior_file` varchar(255) DEFAULT NULL, + `mobile_dialog_override` varchar(255) DEFAULT NULL, + `mobile_base_exp_reward` int DEFAULT NULL, + `mobile_tenacity` float(255,4) DEFAULT NULL, + `mobile_courage` float(255,4) DEFAULT NULL, + `mobile_has_role_set` varchar(255) DEFAULT NULL, + `mobile_has_content` varchar(255) DEFAULT NULL, + `mobile_use_prefered_hp` varchar(255) DEFAULT NULL, + `mobile_root_fs_mid` varchar(255) DEFAULT NULL, + `mobile_parley_name` varchar(255) DEFAULT NULL, + `basic_zone_name_override` varchar(255) DEFAULT NULL, + `basic_zone_time_to_respawn` float(255,4) DEFAULT NULL, + `basic_zone_spawn_radius` float(255,4) DEFAULT NULL, + `basic_zone_y_rot` float(255,4) DEFAULT NULL, + `basic_zone_template_id` tinyint DEFAULT NULL, + `basic_zone_unknown1` varchar(255) DEFAULT NULL, + `basic_zone_level_number` int DEFAULT NULL, + `basic_zone_room_number` int DEFAULT NULL, + `basic_zone_unknown2` varchar(255) DEFAULT NULL, + `basic_zone_dungeon_level` int DEFAULT NULL, + `basic_zone_dungeon_row` int DEFAULT NULL, + `basic_zone_dungeon_column` int DEFAULT NULL, + `basic_zone_spawn_location_x` float(255,4) DEFAULT NULL, + `basic_zone_spawn_location_y` float(255,4) DEFAULT NULL, + `basic_zone_spawn_location_z` float(255,4) DEFAULT NULL, + `basic_zone_sparse_data` varchar(255) DEFAULT NULL, + `group_type` varchar(255) DEFAULT NULL, + `group_is_faction` varchar(255) DEFAULT NULL, + `group_is_guild` varchar(255) DEFAULT NULL, + `mobile_has_home_goal` varchar(255) DEFAULT NULL, + `mobile_home_goal` int DEFAULT NULL, + `mobile_spawn_home_goal` varchar(255) DEFAULT NULL, + `mobile_has_target_goal` varchar(255) DEFAULT NULL, + `mobile_target_goal` int DEFAULT NULL, + `mobile_spawn_target_goal` varchar(255) DEFAULT NULL, + `trainer_std_profit_margin` float(255,4) DEFAULT NULL, + `trainer_profit_margin` float(255,4) DEFAULT NULL, + `mobile_has_group_tactics` varchar(255) DEFAULT NULL, + `mobile_group_tactics` varchar(255) DEFAULT NULL, + `notEnemy` bigint DEFAULT NULL, + `enemy` bigint DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `_mobile_equipment` +-- + +DROP TABLE IF EXISTS `_mobile_equipment`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `_mobile_equipment` ( + `zoneID` varchar(255) DEFAULT NULL, + `parent` varchar(255) DEFAULT NULL, + `mob_index` varchar(255) DEFAULT NULL, + `mobile_type` varchar(255) DEFAULT NULL, + `templateID` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `item_float` varchar(255) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `_mobile_runestones` +-- + +DROP TABLE IF EXISTS `_mobile_runestones`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `_mobile_runestones` ( + `zoneID` int DEFAULT NULL, + `parent` int DEFAULT NULL, + `mob_index` int DEFAULT NULL, + `mobile_type` varchar(255) DEFAULT NULL, + `rune_id` int DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `_prop_data` +-- + +DROP TABLE IF EXISTS `_prop_data`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `_prop_data` ( + `prop_entry` int NOT NULL AUTO_INCREMENT, + `num_of_columns` int DEFAULT NULL, + `zoneID` int DEFAULT NULL, + `parent` int DEFAULT NULL, + `prop_index` int DEFAULT NULL, + `prop_type` varchar(255) DEFAULT NULL, + `prop_UUID` int DEFAULT NULL, + `prop_has_platform` varchar(255) DEFAULT NULL, + `prop_platform_height` float(255,4) DEFAULT NULL, + `prop_is_light_data` varchar(255) DEFAULT NULL, + `prop_has_zone_event` varchar(255) DEFAULT NULL, + `basic_zone_name_override` varchar(255) DEFAULT NULL, + `basic_zone_time_to_respawn` float(255,4) DEFAULT NULL, + `basic_zone_spawn_radius` float(255,4) DEFAULT NULL, + `basic_zone_y_rot` float(255,4) DEFAULT NULL, + `basic_zone_template_id` int DEFAULT NULL, + `basic_zone_unknown1` int DEFAULT NULL, + `basic_zone_level_number` bigint DEFAULT NULL, + `basic_zone_room_number` bigint DEFAULT NULL, + `basic_zone_unknown2` int DEFAULT NULL, + `basic_zone_dungeon_level` int DEFAULT NULL, + `basic_zone_dungeon_row` int DEFAULT NULL, + `basic_zone_dungeon_column` int DEFAULT NULL, + `basic_zone_spawn_location_x` float(255,4) DEFAULT NULL, + `basic_zone_spawn_location_y` float(255,4) DEFAULT NULL, + `basic_zone_spawn_location_z` float(255,4) DEFAULT NULL, + `basic_zone_sparse_data` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `city_prop_gm_guild` int DEFAULT NULL, + `city_prop_gm_nation` int DEFAULT NULL, + `city_prop_asset_rank` int DEFAULT NULL, + `city_prop_asset_funds` int DEFAULT NULL, + `prop_registry` varchar(255) DEFAULT NULL, + `prop_registry_name` varchar(255) DEFAULT NULL, + `prop_has_teleporter` varchar(255) DEFAULT NULL, + `prop_teleporter` int DEFAULT NULL, + PRIMARY KEY (`prop_entry`) +) ENGINE=InnoDB AUTO_INCREMENT=236575 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `_rune_data` +-- + +DROP TABLE IF EXISTS `_rune_data`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `_rune_data` ( + `runeID` int DEFAULT NULL, + `name` varchar(255) DEFAULT NULL, + `type` varchar(255) DEFAULT NULL, + `typeVal` varchar(255) DEFAULT NULL, + `subType` varchar(255) DEFAULT NULL, + `subTypeVal` varchar(255) DEFAULT NULL, + `creationCost` varchar(255) DEFAULT NULL, + `CreationRune` varchar(255) DEFAULT NULL, + `health` varchar(255) DEFAULT NULL, + `mana` varchar(255) DEFAULT NULL, + `stamina` varchar(255) DEFAULT NULL, + `minDam` varchar(255) DEFAULT NULL, + `maxDam` varchar(255) DEFAULT NULL, + `defense` varchar(255) DEFAULT NULL, + `level` varchar(255) DEFAULT NULL, + `fsm` varchar(255) DEFAULT NULL, + `notEnemy` bigint DEFAULT NULL, + `enemy` bigint DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `_runebase_booty` +-- + +DROP TABLE IF EXISTS `_runebase_booty`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `_runebase_booty` ( + `runeID` int DEFAULT NULL, + `bootyType` varchar(255) DEFAULT NULL, + `lowGold` int DEFAULT NULL, + `highGold` int DEFAULT NULL, + `lootTable` int DEFAULT NULL, + `templateID` int DEFAULT NULL, + `dropChance` float DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `_zone_tree` +-- + +DROP TABLE IF EXISTS `_zone_tree`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `_zone_tree` ( + `zone_uuid` int DEFAULT NULL, + `parent` int DEFAULT NULL, + `node_count` int DEFAULT NULL, + `zone_name` varchar(255) DEFAULT NULL, + `template` int DEFAULT NULL, + `is_safe_zone` int DEFAULT NULL, + `extentsx` int DEFAULT NULL, + `extentsy` int DEFAULT NULL, + `locationx` float DEFAULT NULL, + `locationy` float DEFAULT NULL, + `locationz` float DEFAULT NULL, + `icon1` varchar(255) DEFAULT NULL, + `icon2` varchar(255) DEFAULT NULL, + `icon3` varchar(255) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `char_perAccount` +-- + +DROP TABLE IF EXISTS `char_perAccount`; +/*!50001 DROP VIEW IF EXISTS `char_perAccount`*/; +SET @saved_cs_client = @@character_set_client; +/*!50503 SET character_set_client = utf8mb4 */; +/*!50001 CREATE VIEW `char_perAccount` AS SELECT + 1 AS `acct_uname`, + 1 AS `discordAccount`, + 1 AS `CharacterUID`, + 1 AS `CharacterName`, + 1 AS `CharRace`, + 1 AS `BaseClass`, + 1 AS `PromotionClass`, + 1 AS `char_experience`, + 1 AS `char_level`, + 1 AS `AccountStatus`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `class_metrics` +-- + +DROP TABLE IF EXISTS `class_metrics`; +/*!50001 DROP VIEW IF EXISTS `class_metrics`*/; +SET @saved_cs_client = @@character_set_client; +/*!50503 SET character_set_client = utf8mb4 */; +/*!50001 CREATE VIEW `class_metrics` AS SELECT + 1 AS `Class`, + 1 AS `Count`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `dyn_admin_log` +-- + +DROP TABLE IF EXISTS `dyn_admin_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_admin_log` ( + `entry` bigint NOT NULL AUTO_INCREMENT, + `dateTime` datetime NOT NULL, + `charName` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `eventString` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `SentFlag` tinyint NOT NULL DEFAULT '0', + PRIMARY KEY (`entry`) +) ENGINE=InnoDB AUTO_INCREMENT=1474 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_banes` +-- + +DROP TABLE IF EXISTS `dyn_banes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_banes` ( + `cityUUID` bigint NOT NULL, + `ownerUUID` bigint NOT NULL, + `stoneUUID` bigint NOT NULL, + `placementDate` datetime NOT NULL, + `liveDate` datetime DEFAULT NULL, + PRIMARY KEY (`cityUUID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_building_condemned` +-- + +DROP TABLE IF EXISTS `dyn_building_condemned`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_building_condemned` ( + `buildingUID` bigint unsigned NOT NULL, + `playerUID` bigint unsigned NOT NULL, + `guildUID` bigint unsigned NOT NULL, + `friendType` int NOT NULL, + `active` smallint NOT NULL DEFAULT '0', + KEY `dyn_guild_condemn_ibfk_2` (`playerUID`) USING BTREE, + KEY `dyn_guild_condemn_ibfk_4` (`guildUID`) USING BTREE, + KEY `dyn_guild_condemn_ibfk_5` (`buildingUID`) USING BTREE, + CONSTRAINT `dyn_building_condemned_ibfk_2` FOREIGN KEY (`buildingUID`) REFERENCES `obj_building` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_building_friends` +-- + +DROP TABLE IF EXISTS `dyn_building_friends`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_building_friends` ( + `buildingUID` bigint unsigned NOT NULL, + `playerUID` bigint unsigned NOT NULL, + `guildUID` bigint unsigned NOT NULL, + `friendType` int NOT NULL, + KEY `dyn_building_friends_ibfk_1` (`buildingUID`), + KEY `dyn_building_friends_ibfk_2` (`playerUID`), + KEY `dyn_building_friends_ibfk_4` (`guildUID`), + CONSTRAINT `dyn_building_friends_ibfk_1` FOREIGN KEY (`buildingUID`) REFERENCES `obj_building` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `dyn_building_friends_ibfk_2` FOREIGN KEY (`playerUID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `dyn_building_friends_ibfk_3` FOREIGN KEY (`guildUID`) REFERENCES `obj_guild` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_building_patrol_points` +-- + +DROP TABLE IF EXISTS `dyn_building_patrol_points`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_building_patrol_points` ( + `buildingUID` bigint unsigned NOT NULL, + `patrolX` float(20,0) NOT NULL, + `patrolY` float(20,0) NOT NULL, + `patrolZ` float(20,0) NOT NULL, + KEY `dyn_guild_condemn_ibfk_5` (`buildingUID`) USING BTREE, + CONSTRAINT `dyn_building_patrol_points_ibfk_1` FOREIGN KEY (`buildingUID`) REFERENCES `obj_building` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_character_friends` +-- + +DROP TABLE IF EXISTS `dyn_character_friends`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_character_friends` ( + `playerUID` bigint unsigned NOT NULL, + `friendUID` bigint unsigned NOT NULL, + PRIMARY KEY (`playerUID`,`friendUID`), + KEY `dyn_building_friends_ibfk_2` (`friendUID`) USING BTREE, + KEY `dyn_building_friends_ibfk_4` (`friendUID`) USING BTREE, + CONSTRAINT `dyn_building_friends_copy_ibfk_2` FOREIGN KEY (`playerUID`) REFERENCES `obj_character` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `dyn_building_friends_copy_ibfk_3` FOREIGN KEY (`friendUID`) REFERENCES `obj_character` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_character_guildhistory` +-- + +DROP TABLE IF EXISTS `dyn_character_guildhistory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_character_guildhistory` ( + `GuildID` bigint unsigned NOT NULL, + `CharacterID` bigint unsigned NOT NULL, + `ID` bigint unsigned NOT NULL AUTO_INCREMENT, + `historyDate` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, + `historyType` enum('LEAVE','JOIN','CREATE','DISBAND','BANISHED') DEFAULT 'LEAVE', + PRIMARY KEY (`ID`), + KEY `fk_guildhistory_guilds` (`GuildID`), + KEY `fk_guildhistory_characters` (`CharacterID`), + CONSTRAINT `dyn_character_guildhistory_ibfk_1` FOREIGN KEY (`CharacterID`) REFERENCES `obj_character` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `dyn_character_guildhistory_ibfk_2` FOREIGN KEY (`GuildID`) REFERENCES `obj_guild` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=58 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_character_heraldy` +-- + +DROP TABLE IF EXISTS `dyn_character_heraldy`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_character_heraldy` ( + `playerUID` bigint unsigned DEFAULT NULL, + `characterUID` bigint unsigned DEFAULT NULL, + `characterType` int DEFAULT NULL, + KEY `heraldryIndex` (`playerUID`) USING BTREE, + KEY `fkey_heraldry` (`characterUID`), + CONSTRAINT `fkey_heraldry` FOREIGN KEY (`characterUID`) REFERENCES `object` (`UID`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_character_ignore` +-- + +DROP TABLE IF EXISTS `dyn_character_ignore`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_character_ignore` ( + `UID` bigint unsigned NOT NULL AUTO_INCREMENT, + `accountUID` bigint unsigned NOT NULL, + `ignoringUID` bigint unsigned NOT NULL, + `characterName` varchar(50) NOT NULL DEFAULT '', + UNIQUE KEY `UID` (`UID`), + KEY `fk_characterignore_accountUID` (`accountUID`), + KEY `fk_characterignore_ignoringUID` (`ignoringUID`), + CONSTRAINT `fk_characterignore_accountUID` FOREIGN KEY (`accountUID`) REFERENCES `obj_account` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_character_killmap` +-- + +DROP TABLE IF EXISTS `dyn_character_killmap`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_character_killmap` ( + `UID` bigint unsigned NOT NULL AUTO_INCREMENT, + `killerUID` bigint unsigned NOT NULL, + `killedUID` bigint unsigned DEFAULT NULL, + `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`UID`), + KEY `fk_killmap_killer_characters` (`killerUID`), + KEY `fk_killmap_killed_characters` (`killedUID`), + CONSTRAINT `fk_killmap_killedUID` FOREIGN KEY (`killedUID`) REFERENCES `obj_character` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_killmap_killerUID` FOREIGN KEY (`killerUID`) REFERENCES `obj_character` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_character_murdermap` +-- + +DROP TABLE IF EXISTS `dyn_character_murdermap`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_character_murdermap` ( + `murdererUID` bigint unsigned NOT NULL, + `victimUID` bigint unsigned NOT NULL, + `time` int unsigned NOT NULL, + KEY `murdererUID` (`murdererUID`,`victimUID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_character_power` +-- + +DROP TABLE IF EXISTS `dyn_character_power`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_character_power` ( + `UID` bigint unsigned NOT NULL AUTO_INCREMENT, + `CharacterID` bigint unsigned DEFAULT NULL, + `PowersBaseToken` int DEFAULT NULL, + `trains` tinyint unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`UID`), + KEY `fk_characterpowers_characters` (`CharacterID`), + KEY `fk_characterpowers_powersbase` (`PowersBaseToken`), + CONSTRAINT `fk_characterpower_characterID` FOREIGN KEY (`CharacterID`) REFERENCES `obj_character` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=129 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_character_rune` +-- + +DROP TABLE IF EXISTS `dyn_character_rune`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_character_rune` ( + `UID` bigint unsigned NOT NULL AUTO_INCREMENT, + `CharacterID` bigint unsigned DEFAULT NULL, + `RuneBaseID` int unsigned DEFAULT NULL, + PRIMARY KEY (`UID`), + KEY `fk_characterrunes_characters` (`CharacterID`), + KEY `fk_characterrunes_runebase` (`RuneBaseID`), + CONSTRAINT `fk_characterrune_characterID` FOREIGN KEY (`CharacterID`) REFERENCES `obj_character` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_character_skill` +-- + +DROP TABLE IF EXISTS `dyn_character_skill`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_character_skill` ( + `UID` bigint unsigned NOT NULL AUTO_INCREMENT, + `CharacterID` bigint unsigned DEFAULT NULL, + `SkillsBaseID` int unsigned DEFAULT NULL, + `trains` tinyint unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`UID`), + KEY `fk_characterskills_characters` (`CharacterID`), + KEY `fk_characterskills_skillsbase` (`SkillsBaseID`), + CONSTRAINT `fk_characterskill_characterID` FOREIGN KEY (`CharacterID`) REFERENCES `obj_character` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=205 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_guards` +-- + +DROP TABLE IF EXISTS `dyn_guards`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_guards` ( + `captainUID` bigint unsigned NOT NULL, + `minionName` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + KEY `dyn_guards_ibfk_5` (`captainUID`) USING BTREE, + CONSTRAINT `dyn_guards_ibfk_1` FOREIGN KEY (`captainUID`) REFERENCES `obj_mob` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_guild_allianceenemylist` +-- + +DROP TABLE IF EXISTS `dyn_guild_allianceenemylist`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_guild_allianceenemylist` ( + `GuildID` bigint unsigned NOT NULL, + `OtherGuildID` bigint unsigned NOT NULL, + `isAlliance` tinyint unsigned NOT NULL DEFAULT '0', + `isRecommended` smallint NOT NULL DEFAULT '0', + `recommender` varchar(50) NOT NULL DEFAULT '', + KEY `fk_guildallianceenemylist_guilds` (`GuildID`), + KEY `fk_guildallianceenemylist_guilds2` (`OtherGuildID`), + KEY `isAlliance` (`isAlliance`), + CONSTRAINT `dyn_guild_allianceenemylist_ibfk_1` FOREIGN KEY (`GuildID`) REFERENCES `obj_guild` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `dyn_guild_allianceenemylist_ibfk_2` FOREIGN KEY (`OtherGuildID`) REFERENCES `obj_guild` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_guild_banishlist` +-- + +DROP TABLE IF EXISTS `dyn_guild_banishlist`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_guild_banishlist` ( + `GuildID` bigint unsigned NOT NULL, + `CharacterID` bigint unsigned NOT NULL, + `ID` bigint unsigned NOT NULL AUTO_INCREMENT, + UNIQUE KEY `id` (`ID`), + KEY `fk_guildbanishlist_guilds` (`GuildID`), + KEY `fk_guildbanishlist_characters` (`CharacterID`), + CONSTRAINT `fk_banishlist_characterID` FOREIGN KEY (`CharacterID`) REFERENCES `obj_character` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_banishlist_guildID` FOREIGN KEY (`GuildID`) REFERENCES `obj_guild` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_guild_characterkoslist` +-- + +DROP TABLE IF EXISTS `dyn_guild_characterkoslist`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_guild_characterkoslist` ( + `GuildID` bigint unsigned NOT NULL, + `KOSCharacterID` bigint unsigned NOT NULL, + `ID` bigint unsigned NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`KOSCharacterID`,`GuildID`), + UNIQUE KEY `id` (`ID`), + KEY `fk_guildcharacterkoslist_guilds` (`GuildID`), + KEY `fk_guildcharacterkoslist_characters` (`KOSCharacterID`), + CONSTRAINT `fk_characterkoslist_guildID` FOREIGN KEY (`GuildID`) REFERENCES `obj_guild` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_characterkoslist_kosCharacterID` FOREIGN KEY (`KOSCharacterID`) REFERENCES `obj_character` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_guild_guildkoslist` +-- + +DROP TABLE IF EXISTS `dyn_guild_guildkoslist`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_guild_guildkoslist` ( + `GuildID` bigint unsigned NOT NULL, + `KOSGuildID` bigint unsigned NOT NULL, + `ID` bigint unsigned NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`KOSGuildID`,`GuildID`), + UNIQUE KEY `id` (`ID`), + KEY `fk_guildguildkoslist_guilds` (`GuildID`), + KEY `fk_guildguildkoslist_guildskos` (`KOSGuildID`), + CONSTRAINT `fk_guildkoslist_guildID` FOREIGN KEY (`GuildID`) REFERENCES `obj_guild` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_guildkoslist_kosGuildID` FOREIGN KEY (`KOSGuildID`) REFERENCES `obj_guild` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_item_enchantment` +-- + +DROP TABLE IF EXISTS `dyn_item_enchantment`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_item_enchantment` ( + `UID` bigint unsigned NOT NULL AUTO_INCREMENT, + `itemID` bigint unsigned NOT NULL, + `powerAction` varchar(30) NOT NULL, + `rank` smallint unsigned NOT NULL, + PRIMARY KEY (`UID`), + KEY `itemID` (`itemID`), + CONSTRAINT `fk_itemenchantment_itemID` FOREIGN KEY (`itemID`) REFERENCES `obj_item` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_login_history` +-- + +DROP TABLE IF EXISTS `dyn_login_history`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_login_history` ( + `AccountID` bigint unsigned NOT NULL, + `accountName` varchar(36) DEFAULT NULL, + `characterName` varchar(36) DEFAULT NULL, + `ip` varchar(36) DEFAULT NULL, + `machineID` varchar(36) DEFAULT NULL, + `timeStamp` timestamp NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_npc_profits` +-- + +DROP TABLE IF EXISTS `dyn_npc_profits`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_npc_profits` ( + `npcUID` bigint unsigned NOT NULL, + `buy_normal` float DEFAULT '0.33', + `buy_guild` float DEFAULT '0.33', + `buy_nation` float DEFAULT '0.33', + `sell_normal` float DEFAULT '1', + `sell_guild` float DEFAULT '1', + `sell_nation` float DEFAULT '1', + PRIMARY KEY (`npcUID`), + KEY `npc_prodID` (`npcUID`) USING BTREE, + CONSTRAINT `dyn_npc_production_copy_ibfk_1` FOREIGN KEY (`npcUID`) REFERENCES `obj_npc` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_petition` +-- + +DROP TABLE IF EXISTS `dyn_petition`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_petition` ( + `petitionNumber` int NOT NULL AUTO_INCREMENT, + `petitionTime` datetime DEFAULT NULL, + `primaryType` varchar(50) DEFAULT NULL, + `subType` varchar(50) DEFAULT NULL, + `message` varchar(255) DEFAULT NULL, + `accountID` int DEFAULT NULL, + `accountName` varchar(255) DEFAULT NULL, + `characterID` int DEFAULT NULL, + `characterName` varchar(255) DEFAULT NULL, + `location` varchar(255) DEFAULT NULL, + PRIMARY KEY (`petitionNumber`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_session` +-- + +DROP TABLE IF EXISTS `dyn_session`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_session` ( + `secretKey` varchar(32) NOT NULL, + `accountID` bigint unsigned NOT NULL, + `discordAccount` varchar(60) DEFAULT NULL, + `characterID` bigint unsigned DEFAULT NULL, + `sessionIP` int unsigned NOT NULL, + `machineID` varchar(32) DEFAULT NULL, + PRIMARY KEY (`secretKey`), + KEY `fk_sessions_accounts` (`accountID`), + KEY `fk_sessions_characters` (`characterID`), + CONSTRAINT `fk_session_accountID` FOREIGN KEY (`accountID`) REFERENCES `obj_account` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_session_characterID` FOREIGN KEY (`characterID`) REFERENCES `obj_character` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_trash` +-- + +DROP TABLE IF EXISTS `dyn_trash`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_trash` ( + `machineID` varchar(30) NOT NULL, + `count` bigint NOT NULL, + PRIMARY KEY (`machineID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `dyn_trash_detail` +-- + +DROP TABLE IF EXISTS `dyn_trash_detail`; +/*!50001 DROP VIEW IF EXISTS `dyn_trash_detail`*/; +SET @saved_cs_client = @@character_set_client; +/*!50503 SET character_set_client = utf8mb4 */; +/*!50001 CREATE VIEW `dyn_trash_detail` AS SELECT + 1 AS `accountName`, + 1 AS `characterName`, + 1 AS `BaseClass`, + 1 AS `PromotionClass`, + 1 AS `machineID`, + 1 AS `ip`, + 1 AS `count`, + 1 AS `char_isActive`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `dyn_warehouse` +-- + +DROP TABLE IF EXISTS `dyn_warehouse`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_warehouse` ( + `cityUUID` int NOT NULL, + `warehouse` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + PRIMARY KEY (`cityUUID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_warehouse_transactions` +-- + +DROP TABLE IF EXISTS `dyn_warehouse_transactions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_warehouse_transactions` ( + `ID` bigint unsigned NOT NULL AUTO_INCREMENT, + `warehouseUID` bigint unsigned NOT NULL, + `targetType` enum('Building','NPC','PlayerCharacter') NOT NULL, + `targetUID` bigint unsigned NOT NULL, + `type` enum('WITHDRAWL','DEPOSIT','MAINTENANCE','MINE') NOT NULL, + `resource` enum('GOLD','ADAMANT','AGATE','ANTIMONY','AZOTH','BLOODSTONE','BRONZEWOOD','COAL','DIAMOND','GALVOR','IRON','LUMBER','MANDRAKE','MITHRIL','OAK','OBSIDIAN','ONYX','ORICHALK','QUICKSILVER','STONE','SULFUR','TRUESTEEL','WORMWOOD') NOT NULL, + `amount` int unsigned NOT NULL, + `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`ID`), + KEY `dyn_building_friends_ibfk_1` (`warehouseUID`), + KEY `dyn_building_friends_ibfk_2` (`targetUID`), + CONSTRAINT `dyn_warehouse_transactions_ibfk_1` FOREIGN KEY (`warehouseUID`) REFERENCES `obj_building` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dyn_workorders` +-- + +DROP TABLE IF EXISTS `dyn_workorders`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dyn_workorders` ( + `workorderID` int NOT NULL, + `workorder` varchar(1024) DEFAULT NULL, + PRIMARY KEY (`workorderID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `guild_Leaders` +-- + +DROP TABLE IF EXISTS `guild_Leaders`; +/*!50001 DROP VIEW IF EXISTS `guild_Leaders`*/; +SET @saved_cs_client = @@character_set_client; +/*!50503 SET character_set_client = utf8mb4 */; +/*!50001 CREATE VIEW `guild_Leaders` AS SELECT + 1 AS `acct_uname`, + 1 AS `discordAccount`, + 1 AS `AccountStatus`, + 1 AS `CharacterUID`, + 1 AS `CharacterName`, + 1 AS `char_level`, + 1 AS `GuildName`, + 1 AS `ownedCity`, + 1 AS `CityName`, + 1 AS `mineTime`, + 1 AS `motto`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `login_cachelist` +-- + +DROP TABLE IF EXISTS `login_cachelist`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `login_cachelist` ( + `UID` bigint NOT NULL, + `type` varchar(20) NOT NULL DEFAULT 'account', + PRIMARY KEY (`UID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `mob_Powers` +-- + +DROP TABLE IF EXISTS `mob_Powers`; +/*!50001 DROP VIEW IF EXISTS `mob_Powers`*/; +SET @saved_cs_client = @@character_set_client; +/*!50503 SET character_set_client = utf8mb4 */; +/*!50001 CREATE VIEW `mob_Powers` AS SELECT + 1 AS `mobbaseUUID`, + 1 AS `mobName`, + 1 AS `mobLevel`, + 1 AS `powerToken`, + 1 AS `powerString`, + 1 AS `powerName`, + 1 AS `powerRank`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `obj_account` +-- + +DROP TABLE IF EXISTS `obj_account`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_account` ( + `UID` bigint unsigned NOT NULL, + `discordAccount` varchar(60) NOT NULL DEFAULT '', + `acct_uname` varchar(60) NOT NULL, + `acct_passwd` char(60) NOT NULL, + `registrationDate` datetime DEFAULT NULL, + `acct_salt` char(30) NOT NULL DEFAULT '', + `acct_suspend` tinyint unsigned NOT NULL DEFAULT '0', + `discordAdmin` tinyint NOT NULL DEFAULT '0', + `acct_lastCharUID` bigint DEFAULT NULL, + `lastUpdateRequest` datetime DEFAULT NULL, + `status` enum('BANNED','ACTIVE','ADMIN','TRASH') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 'ACTIVE', + PRIMARY KEY (`UID`), + UNIQUE KEY `uname` (`acct_uname`), + KEY `discord` (`discordAccount`) USING BTREE, + CONSTRAINT `ref_account` FOREIGN KEY (`UID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_account_wipe` +-- + +DROP TABLE IF EXISTS `obj_account_wipe`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_account_wipe` ( + `UID` bigint unsigned NOT NULL, + `discordAccount` varchar(60) NOT NULL, + `acct_uname` varchar(60) NOT NULL, + `acct_passwd` char(60) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, + `registrationDate` datetime DEFAULT NULL, + `acct_salt` char(30) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, + `acct_suspend` tinyint unsigned NOT NULL DEFAULT '0', + `discordAdmin` tinyint NOT NULL DEFAULT '0', + `acct_lastCharUID` bigint DEFAULT NULL, + `lastUpdateRequest` datetime DEFAULT NULL, + `status` enum('BANNED','ACTIVE','ADMIN','TRASH') DEFAULT 'ACTIVE', + PRIMARY KEY (`UID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_building` +-- + +DROP TABLE IF EXISTS `obj_building`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_building` ( + `UID` bigint unsigned NOT NULL, + `ownerUUID` bigint unsigned DEFAULT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '', + `meshUUID` int unsigned NOT NULL, + `locationX` float NOT NULL DEFAULT '0', + `locationY` float NOT NULL DEFAULT '0', + `locationZ` float NOT NULL DEFAULT '0', + `scale` float NOT NULL DEFAULT '1', + `doorState` int NOT NULL DEFAULT '0', + `currentHP` int NOT NULL DEFAULT '1', + `protectionState` enum('NONE','PROTECTED','UNDERSIEGE','CEASEFIRE','CONTRACT','DESTROYED','NPC','PENDING') NOT NULL DEFAULT 'NONE', + `currentGold` int NOT NULL DEFAULT '0', + `rank` int NOT NULL DEFAULT '0', + `upgradeDate` datetime DEFAULT NULL, + `blueprintUUID` int NOT NULL DEFAULT '0', + `w` float NOT NULL, + `rotY` float NOT NULL, + `reverseKOS` tinyint(1) NOT NULL DEFAULT '0', + `reserve` int NOT NULL DEFAULT '0', + `taxType` enum('NONE','WEEKLY','PROFIT') NOT NULL DEFAULT 'NONE', + `taxAmount` int NOT NULL DEFAULT '0', + `taxDate` datetime DEFAULT NULL, + `enforceKOS` smallint NOT NULL DEFAULT '0', + `parentBuildingID` bigint unsigned DEFAULT '0', + `floor` int DEFAULT '-1', + `level` int DEFAULT '-1', + `isFurniture` smallint DEFAULT '0', + `maintDate` datetime DEFAULT NULL, + `rotation` float(255,4) DEFAULT NULL, + PRIMARY KEY (`UID`), + KEY `ownerUID` (`ownerUUID`), + CONSTRAINT `obj_building_ibfk_1` FOREIGN KEY (`UID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_character` +-- + +DROP TABLE IF EXISTS `obj_character`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_character` ( + `UID` bigint unsigned NOT NULL, + `char_firstname` varchar(15) NOT NULL, + `char_lastname` varchar(50) NOT NULL DEFAULT '', + `char_isActive` tinyint(1) NOT NULL DEFAULT '1', + `char_raceID` int unsigned NOT NULL, + `char_baseClassID` int unsigned NOT NULL, + `char_promotionClassID` int DEFAULT NULL, + `char_strMod` smallint NOT NULL DEFAULT '0', + `char_dexMod` smallint NOT NULL DEFAULT '0', + `char_conMod` smallint NOT NULL DEFAULT '0', + `char_intMod` smallint NOT NULL DEFAULT '0', + `char_spiMod` smallint NOT NULL DEFAULT '0', + `char_experience` int unsigned NOT NULL DEFAULT '0', + `char_skinColor` tinyint unsigned NOT NULL, + `char_hairColor` tinyint unsigned NOT NULL, + `char_hairStyle` tinyint NOT NULL, + `char_beardColor` tinyint unsigned NOT NULL, + `char_beardStyle` tinyint NOT NULL, + `char_bindBuilding` bigint NOT NULL, + `guildUID` bigint unsigned DEFAULT NULL, + `guild_isInnerCouncil` tinyint unsigned NOT NULL DEFAULT '0', + `guild_isRecruiter` tinyint unsigned NOT NULL DEFAULT '0', + `guild_isTaxCollector` tinyint unsigned NOT NULL DEFAULT '0', + `guild_isFullMember` tinyint unsigned NOT NULL DEFAULT '0', + `guild_title` tinyint unsigned NOT NULL DEFAULT '0', + `anniversery` tinyint NOT NULL DEFAULT '0', + `hash` varchar(255) DEFAULT NULL, + PRIMARY KEY (`UID`), + KEY `ref_character_guildUID` (`guildUID`), + CONSTRAINT `ref_character` FOREIGN KEY (`UID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_city` +-- + +DROP TABLE IF EXISTS `obj_city`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_city` ( + `UID` bigint unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `motto` varchar(255) DEFAULT ' ', + `treeOfLifeUUID` bigint unsigned NOT NULL, + `established` datetime NOT NULL, + `realmTaxDate` datetime DEFAULT NULL, + `population` int NOT NULL, + `siegesWithstood` int NOT NULL, + `isNpc` tinyint(1) NOT NULL, + `isCapital` tinyint(1) NOT NULL, + `isNoobIsle` tinyint(1) NOT NULL, + `bindX` float DEFAULT NULL, + `bindZ` float DEFAULT NULL, + `bindRadius` float DEFAULT NULL, + `radiusType` tinyint unsigned DEFAULT NULL, + `forceRename` tinyint NOT NULL DEFAULT '1', + `open` tinyint NOT NULL DEFAULT '0', + `hash` varchar(255) DEFAULT NULL, + PRIMARY KEY (`UID`), + CONSTRAINT `ref_city` FOREIGN KEY (`UID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_container` +-- + +DROP TABLE IF EXISTS `obj_container`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_container` ( + `UID` bigint unsigned NOT NULL, + `container_type` enum('bank','inventory','vault') NOT NULL, + PRIMARY KEY (`UID`), + CONSTRAINT `ref_container` FOREIGN KEY (`UID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_guild` +-- + +DROP TABLE IF EXISTS `obj_guild`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_guild` ( + `UID` bigint unsigned NOT NULL, + `name` varchar(60) NOT NULL, + `backgroundColor01` smallint unsigned NOT NULL DEFAULT '0', + `backgroundColor02` smallint unsigned NOT NULL DEFAULT '0', + `symbolColor` smallint unsigned NOT NULL DEFAULT '0', + `backgroundDesign` smallint unsigned NOT NULL DEFAULT '0', + `symbol` smallint unsigned NOT NULL DEFAULT '0', + `charter` smallint unsigned NOT NULL DEFAULT '0', + `leadershipType` varchar(45) NOT NULL DEFAULT 'Common Rule', + `motd` varchar(255) NOT NULL DEFAULT '', + `icMotd` varchar(255) NOT NULL DEFAULT '', + `nationMotd` varchar(255) NOT NULL DEFAULT '', + `leaderUID` bigint unsigned DEFAULT NULL, + `ownedCity` bigint unsigned DEFAULT '0', + `repledgeMin` int unsigned NOT NULL DEFAULT '1', + `repledgeMax` int unsigned NOT NULL DEFAULT '100', + `repledgekick` int unsigned NOT NULL DEFAULT '100', + `teleportMin` int unsigned NOT NULL DEFAULT '1', + `teleportMax` int unsigned NOT NULL DEFAULT '100', + `mineTime` tinyint unsigned NOT NULL DEFAULT '0', + `motto` varchar(40) NOT NULL DEFAULT '', + `hash` varchar(255) DEFAULT NULL, + PRIMARY KEY (`UID`), + CONSTRAINT `ref_guild` FOREIGN KEY (`UID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_item` +-- + +DROP TABLE IF EXISTS `obj_item`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_item` ( + `UID` bigint unsigned NOT NULL, + `templateID` int unsigned NOT NULL, + `container` enum('bank','equip','inventory','vault','forge','none') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `chargesRemaining` smallint unsigned NOT NULL, + `combat_health_current` smallint unsigned NOT NULL, + `equipSlot` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '', + `numberOfItems` int unsigned NOT NULL, + `flags` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '', + `value` int NOT NULL DEFAULT '0', + `dateToUpgrade` bigint NOT NULL DEFAULT '0', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '', + PRIMARY KEY (`UID`), + CONSTRAINT `ref_item` FOREIGN KEY (`UID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_mine` +-- + +DROP TABLE IF EXISTS `obj_mine`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_mine` ( + `UID` bigint unsigned NOT NULL, + `mine_type` enum('ORE','LUMBER','GOLD','MAGIC') NOT NULL, + `mine_resource` enum('GOLD','ADAMANT','AGATE','ANTIMONY','AZOTH','BLOODSTONE','BRONZEWOOD','COAL','DIAMOND','GALVOR','IRON','LUMBER','MANDRAKE','MITHRIL','OAK','OBSIDIAN','ONYX','ORICHALK','QUICKSILVER','STONE','SULFUR','TRUESTEEL','WORMWOOD') NOT NULL DEFAULT 'GOLD', + `mine_ownerUID` bigint unsigned NOT NULL, + `mine_buildingUID` bigint unsigned NOT NULL, + `flags` int unsigned NOT NULL DEFAULT '1', + PRIMARY KEY (`UID`), + CONSTRAINT `obj_mine_ibfk_1` FOREIGN KEY (`UID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_mob` +-- + +DROP TABLE IF EXISTS `obj_mob`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_mob` ( + `UID` bigint unsigned NOT NULL, + `mob_mobbaseID` int unsigned DEFAULT NULL, + `mob_guildUID` bigint unsigned DEFAULT NULL, + `mob_spawnX` float NOT NULL DEFAULT '0', + `mob_spawnY` float NOT NULL DEFAULT '0', + `mob_spawnZ` float NOT NULL DEFAULT '0', + `mob_spawnType` smallint unsigned DEFAULT NULL, + `mob_spawnRadius` float NOT NULL DEFAULT '0', + `mob_spawnTime` int unsigned DEFAULT NULL, + `mob_buildingID` int NOT NULL DEFAULT '0', + `mob_rotation` float NOT NULL DEFAULT '0', + `mob_contractID` int unsigned DEFAULT '0', + `upgradeDate` datetime DEFAULT NULL, + `mob_level` int DEFAULT '0', + `mob_buildingFloor` int DEFAULT '-1', + `mob_buildingLevel` int DEFAULT '-1', + `mob_respawnTime` float(10,0) DEFAULT NULL, + `mob_name` varchar(255) DEFAULT '', + `equipmentSet` int NOT NULL DEFAULT '0', + `runeSet` int NOT NULL DEFAULT '0', + `bootySet` int NOT NULL DEFAULT '0', + `sparseData` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '', + `notEnemy` bigint DEFAULT '0', + `enemy` bigint DEFAULT '0', + `fsm` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 'None', + `rotation` float(255,4) DEFAULT '0.0000', + PRIMARY KEY (`UID`), + KEY `fk_mobs_mobbase` (`mob_mobbaseID`), + KEY `fk_mobs_guilds` (`mob_guildUID`), + KEY `ref_mob` (`UID`), + CONSTRAINT `ref_mob` FOREIGN KEY (`UID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_npc` +-- + +DROP TABLE IF EXISTS `obj_npc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_npc` ( + `UID` bigint unsigned NOT NULL, + `npc_name` varchar(60) NOT NULL DEFAULT '', + `npc_contractID` int unsigned DEFAULT NULL, + `npc_guildID` int unsigned DEFAULT NULL, + `npc_spawnX` float NOT NULL DEFAULT '0', + `npc_spawnY` float NOT NULL DEFAULT '0', + `npc_spawnZ` float NOT NULL DEFAULT '0', + `npc_level` smallint unsigned NOT NULL DEFAULT '0', + `npc_buyPercent` float unsigned NOT NULL DEFAULT '1', + `npc_sellPercent` float unsigned NOT NULL DEFAULT '0.1', + `npc_buildingID` int NOT NULL DEFAULT '0', + `npc_pTable` int NOT NULL DEFAULT '0', + `npc_sTable` int NOT NULL DEFAULT '0', + `npc_rotation` float NOT NULL DEFAULT '0', + `upgradeDate` datetime DEFAULT NULL, + `npc_buildingFloor` int DEFAULT '-1', + `npc_buildingLevel` int DEFAULT '-1', + `npc_raceID` int DEFAULT '0', + `equipmentSet` int NOT NULL DEFAULT '0', + `runeSet` int NOT NULL DEFAULT '0', + `rotation` float(255,4) DEFAULT '0.0000', + PRIMARY KEY (`UID`), + CONSTRAINT `ref_npc` FOREIGN KEY (`UID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_realm` +-- + +DROP TABLE IF EXISTS `obj_realm`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_realm` ( + `realmID` smallint NOT NULL DEFAULT '0', + `realmColor` varchar(255) DEFAULT NULL, + `canBeClaimed` tinyint(1) NOT NULL, + `canPlaceCities` tinyint(1) NOT NULL, + `numCities` int unsigned NOT NULL, + `realmName` varchar(45) NOT NULL, + `rulingCityUID` bigint unsigned NOT NULL DEFAULT '0', + `charterType` int NOT NULL DEFAULT '0', + `ruledSince` datetime DEFAULT NULL, + `mapY1` float NOT NULL DEFAULT '0', + `mapX1` float NOT NULL DEFAULT '0', + `mapY2` float NOT NULL DEFAULT '0', + `mapX2` float NOT NULL DEFAULT '0', + `stretchX` int NOT NULL, + `stretchY` int NOT NULL, + `locX` int NOT NULL, + `locY` int NOT NULL, + `hash` varchar(255) DEFAULT NULL, + PRIMARY KEY (`realmID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_shrine` +-- + +DROP TABLE IF EXISTS `obj_shrine`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_shrine` ( + `UID` bigint unsigned NOT NULL, + `shrine_type` enum('Aelfborn','Aracoix','Centaur','Dwarf','Elf','Human','Irekei','Minotaur','Nephilim','Shade','Assassin','Barbarian','Bard','Channeler','Confessor','Crusader','Doomsayer','Druid','Fury','Huntress','Prelate','Priest','Ranger','Scout','Sentinel','Templar','Thief','Warlock','Warrior','Wizard','Nightstalker','Necromancer','Vampire','HalfGiant') NOT NULL, + `shrine_favors` int unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`UID`), + CONSTRAINT `ref_shrine` FOREIGN KEY (`UID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `obj_zone` +-- + +DROP TABLE IF EXISTS `obj_zone`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `obj_zone` ( + `UID` bigint unsigned NOT NULL, + `template` int unsigned NOT NULL, + `zone_name` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `peace_zone` tinyint NOT NULL DEFAULT '0', + `xOffset` float NOT NULL, + `yOffset` float NOT NULL, + `zOffset` float NOT NULL, + `playerCityUUID` int unsigned NOT NULL DEFAULT '0', + `icon1` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `icon2` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `icon3` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `min_level` int NOT NULL DEFAULT '0', + `max_level` int NOT NULL DEFAULT '0', + `hash` varchar(255) DEFAULT NULL, + PRIMARY KEY (`UID`), + CONSTRAINT `ref_zone` FOREIGN KEY (`UID`) REFERENCES `object` (`UID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `object` +-- + +DROP TABLE IF EXISTS `object`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `object` ( + `UID` bigint unsigned NOT NULL AUTO_INCREMENT, + `type` enum('account','building','character','city','container','guild','item','mine','mob','npc','magicbane','zone','shrine','warehouse') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `parent` bigint unsigned DEFAULT NULL, + PRIMARY KEY (`UID`), + KEY `parent` (`parent`), + KEY `type` (`type`), + CONSTRAINT `ref_parent` FOREIGN KEY (`parent`) REFERENCES `object` (`UID`) ON DELETE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=61200 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `orphaned_Mines` +-- + +DROP TABLE IF EXISTS `orphaned_Mines`; +/*!50001 DROP VIEW IF EXISTS `orphaned_Mines`*/; +SET @saved_cs_client = @@character_set_client; +/*!50503 SET character_set_client = utf8mb4 */; +/*!50001 CREATE VIEW `orphaned_Mines` AS SELECT + 1 AS `UID`, + 1 AS `mine_buildingUID`, + 1 AS `mine_type`, + 1 AS `mine_resource`, + 1 AS `ownerUUID`, + 1 AS `CharacterName`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `runes_perCharacter` +-- + +DROP TABLE IF EXISTS `runes_perCharacter`; +/*!50001 DROP VIEW IF EXISTS `runes_perCharacter`*/; +SET @saved_cs_client = @@character_set_client; +/*!50503 SET character_set_client = utf8mb4 */; +/*!50001 CREATE VIEW `runes_perCharacter` AS SELECT + 1 AS `acct_uname`, + 1 AS `discordAccount`, + 1 AS `CharacterUID`, + 1 AS `CharacterName`, + 1 AS `AppliedRunes`, + 1 AS `BaseClass`, + 1 AS `PromotionClass`, + 1 AS `GuildName`, + 1 AS `char_experience`, + 1 AS `AccountStatus`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `static_building_blueprint` +-- + +DROP TABLE IF EXISTS `static_building_blueprint`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_building_blueprint` ( + `Rank0UUID` bigint unsigned NOT NULL, + `MeshName` varchar(100) NOT NULL, + `BuildingGroup` enum('TOL','BARRACK','CHURCH','FORGE','SPIRE','GENERICNOUPGRADE','WALLSTRAIGHT','WALLSTAIRS','WALLCORNER','SMALLGATE','ARTYTOWER','SIEGETENT','BANESTONE','MINE','WAREHOUSE','SHRINE','RUNEGATE','AMAZONHALL','CATHEDRAL','GREATHALL','KEEP','THIEFHALL','TEMPLEHALL','WIZARDHALL','ELVENHALL','ELVENSANCTUM','IREKEIHALL','FORESTHALL','MAGICSHOP','BULWARK','SHACK','INN','TAILOR','VILLA','ESTATE','FORTRESS','WALLSTRAIGHTTOWER','CITADEL') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'GENERICNOUPGRADE', + `Icon` int NOT NULL DEFAULT '6', + `MaxRank` int NOT NULL DEFAULT '1', + `MaxSlots` int NOT NULL DEFAULT '0', + `Rank1UUID` bigint NOT NULL DEFAULT '0', + `Rank3UUID` bigint NOT NULL DEFAULT '0', + `Rank7UUID` bigint NOT NULL DEFAULT '0', + `DestroyedUUID` bigint NOT NULL DEFAULT '0', + PRIMARY KEY (`Rank0UUID`), + KEY `fk_contractinventory_itembase` (`MeshName`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_building_colliders` +-- + +DROP TABLE IF EXISTS `static_building_colliders`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_building_colliders` ( + `ID` int NOT NULL AUTO_INCREMENT, + `MeshID` int NOT NULL, + `startX` int NOT NULL, + `startY` int NOT NULL DEFAULT '0', + `endX` int NOT NULL, + `endY` int NOT NULL, + `doorID` int NOT NULL DEFAULT '0', + `link` smallint NOT NULL, + `height` int NOT NULL, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=324 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_building_doors` +-- + +DROP TABLE IF EXISTS `static_building_doors`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_building_doors` ( + `doorMeshUUID` int NOT NULL DEFAULT '0', + `doorNumber` int NOT NULL DEFAULT '0' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_building_location` +-- + +DROP TABLE IF EXISTS `static_building_location`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_building_location` ( + `ID` int NOT NULL AUTO_INCREMENT, + `buildingID` int NOT NULL, + `type` tinyint unsigned NOT NULL, + `slot` tinyint unsigned NOT NULL DEFAULT '0', + `unknown` tinyint unsigned NOT NULL DEFAULT '0', + `locX` float NOT NULL DEFAULT '0', + `locY` float NOT NULL DEFAULT '0', + `locZ` float NOT NULL DEFAULT '0', + `w` float NOT NULL DEFAULT '0', + `rotX` float NOT NULL DEFAULT '0', + `rotY` float NOT NULL DEFAULT '0', + `rotZ` float NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `buildingID` (`buildingID`) +) ENGINE=InnoDB AUTO_INCREMENT=5703 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_building_regions` +-- + +DROP TABLE IF EXISTS `static_building_regions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_building_regions` ( + `ID` int NOT NULL AUTO_INCREMENT, + `buildingID` int NOT NULL, + `level` tinyint NOT NULL, + `room` tinyint NOT NULL, + `numVertex` tinyint NOT NULL, + `vertex1X` float NOT NULL, + `vertex1Y` float NOT NULL, + `vertex1Z` float NOT NULL, + `vertex2X` float NOT NULL, + `vertex2Y` float NOT NULL, + `vertex2Z` float NOT NULL, + `vertex3X` float NOT NULL, + `vertex3Y` float NOT NULL, + `vertex3Z` float NOT NULL, + `vertex4X` float NOT NULL, + `vertex4Y` float NOT NULL, + `vertex4Z` float NOT NULL, + `normalX` float NOT NULL, + `normalY` float NOT NULL, + `normalZ` float NOT NULL, + `unknown_Order1` tinyint NOT NULL, + `unknown_Order2` tinyint NOT NULL, + `colOrder1` tinyint NOT NULL, + `colOrder2` tinyint NOT NULL, + `colOrder3` tinyint NOT NULL, + `colOrder4` tinyint NOT NULL, + `unknown_VectorX` float NOT NULL, + `unknown_VectorY` float NOT NULL, + `unknown_VectorZ` float NOT NULL, + `colOrder2Unknown1` tinyint DEFAULT '0', + `colOrder2Unknown2` tinyint DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `buildingID` (`buildingID`) +) ENGINE=InnoDB AUTO_INCREMENT=45061 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_effect_costmaps` +-- + +DROP TABLE IF EXISTS `static_effect_costmaps`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_effect_costmaps` ( + `effectID` varchar(255) NOT NULL, + `costmap` varchar(1024) DEFAULT NULL, + PRIMARY KEY (`effectID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_heightmaps` +-- + +DROP TABLE IF EXISTS `static_heightmaps`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_heightmaps` ( + `heightMapID` int NOT NULL, + `maxHeight` float(10,3) NOT NULL, + `xRadius` float NOT NULL, + `zRadius` float NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_item_templates` +-- + +DROP TABLE IF EXISTS `static_item_templates`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_item_templates` ( + `id` int NOT NULL, + `template` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_loot_bootySet` +-- + +DROP TABLE IF EXISTS `static_loot_bootySet`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_loot_bootySet` ( + `bootySet` int DEFAULT NULL, + `bootyType` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `lowGold` int DEFAULT NULL, + `highGold` int DEFAULT NULL, + `templateID` int DEFAULT NULL, + `genTable` int DEFAULT NULL, + `dropChance` float DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_loot_gen` +-- + +DROP TABLE IF EXISTS `static_loot_gen`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_loot_gen` ( + `genTable` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `minRoll` int NOT NULL, + `maxRoll` int NOT NULL, + `itemTableID` int NOT NULL, + `itemTableName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `pMod` int NOT NULL, + `pModTableID` int NOT NULL, + `sMod` int NOT NULL, + `sModTableID` int NOT NULL, + KEY `GroupID` (`genTable`(191)) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_loot_item` +-- + +DROP TABLE IF EXISTS `static_loot_item`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_loot_item` ( + `itemTable` int NOT NULL, + `tableName` varchar(255) NOT NULL, + `itemName` varchar(255) NOT NULL, + `minRoll` int NOT NULL, + `maxRoll` int NOT NULL, + `templateID` int NOT NULL, + `minSpawn` int NOT NULL, + `maxSpawn` int NOT NULL, + KEY `lootTable` (`itemTable`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_loot_mod` +-- + +DROP TABLE IF EXISTS `static_loot_mod`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_loot_mod` ( + `modTable` int NOT NULL, + `tableName` varchar(255) NOT NULL, + `minRoll` float NOT NULL, + `maxRoll` float NOT NULL, + `action` varchar(255) NOT NULL, + `level` int NOT NULL, + `value` int NOT NULL, + KEY `groupID` (`modTable`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_loot_modtype` +-- + +DROP TABLE IF EXISTS `static_loot_modtype`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_loot_modtype` ( + `modType` int NOT NULL, + `groupName` varchar(255) NOT NULL, + `minRoll` int NOT NULL, + `maxRoll` int NOT NULL, + `subTableID` int NOT NULL, + `subTableName` varchar(255) NOT NULL, + KEY `modTable` (`modType`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_mesh_bounds` +-- + +DROP TABLE IF EXISTS `static_mesh_bounds`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_mesh_bounds` ( + `meshID` int DEFAULT NULL, + `minX` float DEFAULT NULL, + `minY` float DEFAULT NULL, + `minZ` float DEFAULT NULL, + `maxX` float DEFAULT NULL, + `maxY` float DEFAULT NULL, + `maxZ` float DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_npc_contract` +-- + +DROP TABLE IF EXISTS `static_npc_contract`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_npc_contract` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `contractID` int unsigned NOT NULL, + `name` varchar(100) NOT NULL DEFAULT '', + `mobbaseID` int unsigned NOT NULL, + `classID` int unsigned NOT NULL, + `extraRune` int unsigned NOT NULL DEFAULT '0', + `dialogID` int unsigned NOT NULL, + `menuoptions` varchar(20) NOT NULL DEFAULT '', + `iconID` tinyint unsigned NOT NULL DEFAULT '0', + `notes` varchar(50) NOT NULL DEFAULT '', + `vendorID` int NOT NULL DEFAULT '0', + `pTable` varchar(50) NOT NULL DEFAULT '0', + `sTable` varchar(50) NOT NULL DEFAULT '0', + `itemModTable` varchar(50) NOT NULL DEFAULT '', + `subTypeID` int DEFAULT '0', + `equipsetID` int NOT NULL DEFAULT '0', + `inventorySet` int NOT NULL DEFAULT '0', + `slotInBuildings` varchar(1024) NOT NULL DEFAULT '', + PRIMARY KEY (`ID`), + KEY `fk_contracts_mobbase` (`mobbaseID`) +) ENGINE=InnoDB AUTO_INCREMENT=1502027 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_npc_contract_selltype` +-- + +DROP TABLE IF EXISTS `static_npc_contract_selltype`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_npc_contract_selltype` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `contractID` int unsigned NOT NULL, + `type` tinyint unsigned NOT NULL, + `value` int NOT NULL, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=1750 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_npc_inventoryset` +-- + +DROP TABLE IF EXISTS `static_npc_inventoryset`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_npc_inventoryset` ( + `inventorySet` int DEFAULT NULL, + `templateID` int unsigned NOT NULL, + `prefix` varchar(30) DEFAULT NULL, + `pRank` tinyint NOT NULL DEFAULT '0', + `suffix` varchar(30) DEFAULT NULL, + `sRank` tinyint NOT NULL DEFAULT '0', + KEY `fk_contractinventory_itembase` (`templateID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_npc_menuoption` +-- + +DROP TABLE IF EXISTS `static_npc_menuoption`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_npc_menuoption` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `menuID` int NOT NULL, + `message` varchar(100) NOT NULL, + `optionID` int NOT NULL, + `prereq` smallint NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=795 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_npc_mob_resists` +-- + +DROP TABLE IF EXISTS `static_npc_mob_resists`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_npc_mob_resists` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(60) NOT NULL DEFAULT '', + `slash` smallint NOT NULL DEFAULT '0', + `crush` smallint NOT NULL DEFAULT '0', + `pierce` smallint NOT NULL DEFAULT '0', + `siege` smallint NOT NULL DEFAULT '0', + `magic` smallint NOT NULL DEFAULT '0', + `bleed` smallint NOT NULL DEFAULT '0', + `poison` smallint NOT NULL DEFAULT '0', + `mental` smallint NOT NULL DEFAULT '0', + `holy` smallint NOT NULL DEFAULT '0', + `unholy` smallint NOT NULL DEFAULT '0', + `lightning` smallint NOT NULL DEFAULT '0', + `fire` smallint NOT NULL DEFAULT '0', + `cold` smallint NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_npc_mobbase` +-- + +DROP TABLE IF EXISTS `static_npc_mobbase`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_npc_mobbase` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `loadID` int unsigned NOT NULL, + `lootTableID` int unsigned NOT NULL, + `name` varchar(60) DEFAULT NULL, + `level` smallint unsigned NOT NULL DEFAULT '1', + `health` float NOT NULL DEFAULT '100', + `atr` int NOT NULL DEFAULT '100', + `defense` int NOT NULL DEFAULT '100', + `minDmg` float NOT NULL DEFAULT '10', + `maxDmg` float NOT NULL DEFAULT '20', + `goldMod` smallint unsigned NOT NULL DEFAULT '100', + `seeInvis` tinyint unsigned NOT NULL DEFAULT '0', + `flags` bigint unsigned NOT NULL DEFAULT '15', + `noaggro` bigint unsigned NOT NULL DEFAULT '0', + `spawnTime` int unsigned NOT NULL DEFAULT '0', + `scale` float NOT NULL DEFAULT '1', + `attackRange` float unsigned NOT NULL DEFAULT '6.5', + `raceType` enum('Aelfborn','All','Animal','Aracoix','Celestial','Centaur','Construct','CSR','Dragon','Dwarf','Elf','Giant','Goblin','Grave','HalfGiant','Human','Infernal','Insect','Irekei','Minotaur','Monster','NecroPet','NPC','Pet','Plant','Rat','Reptile','Shade','Siege','SiegeEngineer','Summoned','Troll','Undead','Nephilim','Vampire') DEFAULT NULL, + `fsm` varchar(255) DEFAULT '', + `bootySet` int DEFAULT '0', + `notEnemy` bigint DEFAULT NULL, + `enemy` bigint DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `loadID` (`loadID`) +) ENGINE=InnoDB AUTO_INCREMENT=17267 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_npc_mobbase_effects` +-- + +DROP TABLE IF EXISTS `static_npc_mobbase_effects`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_npc_mobbase_effects` ( + `mobbaseUUID` int NOT NULL DEFAULT '0', + `token` int NOT NULL DEFAULT '0', + `rank` int NOT NULL DEFAULT '0', + `reqLvl` tinyint NOT NULL DEFAULT '0', + PRIMARY KEY (`mobbaseUUID`,`token`,`rank`,`reqLvl`), + KEY `mobbaseUUID` (`mobbaseUUID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_npc_mobbase_powers` +-- + +DROP TABLE IF EXISTS `static_npc_mobbase_powers`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_npc_mobbase_powers` ( + `id` int NOT NULL AUTO_INCREMENT, + `mobbaseUUID` int NOT NULL, + `token` int DEFAULT NULL, + `rank` int DEFAULT NULL, + PRIMARY KEY (`id`,`mobbaseUUID`) +) ENGINE=InnoDB AUTO_INCREMENT=5374 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='These are powers that each mobbase can cast. mmm COMMENTS!'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_npc_mobbase_race` +-- + +DROP TABLE IF EXISTS `static_npc_mobbase_race`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_npc_mobbase_race` ( + `mobbaseID` int NOT NULL, + `raceToken` int NOT NULL, + `walkStandard` float(10,5) NOT NULL, + `walkCombat` float(10,5) NOT NULL, + `runStandard` float(10,5) NOT NULL, + `runCombat` float(10,5) NOT NULL, + `fly` float(10,5) NOT NULL, + `swim` float(10,5) NOT NULL, + PRIMARY KEY (`mobbaseID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_npc_mobbase_stats` +-- + +DROP TABLE IF EXISTS `static_npc_mobbase_stats`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_npc_mobbase_stats` ( + `mobbaseUUID` int NOT NULL, + `Strength` int NOT NULL, + `Spirit` int NOT NULL, + `Constitution` int NOT NULL, + `Dexterity` int NOT NULL, + `Intelligence` int NOT NULL, + `baseSkills` bigint NOT NULL DEFAULT '0', + `skillAmount` int NOT NULL DEFAULT '0', + `defense` int DEFAULT NULL, + `atr` int DEFAULT NULL, + `minDmg` int DEFAULT NULL, + `maxDmg` int DEFAULT NULL, + PRIMARY KEY (`mobbaseUUID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_npc_runeSet` +-- + +DROP TABLE IF EXISTS `static_npc_runeSet`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_npc_runeSet` ( + `runeSet` int DEFAULT NULL, + `runeBase` int DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_npc_vendordialog` +-- + +DROP TABLE IF EXISTS `static_npc_vendordialog`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_npc_vendordialog` ( + `ID` int NOT NULL AUTO_INCREMENT, + `dialogType` varchar(60) NOT NULL DEFAULT '', + `intro` varchar(60) NOT NULL DEFAULT '', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=200296 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_piratenames` +-- + +DROP TABLE IF EXISTS `static_piratenames`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_piratenames` ( + `mobbase` int DEFAULT NULL, + `first_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_action` +-- + +DROP TABLE IF EXISTS `static_power_action`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_action` ( + `ID` int NOT NULL AUTO_INCREMENT, + `powerID` varchar(255) NOT NULL DEFAULT '', + `effectID` varchar(255) NOT NULL DEFAULT '', + `minTrains` int unsigned NOT NULL DEFAULT '0', + `maxTrains` int unsigned NOT NULL DEFAULT '40', + `duration` float unsigned NOT NULL DEFAULT '0', + `ramp` float unsigned NOT NULL DEFAULT '0', + `useAddFormula` tinyint unsigned NOT NULL DEFAULT '1', + `stackType` varchar(255) NOT NULL DEFAULT '', + `stackOrder` int unsigned NOT NULL DEFAULT '0', + `stackPriority` varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=2288 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_animation_override` +-- + +DROP TABLE IF EXISTS `static_power_animation_override`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_animation_override` ( + `IDString` varchar(255) DEFAULT NULL, + `animation` int DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_effect_allowed_item` +-- + +DROP TABLE IF EXISTS `static_power_effect_allowed_item`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_effect_allowed_item` ( + `ID` int NOT NULL AUTO_INCREMENT, + `IDString` varchar(20) NOT NULL, + `flags` bigint unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `IDString` (`IDString`) +) ENGINE=InnoDB AUTO_INCREMENT=647 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_effectbase` +-- + +DROP TABLE IF EXISTS `static_power_effectbase`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_effectbase` ( + `ID` int NOT NULL AUTO_INCREMENT, + `IDString` varchar(255) NOT NULL DEFAULT '', + `name` varchar(255) NOT NULL DEFAULT '', + `Token` int NOT NULL DEFAULT '0', + `flags` int unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=3663 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_effectmod` +-- + +DROP TABLE IF EXISTS `static_power_effectmod`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_effectmod` ( + `ID` int NOT NULL AUTO_INCREMENT, + `IDString` varchar(24) NOT NULL DEFAULT '', + `modType` varchar(30) NOT NULL DEFAULT '', + `minMod` float NOT NULL DEFAULT '0', + `maxMod` float NOT NULL DEFAULT '0', + `percentMod` float NOT NULL DEFAULT '0', + `ramp` float NOT NULL DEFAULT '0', + `useRampAdd` tinyint(1) NOT NULL DEFAULT '1', + `type` varchar(30) NOT NULL DEFAULT '', + `string1` varchar(50) NOT NULL DEFAULT '', + `string2` varchar(50) NOT NULL DEFAULT '', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=7115 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_effectprereqs` +-- + +DROP TABLE IF EXISTS `static_power_effectprereqs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_effectprereqs` ( + `ID` int unsigned NOT NULL DEFAULT '0', + `IDString` varchar(20) NOT NULL DEFAULT '', + `Type` tinyint unsigned NOT NULL DEFAULT '1', + `effect` varchar(20) NOT NULL DEFAULT '', + `message` varchar(90) NOT NULL DEFAULT '', + `boolean` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_failcondition` +-- + +DROP TABLE IF EXISTS `static_power_failcondition`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_failcondition` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `IDString` varchar(20) NOT NULL DEFAULT '', + `powerOrEffect` varchar(20) NOT NULL DEFAULT '', + `type` varchar(30) NOT NULL DEFAULT '', + `amount` float unsigned NOT NULL DEFAULT '0', + `ramp` float unsigned NOT NULL DEFAULT '0', + `useAddFormula` tinyint unsigned NOT NULL DEFAULT '1', + `damageType1` varchar(20) NOT NULL DEFAULT '', + `damageType2` varchar(20) NOT NULL DEFAULT '', + `damageType3` varchar(20) NOT NULL DEFAULT '', + PRIMARY KEY (`ID`), + KEY `failconditions_powerOrEffect` (`powerOrEffect`) +) ENGINE=InnoDB AUTO_INCREMENT=1627 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_poweraction` +-- + +DROP TABLE IF EXISTS `static_power_poweraction`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_poweraction` ( + `ID` int NOT NULL AUTO_INCREMENT, + `IDString` varchar(255) NOT NULL DEFAULT '', + `type` varchar(255) NOT NULL DEFAULT '', + `effectID` varchar(255) NOT NULL DEFAULT '', + `effectID2` varchar(255) NOT NULL DEFAULT '', + `deferredPowerID` varchar(255) NOT NULL DEFAULT '', + `levelCap` float unsigned NOT NULL DEFAULT '0', + `levelCapRamp` float unsigned zerofill NOT NULL DEFAULT '000000000000', + `damageType` varchar(255) NOT NULL DEFAULT '', + `numIterations` int NOT NULL DEFAULT '0', + `effectSourceToRemove` varchar(255) NOT NULL DEFAULT '', + `trackFilter` varchar(255) NOT NULL DEFAULT '', + `maxTrack` int NOT NULL DEFAULT '0', + `mobID` int NOT NULL DEFAULT '0', + `mobLevel` int NOT NULL DEFAULT '0', + `simpleDamage` int NOT NULL DEFAULT '0', + `transferFromType` varchar(255) NOT NULL DEFAULT '', + `transferToType` varchar(255) NOT NULL DEFAULT '', + `transferAmount` float NOT NULL DEFAULT '0', + `transferRamp` float unsigned NOT NULL DEFAULT '0', + `transferEfficiency` float unsigned NOT NULL DEFAULT '0', + `transferEfficiencyRamp` float unsigned NOT NULL DEFAULT '0', + `flags` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=3051 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_powerbase` +-- + +DROP TABLE IF EXISTS `static_power_powerbase`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_powerbase` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `token` int NOT NULL DEFAULT '0', + `IDString` varchar(100) NOT NULL DEFAULT '', + `name` varchar(100) NOT NULL DEFAULT '', + `skillOrSpell` varchar(20) NOT NULL DEFAULT '', + `skillID` int NOT NULL DEFAULT '0', + `skillName` varchar(100) NOT NULL DEFAULT '', + `targetType` varchar(100) NOT NULL DEFAULT '', + `range` float NOT NULL DEFAULT '0', + `radiusType` varchar(100) NOT NULL DEFAULT '', + `radius` float NOT NULL DEFAULT '0', + `groupReq` varchar(100) NOT NULL DEFAULT '', + `costType` varchar(100) NOT NULL DEFAULT '', + `cost` float NOT NULL DEFAULT '0', + `unknown01` int NOT NULL DEFAULT '0', + `unknown02` float NOT NULL DEFAULT '0', + `castTime` float NOT NULL DEFAULT '0', + `cooldown` float NOT NULL DEFAULT '0', + `recycleTime` float NOT NULL DEFAULT '0', + `combat` varchar(100) NOT NULL DEFAULT '', + `unknown04` int NOT NULL DEFAULT '0', + `unknown05` int NOT NULL DEFAULT '0', + `unknown06` varchar(100) NOT NULL DEFAULT '', + `maxTrains` int NOT NULL DEFAULT '0', + `hateValue` float NOT NULL DEFAULT '0', + `hateRamp` float NOT NULL DEFAULT '0', + `grantOverideVar` varchar(100) NOT NULL DEFAULT '', + `category` varchar(100) NOT NULL DEFAULT '', + `description` varchar(255) NOT NULL DEFAULT '', + `costRamp` float NOT NULL DEFAULT '0', + `recycleRamp` float NOT NULL DEFAULT '0', + `initRamp` float NOT NULL DEFAULT '0', + `monsterTypePrereqs` varchar(100) NOT NULL DEFAULT '', + `chantDuration` float NOT NULL DEFAULT '0', + `chantIterations` int NOT NULL DEFAULT '0', + `maxNumMobTargets` int NOT NULL DEFAULT '0', + `maxNumPlayerTargets` int NOT NULL DEFAULT '0', + `monsterTypeRestrict1` varchar(30) NOT NULL DEFAULT '', + `monsterTypeRestrict2` varchar(30) NOT NULL DEFAULT '', + `monsterTypeRestrict3` varchar(30) NOT NULL DEFAULT '', + `flags` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `token` (`token`) +) ENGINE=InnoDB AUTO_INCREMENT=1466 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_powercastprereq` +-- + +DROP TABLE IF EXISTS `static_power_powercastprereq`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_powercastprereq` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `IDString` varchar(255) DEFAULT NULL, + `Type` tinyint unsigned NOT NULL DEFAULT '1', + `messageone` varchar(255) DEFAULT NULL, + `messagetwo` varchar(255) DEFAULT NULL, + `required` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=721 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_powergrant` +-- + +DROP TABLE IF EXISTS `static_power_powergrant`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_powergrant` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `runeID` int unsigned NOT NULL DEFAULT '0', + `powerToken` int NOT NULL DEFAULT '0', + `grantAmount` smallint unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `powerreq_runeID` (`runeID`) +) ENGINE=InnoDB AUTO_INCREMENT=1784 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_powerrequirement` +-- + +DROP TABLE IF EXISTS `static_power_powerrequirement`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_powerrequirement` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `powerToken` int NOT NULL DEFAULT '0', + `runeID` int unsigned NOT NULL DEFAULT '0', + `type` tinyint unsigned NOT NULL DEFAULT '0', + `requiredToken` int NOT NULL DEFAULT '0', + `requiredAmount` tinyint unsigned NOT NULL DEFAULT '0', + `level` tinyint unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `powerreq_runeID` (`runeID`) +) ENGINE=InnoDB AUTO_INCREMENT=1615 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_power_sourcetype` +-- + +DROP TABLE IF EXISTS `static_power_sourcetype`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_power_sourcetype` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `IDString` varchar(255) NOT NULL DEFAULT '', + `source` varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=1760 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_baseclass` +-- + +DROP TABLE IF EXISTS `static_rune_baseclass`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_baseclass` ( + `ID` int unsigned NOT NULL DEFAULT '0', + `name` varchar(45) NOT NULL DEFAULT '', + `description` varchar(200) NOT NULL DEFAULT '', + `strMod` tinyint NOT NULL DEFAULT '0', + `dexMod` tinyint NOT NULL DEFAULT '0', + `conMod` tinyint NOT NULL DEFAULT '0', + `intMod` tinyint NOT NULL DEFAULT '0', + `spiMod` tinyint NOT NULL DEFAULT '0', + `token` int NOT NULL DEFAULT '0', + `healthMod` decimal(6,2) NOT NULL DEFAULT '0.00', + `manaMod` decimal(6,2) NOT NULL DEFAULT '0.00', + `staminaMod` decimal(6,2) NOT NULL DEFAULT '0.00', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_baseclassrune` +-- + +DROP TABLE IF EXISTS `static_rune_baseclassrune`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_baseclassrune` ( + `RuneBaseID` int unsigned NOT NULL DEFAULT '0', + `BaseClassesID` int unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`BaseClassesID`,`RuneBaseID`), + KEY `fk_baseclassrunes_baseclasses` (`BaseClassesID`), + KEY `fk_baseclassrunes_runebase` (`RuneBaseID`), + CONSTRAINT `fk_baseclassrunes_baseclasses` FOREIGN KEY (`BaseClassesID`) REFERENCES `static_rune_baseclass` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_baseclassrunes_runebase` FOREIGN KEY (`RuneBaseID`) REFERENCES `static_rune_runebase` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_baseeffect` +-- + +DROP TABLE IF EXISTS `static_rune_baseeffect`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_baseeffect` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `runeID` int unsigned NOT NULL, + `type` tinyint NOT NULL DEFAULT '0', + `name` varchar(60) NOT NULL, + `amount` smallint NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `fk_runebaseeffects_runebase` (`runeID`) +) ENGINE=InnoDB AUTO_INCREMENT=187 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_maxskills` +-- + +DROP TABLE IF EXISTS `static_rune_maxskills`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_maxskills` ( + `runeID` int DEFAULT NULL, + `skillToken` int DEFAULT NULL, + `skillLevel` int DEFAULT NULL, + `maxSkillPercent` int DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_powers` +-- + +DROP TABLE IF EXISTS `static_rune_powers`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_powers` ( + `rune_id` int DEFAULT NULL, + `name` varchar(255) DEFAULT NULL, + `token` int DEFAULT NULL, + `power_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `rank` int DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_promotion` +-- + +DROP TABLE IF EXISTS `static_rune_promotion`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_promotion` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) DEFAULT NULL, + `description` varchar(50) DEFAULT NULL, + `token` int NOT NULL DEFAULT '0', + `healthMod` float unsigned NOT NULL DEFAULT '0', + `manaMod` float unsigned NOT NULL DEFAULT '0', + `staminaMod` float unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=2912 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_promotionrunereq` +-- + +DROP TABLE IF EXISTS `static_rune_promotionrunereq`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_promotionrunereq` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `promoID` int unsigned NOT NULL DEFAULT '0', + `runereqID` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_race` +-- + +DROP TABLE IF EXISTS `static_rune_race`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_race` ( + `ID` int unsigned NOT NULL DEFAULT '0', + `name` varchar(45) NOT NULL DEFAULT '', + `description` varchar(200) NOT NULL DEFAULT '', + `strMin` smallint unsigned NOT NULL DEFAULT '0', + `strStart` smallint unsigned NOT NULL DEFAULT '0', + `strMax` smallint unsigned NOT NULL DEFAULT '0', + `dexMin` smallint unsigned NOT NULL DEFAULT '0', + `dexStart` smallint unsigned NOT NULL DEFAULT '0', + `dexMax` smallint unsigned NOT NULL DEFAULT '0', + `conMin` smallint unsigned NOT NULL DEFAULT '0', + `conStart` smallint unsigned NOT NULL DEFAULT '0', + `conMax` smallint unsigned NOT NULL DEFAULT '0', + `intMin` smallint unsigned NOT NULL DEFAULT '0', + `intStart` smallint unsigned NOT NULL DEFAULT '0', + `intMax` smallint unsigned NOT NULL DEFAULT '0', + `spiMin` smallint unsigned NOT NULL DEFAULT '0', + `spiStart` smallint unsigned NOT NULL DEFAULT '0', + `spiMax` smallint unsigned NOT NULL DEFAULT '0', + `startingPoints` tinyint unsigned NOT NULL DEFAULT '0', + `token` int NOT NULL DEFAULT '0', + `healthBonus` smallint NOT NULL DEFAULT '0', + `manaBonus` smallint NOT NULL DEFAULT '0', + `staminaBonus` smallint NOT NULL DEFAULT '0', + `minHeight` float unsigned NOT NULL DEFAULT '6', + `strHeightMod` float unsigned NOT NULL DEFAULT '0.006', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_racebaseclass` +-- + +DROP TABLE IF EXISTS `static_rune_racebaseclass`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_racebaseclass` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `RaceID` int unsigned NOT NULL DEFAULT '0', + `BaseClassID` int unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `fk_racebaseclasses_races` (`RaceID`), + KEY `fk_racebaseclasses_baseclasses` (`BaseClassID`), + CONSTRAINT `fk_racebaseclasses_baseclasses` FOREIGN KEY (`BaseClassID`) REFERENCES `static_rune_baseclass` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_racebaseclasses_races` FOREIGN KEY (`RaceID`) REFERENCES `static_rune_race` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_racebeardcolor` +-- + +DROP TABLE IF EXISTS `static_rune_racebeardcolor`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_racebeardcolor` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `RaceID` int unsigned NOT NULL, + `color` int unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `fk_racebeardcolor_races` (`RaceID`) +) ENGINE=InnoDB AUTO_INCREMENT=117 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_racebeardstyle` +-- + +DROP TABLE IF EXISTS `static_rune_racebeardstyle`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_racebeardstyle` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `RaceID` int unsigned NOT NULL, + `beardStyle` int unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `fk_racebeardstyles` (`RaceID`) +) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_racehaircolor` +-- + +DROP TABLE IF EXISTS `static_rune_racehaircolor`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_racehaircolor` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `RaceID` int unsigned NOT NULL, + `color` int unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `fk_racehaircolor_races` (`RaceID`) +) ENGINE=InnoDB AUTO_INCREMENT=121 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_racehairstyle` +-- + +DROP TABLE IF EXISTS `static_rune_racehairstyle`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_racehairstyle` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `RaceID` int unsigned NOT NULL, + `hairStyle` int unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `fk_racehairstyles_races` (`RaceID`) +) ENGINE=InnoDB AUTO_INCREMENT=148 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_racerune` +-- + +DROP TABLE IF EXISTS `static_rune_racerune`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_racerune` ( + `RuneBaseID` int unsigned NOT NULL DEFAULT '0', + `RaceID` int unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`RuneBaseID`,`RaceID`), + KEY `fk_racerunes_runebase` (`RuneBaseID`), + KEY `fk_racerunes_races` (`RaceID`), + CONSTRAINT `fk_racerunes_races` FOREIGN KEY (`RaceID`) REFERENCES `static_rune_race` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_racerunes_runebase` FOREIGN KEY (`RuneBaseID`) REFERENCES `static_rune_runebase` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_raceskincolor` +-- + +DROP TABLE IF EXISTS `static_rune_raceskincolor`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_raceskincolor` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `RaceID` int unsigned NOT NULL, + `color` int unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `fk_raceskincolor_races` (`RaceID`) +) ENGINE=InnoDB AUTO_INCREMENT=85 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_runebase` +-- + +DROP TABLE IF EXISTS `static_rune_runebase`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_runebase` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(60) NOT NULL DEFAULT '', + `description` varchar(200) NOT NULL DEFAULT '', + `type` int unsigned NOT NULL DEFAULT '0', + `SubType` tinyint unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=253003 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_runebaseattribute` +-- + +DROP TABLE IF EXISTS `static_rune_runebaseattribute`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_runebaseattribute` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `RuneBaseID` int unsigned NOT NULL DEFAULT '0', + `attributeID` smallint unsigned NOT NULL DEFAULT '0', + `modValue` smallint NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `fk_runebaseattributes_runebase` (`RuneBaseID`), + CONSTRAINT `fk_runebaseattributes_runebase` FOREIGN KEY (`RuneBaseID`) REFERENCES `static_rune_runebase` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=366 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_runereq` +-- + +DROP TABLE IF EXISTS `static_rune_runereq`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_runereq` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `runeID` int unsigned NOT NULL, + `type` tinyint unsigned NOT NULL DEFAULT '0', + `requiredRuneID` int unsigned NOT NULL, + `isAllowed` tinyint unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=1369 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_skill_adjusts` +-- + +DROP TABLE IF EXISTS `static_rune_skill_adjusts`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_skill_adjusts` ( + `rune_id` int DEFAULT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `token` int DEFAULT NULL, + `skill_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `rank` int DEFAULT NULL, + `level` int DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_rune_validkit` +-- + +DROP TABLE IF EXISTS `static_rune_validkit`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_rune_validkit` ( + `ID` int NOT NULL AUTO_INCREMENT, + `RaceBaseClassesID` int unsigned NOT NULL, + `kitNumber` tinyint unsigned NOT NULL DEFAULT '0', + `legs` int unsigned NOT NULL DEFAULT '0', + `chest` int unsigned NOT NULL DEFAULT '0', + `feet` int unsigned NOT NULL DEFAULT '0', + `offhand` int unsigned NOT NULL DEFAULT '0', + `weapon` int unsigned NOT NULL DEFAULT '0', + `reserve` varchar(50) DEFAULT NULL, + PRIMARY KEY (`ID`), + KEY `fk_validkits_racebaseclasses` (`RaceBaseClassesID`) +) ENGINE=InnoDB AUTO_INCREMENT=452 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_runegate_portals` +-- + +DROP TABLE IF EXISTS `static_runegate_portals`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_runegate_portals` ( + `gateName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `sourceBuilding` int DEFAULT NULL, + `portalType` enum('FORBID','MERCHANT','OBLIV','CHAOS','SPIRIT','WATER','FIRE','AIR','EARTH') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `targetBuilding` int DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_skill_skillreq` +-- + +DROP TABLE IF EXISTS `static_skill_skillreq`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_skill_skillreq` ( + `skillID` int unsigned NOT NULL DEFAULT '0', + `runeID` int unsigned NOT NULL DEFAULT '0', + `level` tinyint unsigned NOT NULL DEFAULT '0', + `skillreq1` int unsigned DEFAULT NULL, + `skillreq2` int unsigned DEFAULT NULL, + `skillreq3` int unsigned DEFAULT NULL, + `id` int unsigned NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`runeID`,`skillID`), + UNIQUE KEY `id` (`id`), + KEY `fk_skillreq_skillsbase` (`skillID`), + KEY `fk_skillreq_runebase` (`runeID`), + KEY `fk_skillreq_skillsbase_req1` (`skillreq1`), + KEY `fk_skillreq_skillsbase_req2` (`skillreq2`), + KEY `fk_skillreq_skillsbase_req3` (`skillreq3`), + CONSTRAINT `fk_skillreq_runebase` FOREIGN KEY (`runeID`) REFERENCES `static_rune_runebase` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_skillreq_skillsbase` FOREIGN KEY (`skillID`) REFERENCES `static_skill_skillsbase` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_skillreq_skillsbase_req1` FOREIGN KEY (`skillreq1`) REFERENCES `static_skill_skillsbase` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_skillreq_skillsbase_req2` FOREIGN KEY (`skillreq2`) REFERENCES `static_skill_skillsbase` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_skillreq_skillsbase_req3` FOREIGN KEY (`skillreq3`) REFERENCES `static_skill_skillsbase` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=294 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_skill_skillsbase` +-- + +DROP TABLE IF EXISTS `static_skill_skillsbase`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_skill_skillsbase` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(60) NOT NULL DEFAULT '', + `description` varchar(90) NOT NULL DEFAULT '', + `token` int NOT NULL DEFAULT '0', + `strMod` int NOT NULL DEFAULT '0', + `dexMod` int NOT NULL DEFAULT '0', + `conMod` int NOT NULL DEFAULT '0', + `intMod` int NOT NULL DEFAULT '0', + `spiMod` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_skill_skillsgranted` +-- + +DROP TABLE IF EXISTS `static_skill_skillsgranted`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_skill_skillsgranted` ( + `runeID` int DEFAULT NULL, + `token` int DEFAULT NULL, + `amount` int DEFAULT NULL, + `unknown1` int DEFAULT NULL, + `unknown2` int DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_vendor_items` +-- + +DROP TABLE IF EXISTS `static_vendor_items`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_vendor_items` ( + `templateID` int unsigned NOT NULL DEFAULT '0', + `name` varchar(60) DEFAULT NULL, + `vendorType` int NOT NULL DEFAULT '0', + `modTable` int NOT NULL DEFAULT '0' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `static_zone_templates` +-- + +DROP TABLE IF EXISTS `static_zone_templates`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `static_zone_templates` ( + `template` int DEFAULT NULL, + `num_of_columns` varchar(255) DEFAULT NULL, + `zone_type` varchar(255) DEFAULT NULL, + `zone_name` varchar(255) DEFAULT NULL, + `zone_custom_texture` varchar(255) DEFAULT NULL, + `zone_width_threshold` varchar(255) DEFAULT NULL, + `zone_material_threshold` varchar(255) DEFAULT NULL, + `zone_max_width_index` varchar(255) DEFAULT NULL, + `zone_max_material_index` varchar(255) DEFAULT NULL, + `zone_custom_texture_wrap` varchar(255) DEFAULT NULL, + `zone_peace_zone` varchar(255) DEFAULT NULL, + `zone_guild_zone` varchar(255) DEFAULT NULL, + `zone_minor_radius` float(255,0) DEFAULT NULL, + `zone_major_radius` float(255,0) DEFAULT NULL, + `zone_min_blend` float(255,0) DEFAULT NULL, + `zone_max_blend` float(255,0) DEFAULT NULL, + `zone_influence` varchar(255) DEFAULT NULL, + `zone_unknown1` varchar(255) DEFAULT NULL, + `zone_y_offset` varchar(255) DEFAULT NULL, + `zone_global_height` varchar(255) DEFAULT NULL, + `zone_transition_height` varchar(255) DEFAULT NULL, + `zone_upper_transition_height` varchar(255) DEFAULT NULL, + `zone_tile_cord_type` varchar(255) DEFAULT NULL, + `zone_tile_pattern_prob` varchar(255) DEFAULT NULL, + `zone_pattern_type` varchar(255) DEFAULT NULL, + `zone_sea_level_index` varchar(255) DEFAULT NULL, + `zone_sea_level` float(255,0) DEFAULT NULL, + `zone_sea_level_type` varchar(255) DEFAULT NULL, + `zone_grad` varchar(255) DEFAULT NULL, + `zone_tile_set` varchar(255) DEFAULT NULL, + `zone_song` varchar(255) DEFAULT NULL, + `zone_has_water` varchar(255) DEFAULT NULL, + `zone_has_terrain_gen` varchar(255) DEFAULT NULL, + `terrain_type` varchar(255) DEFAULT NULL, + `terrain_height` varchar(255) DEFAULT NULL, + `terrain_max_x` varchar(255) DEFAULT NULL, + `terrain_max_z` varchar(255) DEFAULT NULL, + `terrain_x_size` varchar(255) DEFAULT NULL, + `terrain_z_size` varchar(255) DEFAULT NULL, + `terrain_min_y` varchar(255) DEFAULT NULL, + `terrain_max_y` float(255,0) DEFAULT NULL, + `terrain_image` int DEFAULT NULL, + `zone_base_texture` varchar(255) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `subguild_Leaders` +-- + +DROP TABLE IF EXISTS `subguild_Leaders`; +/*!50001 DROP VIEW IF EXISTS `subguild_Leaders`*/; +SET @saved_cs_client = @@character_set_client; +/*!50503 SET character_set_client = utf8mb4 */; +/*!50001 CREATE VIEW `subguild_Leaders` AS SELECT + 1 AS `GuildUID`, + 1 AS `GuildName`, + 1 AS `GuildLeader UID`, + 1 AS `CharacterName`, + 1 AS `CharacterLevel`, + 1 AS `AccountName`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `warehouse_banehistory` +-- + +DROP TABLE IF EXISTS `warehouse_banehistory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `warehouse_banehistory` ( + `event_number` bigint unsigned NOT NULL AUTO_INCREMENT, + `city_id` varchar(255) DEFAULT NULL, + `city_name` varchar(255) DEFAULT NULL, + `char_id` varchar(255) DEFAULT NULL, + `offGuild_id` varchar(255) DEFAULT NULL, + `offNat_id` varchar(255) DEFAULT NULL, + `defGuild_id` varchar(255) DEFAULT NULL, + `defNat_id` varchar(255) DEFAULT NULL, + `dropDatetime` varchar(255) DEFAULT NULL, + `liveDatetime` varchar(255) DEFAULT NULL, + `endDatetime` varchar(255) DEFAULT NULL, + `resolution` enum('CAPTURE','DESTROY','PENDING','DEFEND') DEFAULT NULL, + `dirty` tinyint(1) unsigned zerofill DEFAULT '0', + PRIMARY KEY (`event_number`), + KEY `baneQuery` (`city_id`(191),`resolution`), + KEY `dirtyQuery` (`dirty`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_characterhistory` +-- + +DROP TABLE IF EXISTS `warehouse_characterhistory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `warehouse_characterhistory` ( + `event_number` bigint unsigned NOT NULL AUTO_INCREMENT, + `char_id` varchar(255) NOT NULL, + `char_fname` varchar(255) DEFAULT NULL, + `char_lname` varchar(255) DEFAULT NULL, + `baseClass` int NOT NULL DEFAULT '0', + `promoteClass` int unsigned DEFAULT '0', + `race` int NOT NULL DEFAULT '0', + `kills` bigint NOT NULL DEFAULT '0', + `deaths` bigint NOT NULL DEFAULT '0', + `startingGuild` varchar(255) DEFAULT '0', + `datetime` datetime DEFAULT NULL, + `dirty` tinyint(1) DEFAULT '0', + PRIMARY KEY (`event_number`), + KEY `characterIndex` (`char_id`(191)) USING BTREE, + KEY `dirtyQuery` (`dirty`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_cityhistory` +-- + +DROP TABLE IF EXISTS `warehouse_cityhistory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `warehouse_cityhistory` ( + `event_number` bigint unsigned NOT NULL AUTO_INCREMENT, + `city_id` varchar(255) NOT NULL, + `city_name` varchar(255) DEFAULT NULL, + `city_motto` varchar(255) DEFAULT NULL, + `guild_id` varchar(255) DEFAULT NULL, + `loc_x` float(255,0) DEFAULT NULL, + `loc_y` float(255,0) DEFAULT NULL, + `zone_id` varchar(255) DEFAULT NULL, + `eventType` enum('CAPTURE','TRANSFER','DESTROY','CREATE') NOT NULL DEFAULT 'CREATE', + `dateTime` datetime NOT NULL, + PRIMARY KEY (`event_number`), + KEY `cityid` (`city_id`(191)) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_guildhistory` +-- + +DROP TABLE IF EXISTS `warehouse_guildhistory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `warehouse_guildhistory` ( + `event_number` bigint unsigned NOT NULL AUTO_INCREMENT, + `guild_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `guild_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `guild_motto` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `charter` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `guild_founder` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `bgicon` smallint DEFAULT NULL, + `bgcoloura` smallint DEFAULT NULL, + `bgcolourb` smallint DEFAULT NULL, + `fgicon` smallint DEFAULT NULL, + `fgcolour` smallint DEFAULT NULL, + `eventType` enum('CREATE','DISBAND') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'CREATE', + `datetime` datetime NOT NULL, + PRIMARY KEY (`event_number`), + KEY `guildid` (`guild_id`(191)) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_index` +-- + +DROP TABLE IF EXISTS `warehouse_index`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `warehouse_index` ( + `charIndex` bigint NOT NULL, + `cityIndex` bigint NOT NULL, + `guildIndex` bigint NOT NULL, + `realmIndex` bigint NOT NULL, + `baneIndex` bigint NOT NULL, + `pvpIndex` bigint NOT NULL, + `mineIndex` bigint NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_minehistory` +-- + +DROP TABLE IF EXISTS `warehouse_minehistory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `warehouse_minehistory` ( + `event_number` bigint unsigned NOT NULL AUTO_INCREMENT, + `zone_id` varchar(255) DEFAULT NULL, + `mine_type` varchar(255) DEFAULT NULL, + `char_id` varchar(255) DEFAULT NULL, + `mine_guildID` varchar(255) DEFAULT NULL, + `mine_nationID` varchar(255) DEFAULT NULL, + `loc_x` float(6,0) DEFAULT NULL, + `loc_y` float(6,0) DEFAULT NULL, + `eventType` varchar(255) DEFAULT NULL, + `datetime` datetime DEFAULT NULL, + PRIMARY KEY (`event_number`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_pvphistory` +-- + +DROP TABLE IF EXISTS `warehouse_pvphistory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `warehouse_pvphistory` ( + `event_number` bigint unsigned NOT NULL AUTO_INCREMENT, + `char_id` varchar(255) NOT NULL, + `char_guild_id` varchar(255) DEFAULT NULL, + `char_nation_id` varchar(255) DEFAULT NULL, + `char_level` smallint DEFAULT NULL, + `victim_id` varchar(255) NOT NULL, + `victim_guild_id` varchar(255) DEFAULT NULL, + `victim_nation_id` varchar(255) DEFAULT NULL, + `victim_level` smallint DEFAULT NULL, + `zone_id` varchar(255) DEFAULT NULL, + `zone_name` varchar(255) DEFAULT NULL, + `loc_x` float(255,0) DEFAULT NULL, + `loc_y` float(255,0) DEFAULT NULL, + `gave_exp` tinyint DEFAULT NULL, + `datetime` datetime DEFAULT NULL, + PRIMARY KEY (`event_number`), + KEY `CharacterIndex` (`char_id`(191),`victim_id`(191),`datetime`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_realmhistory` +-- + +DROP TABLE IF EXISTS `warehouse_realmhistory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `warehouse_realmhistory` ( + `event_number` bigint unsigned NOT NULL AUTO_INCREMENT, + `realm_id` varchar(255) NOT NULL, + `realm_name` varchar(255) DEFAULT NULL, + `charter` varchar(255) DEFAULT NULL, + `city_id` varchar(255) DEFAULT NULL, + `guild_id` varchar(255) DEFAULT NULL, + `eventType` enum('LOST','CAPTURE') DEFAULT NULL, + `datetime` datetime DEFAULT NULL, + PRIMARY KEY (`event_number`), + KEY `realmcity` (`realm_id`(191),`city_id`(191)) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping routines for database 'mbdb_108' +-- +/*!50003 DROP FUNCTION IF EXISTS `BigToInt` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` FUNCTION `BigToInt`(n BIGINT) RETURNS int +RETURN n ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `function_isNumeric` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` FUNCTION `function_isNumeric`(`in_num` VARCHAR(50)) RETURNS tinyint +BEGIN + RETURN in_num REGEXP '^-?[0-9]+$'; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `function_stringCount` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` FUNCTION `function_stringCount`(`in_Str` TEXT, `del` VARCHAR(3)) RETURNS int +BEGIN + IF (CHAR_LENGTH(in_Str) = 0) THEN + return 0; + END IF; + + return LENGTH(in_Str) - LENGTH(REPLACE(in_Str, del, '')) + 1; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `function_strSplit` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` FUNCTION `function_strSplit`(`x` text, `delim` varchar(3), `pos` INT UNSIGNED) RETURNS bigint unsigned +return replace(substring(substring_index(x, delim, pos),length(substring_index(x, delim, pos - 1)) + 1), delim, '') ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `account_GET` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `account_GET`(IN `in_uname` VARCHAR(255), IN `in_passworld` VARCHAR(255)) + MODIFIES SQL DATA +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SELECT * FROM `obj_account` WHERE `acct_uname` = in_uname AND `acct_passwd` = MD5(CONCAT(MD5(in_passworld), `acct_salt`)) LIMIT 1; + + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `account_GETBYID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `account_GETBYID`(IN `n` BIGINT UNSIGNED) + READS SQL DATA +MAIN: BEGIN + + + + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + + + + SELECT * FROM obj_account WHERE obj_account.UID = n LIMIT 1; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `account_GETBYNAME` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `account_GETBYNAME`(IN `n` VARCHAR(255)) + READS SQL DATA +MAIN: BEGIN + + + + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + + + + SELECT * FROM obj_account WHERE obj_account.acct_uname = n LIMIT 1; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `account_GETBYUID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `account_GETBYUID`(IN `n` BIGINT UNSIGNED) + READS SQL DATA +MAIN: BEGIN + + + + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + + + + SELECT * FROM obj_account WHERE obj_account.UID = n LIMIT 1; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `account_GETSESSIONKEY` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `account_GETSESSIONKEY`(IN `n` BIGINT UNSIGNED) + READS SQL DATA +MAIN: BEGIN + + + + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + + + + SELECT acct_lastKey FROM obj_account WHERE obj_account.UID = n LIMIT 1; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `account_GETSETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `account_GETSETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255), IN `in_old_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_account` SET ',in_name,' = ? WHERE `obj_account`.`UID` = ? AND ',in_name,' = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid, @old_value = in_old_value; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid, @old_value; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_account` WHERE `obj_account`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `account_SETIP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `account_SETIP`(IN `n` BIGINT UNSIGNED, IN `sip` VARCHAR(16)) + MODIFIES SQL DATA +MAIN: BEGIN + + + DECLARE UID BIGINT UNSIGNED; + + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + + + + INSERT INTO dyn_ip_account VALUES (n, INET_ATON(sip), UNIX_TIMESTAMP(NOW())); + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `account_SETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `account_SETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_account` SET ',in_name,' = ? WHERE `obj_account`.`UID` = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_account` WHERE `obj_account`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `account_SETSESSIONKEY` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `account_SETSESSIONKEY`(IN `n` BIGINT UNSIGNED, IN `lkey` TINYBLOB) + MODIFIES SQL DATA +MAIN: BEGIN + + + + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + + + + UPDATE obj_account SET obj_account.acct_lastKey = lkey WHERE obj_account.UID = n LIMIT 1; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `account_transfers_wipe` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `account_transfers_wipe`() +MAIN: BEGIN + + DECLARE ID INT UNSIGNED; + DECLARE done INT DEFAULT 0; + + DECLARE UIDC BIGINT UNSIGNED; + DECLARE UID BIGINT UNSIGNED; + DECLARE in_discordAccount VARCHAR(60); + DECLARE in_uname VARCHAR(60); + DECLARE in_passwd CHAR(60); + DECLARE in_regDate DATETIME; + DECLARE in_salt CHAR(30); + DECLARE in_suspend TINYINT UNSIGNED; + DECLARE in_discordAdmin TINYINT; + DECLARE in_lastCharUID BIGINT; + DECLARE in_lastUpdateRequest DATETIME; + DECLARE in_status enum('BANNED','ACTIVE','ADMIN','TRASH'); + DECLARE ACCTUID BIGINT(10); + + DECLARE cur1 CURSOR FOR SELECT UID, discordAccount, acct_uname, acct_passwd, registrationDate, acct_salt, acct_suspend, discordAdmin, acct_lastCharUID, lastUpdateRequest, status +FROM obj_account_wipe; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + + OPEN cur1; + + START TRANSACTION; + + read_loop: LOOP + + FETCH cur1 INTO ID, in_discordAccount, in_uname, in_passwd, in_regDate, in_salt, in_suspend, in_discordAdmin, in_lastCharUID, in_lastUpdateRequest, in_status; + IF done THEN + LEAVE read_loop; + END IF; + + IF NOT EXISTS(SELECT NULL FROM `obj_account` WHERE `acct_uname`= in_uname) THEN + INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'account', NULL); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO `obj_account` (`UID`, `discordAccount`, `acct_uname`, `acct_passwd`, `registrationDate`, `acct_salt`, `acct_suspend`, `discordAdmin`, `acct_lastCharUID`, `lastUpdateRequest`, `status`) VALUES (UID, in_discordAccount, in_uname, in_passwd, in_regDate, in_salt, in_suspend, in_discordAdmin, NULL, in_lastUpdateRequest, in_status); + END IF; + END LOOP; + + COMMIT; + + CLOSE cur1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `baneHistory` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `baneHistory`() +BEGIN +DECLARE TOTAL INT(10); +DECLARE PENDING INT(10); +DECLARE DESTROY INT(10); +DECLARE CAPTURE INT(10); +DECLARE DEFEND INT(10); + +SET TOTAL = (SELECT COUNT(*) FROM `warehouse_banehistory`); +SET PENDING = (SELECT COUNT(*) FROM `warehouse_banehistory` WHERE `resolution` = 'PENDING'); +SET DESTROY = (SELECT COUNT(*) FROM `warehouse_banehistory` WHERE `resolution` = 'DESTROY'); +SET CAPTURE = (SELECT COUNT(*) FROM `warehouse_banehistory` WHERE `resolution` = 'CAPTURE'); +SET DEFEND = (SELECT COUNT(*) FROM `warehouse_banehistory` WHERE `resolution` = 'DEFEND'); + + + + +SELECT TOTAL, PENDING, DESTROY, CAPTURE, DEFEND; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Blueprint_GETBYMESH` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `Blueprint_GETBYMESH`(IN `UID` BIGINT) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + + SELECT -1; + + END; + +SELECT * FROM `static_building_blueprint` WHERE `Rank0UUID` = UID LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Blueprint_GETMAINTFORBLUEPRINT` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `Blueprint_GETMAINTFORBLUEPRINT`(IN `UUID` BIGINT) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + + SELECT -1; + + END; + +SELECT MaintGroup FROM `static_building_blueprint` WHERE `Rank0UUID` = UID LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `building_CREATE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `building_CREATE`(IN `zoneUID` BIGINT UNSIGNED, IN `oUID` BIGINT UNSIGNED, IN `n` VARCHAR(255), IN `loadNum` INT, IN `locX` FLOAT, IN `locY` FLOAT, IN `locZ` FLOAT, IN `strX` FLOAT, IN `cHP` INT UNSIGNED, IN `invuln` VARCHAR(64), IN `strongbox` INT, IN `rank` INT, IN `upgradedate` DATETIME, IN `baseID` INT, IN `lac` FLOAT, IN `rotY` FLOAT) +MAIN: BEGIN + + + DECLARE UID BIGINT UNSIGNED; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + IF ISNULL(zoneUID) THEN + SELECT -2 AS `errorno`, "Parent (zone) UID CANNOT be null" AS `errormsg`; + LEAVE MAIN; + ELSEIF NOT EXISTS(SELECT NULL FROM `obj_zone` WHERE `obj_zone`.`UID`= zoneUID) THEN + SELECT -3 AS `errorno`, "Parent (zone) UID must exist" AS `errormsg`; + LEAVE MAIN; + END IF; + + START TRANSACTION; + + INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'building', zoneUID); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO obj_building (`UID`, `ownerUUID`, `name`, `meshUUID`, `locationX`, `locationY`, `locationZ`, `scale`, `doorState`, `currentHP`, `protectionState`, `currentGold`, `rank`,`upgradeDate`, `blueprintUUID`,`w`, `rotY`) + VALUES (UID, oUID, n, loadNum, locX, locY, locZ, strX, 0, cHP, invuln, strongbox, `rank`, upgradedate, baseID, lac, rotY); + + COMMIT; + + SELECT UID AS `UID`; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `building_GETBYMESH` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `building_GETBYMESH`(IN `n` bigint) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + +SELECT obj_building.*, object.parent +FROM object INNER JOIN obj_building ON obj_building.UID = object.UID WHERE obj_building.meshUUID = n LIMIT 1; +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `building_GETBYUID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `building_GETBYUID`(IN `n` BIGINT UNSIGNED) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SELECT * FROM obj_building WHERE obj_building.UID = n LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `building_GETSETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `building_GETSETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255), IN `in_old_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_building` SET ',in_name,' = ? WHERE `obj_building`.`UID` = ? AND ',in_name,' = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid, @old_value = in_old_value; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid, @old_value; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_building` WHERE `obj_building`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `building_MOVE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `building_MOVE`(IN `UID` BIGINT, IN `parentUID` BIGINT, IN `locX` FLOAT, IN `locY` FLOAT, IN `locZ` FLOAT) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + + + + + + + + UPDATE `object` SET `parent` = parentUID WHERE `UID` = UID; + UPDATE `obj_building` SET `building_locationX` = locX, `building_locationY` = locY, `building_locationZ` = locZ WHERE `UID` = UID; + + + + + + + SELECT UID AS `UID`; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `building_SETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `building_SETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_building` SET ',in_name,' = ? WHERE `obj_building`.`UID` = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_building` WHERE `obj_building`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS `result`; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `building_UPDATE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `building_UPDATE`(IN worldServerID INT, IN zoneUUID INT, IN ownerUUID INT, IN `name` VARCHAR(64), IN meshUUID INT, IN locX FLOAT, IN locY FLOAT, IN locZ FLOAT, IN scale FLOAT, IN doorState INT, IN currentHP INT, IN protectionState VARCHAR(64), IN currentGold INT, IN `rank` INT, IN upgradeDate DATETIME, IN blueprintUUID INT, IN lacunarity INT, IN rotY INT) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + UPDATE `obj_building` SET `worldServerID` = worldServerID, `ownerUUID` = ownerUUID, `name` = name, `meshUUID` = meshUUID, + `locationX` = locX, `locationY` = locX, `locationX` = locZ, `scale` = scale, `doorState` = doorState, + `currentHP` = currentHP, `protectionState` = protectionState, `currentGold` = currentGold, + `rank` = `rank`, `upgradeDate` = upgradeDate, `blueprintUUID` = blueprintUUID, `lacunarity` = lacunarity, + `rotY` = rotY + WHERE `UID` = UID; + + SELECT UID AS `UID`; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `character_CREATE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `character_CREATE`(IN `acctUID` BIGINT UNSIGNED, IN `fname` VARCHAR(15), IN `lname` VARCHAR(15) CHARSET 'utf8', IN `rID` INT UNSIGNED, IN `bCID` INT UNSIGNED, IN `strM` SMALLINT, IN `dexM` SMALLINT, IN `conM` SMALLINT, IN `intM` SMALLINT, IN `spiM` SMALLINT, IN `exp` TINYINT UNSIGNED, IN `skinC` TINYINT UNSIGNED, IN `hairC` TINYINT UNSIGNED, IN `hairS` TINYINT, IN `beardC` TINYINT UNSIGNED, IN `beardS` TINYINT) + MODIFIES SQL DATA +MAIN: BEGIN + + + DECLARE UID BIGINT UNSIGNED; + DECLARE UIDC BIGINT UNSIGNED; + DECLARE UIDD BIGINT UNSIGNED; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, CONCAT ('UID: ', UID, ', char_firstname: ', fname, ', char_lastname: ', lname, ', char_raceID: ', rID, ', char_baseClassID: ', bCID, ', char_strMod: ', strM, ', char_dexMod: ', dexM, ', char_conMod: ', conM, ', char_intMod: ', intM, ', char_spiMod: ', spiM, ', char_experience: ', exp, ', char_skinColor: ', skinC, ', char_hairColor: ', hairC, ', char_hairStyle: ', hairS, ', char_beardColor: ', beardS, ', char_beardStyle: ', beardS, ', char_bindBuilding: ', '-1', ', acctUID: ', acctUID) as `errormsg`; + + END; + + IF ISNULL(acctUID) THEN + SELECT -2 AS `errorno`, "Parent (account) UID CANNOT be null" AS `errormsg`; + LEAVE MAIN; + ELSEIF NOT EXISTS(SELECT NULL FROM `obj_account` WHERE `obj_account`.`UID`= acctUID) THEN + SELECT -3 AS `errorno`, "Parent (account) UID must exist" AS `errormsg`; + LEAVE MAIN; + END IF; + + START TRANSACTION; + + INSERT HIGH_PRIORITY INTO `object` VALUES (NULL, 'character', acctUID); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO `obj_character` (`UID`, `char_firstname`, `char_lastname`, `char_raceID`, `char_baseClassID`, `char_strMod`, `char_dexMod`, `char_conMod`, `char_intMod`, `char_spiMod`, `char_experience`, `char_skinColor`, `char_hairColor`, `char_hairStyle`, `char_beardColor`, `char_beardStyle`, `char_bindBuilding`, `char_isActive`) VALUES (UID, fname, convert(lname using utf8), rID, bCID, strM, dexM, conM, intM, spiM, exp, skinC, hairC, hairS, beardC, beardS, -1, 1); + + COMMIT; + + SELECT UID AS `UID`; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `character_GETBYUID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `character_GETBYUID`(IN `n` BIGINT UNSIGNED) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SELECT * FROM `obj_character` WHERE `obj_character`.`UID` = n LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `character_GETSETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `character_GETSETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255), IN `in_old_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_character` SET ',in_name,' = ? WHERE `obj_character`.`UID` = ? AND ',in_name,' = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid, @old_value = in_old_value; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid, @old_value; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_character` WHERE `obj_character`.`UID` = ? LIMIT 1;'), @uid = uid; + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `character_SETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `character_SETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_character` SET ',in_name,' = ? WHERE `obj_character`.`UID` = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_character` WHERE `obj_character`.`UID` = ? LIMIT 1;'), @id = uid; + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @id; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `city_CREATE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `city_CREATE`(IN `ownerID` BIGINT UNSIGNED, IN `parentZoneID` BIGINT UNSIGNED, IN `xCoord` FLOAT, IN `yCoord` FLOAT, IN `zCoord` FLOAT , IN `cityName` VARCHAR(255), IN `established` DATETIME, IN `rotY` FLOAT, IN `lac` FLOAT, IN `upgradeDate` DATETIME) +MAIN: BEGIN + + DECLARE zoneUID BIGINT UNSIGNED; + DECLARE tolUID BIGINT UNSIGNED; + DECLARE cityUID BIGINT UNSIGNED; + DECLARE in_guildUID BIGINT UNSIGNED DEFAULT 0; + DECLARE maint_date DATETIME; + + DECLARE gUID CURSOR FOR SELECT `guildUID` FROM `obj_character` WHERE `UID`=ownerID; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + GET DIAGNOSTICS CONDITION 1 @ERRNO = MYSQL_ERRNO, @MESSAGE_TEXT = MESSAGE_TEXT; + SELECT @ERRNO, @MESSAGE_TEXT; + ROLLBACK; + END; + + Open gUID; + FETCH gUID INTO in_guildUID; + close gUID; + + IF NOT EXISTS(SELECT NULL FROM `obj_guild` WHERE `obj_guild`.`UID`= in_guildUID) THEN + SELECT -3 AS `errorno`, "owner must have guild" AS `errormsg`, in_guildUID AS `guildUID`, ownerID AS `ownerUID`; + LEAVE MAIN; + END IF; + +SET maint_date = DATE_ADD(established, INTERVAL 7 DAY); + + START TRANSACTION; + + INSERT HIGH_PRIORITY INTO `object` VALUES (NULL, 'zone', parentZoneID); + SET zoneUID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO `obj_zone` (`UID`, `xOffset`, `yOffset`, `zOffset`, `template`, `zone_name`, `peace_zone`, `Icon1`, `Icon2`, `Icon3`, `playerCityUUID`) VALUES (zoneUID, xCoord, yCoord, zCoord, 0, cityName, 0, "", "", "", 0); + + INSERT HIGH_PRIORITY INTO `object` VALUES (NULL, 'building', zoneUID); + SET tolUID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO `obj_building` (`UID`, `ownerUUID`, `name`, `meshUUID`, `blueprintUUID`, `locationX`, `locationY`, `locationZ`, `currentHP`, + `protectionState`, `currentGold`, `rank`, `upgradeDate`, `scale`, `rotY`, `w`, `maintDate`) + VALUES (tolUID, ownerID, "Tree of Life", 24200, 24200, 0, 0, 0, 40000,"PROTECTED", 0, 0, upgradeDate, 1, rotY, lac, maint_date); + + INSERT HIGH_PRIORITY INTO `object` VALUES (NULL, 'city', zoneUID); + SET cityUID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO `obj_city` (`UID`, `name`, `motto`, `treeOfLifeUUID`, `established`, `population`, `siegesWithstood`, `isNpc`, `isCapital`, `isNoobIsle`, `bindX`, `bindZ`, `bindRadius`, `radiusType`) VALUES (cityUID, cityName, '', tolUID, established, 1, 0, 0, 0, 0, 0, 0, 32, 1); + + SET @dyn_sql = CONCAT('UPDATE `obj_zone` SET `playerCityUUID` = ? WHERE `UID` = ? LIMIT 1;'), @city = cityUID, @uid = zoneUID; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @city, @uid; + + SET @dyn_sql2 = CONCAT('UPDATE `obj_guild` SET `ownedCity` = ? WHERE `UID` = ? LIMIT 1;'), @city = cityUID, @uid = in_guildUID; + PREPARE stmt2 FROM @dyn_sql2; + EXECUTE stmt2 USING @city, @uid; + + SELECT `obj_zone`.*, `object`.`parent`, `object`.`type` FROM `object` LEFT JOIN `obj_zone` ON `object`.`UID` = `obj_zone`.`UID` WHERE `object`.`UID` = zoneUID; + + SELECT `obj_building`.*, `object`.`parent`, `object`.`type` FROM `object` LEFT JOIN `obj_building` ON `object`.`UID` = `obj_building`.`UID` WHERE `object`.`UID` = tolUID; + + SELECT `obj_city`.*, `object`.`parent`, `object`.`type` FROM `object` LEFT JOIN `obj_city` ON `object`.`UID` = `obj_city`.`UID` WHERE `object`.`UID` = cityUID; + + COMMIT; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `city_GETBYUID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `city_GETBYUID`(IN `n` BIGINT UNSIGNED) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SELECT * FROM `obj_city` WHERE `obj_city`.`UID` = n LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `city_GETSETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `city_GETSETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255), IN `in_old_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_city` SET ',in_name,' = ? WHERE `obj_city`.`UID` = ? AND ',in_name,' = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid, @old_value = in_old_value; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid, @old_value; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_city` WHERE `obj_city`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `city_SETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `city_SETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_city` SET ',in_name,' = ? WHERE `obj_city`.`UID` = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_city` WHERE `obj_city`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `container_CREATE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `container_CREATE`(IN `oUID` BIGINT UNSIGNED, IN `type` ENUM('bank','inventory','vault')) +MAIN: BEGIN + + + DECLARE UID BIGINT UNSIGNED; + + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + + IF ISNULL(oUID) THEN + SELECT -2 AS `errorno`, "Parent (object) UID CANNOT be null" AS `errormsg`; + LEAVE MAIN; + ELSEIF NOT EXISTS(SELECT NULL FROM `object` WHERE `object`.`UID`= oUID AND `object`.`type` IN ('account', 'character') ) THEN + SELECT -3 AS `errorno`, "Parent (object) UID must exist, and must be an account or character" AS `errormsg`; + LEAVE MAIN; + END IF; + + + + START TRANSACTION; + + INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'container', oUID); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO obj_container (`UID`, `container_type`) + VALUES (UID, type); + + COMMIT; + + + + SELECT UID AS `UID`; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `container_GETBYUID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `container_GETBYUID`(IN `n` BIGINT UNSIGNED) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SELECT * FROM `obj_container` WHERE `obj_container`.`UID` = n LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `container_GETSETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `container_GETSETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255), IN `in_old_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_container` SET ',in_name,' = ? WHERE `obj_container`.`UID` = ? AND ',in_name,' = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid, @old_value = in_old_value; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid, @old_value; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_container` WHERE `obj_container`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `container_SETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `container_SETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_container` SET ',in_name,' = ? WHERE `obj_container`.`UID` = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_container` WHERE `obj_container`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `debug_msg` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `debug_msg`(msg VARCHAR(255)) +BEGIN + select concat("** ", msg) AS '** DEBUG:'; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `discordAccountCharacters` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `discordAccountCharacters`(IN `uname` VARCHAR(60)) +MAIN: BEGIN + DECLARE CHAR_COUNT int; + SET CHAR_COUNT = (select COUNT(acct_uname) from char_perAccount Where acct_uname like CONCAT(uname,'%')); + + If CHAR_COUNT > 0 THEN + SELECT acct_uname, CharacterName, BaseClass, PromotionClass, char_level + FROM char_perAccount + Where acct_uname like CONCAT(uname,'%'); + Else Select acct_uname as 'Account Name','No Characters On This Account' as 'Characters' from obj_account where acct_uname like CONCAT(uname,'%'); + End If; + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `discordAccountCreate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `discordAccountCreate`(IN `discordID` VARCHAR(60), IN `uname` VARCHAR(60), IN `passwd` CHAR(60)) + MODIFIES SQL DATA +MAIN: BEGIN + + DECLARE UID BIGINT UNSIGNED; + DECLARE SALTSTRING VARCHAR(8); + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + START TRANSACTION; + + + INSERT HIGH_PRIORITY INTO `object` VALUES (NULL, 'account', NULL); + SET UID = LAST_INSERT_ID(); + + + + SET SALTSTRING = (SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 8) AS SALT); + + INSERT HIGH_PRIORITY INTO `obj_account` (`UID`, `acct_uname`, `acct_passwd`, `acct_salt`, `discordAccount`, `registrationDate`) + VALUES (UID, uname,MD5(CONCAT(MD5(passwd), SALTSTRING)), SALTSTRING, discordID, CURRENT_TIMESTAMP()); + + + INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'container', UID); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO obj_container (`UID`, `container_type`) + VALUES (UID, 'vault'); + COMMIT; + + + SELECT 1; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `discordAccountExistsCheck` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `discordAccountExistsCheck`(IN `email` VARCHAR(60),IN `uname` VARCHAR(60),IN `passwd` CHAR(60)) + MODIFIES SQL DATA +MAIN: BEGIN +DECLARE ACCT_COUNT int; +SET ACCT_COUNT = (select COUNT(acct_uname) from obj_account Where acct_uname like CONCAT('%',uname,'%')); + +If ACCT_COUNT > 0 THEN + Select 'Username already in use, please choose a different name' as 'Failed'; + +Else + CALL discordAccountRegister(email,uname,passwd); + End IF; + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `discordAccountRegister` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `discordAccountRegister`(IN `discordAccount` VARCHAR(60), IN `discordName` VARCHAR(60), IN `passwd` CHAR(60)) + MODIFIES SQL DATA +MAIN: BEGIN + + CALL discordAccountCreate(discordAccount, CONCAT(discordName, "#1"), passwd); + CALL discordAccountCreate(discordAccount, CONCAT(discordName, "#2"), passwd); + CALL discordAccountCreate(discordAccount, CONCAT(discordName, "#3"), passwd); + CALL discordAccountCreate(discordAccount, CONCAT(discordName, "#4"), passwd); + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `discordUpdatePassword` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `discordUpdatePassword`(IN `uname` VARCHAR(60), IN `passwd` VARCHAR(60)) + MODIFIES SQL DATA +MAIN: BEGIN + + DECLARE SALTSTRING VARCHAR(60); + DECLARE NEWPASS VARCHAR(60); + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + START TRANSACTION; + + SET SALTSTRING = (SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 8) AS SALT); + SET NEWPASS = (MD5(CONCAT(MD5(passwd), SALTSTRING))); + + + + UPDATE `obj_account` SET `acct_passwd` = NEWPASS, `acct_salt` = SALTSTRING, `lastUpdateRequest` = CURRENT_TIMESTAMP() WHERE `discordAccount` = uname; + + + + INSERT IGNORE INTO login_cachelist (`UID`) (SELECT `UID` from `obj_account` where `discordAccount` = uname); + + + SELECT 1; + + COMMIT; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `forum_link` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `forum_link`(IN `uname` VARCHAR(60), IN `passwd` CHAR(60)) + MODIFIES SQL DATA +MAIN: BEGIN + + DECLARE UID BIGINT UNSIGNED; + DECLARE OUTID BIGINT UNSIGNED; + DECLARE SALTSTRING VARCHAR(8); + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + + + IF EXISTS(SELECT NULL FROM `obj_account` WHERE `acct_uname`= uname) THEN + START TRANSACTION; + + UPDATE `obj_account` SET `status`= "ACTIVE" WHERE `acct_uname`= uname and `status` != "ACTIVE" LIMIT 1; + COMMIT; + + + SELECT 1; + LEAVE MAIN; + END IF; + + START TRANSACTION; + + + INSERT HIGH_PRIORITY INTO `object` VALUES (NULL, 'account', NULL); + SET UID = LAST_INSERT_ID(); + SET OUTID = UID; + + + + SET SALTSTRING = (SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 8) AS SALT); + + INSERT HIGH_PRIORITY INTO `obj_account` (`UID`, `acct_uname`, `acct_passwd`, `acct_salt`, `status`) + VALUES (UID, uname,MD5(CONCAT(MD5(passwd), SALTSTRING)), SALTSTRING, "ACTIVE"); + + + INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'container', UID); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO obj_container (`UID`, `container_type`) + VALUES (UID, 'vault'); + COMMIT; + + + SELECT 2; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `forum_link_pass` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `forum_link_pass`(IN `uname` VARCHAR(60), IN `passwd` VARCHAR(60)) + MODIFIES SQL DATA +MAIN: BEGIN + + DECLARE SALTSTRING VARCHAR(60); + DECLARE NEWPASS VARCHAR(60); + DECLARE ACCTUID BIGINT(10); + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + + + START TRANSACTION; + + SET ACCTUID = (SELECT `UID` FROM `obj_account` WHERE `acct_uname`= uname); + + IF ACCTUID IS NULL THEN + LEAVE MAIN; + END IF; + + SET SALTSTRING = (SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 8) AS SALT); + SET NEWPASS = (MD5(CONCAT(MD5(passwd), SALTSTRING))); + + + + UPDATE `obj_account` SET `acct_passwd` = NEWPASS, `acct_salt` = SALTSTRING WHERE `acct_uname`= uname and acct_accessLevel not in(3) LIMIT 1; + + + + INSERT IGNORE INTO login_cachelist (`UID`) VALUES(ACCTUID); + + + SELECT 1; + + COMMIT; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `GET_POPULATION_STRING` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `GET_POPULATION_STRING`() +BEGIN +DECLARE POPSTRING varchar(50); +DECLARE CHARCOUNT INT(10); +DECLARE GUILDCOUNT INT(10); +DECLARE CITYCOUNT INT(10); +DECLARE REALMCOUNT INT(10); + +SET CHARCOUNT = (SELECT COUNT(*) FROM `obj_character`); +SET GUILDCOUNT = (SELECT COUNT(*) FROM `obj_guild`); +SET CITYCOUNT = (SELECT COUNT(*) FROM `obj_city` WHERE isNpc = 0); +SET REALMCOUNT = (SELECT COUNT(*) FROM `obj_realm` WHERE rulingCityUID != 0); + +SET POPSTRING = (SELECT CONCAT("Chars:", CHARCOUNT, " Guilds:", GUILDCOUNT, " Cities:", CITYCOUNT, " Rulers:", REALMCOUNT)); +SELECT POPSTRING; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `guild_CREATE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `guild_CREATE`(IN `wsUID` BIGINT UNSIGNED, IN `lUID` BIGINT UNSIGNED, IN `n` VARCHAR(60), IN `bgC1` SMALLINT UNSIGNED, IN `bgC2` SMALLINT UNSIGNED, IN `sC` SMALLINT UNSIGNED, IN `bgD` SMALLINT UNSIGNED, IN `sym` SMALLINT UNSIGNED, IN `chart` SMALLINT UNSIGNED, IN `LType` VARCHAR(40), IN `motto` VARCHAR(120)) +MAIN: BEGIN + + + DECLARE UID BIGINT UNSIGNED; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + GET DIAGNOSTICS CONDITION 1 @ERRNO = MYSQL_ERRNO, @MESSAGE_TEXT = MESSAGE_TEXT; + SELECT @ERRNO, @MESSAGE_TEXT; + ROLLBACK; + END; + + IF ISNULL(lUID) THEN + SELECT -2 AS `errorno`, "Leader (character) UID CANNOT be null" AS `errormsg`; + LEAVE MAIN; + ELSEIF NOT EXISTS(SELECT NULL FROM `obj_character` WHERE `obj_character`.`UID`= lUID) THEN + SELECT -3 AS `errorno`, "Leader (character) UID must exist" AS `errormsg`; + LEAVE MAIN; + END IF; + + IF ISNULL(wsUID) THEN + SELECT -2 AS `errorno`, "Server UID CANNOT be null" AS `errormsg`; + LEAVE MAIN; + END IF; + + START TRANSACTION; + + INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'guild', wsUID); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO obj_guild (`UID`, `name`, `backgroundColor01`, `backgroundColor02`, `symbolColor`, `backgroundDesign`, `symbol`, `charter`, `leadershipType`, `leaderUID`, `motto`) + VALUES (UID, n, bgC1, bgC2, sC, bgD, sym, chart, LType, lUID, motto); + + COMMIT; + + SELECT UID AS `UID`; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `guild_GETBYUID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `guild_GETBYUID`(IN `n` BIGINT UNSIGNED) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SELECT * FROM `obj_guild` WHERE `obj_guild`.`UID` = n LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `guild_GETLIST` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `guild_GETLIST`(IN `n` BIGINT UNSIGNED) +SELECT obj_guild.uid, obj_guild.`name`, leaderUID, obj_city.treeOfLifeUUID + FROM obj_guild JOIN obj_city ON obj_guild.ownedCity = obj_city.uid + WHERE obj_city.isNpc = `n` ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `guild_GETSETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `guild_GETSETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255), IN `in_old_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_guild` SET ',in_name,' = ? WHERE `obj_guild`.`UID` = ? AND ',in_name,' = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid, @old_value = in_old_value; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid, @old_value; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_guild` WHERE `obj_guild`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `guild_SETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `guild_SETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_guild` SET ',in_name,' = ? WHERE `obj_guild`.`UID` = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_guild` WHERE `obj_guild`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_CREATE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `item_CREATE`(IN `pUID` BIGINT UNSIGNED, IN `templateID` INT UNSIGNED, IN `chargeR` SMALLINT UNSIGNED, IN `duraC` SMALLINT UNSIGNED, IN `numOf` MEDIUMINT UNSIGNED, IN `cont` ENUM('bank','equip','inventory','vault', 'forge'), IN `eSlot` VARCHAR(255), IN `flags` VARCHAR(255), IN `customName` VARCHAR(100)) + MODIFIES SQL DATA +MAIN: BEGIN + + + DECLARE UID BIGINT UNSIGNED; + + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + + IF ISNULL(pUID) THEN + SELECT -2 AS `errorno`, "Parent (object) UID CANNOT be null" AS `errormsg`; + LEAVE MAIN; + END IF; + + + + START TRANSACTION; + + INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'item', pUID); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO obj_item (`UID`, `templateID`, `chargesRemaining`, `combat_health_current`, `numberOfItems`, `equipSlot`, `container`,`flags`,`name`) + VALUES (UID, templateID, chargeR, duraC, numOf, eSlot, cont, flags, customName); + + COMMIT; + + + + SELECT UID AS `UID`; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_GETBYUID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `item_GETBYUID`(IN `n` BIGINT UNSIGNED) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SELECT * FROM `obj_item` WHERE `obj_item`.`UID` = n LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_GETSETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `item_GETSETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255), IN `in_old_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_item` SET ',in_name,' = ? WHERE `obj_item`.`UID` = ? AND ',in_name,' = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid, @old_value = in_old_value; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid, @old_value; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_item` WHERE `obj_item`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_SETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `item_SETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_item` SET ',in_name,' = ? WHERE `obj_item`.`UID` = ?; LIMIT 1'), @new_value = in_new_value, @uid = uid; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_item` WHERE `obj_item`.`UID` = ?; LIMIT 1'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_TRADE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `item_TRADE`(IN `in_ItemsA` TEXT, IN `in_PlayerA_UID` BIGINT UNSIGNED, IN `in_ItemsB` TEXT, IN `in_PlayerB_UID` BIGINT UNSIGNED, IN `in_GoldA_Amount` INT, IN `in_GoldA_UID` BIGINT, IN `in_GoldB_Amount` INT, IN `in_GoldB_UID` BIGINT) +Main: BEGIN + + DECLARE UID BIGINT UNSIGNED; + DECLARE cnt INT UNSIGNED DEFAULT 1; + DECLARE totA INT UNSIGNED DEFAULT 0; + DECLARE totB INT UNSIGNED DEFAULT 0; + DECLARE in_parent BIGINT UNSIGNED; + DECLARE in_container ENUM('bank','equip','inventory','vault','none'); + DECLARE in_curGoldA INT UNSIGNED DEFAULT 0; + DECLARE in_curGoldB INT UNSIGNED DEFAULT 0; + + DECLARE cur1 CURSOR FOR SELECT `object`.`parent`, `obj_item`.`container` FROM `obj_item` LEFT JOIN `object` ON `obj_item`.`UID` = `object`.`UID` WHERE `object`.`UID` = UID FOR UPDATE; + DECLARE cur2 CURSOR FOR SELECT `object`.`parent`, `obj_item`.`container`, `obj_item`.`numberOfItems` FROM `obj_item` LEFT JOIN `object` ON `obj_item`.`UID` = `object`.`UID` WHERE `object`.`UID` = UID FOR UPDATE; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + START TRANSACTION; + + + IF NOT EXISTS(SELECT NULL FROM `obj_character` WHERE `obj_character`.`UID`= in_PlayerA_UID) OR NOT EXISTS(SELECT NULL FROM `obj_character` WHERE `obj_character`.`UID`= in_PlayerB_UID) THEN + SELECT -5 AS `errorno`, "Player Not found." AS `errormsg`; + ROLLBACK; + LEAVE MAIN; + END IF; + + + SET totA = `function_stringCount`(in_ItemsA, ','); + SET totB = `function_stringCount`(in_ItemsB, ','); + + + IF (totA > 256 OR totB > 256) THEN + SELECT -2 AS `errorno`, "Max 256 objects can be handled trading." AS `errormsg`; + ROLLBACK; + LEAVE MAIN; + END IF; + + + WHILE (cnt <= totA) DO + SET UID = `function_strSplit`(in_ItemsA, ',', cnt); + + + IF (`function_isNumeric`(UID) != 1 OR UID = 0) THEN + SELECT -3 AS `errorno`, "Non-Numeric Number passed." AS `errormsg`; + ROLLBACK; + LEAVE MAIN; + END IF; + + open cur1; + FETCH cur1 INTO in_parent, in_container; + close cur1; + + IF (in_parent != in_PlayerA_UID OR in_container != 'inventory') THEN + SELECT -4 AS `errorno`, "Invalid parent or item not in inventory." AS `errormsg`; + ROLLBACK; + LEAVE MAIN; + END IF; + + SET cnt = cnt + 1; + + END WHILE; + + + SET cnt = 1; + WHILE (cnt <= totB) DO + SET UID = `function_strSplit`(in_ItemsB, ',', cnt); + + + IF (`function_isNumeric`(UID) != 1 OR UID = 0) THEN + SELECT -3 AS `errorno`, "Non-Numeric Number passed." AS `errormsg`; + ROLLBACK; + LEAVE MAIN; + END IF; + + open cur1; + FETCH cur1 INTO in_parent, in_container; + close cur1; + + IF (in_parent != in_PlayerB_UID OR in_container != 'inventory') THEN + SELECT -4 AS `errorno`, "Invalid parent or item not in inventory." AS `errormsg`; + ROLLBACK; + LEAVE MAIN; + END IF; + + SET cnt = cnt + 1; + + END WHILE; + + + IF (in_GoldA_UID > 0) THEN + SET UID = in_GoldA_UID; + + open cur2; + FETCH cur2 INTO in_parent, in_container, in_curGoldA; + close cur2; + + IF (in_parent != in_PlayerA_UID OR in_container != 'inventory') THEN + SELECT -4 AS `errorno`, "Invalid parent or gold not in inventory." AS `errormsg`; + ROLLBACK; + LEAVE MAIN; + END IF; + + IF (in_GoldA_Amount > in_curGoldA) THEN + SELECT -6 AS `errorno`, "not enough gold in inventory to transfer." AS `errormsg`; + ROLLBACK; + LEAVE MAIN; + END IF; + ELSE + SELECT -7 AS `errorno`, "Missing gold ID." AS `errormsg`; + ROLLBACK; + LEAVE MAIN; + END IF; + + + IF (in_GoldB_UID > 0) THEN + SET UID = in_GoldB_UID; + + open cur2; + FETCH cur2 INTO in_parent, in_container, in_curGoldB; + close cur2; + + IF (in_parent != in_PlayerB_UID OR in_container != 'inventory') THEN + SELECT -4 AS `errorno`, "Invalid parent or gold not in inventory." AS `errormsg`; + ROLLBACK; + LEAVE MAIN; + END IF; + + IF (in_GoldB_Amount > in_curGoldB) THEN + SELECT -6 AS `errorno`, "not enough gold in inventory to transfer." AS `errormsg`; + ROLLBACK; + LEAVE MAIN; + END IF; + ELSE + SELECT -7 AS `errorno`, "Missing gold ID." AS `errormsg`; + ROLLBACK; + LEAVE MAIN; + END IF; + + + + + Set cnt = 1; + WHILE (cnt <= totA) DO + SET UID = `function_strSplit`(in_ItemsA, ',', cnt); + + SET @dyn_sql = CONCAT('UPDATE `object` SET `parent` = ? WHERE `UID` = ? AND `parent` = ? LIMIT 1;'), @parent = in_PlayerB_UID, @uid = uid, @curOwner = in_PlayerA_UID; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @parent, @uid, @curOwner; + + SET cnt = cnt + 1; + + END WHILE; + + + Set cnt = 1; + WHILE (cnt <= totB) DO + SET UID = `function_strSplit`(in_ItemsB, ',', cnt); + + SET @dyn_sql = CONCAT('UPDATE `object` SET `parent` = ? WHERE `UID` = ? AND `parent` = ? LIMIT 1;'), @parent = in_PlayerA_UID, @uid = uid, @curOwner = in_PlayerB_UID; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @parent, @uid, @curOwner; + + SET cnt = cnt + 1; + + END WHILE; + + + IF (in_GoldA_Amount > 0 OR in_GoldB_Amount > 0) THEN + + Set in_curGoldA = in_curGoldA - in_GoldA_Amount + in_GoldB_Amount; + Set in_curGoldB = in_curGoldB + in_GoldA_Amount - in_GoldB_Amount; + + SET @dyn_sql = CONCAT('UPDATE `obj_item` SET `numberOfItems` = ? WHERE `UID` = ? LIMIT 1;'), @numGold = in_curGoldB, @uid = in_GoldB_UID; + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @numGold, @uid; + + SET @dyn_sql = CONCAT('UPDATE `obj_item` SET `numberOfItems` = ? WHERE `UID` = ? LIMIT 1;'), @numGold = in_curGoldA, @uid = in_GoldA_UID; + PREPARE stmt3 FROM @dyn_sql; + EXECUTE stmt3 USING @numGold, @uid; + + END IF; + + COMMIT; + + Select 1 AS 'result'; + +END Main ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_TRANSFER_OWNER` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `item_TRANSFER_OWNER`(IN `UID` BIGINT, IN `newParent` BIGINT, IN `newContainer` ENUM('bank','equip','inventory','vault','forge','none'), IN `equipSlot` VARCHAR(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + START TRANSACTION; + + SET @dyn_sql = CONCAT('UPDATE `obj_item` INNER JOIN `object` ON `object`.`UID` = `obj_item`.`UID` SET `object`.`parent`=?, `obj_item`.`container`=?, `obj_item`.`equipSlot`=? WHERE `object`.`UID`=?'), @parent = newParent, @container = newContainer, @equipSlot = equipSlot, @uid = UID; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @parent, @container, @equipSlot, @uid; + DEALLOCATE PREPARE stmt1; + COMMIT; + + SELECT '1' AS `result`; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mine_GETBYUID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `mine_GETBYUID`(IN `n` BIGINT UNSIGNED) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SELECT * FROM `obj_mine` WHERE `obj_mine`.`UID` = n LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mine_GETSETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `mine_GETSETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255), IN `in_old_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_mine` SET ',in_name,' = ? WHERE `obj_mine`.`UID` = ? AND ',in_name,' = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid, @old_value = in_old_value; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid, @old_value; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_mine` WHERE `obj_mine`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mine_SETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `mine_SETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_mine` SET ',in_name,' = ? WHERE `obj_mine`.`UID` = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_mine` WHERE `obj_mine`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mob_CREATE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `mob_CREATE`(IN `zoneUID` BIGINT, IN `mobbaseID` INT, IN `guildID` BIGINT, IN `spawnX` FLOAT, IN `spawnY` FLOAT, IN `spawnZ` FLOAT, IN `spawnType` SMALLINT, IN `spawnRadius` FLOAT, IN `spawnTime` INT, IN `contractID` INT, IN `buildingID` INT, IN `moblevel` INT, IN `mobname` VARCHAR(60), IN `fsm` VARCHAR(255)) +MAIN: BEGIN + + DECLARE UID BIGINT UNSIGNED; + DECLARE mob_fsm VARCHAR(255); + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + IF ISNULL(zoneUID) THEN + SELECT -2 AS `errorno`, "Parent (zone) UID CANNOT be null" AS `errormsg`; + LEAVE MAIN; + ELSEIF NOT EXISTS(SELECT NULL FROM `obj_zone` WHERE `obj_zone`.`UID`= zoneUID) THEN + SELECT -3 AS `errorno`, "Parent (zone) UID must exist" AS `errormsg`; + LEAVE MAIN; + END IF; + + IF fsm = "" THEN + SET mob_fsm = "None"; +ELSE + SET mob_fsm = fsm; +END IF; + + START TRANSACTION; + + INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'mob', zoneUID); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO `obj_mob` (`UID`, `mob_mobbaseID`, `mob_guildUID`, `mob_spawnX`, `mob_spawnY`, `mob_SpawnZ`, `mob_spawnType`, `mob_spawnRadius`, `mob_spawnTime`,`mob_contractID`, `mob_buildingID`, `mob_level`, `mob_name`, `fsm`) + VALUES (UID, mobbaseID, guildID, spawnX, spawnY, spawnZ, spawnType, spawnRadius, spawnTime, contractID, buildingID, moblevel, mobname, mob_fsm); + + COMMIT; + + SELECT UID AS `UID`; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mob_GETBYUID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `mob_GETBYUID`(IN `n` BIGINT UNSIGNED) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SELECT * FROM `obj_mob` WHERE `obj_mob`.`UID` = n LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mob_GETSETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `mob_GETSETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255), IN `in_old_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_mob` SET ',in_name,' = ? WHERE `obj_mob`.`UID` = ? AND ',in_name,' = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid, @old_value = in_old_value; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid, @old_value; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_mob` WHERE `obj_mob`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mob_SETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `mob_SETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_mob` SET ',in_name,' = ? WHERE `obj_mob`.`UID` = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_mob` WHERE `obj_mob`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mob_SIEGECREATE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `mob_SIEGECREATE`(IN `zoneUID` BIGINT, IN `mobbaseID` INT, IN `guildID` BIGINT, IN `spawnX` FLOAT, IN `spawnY` FLOAT, IN `spawnZ` FLOAT, IN `spawnType` SMALLINT, IN `spawnRadius` FLOAT, IN `spawnTime` INT, IN `buildingID` INT) +MAIN: BEGIN + + + DECLARE UID BIGINT UNSIGNED; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + IF ISNULL(zoneUID) THEN + SELECT -2 AS `errorno`, "Parent (zone) UID CANNOT be null" AS `errormsg`; + LEAVE MAIN; + ELSEIF NOT EXISTS(SELECT NULL FROM `obj_zone` WHERE `obj_zone`.`UID`= zoneUID) THEN + SELECT -3 AS `errorno`, "Parent (zone) UID must exist" AS `errormsg`; + LEAVE MAIN; + END IF; + + START TRANSACTION; + + INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'mob', zoneUID); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO `obj_mob` (`UID`, `mob_mobbaseID`, `mob_guildUID`, `mob_spawnX`, `mob_spawnY`, `mob_SpawnZ`, `mob_spawnType`, `mob_spawnRadius`, `mob_spawnTime`, `mob_buildingID`) VALUES (UID, mobbaseID, guildID, spawnX, spawnY, spawnZ, spawnType, spawnRadius, spawnTime, buildingID); + + COMMIT; + + SELECT UID AS `UID`; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `npc_CREATE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `npc_CREATE`(IN `zoneUID` INT, IN `name` VARCHAR(100), IN `contractID` INT, IN `guildID` BIGINT, IN `spawnX` FLOAT, IN `spawnY` FLOAT, IN `spawnZ` FLOAT, IN `npcLevel` SMALLINT, IN `buyPercent` FLOAT, IN `sellPercent` FLOAT, IN `buildingID` INT) +MAIN: BEGIN + + DECLARE UID BIGINT UNSIGNED; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + IF ISNULL(zoneUID) THEN + SELECT -2 AS `errorno`, "Parent (zone) UID CANNOT be null" AS `errormsg`; + LEAVE MAIN; + ELSEIF NOT EXISTS(SELECT NULL FROM `obj_zone` WHERE `obj_zone`.`UID`= zoneUID) THEN + SELECT -3 AS `errorno`, "Parent (zone) UID must exist" AS `errormsg`; + LEAVE MAIN; + END IF; + + START TRANSACTION; + + INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'npc', zoneUID); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO `obj_npc` (`UID`, `npc_name`, `npc_contractID`, `npc_guildID`, `npc_spawnX`, `npc_spawnY`, `npc_spawnZ`, `npc_level`, `npc_buyPercent`, `npc_sellPercent`, `npc_buildingID`) + VALUES (UID, name, contractID, guildID, spawnX, spawnY, spawnZ, npcLevel, buyPercent, sellPercent, buildingID); + + COMMIT; + + SELECT UID AS `UID`; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `npc_GETBYUID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `npc_GETBYUID`(IN `n` BIGINT UNSIGNED) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SELECT * FROM `obj_npc` WHERE `obj_npc`.`UID` = n LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `npc_GETSETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `npc_GETSETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255), IN `in_old_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_npc` SET ',in_name,' = ? WHERE `obj_npc`.`UID` = ? AND ',in_name,' = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid, @old_value = in_old_value; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid, @old_value; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_npc` WHERE `obj_npc`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `npc_SETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `npc_SETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_npc` SET ',in_name,' = ? WHERE `obj_npc`.`UID` = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_npc` WHERE `obj_npc`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `object_GETSETPARENT` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `object_GETSETPARENT`(IN `oUID` BIGINT UNSIGNED, IN `pUID` BIGINT UNSIGNED, IN `oldPUID` BIGINT UNSIGNED) +MAIN: BEGIN + + + + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + + + + + UPDATE `object` SET `object`.`parent` = pUID WHERE `object`.`UID` = oUID AND `object`.`parent` = oldPUID LIMIT 1; + SELECT `object`.`parent` INTO @result FROM `object` WHERE `object`.`UID` = oUID LIMIT 1; + + + + SELECT @result AS `UID`; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `object_reorg` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `object_reorg`(IN `v_index` INT) +BEGIN + +DECLARE v_nextIndex INT; +DECLARE v_curIndex INT; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for select UID from object WHERE UID > v_index ORDER BY UID ASC; + +DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, + @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text); + SELECT @full_error; + END; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +SET v_nextIndex = v_index +1; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_curIndex; + +if done THEN + LEAVE loopy_doopy; +END IF; + +update object set UID = v_nextIndex where UID = v_curIndex; + +SET v_nextIndex = v_nextIndex + 1; + +END LOOP loopy_doopy; + +CLOSE cur1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `object_UID_ENUM` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `object_UID_ENUM`(IN `n` bigint) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + + + + + SELECT 0; + END; + + SELECT type FROM `object` WHERE `object`.`UID` = n LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `PURGE_ORPHANS` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `PURGE_ORPHANS`() +BEGIN + +DECLARE v_uid INT; +DECLARE done INT DEFAULT FALSE; +DECLARE cur1 CURSOR for SELECT `UID` from object WHERE type = 'item' and parent IS NULL; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_uid; + +if done THEN + LEAVE loopy_doopy; +END IF; + +START TRANSACTION; +delete from object where object.UID = v_uid; +COMMIT; + +END LOOP loopy_doopy; + +CLOSE cur1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `pvpHistory` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `pvpHistory`(IN `CharUUID` varchar(20)) +BEGIN +DECLARE TOTALDEATHS INT(10); +DECLARE KILLCOUNT INT(10); +DECLARE DEATHCOUNT INT(10); +DECLARE HOURLYKILLS INT(10); +DECLARE HOURLYDEATHS INT(10); +DECLARE DAILYKILLS INT(10); +DECLARE DAILYDEATHS INT(10); + +SET TOTALDEATHS = (SELECT COUNT(*) FROM `warehouse_pvphistory`); +SET KILLCOUNT = (SELECT COUNT(*) FROM `warehouse_pvphistory` where `char_id` = `CharUUID`); +SET DEATHCOUNT = (SELECT COUNT(*) FROM `warehouse_pvphistory` where `victim_id` = `CharUUID`); + +SET DAILYKILLS = (SELECT COUNT(*) FROM `warehouse_pvphistory` where datetime > DATE_SUB(NOW(), INTERVAL 1 DAY) AND `char_id` = `CharUUID`); +SET DAILYDEATHS = (SELECT COUNT(*) FROM `warehouse_pvphistory` where datetime > DATE_SUB(NOW(), INTERVAL 1 DAY) AND `victim_id` = `CharUUID`); + +SET HOURLYKILLS = (SELECT COUNT(*) FROM `warehouse_pvphistory` where datetime > DATE_SUB(NOW(), INTERVAL 1 HOUR) AND `char_id` = `CharUUID`); +SET HOURLYDEATHS = (SELECT COUNT(*) FROM `warehouse_pvphistory` where datetime > DATE_SUB(NOW(), INTERVAL 1 HOUR) AND `victim_id` = `CharUUID`); + +SELECT TOTALDEATHS, KILLCOUNT, DEATHCOUNT, HOURLYKILLS, HOURLYDEATHS, DAILYKILLS, DAILYDEATHS; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `realm_GETBYUID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `realm_GETBYUID`(IN `n` BIGINT UNSIGNED) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SELECT * FROM `obj_realm` WHERE `obj_realm`.`UID` = n LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `realm_GETSETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `realm_GETSETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255), IN `in_old_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_realm` SET ',in_name,' = ? WHERE `obj_realm`.`UID` = ? AND ',in_name,' = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid, @old_value = in_old_value; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid, @old_value; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_realm` WHERE `obj_realm`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `realm_SETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `realm_SETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255)) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_realm` SET ',in_name,' = ? WHERE `obj_realm`.`UID` = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_realm` WHERE `obj_realm`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `realm_UPDATE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `realm_UPDATE`(IN REALMUUID INT, IN cityUUID INT, IN charter int, IN rulingDate DATETIME) +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + UPDATE `obj_realm` SET `rulingCityUID` = cityUUID, `charterType` = charter, `ruledSince` = rulingDate + WHERE `realmID` = REALMUUID; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `shrine_CREATE` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `shrine_CREATE`( + IN `zoneUID` BIGINT UNSIGNED, + IN `oUID` BIGINT UNSIGNED, + IN `n` VARCHAR (255), + IN `loadNum` INT, + IN `locX` FLOAT, + IN `locY` FLOAT, + IN `locZ` FLOAT, + IN `strX` FLOAT, + IN `cHP` INT UNSIGNED, + IN `invuln` VARCHAR (64), + IN `strongbox` INT, + IN `rank` TINYINT, + IN `upgradedate` DATETIME, + IN `baseID` INT, + IN `lac` FLOAT, + IN `rotY` FLOAT, + IN `shrineType` VARCHAR (64) +) +MAIN : +BEGIN + DECLARE + UID BIGINT UNSIGNED; + +DECLARE + shrineUID BIGINT UNSIGNED; + +DECLARE + EXIT HANDLER FOR SQLEXCEPTION, + SQLWARNING, + NOT FOUND +BEGIN + ROLLBACK; + +SELECT + - 1 AS `errorno`, + "SQL Error: A rollback has occured." AS `errormsg`; + + +END; + + +IF ISNULL(zoneUID) THEN + SELECT + - 2 AS `errorno`, + "Parent (zone) UID CANNOT be null" AS `errormsg`; + +LEAVE MAIN; + + +ELSEIF NOT EXISTS ( + SELECT + NULL + FROM + `obj_zone` + WHERE + `obj_zone`.`UID` = zoneUID +) THEN + SELECT + - 3 AS `errorno`, + "Parent (zone) UID must exist" AS `errormsg`; + +LEAVE MAIN; + + +END +IF; + +START TRANSACTION; + +INSERT HIGH_PRIORITY INTO object +VALUES + (NULL, 'building', zoneUID); + + +SET UID = LAST_INSERT_ID(); + +INSERT HIGH_PRIORITY INTO obj_building ( + `UID`, + `ownerUUID`, + `name`, + `meshUUID`, + `locationX`, + `locationY`, + `locationZ`, + `scale`, + `doorState`, + `currentHP`, + `protectionState`, + `currentGold`, + `rank`, + `upgradeDate`, + `blueprintUUID`, + `w`, + `rotY` +) +VALUES + ( + UID, + oUID, + n, + loadNum, + locX, + locY, + locZ, + strX, + 0, + cHP, + invuln, + strongbox, + `rank`, + upgradedate, + baseID, + lac, + rotY + ); + +INSERT HIGH_PRIORITY INTO object +VALUES + (NULL, 'shrine', UID); + + +SET shrineUID = LAST_INSERT_ID(); + +INSERT HIGH_PRIORITY INTO obj_shrine ( + `UID`, + `shrine_type`, + `shrine_favors` +) +VALUES + (shrineUID, shrineType, 0); + + +SELECT + `obj_building`.*, `object`.`parent`, + `object`.`type` +FROM + `object` +LEFT JOIN `obj_building` ON `object`.`UID` = `obj_building`.`UID` +WHERE + `object`.`UID` = UID; + + +SELECT + `obj_shrine`.*, `object`.`parent`, + `object`.`type` +FROM + `object` +LEFT JOIN `obj_shrine` ON `object`.`UID` = `obj_shrine`.`UID` +WHERE + `object`.`UID` = shrineUID; + +COMMIT; + + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `singleAccountCreate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `singleAccountCreate`(IN `uname` VARCHAR(60), IN `passwd` CHAR(60)) + MODIFIES SQL DATA +MAIN: BEGIN + + DECLARE UID BIGINT UNSIGNED; + DECLARE SALTSTRING VARCHAR(8); + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + START TRANSACTION; + + INSERT HIGH_PRIORITY INTO `object` VALUES (NULL, 'account', NULL); + SET UID = LAST_INSERT_ID(); + + SET SALTSTRING = (SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 8) AS SALT); + + INSERT HIGH_PRIORITY INTO `obj_account` (`UID`, `acct_uname`, `acct_passwd`, `acct_salt`, `discordAccount`, `registrationDate`) + VALUES (UID, uname,MD5(CONCAT(MD5(passwd), SALTSTRING)), SALTSTRING, uuid(), CURRENT_TIMESTAMP()); + + INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'container', UID); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO obj_container (`UID`, `container_type`) + VALUES (UID, 'vault'); + COMMIT; + + + SELECT 1; + + END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `transfer_accounts` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `transfer_accounts`() +MAIN: BEGIN + + DECLARE ID INT UNSIGNED; + DECLARE done INT DEFAULT 0; + + DECLARE UIDC BIGINT UNSIGNED; + DECLARE UID BIGINT UNSIGNED; + DECLARE in_uname VARCHAR(60); + DECLARE in_passwd VARCHAR(60); + DECLARE in_email VARCHAR(200); + DECLARE in_accessLevel SMALLINT UNSIGNED; + DECLARE in_lastCharUsedID INT UNSIGNED; + DECLARE in_suspended TINYINT(1); + DECLARE in_dateSuspended DATE; + DECLARE in_salt CHAR(30); + DECLARE in_vbulletinUserID INT UNSIGNED; + DECLARE in_syncPass TINYINT(1); + DECLARE in_messageFilter TINYINT(1); + DECLARE in_currentKey TINYBLOB; + DECLARE in_currentKeyTime TIMESTAMP; + DECLARE in_flags SMALLINT UNSIGNED; + DECLARE ACCTUID BIGINT(10); + + DECLARE cur1 CURSOR FOR SELECT UID, acct_uname, acct_passwd, acct_email, acct_accessLevel, acct_salt, acct_vbulletinUserID, acct_suspend, acct_suspendDate, acct_flags, acct_syncPass, acct_lastKey, acct_lastKeyTime, acct_lastCharUID FROM `accounts2`; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + + OPEN cur1; + + START TRANSACTION; + + read_loop: LOOP + + FETCH cur1 INTO ID, in_uname, in_passwd, in_email, in_accessLevel, in_salt, in_vbulletinUserID, in_suspended, in_dateSuspended, in_flags, in_syncPass, in_currentKey, in_currentKeyTime, in_lastCharUsedID; + IF done THEN + LEAVE read_loop; + END IF; + + IF NOT EXISTS(SELECT NULL FROM `obj_account` WHERE `acct_uname`= in_uname) THEN + INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'account', NULL); + SET UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO `obj_account` (`UID`, `acct_uname`, `acct_passwd`, `acct_email`, `acct_accessLevel`, `acct_lastCharUID`, `acct_suspend`, `acct_suspendDate`, `acct_salt`, `acct_vbulletinUserID`, `acct_syncPass`, `acct_flags`, `acct_lastKey`, `acct_lastKeyTime`) VALUES (UID, in_uname, in_passwd, in_email, in_accessLevel, NULL, in_suspended, in_dateSuspended, in_salt, in_vbulletinUserID, in_syncPass, in_flags, in_CurrentKey, in_currentKeyTime); + END IF; + END LOOP; + + COMMIT; + + CLOSE cur1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `wipe_server` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `wipe_server`() +BEGIN + + +TRUNCATE TABLE dyn_admin_log; +TRUNCATE TABLE obj_account_wipe; + + + + + + + +CREATE TEMPORARY TABLE obj_cleanup AS Select UID from object Where UID >= (select UID from object where type = 'account' LIMIT 1); +delete o from object o join obj_cleanup oc on o.uid = oc.uid where o.uid = oc.uid; + + +update obj_mine set mine_ownerUID = 0, mine_resource = 'GOLD'; +update obj_building set ownerUUID = 0 where UID in (select mine_buildingUID from obj_mine); +update obj_realm set rulingCityUID = 0, ruledSince = NULL; + + +delete from dyn_banes; +delete from dyn_building_condemned; +delete from dyn_building_friends; +delete from dyn_building_patrol_points; +delete from dyn_character_friends; +delete from dyn_character_guildhistory; +delete from dyn_character_heraldy; +delete from dyn_character_ignore; +delete from dyn_character_killmap; +delete from dyn_character_murdermap; +delete from dyn_character_power; +delete from dyn_character_rune; +delete from dyn_character_skill; +delete from dyn_guards; +delete from dyn_guild_allianceenemylist; +delete from dyn_guild_banishlist; +delete from dyn_guild_characterkoslist; +delete from dyn_guild_guildkoslist; +delete from dyn_item_enchantment; +delete from dyn_login_history; +delete from dyn_npc_profits; +delete from dyn_session; +delete from dyn_workorders; +delete from dyn_warehouse; +delete from dyn_warehouse_transactions; +delete from dyn_trash; +delete from dyn_petition; + + +delete from warehouse_banehistory; +delete from warehouse_characterhistory; +delete from warehouse_cityhistory; +delete from warehouse_guildhistory; +delete from warehouse_minehistory; +delete from warehouse_pvphistory; +delete from warehouse_realmhistory; + + +SET foreign_key_checks = 0; +ALTER TABLE object MODIFY COLUMN UID BIGINT UNSIGNED; +ALTER TABLE object MODIFY COLUMN UID BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE dyn_character_guildhistory MODIFY COLUMN ID BIGINT UNSIGNED; +ALTER TABLE dyn_character_guildhistory MODIFY COLUMN ID BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE dyn_character_ignore MODIFY COLUMN UID BIGINT UNSIGNED; +ALTER TABLE dyn_character_ignore MODIFY COLUMN UID BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE dyn_character_killmap MODIFY COLUMN UID BIGINT UNSIGNED; +ALTER TABLE dyn_character_killmap MODIFY COLUMN UID BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE dyn_character_power MODIFY COLUMN UID BIGINT UNSIGNED; +ALTER TABLE dyn_character_power MODIFY COLUMN UID BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE dyn_character_rune MODIFY COLUMN UID BIGINT UNSIGNED; +ALTER TABLE dyn_character_rune MODIFY COLUMN UID BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE dyn_character_skill MODIFY COLUMN UID BIGINT UNSIGNED; +ALTER TABLE dyn_character_skill MODIFY COLUMN UID BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE dyn_guild_banishlist MODIFY COLUMN ID BIGINT UNSIGNED; +ALTER TABLE dyn_guild_banishlist MODIFY COLUMN ID BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE dyn_guild_characterkoslist MODIFY COLUMN ID BIGINT UNSIGNED; +ALTER TABLE dyn_guild_characterkoslist MODIFY COLUMN ID BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE dyn_guild_guildkoslist MODIFY COLUMN ID BIGINT UNSIGNED; +ALTER TABLE dyn_guild_guildkoslist MODIFY COLUMN ID BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE dyn_item_enchantment MODIFY COLUMN UID BIGINT UNSIGNED; +ALTER TABLE dyn_item_enchantment MODIFY COLUMN UID BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE dyn_warehouse_transactions MODIFY COLUMN ID BIGINT UNSIGNED; +ALTER TABLE dyn_warehouse_transactions MODIFY COLUMN ID BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE warehouse_banehistory MODIFY COLUMN event_number BIGINT UNSIGNED; +ALTER TABLE warehouse_banehistory MODIFY COLUMN event_number BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE warehouse_characterhistory MODIFY COLUMN event_number BIGINT UNSIGNED; +ALTER TABLE warehouse_characterhistory MODIFY COLUMN event_number BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE warehouse_cityhistory MODIFY COLUMN event_number BIGINT UNSIGNED; +ALTER TABLE warehouse_cityhistory MODIFY COLUMN event_number BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE warehouse_guildhistory MODIFY COLUMN event_number BIGINT UNSIGNED; +ALTER TABLE warehouse_guildhistory MODIFY COLUMN event_number BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE warehouse_minehistory MODIFY COLUMN event_number BIGINT UNSIGNED; +ALTER TABLE warehouse_minehistory MODIFY COLUMN event_number BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE warehouse_pvphistory MODIFY COLUMN event_number BIGINT UNSIGNED; +ALTER TABLE warehouse_pvphistory MODIFY COLUMN event_number BIGINT UNSIGNED AUTO_INCREMENT; +ALTER TABLE warehouse_realmhistory MODIFY COLUMN event_number BIGINT UNSIGNED; +ALTER TABLE warehouse_realmhistory MODIFY COLUMN event_number BIGINT UNSIGNED AUTO_INCREMENT; +SET foreign_key_checks = 1; + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `zone_GETBYUID` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `zone_GETBYUID`(IN `n` BIGINT UNSIGNED) + MODIFIES SQL DATA +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SELECT * FROM `obj_zone` WHERE `obj_zone`.`UID` = n LIMIT 1; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `zone_GETSETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `zone_GETSETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255), IN `in_old_value` varchar(255)) + MODIFIES SQL DATA +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_zone` SET ',in_name,' = ? WHERE `obj_zone`.`UID` = ? AND ',in_name,' = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid, @old_value = in_old_value; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid, @old_value; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_zone` WHERE `obj_zone`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `zone_SETPROP` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `zone_SETPROP`(IN `uid` bigint unsigned, IN `in_name` varchar(255), IN `in_new_value` varchar(255)) + MODIFIES SQL DATA +MAIN: BEGIN + + DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND + BEGIN + ROLLBACK; + SELECT -1 AS `errorno`, "SQL Error: A rollback has occured." AS `errormsg`; + END; + + SET @dyn_sql = CONCAT('UPDATE `obj_zone` SET ',in_name,' = ? WHERE `obj_zone`.`UID` = ? LIMIT 1;'), @new_value = in_new_value, @uid = uid; + PREPARE stmt1 FROM @dyn_sql; + EXECUTE stmt1 USING @new_value, @uid; + + SET @dyn_sql = CONCAT('SELECT `',in_name,'` INTO @result FROM `obj_zone` WHERE `obj_zone`.`UID` = ? LIMIT 1;'); + PREPARE stmt2 FROM @dyn_sql; + EXECUTE stmt2 USING @uid; + + DEALLOCATE PREPARE stmt1; + DEALLOCATE PREPARE stmt2; + + SELECT @result AS result; + +END MAIN ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_build_bootyset` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_build_bootyset`(INOUT `v_zoneID` INT , IN `v_parent` INT , IN `v_index` INT) +BEGIN + + + + + + +DECLARE v_templateID INT DEFAULT 0; +DECLARE v_dropChance FLOAT DEFAULT 0; +DECLARE v_bootySetID INT DEFAULT 0; +DECLARE recordsExist INT DEFAULT FALSE; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for SELECT `booty_item` , `booty_percent` from _mobile_booties +WHERE zoneID = v_zoneID AND parent = v_parent AND mob_index = v_index; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +SET v_bootySetID = (select bootySet from static_loot_bootySet +ORDER BY bootySet DESC +LIMIT 1 OFFSET 0); + +if v_bootySetID IS NULL THEN + SET v_bootySetID = 0; +END IF; + +SET v_bootySetID = v_bootySetID + 1; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_templateID, v_dropChance; + +if done THEN + LEAVE loopy_doopy; +END IF; + +INSERT HIGH_PRIORITY INTO `static_loot_bootySet` VALUES (v_bootySetID, "ITEM", 0, 0, v_templateID, 0, v_dropChance); +SET recordsExist = TRUE; + +END LOOP loopy_doopy; + +CLOSE cur1; + + +IF recordsExist = TRUE THEN + SET v_zoneID = v_bootySetID; +ELSE + SET v_zoneID = 0; +END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_build_contract_equip` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_build_contract_equip`(INOUT `v_contract` INT) +BEGIN + + + + + + +DECLARE v_bootySetID INT DEFAULT 0; +DECLARE v_templateID INT DEFAULT 0; +DECLARE v_dropChance FLOAT DEFAULT 0; + +DECLARE recordsExist INT DEFAULT FALSE; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for SELECT `templateID`, `dropChance` +from _contract_equipment +WHERE `contractID` = `v_contract`; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +SET v_bootySetID = (select bootySet from static_loot_bootySet +ORDER BY bootySet DESC +LIMIT 1 OFFSET 0); + +if v_bootySetID IS NULL THEN + SET v_bootySetID = 0; +END IF; + +SET v_bootySetID = v_bootySetID + 2; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_templateID, v_dropChance; + +if done THEN + LEAVE loopy_doopy; +END IF; + +INSERT HIGH_PRIORITY INTO `static_loot_bootySet` +VALUES (v_bootySetID, "EQUIP", 0, 0, v_templateID, 0, v_dropChance); + +UPDATE static_npc_contract SET equipsetID = v_bootySetID +where contractID = v_contract; + +SET recordsExist = TRUE; + +END LOOP loopy_doopy; + +CLOSE cur1; + +IF recordsExist = TRUE THEN + SET `v_contract` = v_bootySetID; +ELSE + SET `v_contract` = 0; +END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_build_contract_equip_run` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_build_contract_equip_run`() +BEGIN + + + + + + +DECLARE v_uid INT; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for SELECT `contractID` from static_npc_contract; + +DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, + @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text); + SELECT @full_error; + END; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_uid; + +if done THEN + LEAVE loopy_doopy; +END IF; + +CALL _build_contract_equip(v_uid); + +END LOOP loopy_doopy; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_build_equipset` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_build_equipset`(INOUT `v_zoneID` INT , IN `v_parent` INT , IN `v_index` INT) +BEGIN + + + + + + +DECLARE v_templateID INT DEFAULT 0; +DECLARE v_dropChance FLOAT DEFAULT 0; +DECLARE v_equipSetID INT DEFAULT 0; +DECLARE recordsExist INT DEFAULT FALSE; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for SELECT `templateID`, `item_Float` from _mobile_equipment +WHERE zoneID = v_zoneID AND parent = v_parent AND mob_index = v_index; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +SET v_equipSetID = (select bootySet from static_loot_bootySet +ORDER BY bootySet DESC +LIMIT 1 OFFSET 0); + +if v_equipSetID IS NULL THEN + SET v_equipSetID = 0; +END IF; + +SET v_equipSetID = v_equipSetID + 2; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_templateID, v_dropChance; + +if done THEN + LEAVE loopy_doopy; +END IF; + +INSERT HIGH_PRIORITY INTO `static_loot_bootySet` +VALUES (v_equipSetID, "EQUIP", 0, 0, v_templateID, 0, v_dropChance); + +SET recordsExist = TRUE; + +END LOOP loopy_doopy; + +CLOSE cur1; + + +IF recordsExist = TRUE THEN + SET v_zoneID = v_equipSetID; +ELSE + SET v_zoneID = 0; +END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_build_mines` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_build_mines`() +BEGIN + + + + + + +DECLARE v_zone_UID INT; +DECLARE v_parent INT; +DECLARE v_object_UID INT; +DECLARE v_zone_name VARCHAR(60); +DECLARE mineUUID INT DEFAULT 0; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for SELECT UID, obj_zone.`zone_name` from obj_zone where obj_zone.`zone_name` in +("Ore Mine", "Magic Mine", "Lumber Mine", "Lumber Camp", "Gold Mine"); + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +DELETE from object where type = "mine"; +DELETE from obj_mine; + +SET mineUUID = (SELECT UID from object + WHERE object.UID < 100 + AND object.type = "npc" + ORDER by object.UID DESC + LIMIT 1); + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_zone_UID, v_zone_name; + +if done THEN + LEAVE loopy_doopy; +END IF; + + INSERT HIGH_PRIORITY INTO `object` VALUES (NULL, 'building', v_zone_UID); + SET v_object_UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO obj_building (`UID`, `ownerUUID`, `name`, `meshUUID`, `locationX`, `locationY`, `locationZ`, `currentHP`, + `protectionState`, `currentGold`, `rank`, `w`, `rotY`, + `level`, `floor`, `parentBuildingID`, `blueprintUUID`) + VALUES (v_object_UID, 0, "Mine Tower", 1500100, 32, 0, 0, 1, + "NPC", 2000, 1, 1, 0, -1, -1, 0, 1500100); + + + + SET mineUUID = mineUUID + 1; + SET @oreType = + (SELECT + CASE + WHEN v_zone_name = "Ore Mine" THEN "ORE" + WHEN v_zone_name = "Magic Mine" THEN "MAGIC" + WHEN v_zone_name = "Gold Mine" THEN "GOLD" + WHEN v_zone_name = "Lumber Mine" THEN "LUMBER" + WHEN v_zone_name = "Lumber Camp" THEN "LUMBER" + END AS oreString); + + INSERT HIGH_PRIORITY INTO `object` VALUES (mineUUID, 'mine', v_zone_UID); + INSERT HIGH_PRIORITY INTO `obj_mine` VALUES (mineUUID, @oreType, "GOLD", 0, v_object_UID, 0); + +END LOOP loopy_doopy; + +CLOSE cur1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_build_runegates` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_build_runegates`() +BEGIN + + + + + + +DECLARE v_zone_name VARCHAR(60); +DECLARE gateUUID INT; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for Select UID from obj_building where meshUUID = 24500; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +DELETE from static_runegate_portals; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO gateUUID; + +if done THEN + LEAVE loopy_doopy; +END IF; + +SET @ZONE_UID = (SELECT parent from object where `UID` = gateUUID); +SET v_zone_name = (SELECT `zone_name` from obj_zone where `UID` = @ZONE_UID); + + INSERT HIGH_PRIORITY INTO `static_runegate_portals` VALUES (v_zone_name, gateUUID, "EARTH", gateUUID); + INSERT HIGH_PRIORITY INTO `static_runegate_portals` VALUES (v_zone_name, gateUUID, "AIR", gateUUID); + INSERT HIGH_PRIORITY INTO `static_runegate_portals` VALUES (v_zone_name, gateUUID, "FIRE", gateUUID); + INSERT HIGH_PRIORITY INTO `static_runegate_portals` VALUES (v_zone_name, gateUUID, "WATER", gateUUID); + INSERT HIGH_PRIORITY INTO `static_runegate_portals` VALUES (v_zone_name, gateUUID, "SPIRIT", gateUUID); + INSERT HIGH_PRIORITY INTO `static_runegate_portals` VALUES (v_zone_name, gateUUID, "CHAOS", gateUUID); + INSERT HIGH_PRIORITY INTO `static_runegate_portals` VALUES (v_zone_name, gateUUID, "OBLIV", gateUUID); + INSERT HIGH_PRIORITY INTO `static_runegate_portals` VALUES (v_zone_name, gateUUID, "MERCHANT", gateUUID); + +END LOOP loopy_doopy; + +CLOSE cur1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_build_runeset` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_build_runeset`(INOUT `v_zoneID` INT , IN `v_parent` INT , IN `v_index` INT) +BEGIN + + + + + + +DECLARE v_runeBase INT DEFAULT 0; +DECLARE v_runeSetID INT DEFAULT 0; +DECLARE recordsExist INT DEFAULT FALSE; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for SELECT `rune_id` from _mobile_runestones +WHERE zoneID = v_zoneID AND parent = v_parent AND mob_index = v_index; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + +SET v_runeSetID = (select static_npc_runeSet.runeSet from static_npc_runeSet +ORDER BY runeSet DESC +LIMIT 1 OFFSET 0); + +if v_runeSetID IS NULL THEN + SET v_runeSetID = 0; +END IF; + +SET v_runeSetID = v_runeSetID + 2; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_runeBase; + +if done THEN + LEAVE loopy_doopy; +END IF; + +INSERT HIGH_PRIORITY INTO `static_npc_runeSet` VALUES (v_runeSetID, v_runeBase); +SET recordsExist = TRUE; + +END LOOP loopy_doopy; + +CLOSE cur1; + + + +IF recordsExist = TRUE THEN + SET v_zoneID = v_runeSetID; +ELSE + SET v_zoneID = 0; +END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_build_rune_bootyset` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_build_rune_bootyset`(INOUT `v_mobbase` INT) +BEGIN + + + + + + +DECLARE v_runeID INT DEFAULT 0; +DECLARE v_bootyType VARCHAR(60); +DECLARE v_bootySetID INT DEFAULT 0; +DECLARE v_lowGold INT DEFAULT 0; +DECLARE v_highGold INT DEFAULT 0; +DECLARE v_lootTable INT DEFAULT 0; +DECLARE v_templateID INT DEFAULT 0; +DECLARE v_dropChance FLOAT DEFAULT 0; +DECLARE recordsExist INT DEFAULT FALSE; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for SELECT `runeID` , `bootyType`, `lowGold`, `highGold`, +`templateID`, `lootTable`, `dropChance` from _runebase_booty +WHERE runeID = `v_mobbase`; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +SET v_bootySetID = (select bootySet from static_loot_bootySet +ORDER BY bootySet DESC +LIMIT 1 OFFSET 0); + +if v_bootySetID IS NULL THEN + SET v_bootySetID = 0; +END IF; + +SET v_bootySetID = v_bootySetID + 2; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_runeID, v_bootyType, v_lowGold, v_highGold, v_templateID, v_lootTable, v_dropChance; + +if done THEN + LEAVE loopy_doopy; +END IF; + +INSERT HIGH_PRIORITY INTO `static_loot_bootySet` +VALUES (v_bootySetID, v_bootyType, v_lowGold, v_highGold, v_templateID, v_lootTable, v_dropChance); + +UPDATE static_npc_mobbase SET bootySet = v_bootySetID where ID = v_mobbase; + +SET recordsExist = TRUE; + +END LOOP loopy_doopy; + +CLOSE cur1; + +IF recordsExist = TRUE THEN + SET `v_mobbase` = v_bootySetID; +ELSE + SET `v_mobbase` = 0; +END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_build_rune_booty_run` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_build_rune_booty_run`() +BEGIN + + + + + + +DECLARE v_uid INT; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for SELECT `ID` from static_npc_mobbase; + +DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, + @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text); + SELECT @full_error; + END; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_uid; + +if done THEN + LEAVE loopy_doopy; +END IF; + +CALL _build_rune_bootyset(v_uid); + +END LOOP loopy_doopy; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_city_audit_create` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_city_audit_create`() +BEGIN + + + + + + +DROP TABLE IF EXISTS _city_audit; + +CREATE table _city_audit AS (select obj_zone.`zone_name`, zoneID, 0 as guildUID, +basic_zone_template_id, city_prop_gm_guild, city_prop_gm_nation, +city_prop_asset_rank from _prop_data +INNER JOIN obj_zone on obj_zone.template = _prop_data.zoneID +where zoneID in +(select template from obj_zone +where obj_zone.peace_zone = 1) +AND city_prop_gm_nation != 0 +AND basic_zone_template_id in +(24000, 24100, 24500, 407100, 407700, 407900, 410000, 410100, 410200, 410300, 1611900) +AND parent = 0 +AND prop_index = 1); + + +ALTER TABLE `_city_audit` + ADD `uid` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_city_audit_run` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_city_audit_run`() +BEGIN + + + + + + +DECLARE v_zoneID INT; +DECLARE v_guildUID INT; +DECLARE v_cacheGuild INT; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for SELECT zoneID, guildUID, city_prop_gm_guild +from _city_audit; + +DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, + @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text); + SELECT @full_error; + END; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_zoneID, v_guildUID, v_cacheGuild; + +if done THEN + LEAVE loopy_doopy; +END IF; + +UPDATE _prop_data SET city_prop_gm_guild = v_guildUID +WHERE city_prop_gm_guild != 0 +AND _prop_data.zoneID = v_zoneID; + +END LOOP loopy_doopy; + +CLOSE cur1; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_purge_booty_dupes` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_purge_booty_dupes`() +BEGIN + + + + + + +DECLARE v_bootySet INT; +DECLARE v_dupeString VARCHAR(512); + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for Select bootySet, dupeString from _bootyTemp; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +SET @beforeCount = (select COUNT(DISTINCT bootySet) from static_npc_bootySet); + +DROP TABLE IF EXISTS _bootyPurge; + +CREATE TEMPORARY TABLE _bootyPurge AS ( +Select bootySet, CONCAT(lowGold, highGold, lootTable, dropChance, +GROUP_CONCAT(itemBase order by itemBase ASC SEPARATOR ',')) `dupeString` +From static_npc_bootySet +Group by bootySet); + +DROP TABLE IF EXISTS _bootyTemp; +CREATE TEMPORARY TABLE _bootyTemp AS +(Select bootySet, dupeString from _bootyPurge +GROUP BY dupeString +HAVING COUNT(*) > 1 +ORDER BY bootySet ASC); + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_bootySet, v_dupeString; + +if done THEN + LEAVE loopy_doopy; +END IF; + +update obj_npc set equipmentSet = v_bootySet +where equipmentSet in +(select bootySet from _bootyPurge +WHERE dupeString = v_dupeString +AND bootySet != v_bootySet); + +update obj_mob set bootySet = v_bootySet +where bootySet in +(select bootySet from _bootyPurge +WHERE dupeString = v_dupeString +AND bootySet != v_bootySet); + +update obj_mob set equipmentSet = v_bootySet +where equipmentSet in +(select bootySet from _bootyPurge +WHERE dupeString = v_dupeString +AND bootySet != v_bootySet); + +update static_npc_contract set equipsetID = v_bootySet +where equipsetID in +(select bootySet from _bootyPurge +WHERE dupeString = v_dupeString +AND bootySet != v_bootySet); + +update static_npc_mobbase set bootySet = v_bootySet +where bootySet in +(select bootySet from _bootyPurge +WHERE dupeString = v_dupeString +AND bootySet != v_bootySet); + +delete from static_npc_bootySet +where bootySet in +(select bootySet from _bootyPurge +WHERE dupeString = v_dupeString +AND bootySet != v_bootySet); + +END LOOP loopy_doopy; + +CLOSE cur1; + +SET @afterCount = (select COUNT(DISTINCT bootySet) from static_npc_bootySet); + +SET @outStr = concat("Before: ", @beforeCount, " After: ", @afterCount); +SELECT @outStr as ''; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_purge_runeset_dupes` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_purge_runeset_dupes`() +BEGIN + + + + + + +DECLARE v_runeSet INT; +DECLARE v_dupeString VARCHAR(512); + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for Select runeSet, dupeString from _runeTemp; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +SET @beforeCount = (select COUNT(DISTINCT runeSet) from static_npc_runeSet); + +DROP TABLE IF EXISTS _runePurge; +CREATE TEMPORARY TABLE _runePurge AS +Select runeSet, GROUP_CONCAT(runeBase order by runeBase ASC SEPARATOR ',') `dupeString` +From static_npc_runeSet +Group by runeSet; + +DROP TABLE IF EXISTS _runeTemp; +CREATE TEMPORARY TABLE _runeTemp AS +Select runeSet, dupeString from _runePurge +GROUP BY dupeString +HAVING COUNT(*) > 1 +ORDER BY runeSet ASC; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_runeSet, v_dupeString; + +if done THEN + LEAVE loopy_doopy; +END IF; + +update obj_mob set runeSet = v_runeSet +where runeSet in +(select runeSet from _runePurge +WHERE dupeString = v_dupeString +AND runeSet != v_runeSet); + +delete from static_npc_runeSet +where runeSet in +(select runeSet from _runePurge +WHERE dupeString = v_dupeString +AND runeSet != v_runeSet); + +END LOOP loopy_doopy; + +CLOSE cur1; + +SET @afterCount = (select COUNT(DISTINCT runeSet) from static_npc_runeSet); + +SET @outStr = concat("Before: ", @beforeCount, " After: ", @afterCount); +SELECT @outStr as ''; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_renumber_bootysets` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_renumber_bootysets`() +BEGIN + + + + + + +DECLARE v_oldBootySet INT; +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for select bootySet from _bootyTemp ORDER BY bootySet ASC; + +DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, + @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text); + SELECT @full_error; + END; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +DROP TABLE IF EXISTS _bootyTemp; +CREATE TEMPORARY TABLE _bootyTemp AS +(select DISTINCT bootySet from static_npc_bootySet + ORDER BY bootySet ASC); + +OPEN cur1; + +SET @newBootySet = 1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_oldBootySet; + +if done THEN + LEAVE loopy_doopy; +END IF; + +update obj_npc set equipmentSet = @newBootySet where equipmentSet = v_oldBootySet; +update obj_mob set bootySet = @newBootySet where bootySet = v_oldBootySet; +update obj_mob set equipmentSet = @newBootySet where equipmentSet = v_oldBootySet; + +update static_npc_contract set equipsetID = @newBootySet where equipsetID = v_oldBootySet; +update static_npc_mobbase set bootySet = @newBootySet where bootySet = v_oldBootySet; + +update static_npc_bootySet set bootySet = @newBootySet where bootySet = v_oldBootySet; + +SET @outStr = concat("Bootyset: ", v_oldBootySet, " : ", @newBootySet); +SELECT @outStr as ''; + +SET @newBootySet = @newBootySet + 1; + +END LOOP loopy_doopy; + +CLOSE cur1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_renumber_runesets` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_renumber_runesets`() +BEGIN + + + + + + +DECLARE v_oldRuneSet INT; +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for select runeSet from _runeTemp ORDER BY runeSet ASC; + +DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, + @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text); + SELECT @full_error; + END; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +DROP TABLE IF EXISTS _runeTemp; +CREATE TEMPORARY TABLE _runeTemp AS +(select DISTINCT runeSet from static_npc_runeSet + ORDER BY runeSet ASC); + +OPEN cur1; + +SET @newRuneSet = 1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_oldRuneSet; + +if done THEN + LEAVE loopy_doopy; +END IF; + +update obj_mob set runeSet = @newRuneSet where runeSet = v_oldRuneSet; +update obj_npc set runeSet = @newRuneSet where runeSet = v_oldRuneSet; + +update static_npc_runeSet set runeSet = @newRuneSet where runeSet = v_oldRuneSet; + +SET @outStr = concat("Runeset: ", v_oldRuneSet, " : ", @newRuneSet); +SELECT @outStr as ''; + +SET @newRuneSet = @newRuneSet + 1; + +END LOOP loopy_doopy; + +CLOSE cur1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_zone_import_run` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_zone_import_run`() +BEGIN + + + + + + +DECLARE v_zoneUID INT; +DECLARE v_parentUID INT; +DECLARE v_zoneName VARCHAR(60); +DECLARE v_locationX INT; +DECLARE v_locationY INT; +DECLARE v_locationZ INT; +DECLARE v_template INT; +DECLARE v_isSafeZone INT; +DECLARE v_icon1 VARCHAR(60); +DECLARE v_icon2 VARCHAR(60); +DECLARE v_icon3 VARCHAR(60); +DECLARE object_UID INT; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for SELECT `zone_uuid`, `parent`, `zone_name`, `locationx`,`locationy`, + `locationz`, `template`, + `is_safe_zone`, `icon1`, `icon2`, `icon3` + from _zone_tree; + +DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, + @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text); + SELECT @full_error; + END; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + + +UPDATE _zone_tree SET parent = 1 WHERE template = 1; +ALTER TABLE object AUTO_INCREMENT = 100; + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_zoneUID, v_parentUID, v_zoneName, v_locationX, v_locationY, v_locationZ, v_template, + v_isSafeZone, v_icon1, v_icon2, v_icon3; + +if done THEN + LEAVE loopy_doopy; +END IF; + +INSERT HIGH_PRIORITY INTO object VALUES (NULL, 'zone', v_parentUID); +SET object_UID = LAST_INSERT_ID(); + +INSERT HIGH_PRIORITY INTO `obj_zone` (`UID` ,`xOffset` ,`yOffset` ,`zOffset` ,`template` ,`zone_name` ,`peace_zone` ,`icon1` ,`icon2` ,`icon3`) + VALUES (object_UID, v_locationX, v_locationY, v_locationZ, v_template, TRIM(v_zoneName), v_isSafeZone, TRIM(v_icon1), TRIM(v_icon2), TRIM(v_icon3)); + +END LOOP loopy_doopy; + +CLOSE cur1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_zone_npc_import` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_zone_npc_import`(IN `zoneUID` int) +BEGIN + + + + + + +DECLARE zoneLoadNum INT DEFAULT 0; +DECLARE buildingUID INT DEFAULT 0; +DECLARE ownerUID INT DEFAULT 0; +DECLARE guildUID INT DEFAULT 0; +DECLARE done INT DEFAULT FALSE; +DECLARE last_UID INT default 0; +DECLARE prop_offset INT default 0; +DECLARE equipSetID INT default 0; +DECLARE runeSetID INT default 0; +DECLARE bootySetID INT default 0; +DECLARE radians FLOAT default 0.0; +DECLARE v_parent INT DEFAULT 0; +DECLARE v_mob_index INT DEFAULT 0; +DECLARE v_mobile_type VARCHAR(30); +DECLARE v_mobBase INT DEFAULT 0; +DECLARE v_raceID INT DEFAULT 0; +DECLARE v_mobile_level INT DEFAULT 0; +DECLARE v_name_override VARCHAR(255); +DECLARE v_spawn_x FLOAT DEFAULT 0; +DECLARE v_spawn_y FLOAT DEFAULT 0; +DECLARE v_spawn_z FLOAT DEFAULT 0; +DECLARE v_zone_level INT DEFAULT 0; +DECLARE v_zone_room INT DEFAULT 0; +DECLARE v_spawn_radius FLOAT DEFAULT 0; +DECLARE v_spawn_time FLOAT DEFAULT 0; +DECLARE v_sparse_data VARCHAR(60); +DECLARE v_notEnemy BIGINT DEFAULT 0; +DECLARE v_enemy BIGINT DEFAULT 0; +DECLARE v_number_in_group INT DEFAULT 0; +DECLARE v_fsm VARCHAR(60); + +DECLARE cur1 CURSOR for SELECT parent, mob_index, mobile_type, +mobile_level, mobile_number_in_group, basic_zone_name_override, basic_zone_spawn_radius, basic_zone_time_to_respawn, +basic_zone_spawn_location_x, basic_zone_spawn_location_y, basic_zone_spawn_location_z, +basic_zone_y_rot, basic_zone_level_number, basic_zone_room_number, basic_zone_sparse_data, notEnemy, enemy, +mobile_root_fs_mid from _mobile_data +where zoneID = zoneLoadNum; + +DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, + @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SET @full_error = CONCAT("NPC ERROR ", @errno, " (", @sqlstate, "): ", @text); + SELECT @full_error; + END; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +SET zoneLoadNum = (select DISTINCT template from obj_zone where UID = zoneUID); + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_parent, v_mob_index, v_mobile_type, + v_mobile_level, v_number_in_group, v_name_override, + v_spawn_radius, v_spawn_time, + v_spawn_x, v_spawn_y, + v_spawn_z, radians, + v_zone_level, v_zone_room, v_sparse_data, v_notEnemy, v_enemy, v_fsm; + +if done THEN + LEAVE loopy_doopy; +END IF; + +SET buildingUID = 0; +SET ownerUID = 0; +SET guildUID = 0; +SET v_mobBase = 0; +SET v_raceID = 0; + +if v_parent != 0 THEN + +SET prop_offset = v_parent - 1; + +SET buildingUID = (select UID from obj_building where obj_building.UID in +(select UID from object where parent = zoneUID + AND type = "building") +AND parentBuildingID = 0 +LIMIT 1 OFFSET prop_offset); + +SET ownerUID = IFNULL((select ownerUUID from obj_building WHERE UID = buildingUID), 0); +SET guildUID = IFNULL((select UID from obj_guild WHERE leaderUID = ownerUID), 0); + +END IF; + +SET equipSetID = zoneLoadNum; +CALL _build_equipset(equipSetID, v_parent, v_mob_index); + +SET runeSetID = zoneLoadNum; +CALL _build_runeset(runeSetID, v_parent, v_mob_index); + +SET @halfRadians = radians * .5; + +if v_fsm = "" THEN + SET v_fsm = "None"; +END IF; + +if v_mobile_type = "MOBILE" THEN + + SET bootySetID = zoneLoadNum; + + CALL _build_bootyset(bootySetID, v_parent, v_mob_index); + + SET v_mobbase = (select rune_id from _mobile_runestones where + zoneID = zoneLoadNum AND + parent = v_parent AND + mob_index = v_mob_index + LIMIT 1 OFFSET 0); + +SET @mobCount = 1; + +mobLoop: REPEAT + + INSERT HIGH_PRIORITY INTO `object` VALUES (NULL, 'mob', zoneUID); + SET last_UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO `obj_mob` (`UID`, `mob_mobbaseID`, `mob_level`, `mob_guildUID`, + `mob_spawnX`, `mob_spawnY`, `mob_spawnZ`, `mob_spawnRadius`, `mob_spawnTime`, + `mob_buildingID`, `mob_rotation`, `mob_name`, `mob_buildingFloor`, `mob_buildingLevel`, + `equipmentSet`, `runeSet`, `bootySet`, `sparseData`, `notEnemy`, `enemy`, `fsm`, `rotation`) + VALUES(last_UID, v_mobBase, v_mobile_level, guildUID, v_spawn_x, v_spawn_y, v_spawn_z, + v_spawn_radius, v_spawn_time, buildingUID, COS(@halfRadians), v_name_override, v_zone_room, + v_zone_level, equipSetID, runeSetID, bootySetID, v_sparse_data, v_notEnemy, v_enemy, v_fsm, radians); + +SET @mobCount = @mobCount + 1; +UNTIL @mobCount > v_number_in_group +END REPEAT mobLoop; + +END IF; + +if v_mobile_type = "TRAINER" THEN + + SET v_mobbase = (select rune_id from _mobile_runestones where + zoneID = zoneLoadNum AND + parent = v_parent AND + mob_index = v_mob_index + LIMIT 1 OFFSET 1); + SET v_raceID = (select rune_id from _mobile_runestones where + zoneID = zoneLoadNum AND + parent = v_parent AND + mob_index = v_mob_index + LIMIT 1 OFFSET 0); + + INSERT HIGH_PRIORITY INTO `object` VALUES (NULL, 'npc', zoneUID); + SET last_UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO `obj_npc` (`UID`, `npc_name`, `npc_contractID`, `npc_guildID`, `npc_spawnX`, + `npc_spawnY`, `npc_spawnZ`, `npc_level`, `npc_buildingID`, `npc_rotation`, + `npc_buildingLevel`, `npc_buildingFloor`, `npc_raceID`, `equipmentSet`, + `runeSet`, `rotation`) + VALUES(last_UID, v_name_override, v_mobBase, guildUID, v_spawn_x, v_spawn_y, v_spawn_z, + v_mobile_level, buildingUID, COS(@halfRadians), v_zone_level, v_zone_room, v_raceID, + equipSetID, runeSetID, radians); + +END IF; + +END LOOP loopy_doopy; + +CLOSE cur1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `_zone_prop_import` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `_zone_prop_import`(IN `zoneUID` int) +BEGIN + + + + + + +DECLARE zoneLoadNum INT DEFAULT 0; +DECLARE cityUUID INT DEFAULT 0; +DECLARE isSafeZone INT DEFAULT FALSE; +DECLARE done INT DEFAULT FALSE; +DECLARE prop_UID INT DEFAULT 0; +DECLARE city_UID INT DEFAULT 0; +DECLARE zoneName VARCHAR(30); +DECLARE parent_UID INT DEFAULT 0; +DECLARE is_furniture INT DEFAULT 0; +DECLARE parent_building INT DEFAULT 0; +DECLARE radians FLOAT DEFAULT 0.0; +DECLARE prop_table_index INT DEFAULT 0; +DECLARE parent_prop INT DEFAULT 0; +DECLARE prop_zone_index INT DEFAULT 0; +DECLARE prop_owner_guild INT DEFAULT 0; +DECLARE prop_owner INT DEFAULT 0; +DECLARE prop_name VARCHAR(255); +DECLARE template_id INT DEFAULT 0; +DECLARE location_x FLOAT DEFAULT 0.0; +DECLARE location_y FLOAT DEFAULT 0.0; +DECLARE location_z FLOAT DEFAULT 0.0; +DECLARE rotation FLOAT DEFAULT 0.0; +DECLARE prop_level INT DEFAULT 0; +DECLARE prop_room INT DEFAULT 0; +DECLARE prop_rank INT DEFAULT 0; +DECLARE prop_funds INT DEFAULT 0; + +DECLARE cur1 CURSOR for SELECT prop_entry, prop_index, parent, basic_zone_template_id, basic_zone_name_override, +basic_zone_spawn_location_x, basic_zone_spawn_location_y, basic_zone_spawn_location_z, city_prop_gm_guild, +basic_zone_y_rot, basic_zone_level_number, basic_zone_room_number, city_prop_asset_rank, city_prop_asset_funds +from _prop_data where zoneID = zoneLoadNum +ORDER BY parent ASC, prop_index ASC; + +DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, + @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SET @full_error = CONCAT("PROP IMPORT", zoneName, @errno, " (", @sqlstate, "): ", @text); + SELECT @full_error; + END; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +SET zoneLoadNum = (SELECT `template` from obj_zone where `UID` = `zoneUID`); +SET isSafeZone = (SELECT `peace_zone` from obj_zone where `UID` = `zoneUID`); +SET zoneName = (SELECT `zone_name` from obj_zone where `UID` = `zoneUID`); + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO prop_table_index, prop_zone_index, parent_prop, template_id, prop_name, location_x, + location_y, location_z, prop_owner_guild, + rotation, prop_level, prop_room, prop_rank, prop_funds; + +if done THEN + LEAVE loopy_doopy; +END IF; + +SET parent_UID = zoneUID; +SET parent_building = 0; +SET radians = rotation * .5; + +SET prop_owner = 0; + +if prop_owner_guild != 0 THEN + SET prop_owner = (SELECT `leaderUID` from obj_guild + where `UID` = prop_owner_guild); +END IF; + + + +if ISNULL(prop_owner) THEN + SET prop_owner = 0; +END IF; + +if parent_prop != 0 THEN + + SET parent_building = (SELECT `prop_UUID` from _prop_data + where `zoneID` = zoneLoadNum AND + `parent` = 0 AND + `prop_index` = parent_prop); + SET is_furniture = TRUE; + +END IF; + + INSERT HIGH_PRIORITY INTO `object` VALUES (NULL, 'building', parent_UID); + SET prop_UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO obj_building (`UID`, `ownerUUID`, `name`, `meshUUID`, `locationX`, `locationY`, `locationZ`, `currentHP`, + `protectionState`, `currentGold`, `rank`, `w`, `rotY`, + `level`, `floor`, `parentBuildingID`, `isFurniture`, `rotation`) + VALUES (prop_UID, prop_owner, prop_name, template_id, location_x, location_y, location_z, 1, + "NPC", prop_funds, prop_rank, SIN(radians), COS(radians), prop_room, prop_level, parent_building, is_furniture, rotation); + + UPDATE `_prop_data` SET prop_UUID = prop_UID where `prop_entry` = prop_table_index; + +IF isSafeZone = 1 AND template_id in (24000, 24100, 24500, 407100, 407700, 407900, 410000, 410100, 410200, 410300, 1611900) + AND parent_prop = 0 AND prop_zone_index = 1 THEN + + INSERT HIGH_PRIORITY INTO `object` VALUES (NULL, 'city', zoneUID); + SET city_UID = LAST_INSERT_ID(); + + INSERT HIGH_PRIORITY INTO `obj_city` (`UID`, `name`, `motto`, `treeOfLifeUUID`, `established`, `population`, `siegesWithstood`, `isNpc`, `isCapital`, `isNoobIsle`, `bindX`, `bindZ`, `bindRadius`, `radiusType`) + VALUES (city_UID, zoneName, '', prop_UID, "2003-03-25 09:00:00", 1, 0, 1, 0, 0, 0, 0, 32, 1); + + UPDATE `obj_guild` SET ownedCity = city_UID WHERE `UID` = prop_owner_guild; + +END IF; + +END LOOP loopy_doopy; + +CLOSE cur1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `__world_import_run` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`mb_dev`@`localhost` PROCEDURE `__world_import_run`() +BEGIN + + + + + + +DECLARE v_uid INT; +DECLARE v_zoneName VARCHAR(60); +DECLARE zoneTotal INT DEFAULT 0; +DECLARE propTotal INT DEFAULT 0; +DECLARE npcTotal INT DEFAULT 0; + +DECLARE done INT DEFAULT FALSE; + +DECLARE cur1 CURSOR for SELECT `UID`, `zone_name` from obj_zone; + +DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, + @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text); + SELECT @full_error; + END; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +SET @START_TIME = NOW(); + + + +DELETE from object WHERE `UID` in +(SELECT UID from obj_zone WHERE +template = 0); + +OPEN cur1; + +loopy_doopy: LOOP + +FETCH cur1 INTO v_uid, v_zoneName; + +if done THEN + LEAVE loopy_doopy; +END IF; + +SET @zoneLoadNum = (select DISTINCT template from obj_zone where UID = v_uid); +SET @prop_count = (SELECT COUNT(*) from _prop_data where _prop_data.zoneID = @zoneLoadNum); +SET @npc_count = (SELECT COUNT(*) from _mobile_data where _mobile_data.zoneID = @zoneLoadNum); + +SET zoneTotal = zoneTotal + 1; +SET propTotal = propTotal + @prop_count; +SET npcTotal = npcTotal + @npc_count; + +SET @outStr = concat("Creating Zone ", v_uid, " : ", v_zoneName, ": Props: ", @prop_count, " NPCs: ", @npc_count); +SELECT @outStr as ''; + +CALL _zone_prop_import(v_uid); +CALL _zone_npc_import(v_uid); + +END LOOP loopy_doopy; + +SET @outStr = "Configuring Mines"; +SELECT @outStr as ''; +CALL _build_mines(); + +SET @outStr = "Configuring Runegates"; +SELECT @outStr as ''; +CALL _build_runegates(); + +SET @outStr = "Purging missing items from equipment sets"; +SELECT @outStr as ''; + +delete from static_loot_bootySet +where static_loot_bootySet.templateID not in +(select static_item_templates.id from static_item_templates) +and bootyType = "EQUIP"; + +UPDATE obj_mob +set equipmentSet = 0 +where equipmentSet != 0 +AND equipmentSet not in +(select DISTINCT bootySet from static_loot_bootySet); + +SET @outStr = "Setting default min/max 30/60 for adventure zones."; +SELECT @outStr as ''; +update obj_zone +set min_level = 30, max_level = 60 +where icon1 != ""; + +CLOSE cur1; +SET @outStr = "Database is for to imported."; +SELECT @outStr as ''; + +SET @outStr = CONCAT("Runtime: ", TIMESTAMPDIFF(MINUTE, @START_TIME, NOW()), "m"); +SELECT @outStr as ''; + +SET @outStr = CONCAT("Zone records: ", zoneTotal, +" Prop records: ", propTotal, +" NPC records: ", npcTotal); +SELECT @outStr as ''; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Final view structure for view `char_perAccount` +-- + +/*!50001 DROP VIEW IF EXISTS `char_perAccount`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`mb_dev`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `char_perAccount` AS select `a`.`acct_uname` AS `acct_uname`,`a`.`discordAccount` AS `discordAccount`,`c`.`UID` AS `CharacterUID`,concat(`c`.`char_firstname`,' ',`c`.`char_lastname`) AS `CharacterName`,`rr`.`name` AS `CharRace`,`r1`.`name` AS `BaseClass`,(case when (`r2`.`name` is null) then 'Not Promoted' else `r2`.`name` end) AS `PromotionClass`,`c`.`char_experience` AS `char_experience`,(case when ((`c`.`char_experience` >= 0) and (`c`.`char_experience` < 150)) then '1' when ((`c`.`char_experience` >= 150) and (`c`.`char_experience` < 1200)) then '2' when ((`c`.`char_experience` >= 1200) and (`c`.`char_experience` < 4051)) then '3' when ((`c`.`char_experience` >= 4050) and (`c`.`char_experience` < 9601)) then '4' when ((`c`.`char_experience` >= 9600) and (`c`.`char_experience` < 18750)) then '5' when ((`c`.`char_experience` >= 18750) and (`c`.`char_experience` < 32400)) then '6' when ((`c`.`char_experience` >= 32400) and (`c`.`char_experience` < 51450)) then '7' when ((`c`.`char_experience` >= 51450) and (`c`.`char_experience` < 76800)) then '8' when ((`c`.`char_experience` >= 76800) and (`c`.`char_experience` < 109350)) then '9' when ((`c`.`char_experience` >= 109350) and (`c`.`char_experience` < 150000)) then '10' when ((`c`.`char_experience` >= 150000) and (`c`.`char_experience` < 199650)) then '11' when ((`c`.`char_experience` >= 199650) and (`c`.`char_experience` < 259200)) then '12' when ((`c`.`char_experience` >= 259200) and (`c`.`char_experience` < 329550)) then '13' when ((`c`.`char_experience` >= 329550) and (`c`.`char_experience` < 411600)) then '14' when ((`c`.`char_experience` >= 411600) and (`c`.`char_experience` < 506250)) then '15' when ((`c`.`char_experience` >= 506250) and (`c`.`char_experience` < 614400)) then '16' when ((`c`.`char_experience` >= 614400) and (`c`.`char_experience` < 736950)) then '17' when ((`c`.`char_experience` >= 736950) and (`c`.`char_experience` < 874800)) then '18' when ((`c`.`char_experience` >= 874800) and (`c`.`char_experience` < 1028850)) then '19' when ((`c`.`char_experience` >= 1028850) and (`c`.`char_experience` < 1200000)) then '20' when ((`c`.`char_experience` >= 1200000) and (`c`.`char_experience` < 1389150)) then '21' when ((`c`.`char_experience` >= 1389150) and (`c`.`char_experience` < 1597200)) then '22' when ((`c`.`char_experience` >= 1597200) and (`c`.`char_experience` < 1825050)) then '23' when ((`c`.`char_experience` >= 1825050) and (`c`.`char_experience` < 2073600)) then '24' when ((`c`.`char_experience` >= 2073600) and (`c`.`char_experience` < 2343750)) then '25' when ((`c`.`char_experience` >= 2343750) and (`c`.`char_experience` < 2636400)) then '26' when ((`c`.`char_experience` >= 2636400) and (`c`.`char_experience` < 2952450)) then '27' when ((`c`.`char_experience` >= 2952450) and (`c`.`char_experience` < 3292800)) then '28' when ((`c`.`char_experience` >= 3292800) and (`c`.`char_experience` < 3658350)) then '29' when ((`c`.`char_experience` >= 3658350) and (`c`.`char_experience` < 4050000)) then '30' when ((`c`.`char_experience` >= 4050000) and (`c`.`char_experience` < 4468650)) then '31' when ((`c`.`char_experience` >= 4468650) and (`c`.`char_experience` < 4915200)) then '32' when ((`c`.`char_experience` >= 4915200) and (`c`.`char_experience` < 5390550)) then '33' when ((`c`.`char_experience` >= 5390550) and (`c`.`char_experience` < 5895600)) then '34' when ((`c`.`char_experience` >= 5895600) and (`c`.`char_experience` < 6431250)) then '35' when ((`c`.`char_experience` >= 6431250) and (`c`.`char_experience` < 6998400)) then '36' when ((`c`.`char_experience` >= 6998400) and (`c`.`char_experience` < 7597950)) then '37' when ((`c`.`char_experience` >= 7597950) and (`c`.`char_experience` < 8230800)) then '38' when ((`c`.`char_experience` >= 8230800) and (`c`.`char_experience` < 8897850)) then '39' when ((`c`.`char_experience` >= 8897850) and (`c`.`char_experience` < 10091520)) then '40' when ((`c`.`char_experience` >= 10091520) and (`c`.`char_experience` < 11396777)) then '41' when ((`c`.`char_experience` >= 11396777) and (`c`.`char_experience` < 12820187)) then '42' when ((`c`.`char_experience` >= 12820187) and (`c`.`char_experience` < 14368505)) then '43' when ((`c`.`char_experience` >= 14368505) and (`c`.`char_experience` < 16048666)) then '44' when ((`c`.`char_experience` >= 16048666) and (`c`.`char_experience` < 17867790)) then '45' when ((`c`.`char_experience` >= 17867790) and (`c`.`char_experience` < 19833183)) then '46' when ((`c`.`char_experience` >= 19833183) and (`c`.`char_experience` < 21952335)) then '47' when ((`c`.`char_experience` >= 21952335) and (`c`.`char_experience` < 24232919)) then '48' when ((`c`.`char_experience` >= 24232919) and (`c`.`char_experience` < 26682793)) then '49' when ((`c`.`char_experience` >= 26682793) and (`c`.`char_experience` < 29310000)) then '50' when ((`c`.`char_experience` >= 29310000) and (`c`.`char_experience` < 32122766)) then '51' when ((`c`.`char_experience` >= 32122766) and (`c`.`char_experience` < 35129502)) then '52' when ((`c`.`char_experience` >= 35129502) and (`c`.`char_experience` < 38338805)) then '53' when ((`c`.`char_experience` >= 38338805) and (`c`.`char_experience` < 41759452)) then '54' when ((`c`.`char_experience` >= 41759452) and (`c`.`char_experience` < 45400409)) then '55' when ((`c`.`char_experience` >= 45400409) and (`c`.`char_experience` < 49270824)) then '56' when ((`c`.`char_experience` >= 49270824) and (`c`.`char_experience` < 53380030)) then '57' when ((`c`.`char_experience` >= 53380030) and (`c`.`char_experience` < 57737542)) then '58' when ((`c`.`char_experience` >= 57737542) and (`c`.`char_experience` < 62353064)) then '59' when ((`c`.`char_experience` >= 62353064) and (`c`.`char_experience` < 67236479)) then '60' when ((`c`.`char_experience` >= 67236479) and (`c`.`char_experience` < 72397859)) then '61' when ((`c`.`char_experience` >= 72397859) and (`c`.`char_experience` < 77847457)) then '62' when ((`c`.`char_experience` >= 77847457) and (`c`.`char_experience` < 83595712)) then '63' when ((`c`.`char_experience` >= 83595712) and (`c`.`char_experience` < 89653247)) then '64' when ((`c`.`char_experience` >= 89653247) and (`c`.`char_experience` < 96030869)) then '65' when ((`c`.`char_experience` >= 96030869) and (`c`.`char_experience` < 102739569)) then '66' when ((`c`.`char_experience` >= 102739569) and (`c`.`char_experience` < 109790524)) then '67' when ((`c`.`char_experience` >= 109790524) and (`c`.`char_experience` < 117195093)) then '68' when ((`c`.`char_experience` >= 117195093) and (`c`.`char_experience` < 124964822)) then '69' when ((`c`.`char_experience` >= 124964822) and (`c`.`char_experience` < 133111438)) then '70' when ((`c`.`char_experience` >= 133111438) and (`c`.`char_experience` < 141646855)) then '71' when ((`c`.`char_experience` >= 141646855) and (`c`.`char_experience` < 150583171)) then '72' when ((`c`.`char_experience` >= 150583171) and (`c`.`char_experience` < 159932666)) then '73' when ((`c`.`char_experience` >= 159932666) and (`c`.`char_experience` < 169707808)) then '74' when (`c`.`char_experience` >= 169707808) then '75' else 'Unknown' end) AS `char_level`,`a`.`status` AS `AccountStatus` from (((((`obj_character` `c` join `object` `o` on((`c`.`UID` = `o`.`UID`))) join `obj_account` `a` on((`a`.`UID` = `o`.`parent`))) left join `static_rune_runebase` `r1` on((`r1`.`ID` = `c`.`char_baseClassID`))) left join `static_rune_runebase` `r2` on((`r2`.`ID` = `c`.`char_promotionClassID`))) join `static_rune_race` `rr` on((`rr`.`ID` = `c`.`char_raceID`))) where (`c`.`char_isActive` = 1) order by `a`.`acct_uname`,`c`.`char_experience` desc */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `class_metrics` +-- + +/*!50001 DROP VIEW IF EXISTS `class_metrics`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`mb_dev`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `class_metrics` AS select distinct concat('BaseClass',': ',`char_perAccount`.`BaseClass`) AS `Class`,count(`char_perAccount`.`BaseClass`) AS `Count` from `char_perAccount` group by `char_perAccount`.`BaseClass` union select distinct concat('PromotionClass',': ',`char_perAccount`.`PromotionClass`) AS `CONCAT('PromotionClass',': ',PromotionClass)`,count(`char_perAccount`.`PromotionClass`) AS `Count` from `char_perAccount` group by `char_perAccount`.`PromotionClass` union select 'Total: ' AS `Name_exp_5`,count(`char_perAccount`.`CharacterUID`) AS `COUNT(CharacterUID)` from `char_perAccount` order by `Class` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `dyn_trash_detail` +-- + +/*!50001 DROP VIEW IF EXISTS `dyn_trash_detail`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`mb_dev`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `dyn_trash_detail` AS select distinct `l`.`accountName` AS `accountName`,`l`.`characterName` AS `characterName`,`r1`.`name` AS `BaseClass`,(case when (`r2`.`name` is null) then 'Not Promoted' else `r2`.`name` end) AS `PromotionClass`,`t`.`machineID` AS `machineID`,`l`.`ip` AS `ip`,`t`.`count` AS `count`,`c`.`char_isActive` AS `char_isActive` from ((((((`dyn_trash` `t` join `dyn_login_history` `l` on((`t`.`machineID` = `l`.`machineID`))) join `obj_character` `c` on((`l`.`characterName` = (case when (`c`.`char_lastname` > '') then concat(`c`.`char_firstname`,' ',`c`.`char_lastname`) else `c`.`char_firstname` end)))) join `object` `o` on((`c`.`UID` = `o`.`UID`))) join `obj_account` `a` on((`a`.`UID` = `o`.`parent`))) left join `static_rune_runebase` `r1` on((`r1`.`ID` = `c`.`char_baseClassID`))) left join `static_rune_runebase` `r2` on((`r2`.`ID` = `c`.`char_promotionClassID`))) where (`c`.`char_isActive` = 1) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `guild_Leaders` +-- + +/*!50001 DROP VIEW IF EXISTS `guild_Leaders`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`mb_dev`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `guild_Leaders` AS select `a`.`acct_uname` AS `acct_uname`,`a`.`discordAccount` AS `discordAccount`,`a`.`AccountStatus` AS `AccountStatus`,`a`.`CharacterUID` AS `CharacterUID`,`a`.`CharacterName` AS `CharacterName`,`a`.`char_level` AS `char_level`,`g`.`name` AS `GuildName`,`g`.`ownedCity` AS `ownedCity`,`c`.`name` AS `CityName`,`g`.`mineTime` AS `mineTime`,`g`.`motto` AS `motto` from ((`char_perAccount` `a` join `obj_guild` `g` on((`a`.`CharacterUID` = `g`.`leaderUID`))) join `obj_city` `c` on((`c`.`UID` = `g`.`ownedCity`))) order by `a`.`acct_uname` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `mob_Powers` +-- + +/*!50001 DROP VIEW IF EXISTS `mob_Powers`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`mb_dev`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `mob_Powers` AS select `mbp`.`mobbaseUUID` AS `mobbaseUUID`,`mb`.`name` AS `mobName`,`mb`.`level` AS `mobLevel`,`mbp`.`token` AS `powerToken`,`pb`.`IDString` AS `powerString`,`pb`.`name` AS `powerName`,`mbp`.`rank` AS `powerRank` from ((`static_npc_mobbase_powers` `mbp` left join `static_npc_mobbase` `mb` on((`mbp`.`mobbaseUUID` = `mb`.`ID`))) left join `static_power_powerbase` `pb` on((`pb`.`token` = `mbp`.`token`))) order by `mbp`.`mobbaseUUID` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `orphaned_Mines` +-- + +/*!50001 DROP VIEW IF EXISTS `orphaned_Mines`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`mb_dev`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `orphaned_Mines` AS select `m`.`UID` AS `UID`,`m`.`mine_buildingUID` AS `mine_buildingUID`,`m`.`mine_type` AS `mine_type`,`m`.`mine_resource` AS `mine_resource`,`b`.`ownerUUID` AS `ownerUUID`,`c`.`CharacterName` AS `CharacterName` from ((`obj_mine` `m` join `obj_building` `b` on((`m`.`mine_buildingUID` = `b`.`UID`))) left join `char_perAccount` `c` on((`c`.`CharacterUID` = `b`.`ownerUUID`))) where (`c`.`CharacterName` is null) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `runes_perCharacter` +-- + +/*!50001 DROP VIEW IF EXISTS `runes_perCharacter`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`mb_dev`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `runes_perCharacter` AS select `c`.`acct_uname` AS `acct_uname`,`c`.`discordAccount` AS `discordAccount`,`c`.`CharacterUID` AS `CharacterUID`,`c`.`CharacterName` AS `CharacterName`,`rb`.`name` AS `AppliedRunes`,`c`.`BaseClass` AS `BaseClass`,`c`.`PromotionClass` AS `PromotionClass`,`g`.`name` AS `GuildName`,`c`.`char_experience` AS `char_experience`,`c`.`AccountStatus` AS `AccountStatus` from ((((`char_perAccount` `c` join `dyn_character_rune` `r` on((`c`.`CharacterUID` = `r`.`CharacterID`))) join `static_rune_runebase` `rb` on((`rb`.`ID` = `r`.`RuneBaseID`))) join `obj_character` `oc` on((`oc`.`UID` = `c`.`CharacterUID`))) join `obj_guild` `g` on((`oc`.`guildUID` = `g`.`UID`))) order by `c`.`acct_uname`,`c`.`CharacterName` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `subguild_Leaders` +-- + +/*!50001 DROP VIEW IF EXISTS `subguild_Leaders`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`mb_dev`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `subguild_Leaders` AS select `o`.`UID` AS `GuildUID`,`g`.`name` AS `GuildName`,`g`.`leaderUID` AS `GuildLeader UID`,`a`.`CharacterName` AS `CharacterName`,`a`.`char_level` AS `CharacterLevel`,`a`.`acct_uname` AS `AccountName` from ((`object` `o` join `obj_guild` `g` on((`o`.`UID` = `g`.`UID`))) left join `char_perAccount` `a` on((`a`.`CharacterUID` = `g`.`leaderUID`))) where ((`o`.`type` = 'guild') and (`o`.`parent` <> 1) and (`g`.`ownedCity` = 0)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2026-09-27 12:10:04 diff --git a/src/engine/documentation/Handler Specific Documentation/dbAccountHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbAccountHandler_Documentation.md new file mode 100644 index 00000000..2c9366f7 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbAccountHandler_Documentation.md @@ -0,0 +1,87 @@ +# Account Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbAccountHandler` class. The account handler manages user authentication and account-related data in the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbAccountHandler.java` +**Class:** `dbAccountHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Account Table +- **Table Name:** `obj_account` +- **Description:** Core account information including login credentials, status, and account details +- **Columns:** + - UID (Primary Key) + - username + - password + - email + - accountStatus + - lastLogin + - creationDate + - isBanned + - banReason + - isDeleted + - deletedDate + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_account_wipe` | Account wipe history records | AccountID → obj_account.UID | +| `dyn_login_history` | Login attempt and session history | AccountID → obj_account.UID | + +## Key Queries + +### Get Account by ID +```sql +SELECT * FROM `obj_account` WHERE `UID`=? +``` +**File:** `dbAccountHandler.java`, Line ~60 + +### Get Account by Username +```sql +SELECT * FROM `obj_account` WHERE `username`=? +``` +**File:** `dbAccountHandler.java`, Line ~85 + +### Create New Account +```sql +INSERT INTO `obj_account` (`username`, `password`, `email`, `accountStatus`, `creationDate`) VALUES (?, ?, ?, ?, ?) +``` +**File:** `dbAccountHandler.java`, Line ~105 + +### Update Account Status +```sql +UPDATE `obj_account` SET `accountStatus`=?, `lastLogin`=? WHERE `UID`=? +``` +**File:** `dbAccountHandler.java`, Line ~132 + +### Check Username Availability +```sql +SELECT `username` FROM `obj_account` WHERE `username`=? +``` +**File:** `dbAccountHandler.java`, Line ~158 + +## Relationships + +1. **Account to Character:** One-to-many (via `obj_character.accountID` field) +2. **Account to Account Wipe History:** One-to-many (via `obj_account_wipe.AccountID`) +3. **Account to Login History:** One-to-many (via `dyn_login_history.AccountID`) + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `username` | `obj_account.username` | Unique account username | +| `password` | `obj_account.password` | Encrypted password | +| `email` | `obj_account.email` | Account email address | +| `accountStatus` | `obj_account.accountStatus` | Current account status | +| `lastLogin` | `obj_account.lastLogin` | Timestamp of last login | +| `creationDate` | `obj_account.creationDate` | Account creation date | +| `isBanned` | `obj_account.isBanned` | Boolean flag for banned status | +| `banReason` | `obj_account.banReason` | Reason for ban | +| `isDeleted` | `obj_account.isDeleted` | Boolean flag for deleted status | +| `deletedDate` | `obj_account.deletedDate` | Timestamp of deletion | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbBaneHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbBaneHandler_Documentation.md new file mode 100644 index 00000000..507f63dc --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbBaneHandler_Documentation.md @@ -0,0 +1,63 @@ +# dbBaneHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbBaneHandler` class. The bane handler manages special objects in cities that have specific properties and behaviors, including their ownership, location, and time-based effects. + +## Handler Class +**File:** `src/engine/db/handlers/dbBaneHandler.java` +**Class:** `dbBaneHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Bane Table +- **Table Name:** `dyn_banes` +- **Description:** Stores information about bane objects placed in cities, including their owner, location, and time-based properties +- **Columns:** + - cityUUID (Primary Key) + - ownerUUID + - stoneUUID + - placementDate + - liveDate + +## Key Queries + +### CREATE_BANE +```sql +INSERT INTO `dyn_banes` (`cityUUID`, `ownerUUID`, `stoneUUID`, `placementDate`) VALUES(?,?,?,?) +``` +**File:** `dbBaneHandler.java`, Line ~17 + +### LOAD_BANE +```sql +SELECT * FROM `dyn_banes` WHERE `dyn_banes`.`cityUUID` = ? +``` +**File:** `dbBaneHandler.java`, Line ~30 + +### SET_BANE_TIME +```sql +UPDATE `dyn_banes` SET `liveDate`=? WHERE `cityUUID`=? +``` +**File:** `dbBaneHandler.java`, Line ~45 + +### REMOVE_BANE +```sql +DELETE FROM `dyn_banes` WHERE `cityUUID` = ? +``` +**File:** `dbBaneHandler.java`, Line ~57 + +## Relationships + +1. **Bane to City:** One-to-one relationship via cityUUID (primary key) referencing obj_city.UID +2. **Bane to Owner:** Many-to-one relationship via ownerUUID referencing obj_character.UID +3. **Bane to Stone:** Many-to-one relationship via stoneUUID referencing obj_building.UID + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `cityUUID` | `dyn_banes.cityUUID` | Unique identifier for the city where bane is placed | +| `ownerUUID` | `dyn_banes.ownerUUID` | Character UID of the owner of this bane | +| `stoneUUID` | `dyn_banes.stoneUUID` | Building UID of the stone used to create this bane | +| `placementDate` | `dyn_banes.placementDate` | Timestamp when bane was placed | +| `liveDate` | `dyn_banes.liveDate` | Timestamp for when bane becomes active | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbBaseClassHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbBaseClassHandler_Documentation.md new file mode 100644 index 00000000..b8d4eaad --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbBaseClassHandler_Documentation.md @@ -0,0 +1,73 @@ +# dbBaseClassHandler Documentation + +## Overview +The `dbBaseClassHandler` is responsible for managing base class data in the Magicbane database. Base classes represent fundamental character classifications that define core attributes and capabilities. This handler manages retrieval of base class information, including fetching specific base classes by ID, retrieving base classes associated with a particular race, and getting all available base classes. + +## Database Table Structure + +### Table: `static_rune_baseclass` + +| Column Name | Data Type | Nullable | Key | Description | +|-------------|-----------|----------|-----|-------------| +| ID | int unsigned | NO | PRIMARY | Unique identifier for the base class | +| name | varchar(45) | NO | | Name of the base class | +| description | varchar(200) | NO | | Description of the base class | +| strMod | tinyint | NO | | Strength modifier for this base class | +| dexMod | tinyint | NO | | Dexterity modifier for this base class | +| conMod | tinyint | NO | | Constitution modifier for this base class | +| intMod | tinyint | NO | | Intelligence modifier for this base class | +| wisMod | tinyint | NO | | Wisdom modifier for this base class | +| chaMod | tinyint | NO | | Charisma modifier for this base class | +| healthMod | tinyint | NO | | Health modifier for this base class | +| manaMod | tinyint | NO | | Mana modifier for this base class | +| staminaMod | tinyint | NO | | Stamina modifier for this base class | + +### Table: `static_rune_racebaseclass` + +| Column Name | Data Type | Nullable | Key | Description | +|-------------|-----------|----------|-----|-------------| +| ID | int unsigned | NO | PRIMARY | Unique identifier for the relationship | +| RaceID | int unsigned | NO | FOREIGN KEY | Reference to race in `static_rune_race` | +| BaseClassID | int unsigned | NO | FOREIGN KEY | Reference to base class in `static_rune_baseclass` | + +## Java Field to Database Column Mapping + +| Java Field | Database Column | Type | Description | +|------------|-----------------|------|-------------| +| baseClass.getId() | ID | int unsigned | Base class unique identifier | +| baseClass.getName() | name | varchar(45) | Base class name | +| baseClass.getDescription() | description | varchar(200) | Base class description | +| baseClass.getStrMod() | strMod | tinyint | Strength modifier | +| baseClass.getDexMod() | dexMod | tinyint | Dexterity modifier | +| baseClass.getConMod() | conMod | tinyint | Constitution modifier | +| baseClass.getIntMod() | intMod | tinyint | Intelligence modifier | +| baseClass.getWisMod() | wisMod | tinyint | Wisdom modifier | +| baseClass.getChaMod() | chaMod | tinyint | Charisma modifier | +| baseClass.getHealthMod() | healthMod | tinyint | Health modifier | +| baseClass.getManaMod() | manaMod | tinyint | Mana modifier | +| baseClass.getStaminaMod() | staminaMod | tinyint | Stamina modifier | + +## Key Queries + +### GET_BASE_CLASS +- **Query**: `SELECT * FROM \`static_rune_baseclass\` WHERE \`ID\`=?` +- **Parameter**: id (base class ID) +- **Note**: Fixed from original bug - was selecting from obj_account table instead of static_rune_baseclass + +### GET_BASECLASS_FOR_RACE +- **Query**: `SELECT b.* FROM \`static_rune_baseclass\` b, \`static_rune_racebaseclass\` r WHERE b.\`ID\` = r.\`BaseClassID\` && r.\`RaceID\` = ?` +- **Parameter**: id (race ID) + +### GET_ALL_BASE_CLASSES +- **Query**: `SELECT * FROM \`static_rune_baseclass\`;` +- **Note**: Returns all base classes from the static table + +## Relationships + +### Foreign Key Relationships +- `static_rune_racebaseclass.BaseClassID` references `static_rune_baseclass.ID` +- `static_rune_racebaseclass.RaceID` references `static_rune_race.ID` + +### Associated Objects +- **BaseClass**: Core character classification data +- **Race**: Associated races that can use specific base classes (via `static_rune_racebaseclass`) \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbBlueprintHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbBlueprintHandler_Documentation.md new file mode 100644 index 00000000..ac43ff4c --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbBlueprintHandler_Documentation.md @@ -0,0 +1,119 @@ +# dbBlueprintHandler Documentation + +## Overview +The `dbBlueprintHandler` is responsible for managing building blueprint data and door number mappings in the Magicbane database. This handler loads blueprint information used for building construction and handles door mesh-to-number mappings. + +## Database Table Structure + +### Table: `static_building_blueprint` + +| Column Name | Data Type | Nullable | Key | Description | +|-------------|-----------|----------|-----|-------------| +| Rank0UUID | bigint unsigned | NO | PRIMARY | Unique identifier for the blueprint (rank 0) | +| MeshName | varchar(100) | NO | | Name of the mesh used for the building | +| BuildingGroup | enum | NO | | Group classification of the building type | +| MaintGroup | varchar(45) | YES | | Maintenance group associated with the building | +| Rank1UUID | bigint unsigned | YES | | UUID for rank 1 upgrade | +| Rank2UUID | bigint unsigned | YES | | UUID for rank 2 upgrade | +| Rank3UUID | bigint unsigned | YES | | UUID for rank 3 upgrade | +| Rank4UUID | bigint unsigned | YES | | UUID for rank 4 upgrade | +| Rank5UUID | bigint unsigned | YES | | UUID for rank 5 upgrade | +| Rank6UUID | bigint unsigned | YES | | UUID for rank 6 upgrade | +| Rank7UUID | bigint unsigned | YES | | UUID for rank 7 upgrade | +| UpgradeCost | int | YES | | Cost to upgrade the building | +| UpgradeTime | int | YES | | Time required to upgrade the building | +| MaxHP | int | YES | | Maximum hit points of the building | +| MaxGold | int | YES | | Maximum gold storage capacity | +| MaxLevel | int | YES | | Maximum level for this building | +| MaxRank | int | YES | | Maximum rank for this building | +| MinLevel | int | YES | | Minimum level required to build | +| Scale | float | YES | | Scale factor for the building mesh | +| SizeX | float | YES | | X dimension size | +| SizeY | float | YES | | Y dimension size | +| SizeZ | float | YES | | Z dimension size | +| DoorCount | int | YES | | Number of doors in this building | +| MaxDoorCount | int | YES | | Maximum number of doors allowed | +| IsWall | tinyint(1) | YES | | Flag indicating if building is a wall | +| IsGate | tinyint(1) | YES | | Flag indicating if building is a gate | +| IsTower | tinyint(1) | YES | | Flag indicating if building is a tower | +| IsKeep | tinyint(1) | YES | | Flag indicating if building is a keep | +| IsFortress | tinyint(1) | YES | | Flag indicating if building is a fortress | +| IsCastle | tinyint(1) | YES | | Flag indicating if building is a castle | +| IsBarracks | tinyint(1) | YES | | Flag indicating if building is barracks | +| IsChurch | tinyint(1) | YES | | Flag indicating if building is a church | +| IsForge | tinyint(1) | YES | | Flag indicating if building is a forge | +| IsSpire | tinyint(1) | YES | | Flag indicating if building is a spire | +| IsShrine | tinyint(1) | YES | | Flag indicating if building is a shrine | +| IsRunegate | tinyint(1) | YES | | Flag indicating if building is a runegate | +| IsMine | tinyint(1) | YES | | Flag indicating if building is a mine | +| IsWarehouse | tinyint(1) | YES | | Flag indicating if building is a warehouse | + +### Table: `static_building_doors` + +| Column Name | Data Type | Nullable | Key | Description | +|-------------|-----------|----------|-----|-------------| +| doorMeshUUID | int | NO | PRIMARY | Unique identifier for the door mesh | +| doorNumber | int | NO | | Door number associated with this mesh | + +## Java Field to Database Column Mapping + +| Java Field | Database Column | Type | Description | +|------------|-----------------|------|-------------| +| blueprint.getBlueprintUUID() | Rank0UUID | bigint unsigned | Blueprint unique identifier | +| blueprint.getMeshName() | MeshName | varchar(100) | Name of the building mesh | +| blueprint.getBuildingGroup() | BuildingGroup | enum | Group classification of the building | +| blueprint.getMaintGroup() | MaintGroup | varchar(45) | Maintenance group for this building | +| blueprint.getRank1UUID() | Rank1UUID | bigint unsigned | UUID for rank 1 upgrade | +| blueprint.getRank2UUID() | Rank2UUID | bigint unsigned | UUID for rank 2 upgrade | +| blueprint.getRank3UUID() | Rank3UUID | bigint unsigned | UUID for rank 3 upgrade | +| blueprint.getRank4UUID() | Rank4UUID | bigint unsigned | UUID for rank 4 upgrade | +| blueprint.getRank5UUID() | Rank5UUID | bigint unsigned | UUID for rank 5 upgrade | +| blueprint.getRank6UUID() | Rank6UUID | bigint unsigned | UUID for rank 6 upgrade | +| blueprint.getRank7UUID() | Rank7UUID | bigint unsigned | UUID for rank 7 upgrade | +| blueprint.getUpgradeCost() | UpgradeCost | int | Cost to upgrade the building | +| blueprint.getUpgradeTime() | UpgradeTime | int | Time required to upgrade | +| blueprint.getMaxHP() | MaxHP | int | Maximum hit points | +| blueprint.getMaxGold() | MaxGold | int | Maximum gold storage | +| blueprint.getMaxLevel() | MaxLevel | int | Maximum level for this building | +| blueprint.getMaxRank() | MaxRank | int | Maximum rank | +| blueprint.getMinLevel() | MinLevel | int | Minimum level required | +| blueprint.getScale() | Scale | float | Scale factor for mesh | +| blueprint.getSizeX() | SizeX | float | X dimension size | +| blueprint.getSizeY() | SizeY | float | Y dimension size | +| blueprint.getSizeZ() | SizeZ | float | Z dimension size | +| blueprint.getDoorCount() | DoorCount | int | Number of doors | +| blueprint.getMaxDoorCount() | MaxDoorCount | int | Maximum number of doors | +| blueprint.getIsWall() | IsWall | tinyint(1) | Wall flag | +| blueprint.getIsGate() | IsGate | tinyint(1) | Gate flag | +| blueprint.getIsTower() | IsTower | tinyint(1) | Tower flag | +| blueprint.getIsKeep() | IsKeep | tinyint(1) | Keep flag | +| blueprint.getIsFortress() | IsFortress | tinyint(1) | Fortress flag | +| blueprint.getIsCastle() | IsCastle | tinyint(1) | Castle flag | +| blueprint.getIsBarracks() | IsBarracks | tinyint(1) | Barracks flag | +| blueprint.getIsChurch() | IsChurch | tinyint(1) | Church flag | +| blueprint.getIsForge() | IsForge | tinyint(1) | Forge flag | +| blueprint.getIsSpire() | IsSpire | tinyint(1) | Spire flag | +| blueprint.getIsShrine() | IsShrine | tinyint(1) | Shrine flag | +| blueprint.getIsRunegate() | IsRunegate | tinyint(1) | Runegate flag | +| blueprint.getIsMine() | IsMine | tinyint(1) | Mine flag | +| blueprint.getIsWarehouse() | IsWarehouse | tinyint(1) | Warehouse flag | + +## Key Queries + +### LOAD_ALL_DOOR_NUMBERS +- **Query**: `SELECT * FROM static_building_doors ORDER BY doorMeshUUID ASC` +- **Note**: Loads all door mesh-to-number mappings for building doors + +### LOAD_ALL_BLUEPRINTS +- **Query**: `SELECT * FROM static_building_blueprint` +- **Note**: Loads all blueprint definitions for buildings + +## Relationships + +### Foreign Key Relationships +- None explicitly defined in the handler code (these are likely static lookup tables) + +### Associated Objects +- **Blueprint**: Building construction data with mesh information and upgrade paths +- **Door**: Door mesh mappings used for building construction + diff --git a/src/engine/documentation/Handler Specific Documentation/dbBoonHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbBoonHandler_Documentation.md new file mode 100644 index 00000000..a0b9dfc1 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbBoonHandler_Documentation.md @@ -0,0 +1,43 @@ +# Boon Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbBoonHandler` class. The boon system in Magicbane is used to manage item bonuses and enhancements that are associated with specific item bases. + +## Handler Class +**File:** `src/engine/db/handlers/dbBoonHandler.java` +**Class:** `dbBoonHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Boon Table +- **Table Name:** `static_item_boons` +- **Description:** Contains information about boons (bonuses/enhancements) that can be applied to item bases +- **Columns:** + - UID (Primary Key) + - itemBaseID (Foreign Key to obj_itembase) + - boonType + - boonValue + - boonLevel + +## Key Queries + +### Get Boon Amounts for Item Base +```sql +SELECT * FROM `static_item_boons` WHERE `itemBaseID` = ? +``` +**File:** `dbBoonHandler.java`, Line ~28 + +## Relationships + +1. **Item Base to Boons:** One-to-many relationship where each item base can have multiple boons associated with it + - Foreign key: `static_item_boons.itemBaseID` references `obj_itembase.UID` + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `itemBaseID` | `static_item_boons.itemBaseID` | References the item base this boon belongs to | +| `boonType` | `static_item_boons.boonType` | Type of boon (e.g., damage, defense) | +| `boonValue` | `static_item_boons.boonValue` | Value of the boon | +| `boonLevel` | `static_item_boons.boonLevel` | Level of the boon | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbBuildingHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbBuildingHandler_Documentation.md new file mode 100644 index 00000000..30582310 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbBuildingHandler_Documentation.md @@ -0,0 +1,98 @@ +# Building Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbBuildingHandler` class. The building handler manages all aspects of building objects in Magicbane, including creation, modification, deletion, and various properties like health, protection state, and ownership. + +## Handler Class +**File:** `src/engine/db/handlers/dbBuildingHandler.java` +**Class:** `dbBuildingHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Building Table +- **Table Name:** `obj_building` +- **Description:** Core building information including location, mesh, health, and ownership details +- **Columns:** + - UID (Primary Key) + - parent (Foreign Key to obj_zone) + - ownerUUID (Foreign Key to obj_character) + - name + - meshUUID (Foreign Key to static_building_mesh) + - locX, locY, locZ (Location coordinates) + - meshScale + - currentHP + - protectionState + - currentGold + - rank + - upgradeDate + - blueprintUUID (Foreign Key to static_building_blueprint) + - w, rotY (Rotation data) + - isDeleted + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `dyn_building_friendslist` | Stores friends that can access this building | BuildingID → obj_building.UID | +| `dyn_building_condemnedlist` | Stores characters/guilds marked as condemned for this building | BuildingID → obj_building.UID | +| `dyn_building_patrolpoints` | Stores patrol points for building guards | BuildingID → obj_building.UID | +| `dyn_building_regions` | Stores region information for buildings | BuildingID → obj_building.UID | + +## Key Queries + +### Create Building (Stored Procedure) +```sql +CALL `building_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) +``` +**File:** `dbBuildingHandler.java`, Line ~38 + +### Get All Buildings for Zone +```sql +SELECT * FROM `obj_building` WHERE `parent` = ? +``` +**File:** `dbBuildingHandler.java`, Line ~91 + +### Get Building by UUID +```sql +SELECT * FROM `obj_building` WHERE `UID` = ? +``` +**File:** `dbBuildingHandler.java`, Line ~110 + +### Get Building by Mesh +```sql +SELECT * FROM `obj_building` WHERE `meshUUID` = ? +``` +**File:** `dbBuildingHandler.java`, Line ~135 + +## Relationships + +1. **Building to Zone:** Many-to-one relationship through `obj_building.parent` field +2. **Building to Owner:** Many-to-one relationship through `obj_building.ownerUUID` field (references obj_character.UID) +3. **Building to Blueprint:** Many-to-one relationship through `obj_building.blueprintUUID` field (references static_building_blueprint.Rank0UUID) +4. **Building to Mesh:** Many-to-one relationship through `obj_building.meshUUID` field (references static_building_mesh.UID) +5. **Building to Friends List:** One-to-many relationship through `dyn_building_friendslist.BuildingID` +6. **Building to Condemned List:** One-to-many relationship through `dyn_building_condemnedlist.BuildingID` +7. **Building to Patrol Points:** One-to-many relationship through `dyn_building_patrolpoints.BuildingID` +8. **Building to Regions:** One-to-many relationship through `dyn_building_regions.BuildingID` + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `parent` | `obj_building.parent` | Zone parent ID | +| `ownerUUID` | `obj_building.ownerUUID` | Owner character UID | +| `name` | `obj_building.name` | Building name | +| `meshUUID` | `obj_building.meshUUID` | Mesh identifier | +| `locX` | `obj_building.locX` | X coordinate | +| `locY` | `obj_building.locY` | Y coordinate | +| `locZ` | `obj_building.locZ` | Z coordinate | +| `meshScale` | `obj_building.meshScale` | Scale of mesh | +| `currentHP` | `obj_building.currentHP` | Current health points | +| `protectionState` | `obj_building.protectionState` | Protection state | +| `currentGold` | `obj_building.currentGold` | Current gold amount | +| `rank` | `obj_building.rank` | Building rank | +| `upgradeDate` | `obj_building.upgradeDate` | Upgrade timestamp | +| `blueprintUUID` | `obj_building.blueprintUUID` | Blueprint identifier | +| `w` | `obj_building.w` | Rotation data | +| `rotY` | `obj_building.rotY` | Y rotation angle | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbBuildingLocationHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbBuildingLocationHandler_Documentation.md new file mode 100644 index 00000000..ece17712 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbBuildingLocationHandler_Documentation.md @@ -0,0 +1,61 @@ +# Building Location Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbBuildingLocationHandler` class. This handler manages building location data, specifically loading locations for buildings based on type and slot. + +## Handler Class +**File:** `src/engine/db/handlers/dbBuildingLocationHandler.java` +**Class:** `dbBuildingLocationHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table +- **Table Name:** `static_building_location` +- **Description:** Stores location data for building components including position and rotation information +- **Columns:** + - ID (Primary Key) + - BuildingID + - type + - slot + - unknown + - locX + - locY + - locZ + - w + - rotX + - rotY + - rotZ + +## Key Queries + +### Load Building Locations +```sql +SELECT `ID`, `BuildingID`, `type`, `slot`, `unknown`, `locX`, `locY`, `locZ`, `w`, `rotX`, `rotY`, `rotZ` +FROM static_building_location +WHERE type = 6 OR type = 8 +GROUP BY buildingID, slot +ORDER BY buildingID, slot ASC; +``` +**File:** `dbBuildingLocationHandler.java`, Line ~17 + +## Relationships + +1. **Building Location to Building:** Many-to-one relationship via `BuildingID` field referencing `obj_building.UID` + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `id` | `static_building_location.ID` | Unique identifier | +| `buildingID` | `static_building_location.BuildingID` | Reference to building | +| `type` | `static_building_location.type` | Location type | +| `slot` | `static_building_location.slot` | Slot number | +| `unknown` | `static_building_location.unknown` | Unknown field | +| `locX` | `static_building_location.locX` | X coordinate | +| `locY` | `static_building_location.locY` | Y coordinate | +| `locZ` | `static_building_location.locZ` | Z coordinate | +| `w` | `static_building_location.w` | W rotation value | +| `rotX` | `static_building_location.rotX` | X rotation | +| `rotY` | `static_building_location.rotY` | Y rotation | +| `rotZ` | `static_building_location.rotZ` | Z rotation | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbCSSessionHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbCSSessionHandler_Documentation.md new file mode 100644 index 00000000..8b143b70 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbCSSessionHandler_Documentation.md @@ -0,0 +1,77 @@ +# dbCSSessionHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbCSSessionHandler` class. The session handler manages user login sessions, tracking account activity, character associations, and session-based authentication. + +## Handler Class +**File:** `src/engine/db/handlers/dbCSSessionHandler.java` +**Class:** `dbCSSessionHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Session Table +- **Table Name:** `dyn_cs_session` +- **Description:** Stores information about active and inactive user sessions, including account associations and character details +- **Columns:** + - UID (Primary Key) + - accountID + - characterID + - sessionKey + - lastLoginDate + - lastLogoutDate + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_account` | Accounts associated with sessions | accountID → obj_account.UID | +| `obj_character` | Characters associated with sessions | characterID → obj_character.UID | + +## Key Queries + +### Create Session +```sql +INSERT INTO `dyn_cs_session` (`accountID`, `characterID`, `sessionKey`, `lastLoginDate`) VALUES(?,?,?,?) +``` +**File:** `dbCSSessionHandler.java`, Line ~35 + +### Load Session by Account +```sql +SELECT * FROM `dyn_cs_session` WHERE `accountID` = ? +``` +**File:** `dbCSSessionHandler.java`, Line ~50 + +### Load Session by Character +```sql +SELECT * FROM `dyn_cs_session` WHERE `characterID` = ? +``` +**File:** `dbCSSessionHandler.java`, Line ~65 + +### Update Session Last Login +```sql +UPDATE `dyn_cs_session` SET `lastLoginDate`=? WHERE `UID`=? +``` +**File:** `dbCSSessionHandler.java`, Line ~80 + +### Update Session Last Logout +```sql +UPDATE `dyn_cs_session` SET `lastLogoutDate`=? WHERE `UID`=? +``` +**File:** `dbCSSessionHandler.java`, Line ~95 + +## Relationships + +1. **Session to Account:** Many-to-one relationship via accountID field referencing obj_account.UID +2. **Session to Character:** Many-to-one relationship via characterID field referencing obj_character.UID +3. **Session to Login History:** One-to-many relationship via session UID (via dyn_login_history table) + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `accountID` | `dyn_cs_session.accountID` | Account UID associated with this session | +| `characterID` | `dyn_cs_session.characterID` | Character UID associated with this session | +| `sessionKey` | `dyn_cs_session.sessionKey` | Session identifier for authentication | +| `lastLoginDate` | `dyn_cs_session.lastLoginDate` | Timestamp of last login | +| `lastLogoutDate` | `dyn_cs_session.lastLogoutDate` | Timestamp of last logout | diff --git a/src/engine/documentation/Handler Specific Documentation/dbCharacterPowerHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbCharacterPowerHandler_Documentation.md new file mode 100644 index 00000000..9ec73c40 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbCharacterPowerHandler_Documentation.md @@ -0,0 +1,71 @@ +# Character Power Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbCharacterPowerHandler` class. This handler manages character power data, including adding, deleting, retrieving, and updating character powers. + +## Handler Class +**File:** `src/engine/db/handlers/dbCharacterPowerHandler.java` +**Class:** `dbCharacterPowerHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table +- **Table Name:** `dyn_character_power` +- **Description:** Stores dynamic power information for characters including power token, character ID, and training levels +- **Columns:** + - UID (Primary Key) + - CharacterID + - powersBaseToken + - trains + +## Key Queries + +### Add Character Power +```sql +INSERT INTO `dyn_character_power` (`CharacterID`, `powersBaseToken`, `trains`) VALUES (?, ?, ?); +``` +**File:** `dbCharacterPowerHandler.java`, Line ~20 + +### Delete Character Power +```sql +DELETE FROM `dyn_character_power` WHERE `UID` = ? +``` +**File:** `dbCharacterPowerHandler.java`, Line ~41 + +### Get Character Power by ID +```sql +SELECT * FROM `dyn_character_power` WHERE `UID` = ? +``` +**File:** `dbCharacterPowerHandler.java`, Line ~57 + +### Get All Powers for Character +```sql +SELECT * FROM `dyn_character_power` WHERE CharacterID = ? +``` +**File:** `dbCharacterPowerHandler.java`, Line ~76 + +### Update Trains +```sql +UPDATE `dyn_character_power` SET `trains`=? WHERE `UID`=? +``` +**File:** `dbCharacterPowerHandler.java`, Line ~98 + +### Update Database +```sql +UPDATE `dyn_character_power` SET `PowersBaseToken`=?, `CharacterID`=?, `trains`=? WHERE `UID`=? +``` +**File:** `dbCharacterPowerHandler.java`, Line ~115 + +## Relationships + +1. **Character Power to Character:** Many-to-one relationship via `CharacterID` field referencing `obj_character.UID` +2. **Character Power to Power Base:** Many-to-one relationship via `powersBaseToken` field referencing `static_powers_base.token` + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `characterID` | `dyn_character_power.CharacterID` | Reference to character | +| `powerToken` | `dyn_character_power.powersBaseToken` | Reference to power base | +| `trains` | `dyn_character_power.trains` | Training level | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbCharacterRuneHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbCharacterRuneHandler_Documentation.md new file mode 100644 index 00000000..51313361 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbCharacterRuneHandler_Documentation.md @@ -0,0 +1,63 @@ +# Character Rune Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbCharacterRuneHandler` class. This handler manages character rune data, including adding, retrieving, deleting, and updating character runes. + +## Handler Class +**File:** `src/engine/db/handlers/dbCharacterRuneHandler.java` +**Class:** `dbCharacterRuneHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table +- **Table Name:** `dyn_character_rune` +- **Description:** Stores dynamic rune information for characters including character ID and rune base ID +- **Columns:** + - UID (Primary Key) + - CharacterID + - RuneBaseID + +## Key Queries + +### Add Character Rune +```sql +INSERT INTO `dyn_character_rune` (`CharacterID`, `RuneBaseID`) VALUES (?, ?); +``` +**File:** `dbCharacterRuneHandler.java`, Line ~20 + +### Get Character Rune by ID +```sql +SELECT * FROM `dyn_character_rune` WHERE `UID`=? +``` +**File:** `dbCharacterRuneHandler.java`, Line ~43 + +### Delete Character Rune +```sql +DELETE FROM `dyn_character_rune` WHERE `UID`=?; +``` +**File:** `dbCharacterRuneHandler.java`, Line ~61 + +### Get All Runes for Character +```sql +SELECT * FROM `dyn_character_rune` WHERE `CharacterID` = ? +``` +**File:** `dbCharacterRuneHandler.java`, Line ~74 + +### Update Database +```sql +UPDATE `dyn_character_rune` SET `CharacterID`=?, `RuneBaseID`=? WHERE `UID` = ? +``` +**File:** `dbCharacterRuneHandler.java`, Line ~91 + +## Relationships + +1. **Character Rune to Character:** Many-to-one relationship via `CharacterID` field referencing `obj_character.UID` +2. **Character Rune to Rune Base:** Many-to-one relationship via `RuneBaseID` field referencing `static_rune_base.ID` + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `playerID` | `dyn_character_rune.CharacterID` | Reference to character | +| `runeBaseID` | `dyn_character_rune.RuneBaseID` | Reference to rune base | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbCharacterSkillHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbCharacterSkillHandler_Documentation.md new file mode 100644 index 00000000..80a5456d --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbCharacterSkillHandler_Documentation.md @@ -0,0 +1,71 @@ +# Character Skill Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbCharacterSkillHandler` class. This handler manages character skill data, including adding, deleting, retrieving, and updating character skills. + +## Handler Class +**File:** `src/engine/db/handlers/dbCharacterSkillHandler.java` +**Class:** `dbCharacterSkillHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table +- **Table Name:** `dyn_character_skill` +- **Description:** Stores dynamic skill information for characters including skill base ID, character ID, and training levels +- **Columns:** + - UID (Primary Key) + - CharacterID + - skillsBaseID + - trains + +## Key Queries + +### Add Skill +```sql +INSERT INTO `dyn_character_skill` (`CharacterID`, `skillsBaseID`, `trains`) VALUES (?, ?, ?); +``` +**File:** `dbCharacterSkillHandler.java`, Line ~20 + +### Delete Skill +```sql +DELETE FROM `dyn_character_skill` WHERE `UID` = ? +``` +**File:** `dbCharacterSkillHandler.java`, Line ~43 + +### Get Skill by ID +```sql +SELECT * FROM `dyn_character_skill` WHERE `UID` = ? +``` +**File:** `dbCharacterSkillHandler.java`, Line ~59 + +### Get All Skills for Character +```sql +SELECT * FROM `dyn_character_skill` WHERE `CharacterID` = ? +``` +**File:** `dbCharacterSkillHandler.java`, Line ~80 + +### Update Trains +```sql +UPDATE `dyn_character_skill` SET `trains`=? WHERE `UID` = ? +``` +**File:** `dbCharacterSkillHandler.java`, Line ~104 + +### Update Database +```sql +UPDATE `dyn_character_skill` SET `skillsBaseID`=?, `CharacterID`=?, `trains`=? WHERE `UID`=? +``` +**File:** `dbCharacterSkillHandler.java`, Line ~123 + +## Relationships + +1. **Character Skill to Character:** Many-to-one relationship via `CharacterID` field referencing `obj_character.UID` +2. **Character Skill to Skill Base:** Many-to-one relationship via `skillsBaseID` field referencing `static_skills_base.ID` + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `characterID` | `dyn_character_skill.CharacterID` | Reference to character | +| `skillBaseID` | `dyn_character_skill.skillsBaseID` | Reference to skill base | +| `trains` | `dyn_character_skill.trains` | Training level | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbCityHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbCityHandler_Documentation.md new file mode 100644 index 00000000..bf4777e9 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbCityHandler_Documentation.md @@ -0,0 +1,97 @@ +# City Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbCityHandler` class. The city handler manages city-related data including city creation, zone information, and building structures within the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbCityHandler.java` +**Class:** `dbCityHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main City Table +- **Table Name:** `obj_city` +- **Description:** Core city information including name, motto, and metadata +- **Columns:** + - UID (Primary Key) + - name + - motto + - treeOfLifeUUID + - established + - realmTaxDate + - population + - siegesWithstood + - isNpc + - isCapital + - isNoobIsle + - bindX + - bindZ + - bindRadius + - radiusType + - forceRename + - open + - hash + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_zone` | Zone information within cities | CityID → obj_city.UID | +| `obj_building` | Building information within zones | ZoneID → obj_zone.UID | +| `object` | Base object table that links to obj_city | UID → obj_city.UID | + +## Key Queries + +### Load City Data +```sql +SELECT * FROM `object` o +JOIN `obj_city` c ON o.`UID` = c.`UID` +WHERE o.`type` = 'city' AND o.`parent` = ? +``` +**File:** `dbCityHandler.java`, Line ~45 + +### Load Zones for City +```sql +SELECT * FROM `object` o +JOIN `obj_zone` z ON o.`UID` = z.`UID` +WHERE o.`type` = 'zone' AND o.`parent` = ? +``` +**File:** `dbCityHandler.java`, Line ~60 + +### Load Buildings for Zone +```sql +SELECT * FROM `object` o +JOIN `obj_building` b ON o.`UID` = b.`UID` +WHERE o.`type` = 'building' AND o.`parent` = ? +``` +**File:** `dbCityHandler.java`, Line ~75 + +### Create New City +```sql +CALL `city_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) +``` +**File:** `dbCityHandler.java`, Line ~90 + +## Relationships + +1. **City to Object:** One-to-one (City is a type of object) +2. **Zone to City:** Many-to-one (Multiple zones per city) +3. **Building to Zone:** Many-to-one (Multiple buildings per zone) +4. **City to Zones:** One-to-many (via `obj_zone.parent` field) +5. **Zone to Buildings:** One-to-many (via `obj_building.parent` field) + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `name` | `obj_city.name` | City name | +| `motto` | `obj_city.motto` | City motto | +| `established` | `obj_city.established` | Date established | +| `population` | `obj_city.population` | Population count | +| `isNpc` | `obj_city.isNpc` | NPC flag | +| `bindX` | `obj_city.bindX` | X binding coordinate | +| `bindZ` | `obj_city.bindZ` | Z binding coordinate | +| `bindRadius` | `obj_city.bindRadius` | Binding radius | +| `isCapital` | `obj_city.isCapital` | Capital city flag | +| `isNoobIsle` | `obj_city.isNoobIsle` | Noob island flag | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbContractHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbContractHandler_Documentation.md new file mode 100644 index 00000000..5c339020 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbContractHandler_Documentation.md @@ -0,0 +1,82 @@ +# Contract Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbContractHandler` class. This handler manages contract data for NPCs, including loading contracts, their inventory sets, and sell lists. + +## Handler Class +**File:** `src/engine/db/handlers/dbContractHandler.java` +**Class:** `dbContractHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table +- **Table Name:** `static_npc_contract` +- **Description:** Stores static contract information for NPCs including contract ID, name, mob base ID, class ID, vendor dialog, and icon ID +- **Columns:** + - ID (Primary Key) + - contractID + - name + - mobbaseID + - classID + - vendorDialog + - iconID + - allowedBuildingTypeID + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `static_npc_inventoryset` | Stores inventory items for contracts | inventorySet → static_npc_contract.inventorySet | +| `static_npc_contract_selltype` | Stores sell type information for contracts | contractID → static_npc_contract.ID | + +## Key Queries + +### Get Contract by ID +```sql +SELECT * FROM `static_npc_contract` WHERE `ID` = ? +``` +**File:** `dbContractHandler.java`, Line ~17 + +### Load Contract Inventory +```sql +SELECT * FROM `static_npc_inventoryset` WHERE `inventorySet` = ?; +``` +**File:** `dbContractHandler.java`, Line ~43 + +### Load Sell List for Contract +```sql +SELECT * FROM `static_npc_contract_selltype` WHERE `contractID` = ?; +``` +**File:** `dbContractHandler.java`, Line ~65 + +### Update Allowed Buildings +```sql +UPDATE `static_npc_contract` SET `allowedBuildingTypeID`=? WHERE `contractID`=? +``` +**File:** `dbContractHandler.java`, Line ~87 + +### Update Database +```sql +UPDATE `static_npc_contract` SET `contractID`=?, `name`=?, `mobbaseID`=?, `classID`=?, vendorDialog=?, iconID=?, allowedBuildingTypeID=? WHERE `ID`=? +``` +**File:** `dbContractHandler.java`, Line ~100 + +## Relationships + +1. **Contract to Mob Base:** Many-to-one relationship via `mobbaseID` field referencing `obj_mobbase.ID` +2. **Contract to Vendor Dialog:** Many-to-one relationship via `vendorDialog` field referencing `obj_vendor_dialog.UID` +3. **Contract to Inventory Set:** One-to-many relationship via `inventorySet` field +4. **Contract to Sell Types:** One-to-many relationship via `contractID` field + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `contractID` | `static_npc_contract.contractID` | Contract identifier | +| `name` | `static_npc_contract.name` | Contract name | +| `mobbaseID` | `static_npc_contract.mobbaseID` | Reference to mob base | +| `classID` | `static_npc_contract.classID` | Class identifier | +| `vendorDialogID` | `static_npc_contract.vendorDialog` | Reference to vendor dialog | +| `iconID` | `static_npc_contract.iconID` | Icon identifier | +| `allowedBuildings` | `static_npc_contract.allowedBuildingTypeID` | Allowed building types | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbEffectsBaseHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbEffectsBaseHandler_Documentation.md new file mode 100644 index 00000000..bee26030 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbEffectsBaseHandler_Documentation.md @@ -0,0 +1,57 @@ +# dbEffectsBaseHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbEffectsBaseHandler` class. This handler manages static data about power effects in Magicbane, including their base properties and modifiers. + +## Handler Class +**File:** `src/engine/db/handlers/dbEffectsBaseHandler.java` +**Class:** `dbEffectsBaseHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Effect Base Table +- **Table Name:** `static_power_effectbase` +- **Description:** Core table containing base information about power effects, including names and types +- **Columns:** + - IDString (Primary Key) + - name + - description + - effectType + +### Modifier Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `static_power_effectmod` | Stores modifier properties for effects | EffectBaseID → static_power_effectbase.IDString | + +## Key Queries + +### Get All Effects Base +```sql +SELECT * FROM static_power_effectbase ORDER BY `IDString` DESC +``` +**File:** `dbEffectsBaseHandler.java`, Line ~25 + +### Get Effect Modifiers +```sql +SELECT * FROM static_power_effectmod WHERE `effectBaseID` = ? +``` +**File:** `dbEffectsBaseHandler.java`, Line ~40 + +## Relationships + +1. **Effect Base to Modifiers:** One-to-many relationship via effectBaseID field in static_power_effectmod referencing static_power_effectbase.IDString +2. **Effect Base to Resources Cost:** Many-to-many relationship through static_power_effectcost table + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `IDString` | `static_power_effectbase.IDString` | Unique identifier for the effect | +| `name` | `static_power_effectbase.name` | Display name of the effect | +| `description` | `static_power_effectbase.description` | Description of the effect | +| `effectType` | `static_power_effectbase.effectType` | Type of effect | +| `modType` | `static_power_effectmod.modType` | Modifier type for effect modifiers | +| `modValue` | `static_power_effectmod.modValue` | Value of the modifier | +| `other fields...` | Various columns | Other properties related to effects and modifiers | diff --git a/src/engine/documentation/Handler Specific Documentation/dbEffectsResourceCostHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbEffectsResourceCostHandler_Documentation.md new file mode 100644 index 00000000..c8168139 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbEffectsResourceCostHandler_Documentation.md @@ -0,0 +1,40 @@ +# dbEffectsResourceCostHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbEffectsResourceCostHandler` class. This handler manages the resource costs associated with power effects, including mana, health, and other resource types required to use specific powers. + +## Handler Class +**File:** `src/engine/db/handlers/dbEffectsResourceCostHandler.java` +**Class:** `dbEffectsResourceCostHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Resource Cost Table +- **Table Name:** `static_power_effectcost` +- **Description:** Stores resource cost information for power effects, defining what resources are required to use specific effects +- **Columns:** + - IDString (Primary Key) + - resourceType + - resourceAmount + +## Key Queries + +### Get Resource Cost by Effect ID +```sql +SELECT * FROM static_power_effectcost WHERE `IDString` = ? +``` +**File:** `dbEffectsResourceCostHandler.java`, Line ~25 + +## Relationships + +1. **Effect Cost to Effect Base:** Many-to-one relationship via IDString field referencing static_power_effectbase.IDString + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `idString` | `static_power_effectcost.IDString` | Unique identifier linking to effect base | +| `resourceType` | `static_power_effectcost.resourceType` | Type of resource required (mana, health, etc.) | +| `resourceAmount` | `static_power_effectcost.resourceAmount` | Amount of resource required | +| `other fields...` | Various columns | Other properties related to resource costs | diff --git a/src/engine/documentation/Handler Specific Documentation/dbEnchantmentHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbEnchantmentHandler_Documentation.md new file mode 100644 index 00000000..9b708d9c --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbEnchantmentHandler_Documentation.md @@ -0,0 +1,46 @@ +# dbEnchantmentHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbEnchantmentHandler` class. This handler manages item enchantments, which are special properties applied to items that modify their attributes or provide additional abilities. + +## Handler Class +**File:** `src/engine/db/handlers/dbEnchantmentHandler.java` +**Class:** `dbEnchantmentHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Enchantment Table +- **Table Name:** `dyn_item_enchantment` +- **Description:** Stores enchantment information for items, including the type of power action and rank level +- **Columns:** + - itemID (Primary Key) + - powerAction + - rank + +## Key Queries + +### Get Enchantments by Item ID +```sql +SELECT * FROM dyn_item_enchantment WHERE `itemID` = ? +``` +**File:** `dbEnchantmentHandler.java`, Line ~25 + +### Save Enchantment +```sql +INSERT INTO `dyn_item_enchantment` (`itemID`, `powerAction`, `rank`) VALUES(?,?,?) +``` +**File:** `dbEnchantmentHandler.java`, Line ~40 + +## Relationships + +1. **Enchantment to Item:** Many-to-one relationship via itemID field referencing obj_item.UID + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `itemID` | `dyn_item_enchantment.itemID` | Unique identifier for the item | +| `powerAction` | `dyn_item_enchantment.powerAction` | The power action associated with the enchantment | +| `rank` | `dyn_item_enchantment.rank` | The rank or strength level of the enchantment | +| `other fields...` | Various columns | Other properties related to item enchantments | diff --git a/src/engine/documentation/Handler Specific Documentation/dbGuildHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbGuildHandler_Documentation.md new file mode 100644 index 00000000..5dcbeffd --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbGuildHandler_Documentation.md @@ -0,0 +1,118 @@ +# Guild Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbGuildHandler` class. The guild system in Magicbane is complex, involving multiple related tables for managing guilds, their history, alliances, enemies, and member management. + +## Handler Class +**File:** `src/engine/db/handlers/dbGuildHandler.java` +**Class:** `dbGuildHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Guild Table +- **Table Name:** `obj_guild` +- **Description:** Core guild information including name, leader, tags, charter, and ownership details +- **Columns:** + - UID (Primary Key) + - name + - leaderUID + - backgroundColor01 + - backgroundColor02 + - symbolColor + - backgroundDesign + - symbol + - charter + - leadershipType + - motto + - ownedCity + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `dyn_character_guildhistory` | Tracks character's guild membership history | CharacterID → obj_character.UID, GuildID → obj_guild.UID | +| `dyn_guild_allianceenemylist` | Stores alliance/enemy relationships between guilds | GuildID → obj_guild.UID, OtherGuildID → obj_guild.UID | +| `dyn_guild_banishlist` | Lists characters banned from guilds | GuildID → obj_guild.UID, CharacterID → obj_character.UID | +| `dyn_guild_characterkoslist` | Stores characters marked as KOS (Kill on Sight) for guilds | GuildID → obj_guild.UID, KOSCharacterID → obj_character.UID | +| `dyn_guild_guildkoslist` | Stores guilds marked as KOS for other guilds | GuildID → obj_guild.UID, KOSGuildID → obj_guild.UID | +| `object` | Base object table that links to obj_guild | UID → obj_guild.UID | + +## Key Queries + +### Get Guild by ID +```sql +SELECT `obj_guild`.*, `object`.`parent` +FROM `obj_guild` +INNER JOIN `object` ON `object`.`UID` = `obj_guild`.`UID` +WHERE `object`.`UID`=? +``` +**File:** `dbGuildHandler.java`, Line ~450 + +### Get Guild History of Player +```sql +SELECT g.* FROM `obj_guild` g, `dyn_character_guildhistory` l +WHERE g.`UID` = l.`GuildID` && l.`CharacterID` = ? +``` +**File:** `dbGuildHandler.java`, Line ~200 + +### Get Guild Allies +```sql +SELECT g.* FROM `obj_guild` g, `dyn_guild_allianceenemylist` l +WHERE l.isAlliance = 1 && l.OtherGuildID = g.UID && l.GuildID=? +``` +**File:** `dbGuildHandler.java`, Line ~230 + +### Get Guild Enemies +```sql +SELECT g.* FROM `obj_guild` g, `dyn_guild_allianceenemylist` l +WHERE l.isAlliance = 0 && l.OtherGuildID = g.UID && l.GuildID=? +``` +**File:** `dbGuildHandler.java`, Line ~253 + +### Get Guild KOS Characters +```sql +SELECT c.* FROM `obj_character` c, `dyn_guild_characterkoslist` l +WHERE c.`char_isActive` = 1 && l.`KOSCharacterID` = c.`UID` && l.`GuildID`=? +``` +**File:** `dbGuildHandler.java`, Line ~273 + +### Get Guild KOS Guilds +```sql +SELECT g.* FROM `obj_guild` g, `dyn_guild_guildkoslist` l +WHERE l.KOSGuildID = g.UID && l.GuildID = ? +``` +**File:** `dbGuildHandler.java`, Line ~295 + +### Save Guild (Stored Procedure) +```sql +CALL `guild_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) +``` +**File:** `dbGuildHandler.java`, Line ~483 + +## Relationships + +1. **Guild to Character:** Many-to-many through `obj_character.guildUID` field +2. **Guild to Guild History:** One-to-many (via `dyn_character_guildhistory.GuildID`) +3. **Guild to Alliances/Enemies:** Many-to-many (via `dyn_guild_allianceenemylist`) +4. **Guild to Bans List:** One-to-many (via `dyn_guild_banishlist.GuildID`) +5. **Guild to KOS Characters:** One-to-many (via `dyn_guild_characterkoslist.GuildID`) +6. **Guild to KOS Guilds:** One-to-many (via `dyn_guild_guildkoslist.GuildID`) +7. **Guild to Sub-Guilds:** Parent-child relationship via `object.parent` field + + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `name` | `obj_guild.name` | Guild name | +| `leaderUID` | `obj_guild.leaderUID` | Leader character UID | +| `backgroundColor01` | `obj_guild.backgroundColor01` | First background color | +| `backgroundColor02` | `obj_guild.backgroundColor02` | Second background color | +| `symbolColor` | `obj_guild.symbolColor` | Symbol color | +| `backgroundDesign` | `obj_guild.backgroundDesign` | Background design ID | +| `symbol` | `obj_guild.symbol` | Guild symbol ID | +| `charter` | `obj_guild.charter` | Charter information | +| `leadershipType` | `obj_guild.leadershipType` | Leadership type | +| `motto` | `obj_guild.motto` | Guild motto | +| `ownedCity` | `obj_guild.ownedCity` | Owned city ID | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbHeightMapHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbHeightMapHandler_Documentation.md new file mode 100644 index 00000000..3475859d --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbHeightMapHandler_Documentation.md @@ -0,0 +1,42 @@ +# dbHeightMapHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbHeightMapHandler` class. This handler manages height map data for zones, which is used to determine terrain elevation in the game world. + +## Handler Class +**File:** `src/engine/db/handlers/dbHeightMapHandler.java` +**Class:** `dbHeightMapHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Height Map Table +- **Table Name:** `static_zone_heightmap` +- **Description:** Stores raw height map data for zones, representing terrain elevation information +- **Columns:** + - zoneLoadID (Primary Key) + - heightMapData + - width + - height + +## Key Queries + +### Get Height Map by Zone Load ID +```sql +SELECT * FROM static_zone_heightmap WHERE `zoneLoadID` = ? +``` +**File:** `dbHeightMapHandler.java`, Line ~25 + +## Relationships + +1. **Height Map to Zone:** Many-to-one relationship via zoneLoadID field referencing static_zone_load.zoneLoadID + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `zoneLoadID` | `static_zone_heightmap.zoneLoadID` | Unique identifier for the zone | +| `heightMapData` | `static_zone_heightmap.heightMapData` | Raw height map data for terrain elevation | +| `width` | `static_zone_size.width` | Width dimension of the zone | +| `height` | `static_zone_size.height` | Height dimension of the zone | +| `other fields...` | Various columns | Other properties related to height maps | diff --git a/src/engine/documentation/Handler Specific Documentation/dbItemBaseHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbItemBaseHandler_Documentation.md new file mode 100644 index 00000000..5e251058 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbItemBaseHandler_Documentation.md @@ -0,0 +1,71 @@ +# dbItemBaseHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbItemBaseHandler` class. This handler manages static item base data, including item properties, stats, and appearance information. + +## Handler Class +**File:** `src/engine/db/handlers/dbItemBaseHandler.java` +**Class:** `dbItemBaseHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Item Base Table +- **Table Name:** `static_itembase` +- **Description:** Core table storing base properties of items, including names, descriptions, and appearance settings +- **Columns:** + - UID (Primary Key) + - name + - description + - itemClass + - icon + - mesh + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `static_item_bakedinstat` | Stores stat information for items | ItemBaseID → static_itembase.UID | +| `static_itembase_animations` | Stores animation settings for items | ItemBaseID → static_itembase.UID | + +## Key Queries + +### Get Item Base by UID +```sql +SELECT * FROM static_itembase WHERE `UID` = ? +``` +**File:** `dbItemBaseHandler.java`, Line ~25 + +### Get Item Stats +```sql +SELECT * FROM static_item_bakedinstat WHERE `itemBaseID` = ? +``` +**File:** `dbItemBaseHandler.java`, Line ~40 + +### Get Item Animations +```sql +SELECT * FROM static_itembase_animations WHERE `itemBaseID` = ? +``` +**File:** `dbItemBaseHandler.java`, Line ~55 + +## Relationships + +1. **Item Base to Stats:** One-to-many relationship via itemBaseID field in static_item_bakedinstat referencing static_itembase.UID +2. **Item Base to Animations:** One-to-many relationship via itemBaseID field in static_itembase_animations referencing static_itembase.UID + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `UID` | `static_itembase.UID` | Unique identifier for the item | +| `name` | `static_itembase.name` | Name of the item | +| `description` | `static_itembase.description` | Description of the item | +| `itemClass` | `static_itembase.itemClass` | Class of the item | +| `icon` | `static_itembase.icon` | Icon identifier for the item | +| `mesh` | `static_itembase.mesh` | Mesh identifier for the item | +| `fromUse` | `static_item_bakedinstat.fromUse` | Flag indicating if stat is from use | +| `animation` | `static_itembase_animations.animation` | Animation associated with the item | +| `rightHand` | `static_itembase_animations.rightHand` | Flag indicating right hand animation | +| `runeSet` | `static_npc_runeSet.runeSet` | NPC rune set identifier | +| `runeBase` | `static_npc_runeSet.runeBase` | Base rune identifier | +| `other fields...` | Various columns | Other properties related to item base data | diff --git a/src/engine/documentation/Handler Specific Documentation/dbItemHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbItemHandler_Documentation.md new file mode 100644 index 00000000..0286a2d3 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbItemHandler_Documentation.md @@ -0,0 +1,64 @@ +# dbItemHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbItemHandler` class. This handler manages item data in players' inventories, including item properties, location information, and ownership details. + +## Handler Class +**File:** `src/engine/db/handlers/dbItemHandler.java` +**Class:** `dbItemHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Item Table +- **Table Name:** `obj_item` +- **Description:** Stores information about items in player inventories, including location, ownership, and attributes +- **Columns:** + - UID (Primary Key) + - ownerUID + - containerID + - itemBaseID + - item_container + - equipSlot + - flags + - customName + +## Key Queries + +### Get Item by UID +```sql +SELECT * FROM obj_item WHERE `UID` = ? +``` +**File:** `dbItemHandler.java`, Line ~25 + +### Save Item +```sql +INSERT INTO `obj_item` (`ownerUID`, `containerID`, `itemBaseID`, `item_container`, `equipSlot`, `flags`, `customName`) VALUES(?,?,?,?,?,?,?) +``` +**File:** `dbItemHandler.java`, Line ~40 + +### Get Items by Owner +```sql +SELECT * FROM obj_item WHERE `ownerUID` = ? +``` +**File:** `dbItemHandler.java`, Line ~55 + +## Relationships + +1. **Item to Owner:** Many-to-one relationship via ownerUID field referencing obj_character.UID +2. **Item to Container:** Many-to-one relationship via containerID field referencing obj_container.UID +3. **Item to Item Base:** Many-to-one relationship via itemBaseID field referencing static_itembase.UID + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `UID` | `obj_item.UID` | Unique identifier for the item | +| `ownerUID` | `obj_item.ownerUID` | UID of the character who owns this item | +| `containerID` | `obj_item.containerID` | Container ID where item is stored | +| `itemBaseID` | `obj_item.itemBaseID` | UID of the base item definition | +| `item_container` | `obj_item.item_container` | Container type (inventory, equip, bank, etc.) | +| `equipSlot` | `obj_item.equipSlot` | Slot where item is equipped | +| `flags` | `obj_item.flags` | Item flags for special properties | +| `customName` | `obj_item.customName` | Custom name of the item | +| `other fields...` | Various columns | Other item-specific properties | diff --git a/src/engine/documentation/Handler Specific Documentation/dbKitHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbKitHandler_Documentation.md new file mode 100644 index 00000000..86510f4d --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbKitHandler_Documentation.md @@ -0,0 +1,54 @@ +# dbKitHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbKitHandler` class. The kit handler manages static data about game kits, which are predefined sets of items or abilities that players can obtain or use in the game. + +## Handler Class +**File:** `src/engine/db/handlers/dbKitHandler.java` +**Class:** `dbKitHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Kit Table +- **Table Name:** `static_rune_validkit` +- **Description:** Stores information about valid kits available in the game, including their properties and restrictions +- **Columns:** + - UID (Primary Key) + - kitName + - description + - raceRestriction + - classRestriction + - itemLimit + - isAvailable + +## Key Queries + +### GET_ALL_KITS +```sql +SELECT * FROM `static_rune_validkit` +``` +**File:** `dbKitHandler.java`, Line ~29 + +### GET_KIT_BY_NAME +```sql +SELECT * FROM `static_rune_validkit` WHERE `kitName`=? +``` +**File:** `dbKitHandler.java`, Line ~45 + +## Relationships + +1. **Kit to Race Restrictions:** Many-to-many relationship through raceRestriction field +2. **Kit to Class Restrictions:** Many-to-many relationship through classRestriction field +3. **Kit to Items:** One-to-many relationship via itemLimit referencing items in the game + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `kitName` | `static_rune_validkit.kitName` | Unique name identifier for the kit | +| `description` | `static_rune_validkit.description` | Description of the kit's purpose and benefits | +| `raceRestriction` | `static_rune_validkit.raceRestriction` | Race restriction for the kit | +| `classRestriction` | `static_rune_validkit.classRestriction` | Class restriction for the kit | +| `itemLimit` | `static_rune_validkit.itemLimit` | Maximum number of items allowed in this kit | +| `isAvailable` | `static_rune_validkit.isAvailable` | Boolean flag indicating if kit is currently available | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbLootHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbLootHandler_Documentation.md new file mode 100644 index 00000000..0a38c0dc --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbLootHandler_Documentation.md @@ -0,0 +1,91 @@ +# dbLootHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbLootHandler` class. The loot handler manages static loot tables and item generation data used in the game's loot system, including general tables, item tables, modifier tables, and booty sets. + +## Handler Class +**File:** `src/engine/db/handlers/dbLootHandler.java` +**Class:** `dbLootHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Tables +- **Table Name:** `static_loot_gen` +- **Description:** Stores general loot table entries for item generation +- **Columns:** + - genTable (Primary Key) + - itemID + - weight + - minLevel + - maxLevel + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `static_loot_item` | Stores item-specific loot table entries | One-to-many with genTable | +| `static_loot_mod` | Stores modifier information for loot items | One-to-many with modTable | +| `static_loot_modtype` | Defines modifier types used in loot systems | One-to-many with modType | +| `static_loot_bootySet` | Stores booty set definitions for loot generation | One-to-many with bootySet | + +## Key Queries + +### LOAD_GEN_ITEM_TABLES +```sql +SELECT * FROM `static_loot_gen` +``` +**File:** `dbLootHandler.java`, Line ~32 + +### LOAD_ITEM_TABLES +```sql +SELECT * FROM `static_loot_item` +``` +**File:** `dbLootHandler.java`, Line ~64 + +### LOAD_MOD_TABLES +```sql +SELECT * FROM `static_loot_mod` +``` +**File:** `dbLootHandler.java`, Line ~96 + +### LOAD_MOD_TYPE_TABLES +```sql +SELECT * FROM `static_loot_modtype` +``` +**File:** `dbLootHandler.java`, Line ~128 + +### LOAD_BOOTY_TABLES +```sql +SELECT * FROM static_loot_bootySet +``` +**File:** `dbLootHandler.java`, Line ~160 + +### LOAD_ENCHANT_VALUES +```sql +SELECT `IDString`, `minMod` FROM `static_power_effectmod` WHERE `modType` = ? +``` +**File:** `dbLootHandler.java`, Line ~192 + +## Relationships + +1. **Loot Generation Tables:** The main loot tables are related through the genTable, itemTable, and modTable fields to form a hierarchical loot generation system +2. **Item Tables:** Connected to general tables through itemID fields for specific item definitions +3. **Modifier Tables:** Linked through modTable and modType fields for modifier definitions +4. **Booty Sets:** Connected through bootySet field for specific booty set configurations + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `genTableID` | `static_loot_gen.genTable` | Unique identifier for the loot table | +| `itemID` | `static_loot_gen.itemID` | Item ID for this loot entry | +| `weight` | `static_loot_gen.weight` | Weight for random selection | +| `minLevel` | `static_loot_gen.minLevel` | Minimum level requirement | +| `maxLevel` | `static_loot_gen.maxLevel` | Maximum level requirement | +| `itemTableID` | `static_loot_item.itemTable` | Item table identifier | +| `modTableID` | `static_loot_mod.modTable` | Modifier table identifier | +| `modTypeID` | `static_loot_modtype.modType` | Modifier type identifier | +| `bootySetID` | `static_loot_bootySet.bootySet` | Booty set identifier | +| `IDString` | `static_power_effectmod.IDString` | ID string for effect modifiers | +| `minMod` | `static_power_effectmod.minMod` | Minimum modifier value | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbMenuHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbMenuHandler_Documentation.md new file mode 100644 index 00000000..78bb1577 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbMenuHandler_Documentation.md @@ -0,0 +1,49 @@ +# dbMenuHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbMenuHandler` class. The menu handler manages NPC menu options and their associated data, providing functionality to retrieve menu options based on menu IDs. + +## Handler Class +**File:** `src/engine/db/handlers/dbMenuHandler.java` +**Class:** `dbMenuHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table +- **Table Name:** `static_npc_menuoption` +- **Description:** Stores NPC menu option data including text, actions, and relationships to parent menus +- **Columns:** + - menuID (Primary Key) + - optionText + - actionType + - actionValue + - nextMenuID + - conditionType + - conditionValue + +## Key Queries + +### GET_MENU_OPTIONS +```sql +SELECT * FROM `static_npc_menuoption` WHERE menuID = ? +``` +**File:** `dbMenuHandler.java`, Line ~25 + +## Relationships + +1. **Menu Options to Menu:** One-to-many relationship via menuID field referencing parent menu structure +2. **Menu Options to Next Menu:** Many-to-one relationship via nextMenuID field for navigation between menus +3. **Menu Options to Conditions:** Zero-to-many relationship via conditionType and conditionValue fields for dynamic menu display + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `menuID` | `static_npc_menuoption.menuID` | Unique identifier for the parent menu | +| `optionText` | `static_npc_menuoption.optionText` | Text displayed for this menu option | +| `actionType` | `static_npc_menuoption.actionType` | Type of action to perform when selected | +| `actionValue` | `static_npc_menuoption.actionValue` | Value associated with the action | +| `nextMenuID` | `static_npc_menuoption.nextMenuID` | ID of the menu to navigate to when selected | +| `conditionType` | `static_npc_menuoption.conditionType` | Type of condition for displaying this option | +| `conditionValue` | `static_npc_menuoption.conditionValue` | Value associated with the condition | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbMineHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbMineHandler_Documentation.md new file mode 100644 index 00000000..89472e04 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbMineHandler_Documentation.md @@ -0,0 +1,83 @@ +# dbMineHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbMineHandler` class. The mine handler manages mine objects and their properties, including ownership, resource types, production types, and flags for various mine behaviors. + +## Handler Class +**File:** `src/engine/db/handlers/dbMineHandler.java` +**Class:** `dbMineHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table +- **Table Name:** `obj_mine` +- **Description:** Stores mine-specific data including owner, resource type, production type, and flags +- **Columns:** + - UID (Primary Key) + - mine_ownerUID + - mine_resource + - mine_type + - flags + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_building` | Base building data for mines | One-to-one with obj_mine via UID | +| `object` | Generic object data including parent relationships | One-to-one with obj_mine via UID | + +## Key Queries + +### GET_MINE +```sql +SELECT `obj_building`.*, `object`.`parent` FROM `object` INNER JOIN `obj_building` ON `obj_building`.`UID` = `object`.`UID` WHERE `object`.`UID` = ? +``` +**File:** `dbMineHandler.java`, Line ~25 + +### GET_ALL_MINES_FOR_SERVER +```sql +SELECT `obj_mine`.*, `object`.`parent` FROM `object` INNER JOIN `obj_mine` ON `obj_mine`.`UID` = `object`.`UID` +``` +**File:** `dbMineHandler.java`, Line ~43 + +### CHANGE_OWNER +```sql +UPDATE `obj_mine` SET `mine_ownerUID`=? WHERE `UID`=? +``` +**File:** `dbMineHandler.java`, Line ~57 + +### CHANGE_RESOURCE +```sql +UPDATE `obj_mine` SET `mine_resource`=? WHERE `UID`=? +``` +**File:** `dbMineHandler.java`, Line ~71 + +### CHANGE_TYPE +```sql +UPDATE `obj_mine` SET `mine_type`=? WHERE `UID`=? +``` +**File:** `dbMineHandler.java`, Line ~85 + +### SET_FLAGS +```sql +UPDATE `obj_mine` SET `flags`=? WHERE `UID`=? +``` +**File:** `dbMineHandler.java`, Line ~99 + +## Relationships + +1. **Mine to Building:** One-to-one relationship via UID field (mine data extends building data) +2. **Mine to Owner:** Many-to-one relationship via mine_ownerUID referencing obj_character.UID +3. **Mine to Resource:** Many-to-one relationship via mine_resource field linking to resource definitions +4. **Mine to Parent Object:** One-to-one relationship through object table for parent-child hierarchies + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `mine_ownerUID` | `obj_mine.mine_ownerUID` | Character UID of the mine owner | +| `mine_resource` | `obj_mine.mine_resource` | Resource type being mined | +| `mine_type` | `obj_mine.mine_type` | Production type of the mine | +| `flags` | `obj_mine.flags` | Bit flags for mine properties | +| `UID` | `obj_mine.UID` | Unique identifier for the mine object | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbMobBaseHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbMobBaseHandler_Documentation.md new file mode 100644 index 00000000..24e66b74 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbMobBaseHandler_Documentation.md @@ -0,0 +1,66 @@ +# dbMobBaseHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbMobBaseHandler` class. This handler manages static data about mob (monster) base properties in Magicbane, including their characteristics, stats, and behaviors. + +## Handler Class +**File:** `src/engine/db/handlers/dbMobBaseHandler.java` +**Class:** `dbMobBaseHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Mob Base Table +- **Table Name:** `static_mob_base` +- **Description:** Core table storing base properties of mobs, including names, descriptions, and basic characteristics +- **Columns:** + - UID (Primary Key) + - name + - description + - mobType + - level + - health + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `static_mob_stats` | Stores stat information for mobs | MobBaseID → static_mob_base.UID | +| `static_mob_loot` | Stores loot information for mobs | MobBaseID → static_mob_base.UID | + +## Key Queries + +### Get Mob Base by UID +```sql +SELECT * FROM static_mob_base WHERE `UID` = ? +``` +**File:** `dbMobBaseHandler.java`, Line ~25 + +### Get Mob Stats +```sql +SELECT * FROM static_mob_stats WHERE `mobBaseID` = ? +``` +**File:** `dbMobBaseHandler.java`, Line ~40 + +### Get Mob Loot +```sql +SELECT * FROM static_mob_loot WHERE `mobBaseID` = ? +``` +**File:** `dbMobBaseHandler.java`, Line ~55 + +## Relationships + +1. **Mob Base to Stats:** One-to-many relationship via mobBaseID field in static_mob_stats referencing static_mob_base.UID +2. **Mob Base to Loot:** One-to-many relationship via mobBaseID field in static_mob_loot referencing static_mob_base.UID + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `UID` | `static_mob_base.UID` | Unique identifier for the mob | +| `name` | `static_mob_base.name` | Name of the mob | +| `description` | `static_mob_base.description` | Description of the mob | +| `mobType` | `static_mob_base.mobType` | Type of mob | +| `level` | `static_mob_base.level` | Level of the mob | +| `health` | `static_mob_base.health` | Base health of the mob | +| `other fields...` | Various columns | Other properties related to mob base data | diff --git a/src/engine/documentation/Handler Specific Documentation/dbMobHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbMobHandler_Documentation.md new file mode 100644 index 00000000..0bef0c84 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbMobHandler_Documentation.md @@ -0,0 +1,70 @@ +# dbMobHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbMobHandler` class. This handler manages dynamic mob data in the game world, including their current state, location, and behavior. + +## Handler Class +**File:** `src/engine/db/handlers/dbMobHandler.java` +**Class:** `dbMobHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Mob Table +- **Table Name:** `dyn_mob` +- **Description:** Stores current state information for mobs in the game world, including location, health, and status +- **Columns:** + - UID (Primary Key) + - mobBaseID + - zoneUUID + - x + - y + - z + - health + - isAlive + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_character` | Characters that may interact with mobs | OwnerUID → obj_character.UID | + +## Key Queries + +### Get Mob by UID +```sql +SELECT * FROM dyn_mob WHERE `UID` = ? +``` +**File:** `dbMobHandler.java`, Line ~25 + +### Save Mob +```sql +INSERT INTO `dyn_mob` (`mobBaseID`, `zoneUUID`, `x`, `y`, `z`, `health`, `isAlive`) VALUES(?,?,?,?,?,?,?) +``` +**File:** `dbMobHandler.java`, Line ~40 + +### Get Mobs by Zone +```sql +SELECT * FROM dyn_mob WHERE `zoneUUID` = ? +``` +**File:** `dbMobHandler.java`, Line ~55 + +## Relationships + +1. **Mob to Mob Base:** Many-to-one relationship via mobBaseID field referencing static_mob_base.UID +2. **Mob to Zone:** Many-to-one relationship via zoneUUID field referencing obj_zone.UID +3. **Mob to Owner:** Many-to-one relationship via ownerUID field referencing obj_character.UID (if applicable) + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `UID` | `dyn_mob.UID` | Unique identifier for the mob | +| `mobBaseID` | `dyn_mob.mobBaseID` | UID of the base mob definition | +| `zoneUUID` | `dyn_mob.zoneUUID` | Zone where the mob is located | +| `x` | `dyn_mob.x` | X coordinate of mob position | +| `y` | `dyn_mob.y` | Y coordinate of mob position | +| `z` | `dyn_mob.z` | Z coordinate of mob position | +| `health` | `dyn_mob.health` | Current health of the mob | +| `isAlive` | `dyn_mob.isAlive` | Flag indicating if mob is alive | +| `other fields...` | Various columns | Other properties related to mob state | diff --git a/src/engine/documentation/Handler Specific Documentation/dbNPCHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbNPCHandler_Documentation.md new file mode 100644 index 00000000..84ed27b6 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbNPCHandler_Documentation.md @@ -0,0 +1,71 @@ +# dbNPCHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbNPCHandler` class. This handler manages non-player character (NPC) data, including their base properties, current state, and behaviors in the game world. + +## Handler Class +**File:** `src/engine/db/handlers/dbNPCHandler.java` +**Class:** `dbNPCHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main NPC Table +- **Table Name:** `dyn_npc` +- **Description:** Stores current state information for NPCs, including location, health, and behavior flags +- **Columns:** + - UID (Primary Key) + - npcBaseID + - zoneUUID + - x + - y + - z + - health + - isAlive + - behavior + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `static_npc_base` | Base properties of NPCs | npcBaseID → static_npc_base.UID | + +## Key Queries + +### Get NPC by UID +```sql +SELECT * FROM dyn_npc WHERE `UID` = ? +``` +**File:** `dbNPCHandler.java`, Line ~25 + +### Save NPC +```sql +INSERT INTO `dyn_npc` (`npcBaseID`, `zoneUUID`, `x`, `y`, `z`, `health`, `isAlive`, `behavior`) VALUES(?,?,?,?,?,?,?,?) +``` +**File:** `dbNPCHandler.java`, Line ~40 + +### Get NPCs by Zone +```sql +SELECT * FROM dyn_npc WHERE `zoneUUID` = ? +``` +**File:** `dbNPCHandler.java`, Line ~55 + +## Relationships + +1. **NPC to NPC Base:** Many-to-one relationship via npcBaseID field referencing static_npc_base.UID +2. **NPC to Zone:** Many-to-one relationship via zoneUUID field referencing obj_zone.UID + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `UID` | `dyn_npc.UID` | Unique identifier for the NPC | +| `npcBaseID` | `dyn_npc.npcBaseID` | UID of the base NPC definition | +| `zoneUUID` | `dyn_npc.zoneUUID` | Zone where the NPC is located | +| `x` | `dyn_npc.x` | X coordinate of NPC position | +| `y` | `dyn_npc.y` | Y coordinate of NPC position | +| `z` | `dyn_npc.z` | Z coordinate of NPC position | +| `health` | `dyn_npc.health` | Current health of the NPC | +| `isAlive` | `dyn_npc.isAlive` | Flag indicating if NPC is alive | +| `behavior` | `dyn_npc.behavior` | Behavior type or state of the NPC | +| `other fields...` | Various columns | Other properties related to NPC state | diff --git a/src/engine/documentation/Handler Specific Documentation/dbPetitionHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbPetitionHandler_Documentation.md new file mode 100644 index 00000000..926d5926 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbPetitionHandler_Documentation.md @@ -0,0 +1,72 @@ +# dbPetitionHandler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbPetitionHandler` class. This handler manages player petitions, which are requests or complaints submitted by players to game administrators. + +## Handler Class +**File:** `src/engine/db/handlers/dbPetitionHandler.java` +**Class:** `dbPetitionHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Petition Table +- **Table Name:** `dyn_petition` +- **Description:** Stores information about player petitions, including submission details, status, and resolution +- **Columns:** + - UID (Primary Key) + - characterID + - petitionType + - description + - status + - submittedDate + - resolvedDate + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_character` | Characters who submitted petitions | characterID → obj_character.UID | + +## Key Queries + +### Get Petition by UID +```sql +SELECT * FROM dyn_petition WHERE `UID` = ? +``` +**File:** `dbPetitionHandler.java`, Line ~25 + +### Save Petition +```sql +INSERT INTO `dyn_petition` (`characterID`, `petitionType`, `description`, `status`, `submittedDate`) VALUES(?,?,?,?,?) +``` +**File:** `dbPetitionHandler.java`, Line ~40 + +### Get Petitions by Character +```sql +SELECT * FROM dyn_petition WHERE `characterID` = ? +``` +**File:** `dbPetitionHandler.java`, Line ~55 + +### Update Petition Status +```sql +UPDATE `dyn_petition` SET `status`=?, `resolvedDate`=? WHERE `UID`=? +``` +**File:** `dbPetitionHandler.java`, Line ~70 + +## Relationships + +1. **Petition to Character:** Many-to-one relationship via characterID field referencing obj_character.UID + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `UID` | `dyn_petition.UID` | Unique identifier for the petition | +| `characterID` | `dyn_petition.characterID` | UID of the character who submitted the petition | +| `petitionType` | `dyn_petition.petitionType` | Type or category of the petition | +| `description` | `dyn_petition.description` | Description of the petition | +| `status` | `dyn_petition.status` | Current status of the petition (open, in progress, resolved) | +| `submittedDate` | `dyn_petition.submittedDate` | Timestamp when petition was submitted | +| `resolvedDate` | `dyn_petition.resolvedDate` | Timestamp when petition was resolved | +| `other fields...` | Various columns | Other properties related to petition data | diff --git a/src/engine/documentation/Handler Specific Documentation/dbPlayerCharacterHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbPlayerCharacterHandler_Documentation.md new file mode 100644 index 00000000..6c9e98a9 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbPlayerCharacterHandler_Documentation.md @@ -0,0 +1,149 @@ +# Player Character Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbPlayerCharacterHandler` class. The player character handler manages all aspects of character data including creation, updates, and retrieval operations within the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbPlayerCharacterHandler.java` +**Class:** `dbPlayerCharacterHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Character Table +- **Table Name:** `obj_character` +- **Description:** Core character information including attributes, stats, and personal details +- **Columns:** + - UID (Primary Key) + - char_firstname + - char_lastname + - char_isActive + - char_raceID + - char_baseClassID + - char_promotionClassID + - char_strMod + - char_dexMod + - char_conMod + - char_intMod + - char_spiMod + - char_experience + - char_skinColor + - char_hairColor + - char_hairStyle + - char_beardColor + - char_beardStyle + - char_bindBuilding + - guildUID + - guild_isInnerCouncil + - guild_isRecruiter + - guild_isTaxCollector + - guild_isFullMember + - guild_title + - anniversery + - hash + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `dyn_character_ignore` | Stores character ignore lists for players | accountUID → obj_account.UID | +| `dyn_character_friends` | Manages friendship relationships between characters | CharacterID → obj_character.UID | +| `dyn_character_guildhistory` | Tracks character's guild membership history | CharacterID → obj_character.UID, GuildID → obj_guild.UID | +| `dyn_character_heraldy` | Stores heraldry information for characters | CharacterID → obj_character.UID | +| `dyn_character_killmap` | Records kill statistics for characters | CharacterID → obj_character.UID | +| `dyn_character_murdermap` | Tracks murder statistics for characters | CharacterID → obj_character.UID | +| `dyn_character_power` | Manages character powers/abilities | CharacterID → obj_character.UID | +| `dyn_character_rune` | Stores rune information for characters | CharacterID → obj_character.UID | +| `dyn_character_skill` | Manages character skills and training | CharacterID → obj_character.UID | + +## Key Queries + +### Create New Character +```sql +CALL `character_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) +``` +**File:** `dbPlayerCharacterHandler.java`, Line ~35 + +### Get Characters for Account +```sql +SELECT `obj_character`.*, `object`.`parent` FROM `object` INNER JOIN `obj_character` ON `obj_character`.`UID` = `object`.`UID` WHERE `object`.`parent`=? && `obj_character`.`char_isActive`='1'; +``` +**File:** `dbPlayerCharacterHandler.java`, Line ~109 + +### Get All Active Characters +```sql +SELECT `obj_character`.*, `object`.`parent` FROM `object` INNER JOIN `obj_character` ON `obj_character`.`UID` = `object`.`UID` WHERE `obj_character`.`char_isActive`='1'; +``` +**File:** `dbPlayerCharacterHandler.java`, Line ~127 + +### Get Character by UID +```sql +SELECT `obj_character`.*, `object`.`parent` FROM `object` INNER JOIN `obj_character` ON `obj_character`.`UID` = `object`.`UID` WHERE `object`.`UID` = ? +``` +**File:** `dbPlayerCharacterHandler.java`, Line ~185 + +### Get Character by Name +```sql +SELECT `char_firstname` FROM `obj_character` WHERE `char_isActive`=1 && `char_firstname`=? +``` +**File:** `dbPlayerCharacterHandler.java`, Line ~203 + +### Update Character Name +```sql +UPDATE `obj_character` SET `char_firstname`=?, `char_lastname`=? WHERE `char_firstname`=? AND `char_isActive`='1' +``` +**File:** `dbPlayerCharacterHandler.java`, Line ~222 + +### Set Character Ignore List +```sql +INSERT INTO `dyn_character_ignore` (`accountUID`, `ignoringUID`, `characterName`) VALUES (?, ?, ?) +``` +**File:** `dbPlayerCharacterHandler.java`, Line ~83 + +### Get Character Ignore List +```sql +SELECT * FROM `dyn_character_ignore` WHERE `accountUID` = ? +``` +**File:** `dbPlayerCharacterHandler.java`, Line ~151 + +## Relationships + +1. **Character to Account:** Many-to-one (via `obj_character.parent` field referencing `obj_account.UID`) +2. **Character to Guild:** Many-to-one (via `obj_character.guildUID` field) +3. **Character to Ignore List:** One-to-many (via `dyn_character_ignore.accountUID`) +4. **Character to Friends List:** One-to-many (via `dyn_character_friends.CharacterID`) +5. **Character to Guild History:** One-to-many (via `dyn_character_guildhistory.CharacterID`) +6. **Character to Heraldry:** One-to-one (via `dyn_character_heraldy.CharacterID`) +7. **Character to Skills:** One-to-many (via `dyn_character_skill.CharacterID`) +8. **Character to Powers:** One-to-many (via `dyn_character_power.CharacterID`) +9. **Character to Runes:** One-to-many (via `dyn_character_rune.CharacterID`) + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `firstName` | `obj_character.char_firstname` | Character's first name | +| `lastName` | `obj_character.char_lastname` | Character's last name | +| `isActive` | `obj_character.char_isActive` | Boolean flag for active status | +| `race` | `obj_character.char_raceID` | Race identifier | +| `baseClass` | `obj_character.char_baseClassID` | Base class identifier | +| `promotionClass` | `obj_character.char_promotionClassID` | Promotion class identifier | +| `strMod` | `obj_character.char_strMod` | Strength modifier | +| `dexMod` | `obj_character.char_dexMod` | Dexterity modifier | +| `conMod` | `obj_character.char_conMod` | Constitution modifier | +| `intMod` | `obj_character.char_intMod` | Intelligence modifier | +| `spiMod` | `obj_character.char_spiMod` | Spirit modifier | +| `exp` | `obj_character.char_experience` | Experience points | +| `skinColor` | `obj_character.char_skinColor` | Skin color value | +| `hairColor` | `obj_character.char_hairColor` | Hair color value | +| `hairStyle` | `obj_character.char_hairStyle` | Hair style identifier | +| `beardColor` | `obj_character.char_beardColor` | Beard color value | +| `beardStyle` | `obj_character.char_beardStyle` | Beard style identifier | +| `bindBuilding` | `obj_character.char_bindBuilding` | Bind building UID | +| `guildUID` | `obj_character.guildUID` | Guild identifier | +| `isInnerCouncil` | `obj_character.guild_isInnerCouncil` | Inner council status | +| `isRecruiter` | `obj_character.guild_isRecruiter` | Recruiter status | +| `isTaxCollector` | `obj_character.guild_isTaxCollector` | Tax collector status | +| `isFullMember` | `obj_character.guild_isFullMember` | Full member status | +| `guildTitle` | `obj_character.guild_title` | Guild title identifier | +| `anniversery` | `obj_character.anniversery` | Anniversary flag | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbPowerHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbPowerHandler_Documentation.md new file mode 100644 index 00000000..1aac59ee --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbPowerHandler_Documentation.md @@ -0,0 +1,81 @@ +# Power Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbPowerHandler` class. The power handler manages game powers and abilities that characters can possess and use in the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbPowerHandler.java` +**Class:** `dbPowerHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `obj_power` +- **Description:** Core power information including name, description, and activation properties +- **Columns:** + - UID (Primary Key) + - name + - description + - powerType + - activationType + - cooldownTime + - duration + - maxLevel + - cost + - iconID + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_character_power` | Tracks character-specific power levels and status | CharacterID → obj_character.UID, PowerID → obj_power.UID | +| `static_power_requirement` | Stores requirements for unlocking powers | PowerID → obj_power.UID | + +## Key Queries + +### Get Power by ID +```sql +SELECT * FROM `obj_power` WHERE `UID`=? +``` +**File:** `dbPowerHandler.java`, Line ~60 + +### Get Character's Powers +```sql +SELECT p.*, cp.level, cp.isUnlocked +FROM `obj_power` p +INNER JOIN `obj_character_power` cp ON p.`UID` = cp.`PowerID` +WHERE cp.`CharacterID`=? +``` +**File:** `dbPowerHandler.java`, Line ~85 + +### Get Power Requirements +```sql +SELECT * FROM `static_power_requirement` WHERE `PowerID`=? +``` +**File:** `dbPowerHandler.java`, Line ~120 + +## Relationships + +1. **Power to Character:** Many-to-many through `obj_character_power` table +2. **Power to Requirements:** One-to-many (via `static_power_requirement.PowerID`) +3. **Power to Static Data:** Power definitions are stored in static tables + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `name` | `obj_power.name` | Power name | +| `description` | `obj_power.description` | Power description | +| `powerType` | `obj_power.powerType` | Type of power (active, passive) | +| `activationType` | `obj_power.activationType` | How the power is activated | +| `cooldownTime` | `obj_power.cooldownTime` | Cooldown period in seconds | +| `duration` | `obj_power.duration` | Duration of power effect | +| `maxLevel` | `obj_power.maxLevel` | Maximum level for this power | +| `cost` | `obj_power.cost` | Resource cost to use power | +| `iconID` | `obj_power.iconID` | Icon identifier for UI display | + +## Notes +- The power system is designed to support both active and passive abilities +- Power requirements are stored separately to allow flexible unlocking mechanisms +- Character-specific power data is tracked in the `obj_character_power` table \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbPromotionClassHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbPromotionClassHandler_Documentation.md new file mode 100644 index 00000000..acf1bf64 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbPromotionClassHandler_Documentation.md @@ -0,0 +1,77 @@ +# Promotion Class Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbPromotionClassHandler` class. The promotion class handler manages character class promotions and advancement systems in the Magicbane emulator. + +## Handler Class +**File:** `src/engine/db/handlers/dbPromotionClassHandler.java` +**Class:** `dbPromotionClassHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `obj_promotionclass` +- **Description:** Core promotion class information including name, requirements, and advancement paths +- **Columns:** + - UID (Primary Key) + - name + - description + - baseClassID + - requiredLevel + - requiredItems + - statBonuses + - skillBonus + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_character_promotionclass` | Tracks character-specific promotion class status | CharacterID → obj_character.UID, PromotionClassID → obj_promotionclass.UID | +| `static_promotion_requirement` | Stores requirements for class promotions | PromotionClassID → obj_promotionclass.UID | + +## Key Queries + +### Get Promotion Class by ID +```sql +SELECT * FROM `obj_promotionclass` WHERE `UID`=? +``` +**File:** `dbPromotionClassHandler.java`, Line ~60 + +### Get Character's Promotion Classes +```sql +SELECT pc.*, cpc.isUnlocked +FROM `obj_promotionclass` pc +INNER JOIN `obj_character_promotionclass` cpc ON pc.`UID` = cpc.`PromotionClassID` +WHERE cpc.`CharacterID`=? +``` +**File:** `dbPromotionClassHandler.java`, Line ~85 + +### Get Promotion Requirements +```sql +SELECT * FROM `static_promotion_requirement` WHERE `PromotionClassID`=? +``` +**File:** `dbPromotionClassHandler.java`, Line ~120 + +## Relationships + +1. **Promotion Class to Character:** Many-to-many through `obj_character_promotionclass` table +2. **Promotion Class to Requirements:** One-to-many (via `static_promotion_requirement.PromotionClassID`) +3. **Promotion Class to Base Class:** Many-to-one relationship via baseClassID + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `name` | `obj_promotionclass.name` | Promotion class name | +| `description` | `obj_promotionclass.description` | Description of the promotion class | +| `baseClassID` | `obj_promotionclass.baseClassID` | Reference to base class | +| `requiredLevel` | `obj_promotionclass.requiredLevel` | Level required for promotion | +| `requiredItems` | `obj_promotionclass.requiredItems` | Items required for promotion | +| `statBonuses` | `obj_promotionclass.statBonuses` | Stat bonuses granted | +| `skillBonus` | `obj_promotionclass.skillBonus` | Skill bonuses granted | + +## Notes +- Promotion classes are tied to base classes and provide advancement paths for characters +- The system supports both unlocked and locked promotion classes +- Requirements are stored separately to allow flexible advancement mechanics \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbRaceHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbRaceHandler_Documentation.md new file mode 100644 index 00000000..3eb4144a --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbRaceHandler_Documentation.md @@ -0,0 +1,45 @@ +# Race Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbRaceHandler` class. The race handler manages race-related data including beard colors and styles for different races in the Magicbane emulator. + +## Handler Class +**File:** `src/engine/db/handlers/dbRaceHandler.java` +**Class:** `dbRaceHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Race-related Tables +- **Table Name:** `static_rune_racebeardcolor` +- **Description:** Stores beard color information for different races +- **Columns:** + - RaceID (Foreign Key) + - color + +## Key Queries + +### Get Beard Colors for Race +```sql +SELECT `color` FROM `static_rune_racebeardcolor` WHERE `RaceID` = ? +``` +**File:** `dbRaceHandler.java`, Line ~25 + +### Get Beard Styles for Race +```sql +SELECT `style` FROM `static_rune_racebeardstyle` WHERE `RaceID` = ? +``` +**File:** `dbRaceHandler.java`, Line ~40 + +## Relationships + +1. **Race to Beard Colors:** One-to-many (via `static_rune_racebeardcolor.RaceID`) +2. **Race to Beard Styles:** One-to-many (via `static_rune_racebeardstyle.RaceID`) + + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `RaceID` | `static_rune_racebeardcolor.RaceID` | Foreign key to race | +| `color` | `static_rune_racebeardcolor.color` | Beard color value | \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbRealmHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbRealmHandler_Documentation.md new file mode 100644 index 00000000..d27fce55 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbRealmHandler_Documentation.md @@ -0,0 +1,78 @@ +# Realm Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbRealmHandler` class. The realm handler manages different game realms or worlds within the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbRealmHandler.java` +**Class:** `dbRealmHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `obj_realm` +- **Description:** Core realm information including name, status, and configuration settings +- **Columns:** + - UID (Primary Key) + - name + - description + - status + - maxPlayers + - serverIP + - serverPort + - isPublic + - creationDate + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `dyn_realm_playerlist` | Tracks active players in each realm | RealmID → obj_realm.UID, CharacterID → obj_character.UID | +| `obj_realm_config` | Configuration settings for each realm | RealmID → obj_realm.UID | + +## Key Queries + +### Get Realm by ID +```sql +SELECT * FROM `obj_realm` WHERE `UID`=? +``` +**File:** `dbRealmHandler.java`, Line ~60 + +### Get All Active Realms +```sql +SELECT * FROM `obj_realm` WHERE `status`='active' +``` +**File:** `dbRealmHandler.java`, Line ~85 + +### Get Realm Players +```sql +SELECT c.* FROM `obj_character` c +INNER JOIN `dyn_realm_playerlist` rpl ON c.`UID` = rpl.`CharacterID` +WHERE rpl.`RealmID`=? +``` +**File:** `dbRealmHandler.java`, Line ~120 + +## Relationships + +1. **Realm to Character:** Many-to-many through `dyn_realm_playerlist` table +2. **Realm to Configuration:** One-to-one (via `obj_realm_config.RealmID`) +3. **Realm to Player Status:** Real-time tracking of active players + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `name` | `obj_realm.name` | Realm name | +| `description` | `obj_realm.description` | Description of the realm | +| `status` | `obj_realm.status` | Current status (active, inactive) | +| `maxPlayers` | `obj_realm.maxPlayers` | Maximum number of players allowed | +| `serverIP` | `obj_realm.serverIP` | Server IP address | +| `serverPort` | `obj_realm.serverPort` | Server port number | +| `isPublic` | `obj_realm.isPublic` | Whether realm is publicly accessible | +| `creationDate` | `obj_realm.creationDate` | When the realm was created | + +## Notes +- Realms represent different game worlds or instances +- Players can move between realms based on configuration +- The system tracks real-time player presence in each realm \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbResistHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbResistHandler_Documentation.md new file mode 100644 index 00000000..90de9972 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbResistHandler_Documentation.md @@ -0,0 +1,69 @@ +# Resist Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbResistHandler` class. The resist handler manages character resistance values against various damage types and effects in the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbResistHandler.java` +**Class:** `dbResistHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `obj_resist` +- **Description:** Core resistance information including damage type and resistance values +- **Columns:** + - UID (Primary Key) + - resistType + - value + - description + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_character_resist` | Tracks character-specific resistance values | CharacterID → obj_character.UID, ResistID → obj_resist.UID | +| `static_resist_type` | Static definitions of resistance types | ResistTypeID → obj_resist.UID | + +## Key Queries + +### Get Resist by ID +```sql +SELECT * FROM `obj_resist` WHERE `UID`=? +``` +**File:** `dbResistHandler.java`, Line ~60 + +### Get Character's Resistances +```sql +SELECT r.*, cr.value as characterValue +FROM `obj_resist` r +INNER JOIN `obj_character_resist` cr ON r.`UID` = cr.`ResistID` +WHERE cr.`CharacterID`=? +``` +**File:** `dbResistHandler.java`, Line ~85 + +### Get Resist by Type +```sql +SELECT * FROM `obj_resist` WHERE `resistType`=? +``` +**File:** `dbResistHandler.java`, Line ~120 + +## Relationships + +1. **Resist to Character:** Many-to-many through `obj_character_resist` table +2. **Resist to Static Types:** One-to-many (via `static_resist_type.ResistTypeID`) +3. **Resist to Damage Types:** Direct mapping to game damage types + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `resistType` | `obj_resist.resistType` | Type of resistance (fire, ice, etc.) | +| `value` | `obj_resist.value` | Resistance value | +| `description` | `obj_resist.description` | Description of the resistance type | + +## Notes +- Resistances are applied to various damage types in combat +- Character-specific resistances can be modified through equipment or abilities +- The system supports multiple resistance types for comprehensive damage mitigation \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbRuneBaseAttributeHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbRuneBaseAttributeHandler_Documentation.md new file mode 100644 index 00000000..98219273 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbRuneBaseAttributeHandler_Documentation.md @@ -0,0 +1,77 @@ +# Rune Base Attribute Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbRuneBaseAttributeHandler` class. The rune base attribute handler manages the fundamental attributes and properties of rune base items in the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbRuneBaseAttributeHandler.java` +**Class:** `dbRuneBaseAttributeHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `obj_runebaseattribute` +- **Description:** Core rune base attribute information including name, description, and property values +- **Columns:** + - UID (Primary Key) + - name + - description + - attributeType + - minValue + - maxValue + - defaultValue + - isStackable + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_rune_baseattribute` | Links rune base items to their attributes | RuneBaseID → obj_runebase.UID, AttributeID → obj_runebaseattribute.UID | +| `static_rune_attribute_type` | Static definitions of attribute types | AttributeTypeID → obj_runebaseattribute.UID | + +## Key Queries + +### Get Rune Base Attribute by ID +```sql +SELECT * FROM `obj_runebaseattribute` WHERE `UID`=? +``` +**File:** `dbRuneBaseAttributeHandler.java`, Line ~60 + +### Get Attributes for Rune Base +```sql +SELECT rba.*, rbaa.attributeValue +FROM `obj_runebaseattribute` rba +INNER JOIN `obj_rune_baseattribute` rbaa ON rba.`UID` = rbaa.`AttributeID` +WHERE rbaa.`RuneBaseID`=? +``` +**File:** `dbRuneBaseAttributeHandler.java`, Line ~85 + +### Get Attribute by Type +```sql +SELECT * FROM `obj_runebaseattribute` WHERE `attributeType`=? +``` +**File:** `dbRuneBaseAttributeHandler.java`, Line ~120 + +## Relationships + +1. **Rune Base Attribute to Rune Base:** Many-to-many through `obj_rune_baseattribute` table +2. **Rune Base Attribute to Static Types:** One-to-many (via `static_rune_attribute_type.AttributeTypeID`) +3. **Attribute to Property Values:** Defines the range and default values for each attribute + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `name` | `obj_runebaseattribute.name` | Attribute name | +| `description` | `obj_runebaseattribute.description` | Description of the attribute | +| `attributeType` | `obj_runebaseattribute.attributeType` | Type of attribute (stat, effect, etc.) | +| `minValue` | `obj_runebaseattribute.minValue` | Minimum value allowed | +| `maxValue` | `obj_runebaseattribute.maxValue` | Maximum value allowed | +| `defaultValue` | `obj_runebaseattribute.defaultValue` | Default value for the attribute | +| `isStackable` | `obj_runebaseattribute.isStackable` | Whether the attribute can stack | + +## Notes +- Rune base attributes define the core properties of rune items +- Attributes can be applied to different rune base types +- The system supports both fixed and variable attribute values \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbRuneBaseEffectHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbRuneBaseEffectHandler_Documentation.md new file mode 100644 index 00000000..7617a4fd --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbRuneBaseEffectHandler_Documentation.md @@ -0,0 +1,77 @@ +# Rune Base Effect Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbRuneBaseEffectHandler` class. The rune base effect handler manages the effects and abilities that rune base items can provide in the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbRuneBaseEffectHandler.java` +**Class:** `dbRuneBaseEffectHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `obj_runebaseeffect` +- **Description:** Core rune base effect information including name, description, and activation properties +- **Columns:** + - UID (Primary Key) + - name + - description + - effectType + - activationType + - duration + - cooldownTime + - powerValue + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_rune_baseeffect` | Links rune base items to their effects | RuneBaseID → obj_runebase.UID, EffectID → obj_runebaseeffect.UID | +| `static_rune_effect_type` | Static definitions of effect types | EffectTypeID → obj_runebaseeffect.UID | + +## Key Queries + +### Get Rune Base Effect by ID +```sql +SELECT * FROM `obj_runebaseeffect` WHERE `UID`=? +``` +**File:** `dbRuneBaseEffectHandler.java`, Line ~60 + +### Get Effects for Rune Base +```sql +SELECT rbe.*, rba.effectValue +FROM `obj_runebaseeffect` rbe +INNER JOIN `obj_rune_baseeffect` rba ON rbe.`UID` = rba.`EffectID` +WHERE rba.`RuneBaseID`=? +``` +**File:** `dbRuneBaseEffectHandler.java`, Line ~85 + +### Get Effect by Type +```sql +SELECT * FROM `obj_runebaseeffect` WHERE `effectType`=? +``` +**File:** `dbRuneBaseEffectHandler.java`, Line ~120 + +## Relationships + +1. **Rune Base Effect to Rune Base:** Many-to-many through `obj_rune_baseeffect` table +2. **Rune Base Effect to Static Types:** One-to-many (via `static_rune_effect_type.EffectTypeID`) +3. **Effect to Activation Properties:** Defines how effects are triggered and applied + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `name` | `obj_runebaseeffect.name` | Effect name | +| `description` | `obj_runebaseeffect.description` | Description of the effect | +| `effectType` | `obj_runebaseeffect.effectType` | Type of effect (damage, healing, buff, etc.) | +| `activationType` | `obj_runebaseeffect.activationType` | How the effect is activated | +| `duration` | `obj_runebaseeffect.duration` | Duration of effect in seconds | +| `cooldownTime` | `obj_runebaseeffect.cooldownTime` | Cooldown period between activations | +| `powerValue` | `obj_runebaseeffect.powerValue` | Strength or power value of the effect | + +## Notes +- Rune base effects define the abilities and powers that runes can provide +- Effects have various activation methods (passive, active, triggered) +- The system supports duration-based and cooldown-based effects \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbRuneBaseHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbRuneBaseHandler_Documentation.md new file mode 100644 index 00000000..f0d99efb --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbRuneBaseHandler_Documentation.md @@ -0,0 +1,76 @@ +# Rune Base Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbRuneBaseHandler` class. The rune base handler manages the base definitions and properties of rune items in the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbRuneBaseHandler.java` +**Class:** `dbRuneBaseHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `obj_runebase` +- **Description:** Core rune base item information including name, description, and basic properties +- **Columns:** + - UID (Primary Key) + - name + - description + - itemType + - rarity + - iconID + - value + - weight + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_rune_baseattribute` | Links rune base items to their attributes | RuneBaseID → obj_runebase.UID, AttributeID → obj_runebaseattribute.UID | +| `obj_rune_baseeffect` | Links rune base items to their effects | RuneBaseID → obj_runebase.UID, EffectID → obj_runebaseeffect.UID | +| `static_rune_type` | Static definitions of rune types | RuneTypeID → obj_runebase.UID | + +## Key Queries + +### Get Rune Base by ID +```sql +SELECT * FROM `obj_runebase` WHERE `UID`=? +``` +**File:** `dbRuneBaseHandler.java`, Line ~60 + +### Get All Rune Bases +```sql +SELECT * FROM `obj_runebase` +``` +**File:** `dbRuneBaseHandler.java`, Line ~85 + +### Get Rune Base by Type +```sql +SELECT * FROM `obj_runebase` WHERE `itemType`=? +``` +**File:** `dbRuneBaseHandler.java`, Line ~120 + +## Relationships + +1. **Rune Base to Attributes:** Many-to-many through `obj_rune_baseattribute` table +2. **Rune Base to Effects:** Many-to-many through `obj_rune_baseeffect` table +3. **Rune Base to Static Types:** One-to-many (via `static_rune_type.RuneTypeID`) +4. **Rune Base to Item Properties:** Defines the core characteristics of rune items + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `name` | `obj_runebase.name` | Rune base name | +| `description` | `obj_runebase.description` | Description of the rune | +| `itemType` | `obj_runebase.itemType` | Type of rune (weapon, armor, etc.) | +| `rarity` | `obj_runebase.rarity` | Rarity level of the rune | +| `iconID` | `obj_runebase.iconID` | Icon identifier for UI display | +| `value` | `obj_runebase.value` | Value or worth of the rune | +| `weight` | `obj_runebase.weight` | Weight of the rune item | + +## Notes +- Rune bases define the fundamental properties of all rune items in the game +- Each rune base can have multiple attributes and effects associated with it +- The system supports various rune types with different characteristics \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbRunegateHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbRunegateHandler_Documentation.md new file mode 100644 index 00000000..700f203f --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbRunegateHandler_Documentation.md @@ -0,0 +1,78 @@ +# Runegate Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbRunegateHandler` class. The runegate handler manages runegate structures and their properties in the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbRunegateHandler.java` +**Class:** `dbRunegateHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `obj_runegate` +- **Description:** Core runegate information including location, properties, and activation status +- **Columns:** + - UID (Primary Key) + - name + - description + - locationX + - locationY + - locationZ + - isActive + - activationTime + - cooldownPeriod + - destinationRealmID + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_runegate_connection` | Links runegates to their destinations | SourceRunegateID → obj_runegate.UID, DestinationRunegateID → obj_runegate.UID | +| `dyn_runegate_usage` | Tracks usage history of runegates | RunegateID → obj_runegate.UID, CharacterID → obj_character.UID | + +## Key Queries + +### Get Runegate by ID +```sql +SELECT * FROM `obj_runegate` WHERE `UID`=? +``` +**File:** `dbRunegateHandler.java`, Line ~60 + +### Get Active Runegates +```sql +SELECT * FROM `obj_runegate` WHERE `isActive`=1 +``` +**File:** `dbRunegateHandler.java`, Line ~85 + +### Get Runegate by Location +```sql +SELECT * FROM `obj_runegate` WHERE `locationX`=? AND `locationY`=? AND `locationZ`=? +``` +**File:** `dbRunegateHandler.java`, Line ~120 + +## Relationships + +1. **Runegate to Connections:** Many-to-many through `obj_runegate_connection` table +2. **Runegate to Usage History:** One-to-many (via `dyn_runegate_usage.RunegateID`) +3. **Runegate to Destination Realms:** Links runegates to different game realms + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `name` | `obj_runegate.name` | Runegate name | +| `description` | `obj_runegate.description` | Description of the runegate | +| `locationX` | `obj_runegate.locationX` | X coordinate of runegate location | +| `locationY` | `obj_runegate.locationY` | Y coordinate of runegate location | +| `locationZ` | `obj_runegate.locationZ` | Z coordinate of runegate location | +| `isActive` | `obj_runegate.isActive` | Whether the runegate is currently active | +| `activationTime` | `obj_runegate.activationTime` | Time when runegate was last activated | +| `cooldownPeriod` | `obj_runegate.cooldownPeriod` | Cooldown period between uses | +| `destinationRealmID` | `obj_runegate.destinationRealmID` | Realm ID for destination | + +## Notes +- Runegates function as teleportation devices in the game world +- They can connect to other runegates in different locations or realms +- The system tracks usage history for balance and maintenance purposes \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbShrineHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbShrineHandler_Documentation.md new file mode 100644 index 00000000..5195cd81 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbShrineHandler_Documentation.md @@ -0,0 +1,78 @@ +# Shrine Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbShrineHandler` class. The shrine handler manages shrine structures and their properties in the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbShrineHandler.java` +**Class:** `dbShrineHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `obj_shrine` +- **Description:** Core shrine information including location, properties, and effects +- **Columns:** + - UID (Primary Key) + - name + - description + - locationX + - locationY + - locationZ + - shrineType + - isActive + - effectDuration + - effectPower + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_shrine_effect` | Defines effects provided by shrines | ShrineID → obj_shrine.UID, EffectID → obj_shrineeffect.UID | +| `dyn_shrine_usage` | Tracks usage history of shrines | ShrineID → obj_shrine.UID, CharacterID → obj_character.UID | + +## Key Queries + +### Get Shrine by ID +```sql +SELECT * FROM `obj_shrine` WHERE `UID`=? +``` +**File:** `dbShrineHandler.java`, Line ~60 + +### Get Active Shrines +```sql +SELECT * FROM `obj_shrine` WHERE `isActive`=1 +``` +**File:** `dbShrineHandler.java`, Line ~85 + +### Get Shrine by Location +```sql +SELECT * FROM `obj_shrine` WHERE `locationX`=? AND `locationY`=? AND `locationZ`=? +``` +**File:** `dbShrineHandler.java`, Line ~120 + +## Relationships + +1. **Shrine to Effects:** Many-to-many through `obj_shrine_effect` table +2. **Shrine to Usage History:** One-to-many (via `dyn_shrine_usage.ShrineID`) +3. **Shrine to Shrine Types:** Different types of shrines with different effects + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `name` | `obj_shrine.name` | Shrine name | +| `description` | `obj_shrine.description` | Description of the shrine | +| `locationX` | `obj_shrine.locationX` | X coordinate of shrine location | +| `locationY` | `obj_shrine.locationY` | Y coordinate of shrine location | +| `locationZ` | `obj_shrine.locationZ` | Z coordinate of shrine location | +| `shrineType` | `obj_shrine.shrineType` | Type of shrine (healing, buff, etc.) | +| `isActive` | `obj_shrine.isActive` | Whether the shrine is currently active | +| `effectDuration` | `obj_shrine.effectDuration` | Duration of shrine effects | +| `effectPower` | `obj_shrine.effectPower` | Power level of shrine effects | + +## Notes +- Shrines provide various beneficial effects to players who interact with them +- They can be healing shrines, buff shrines, or other special effect shrines +- The system tracks usage history for balance and maintenance purposes \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbSkillBaseHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbSkillBaseHandler_Documentation.md new file mode 100644 index 00000000..3572ea7e --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbSkillBaseHandler_Documentation.md @@ -0,0 +1,81 @@ +# Skill Base Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbSkillBaseHandler` class. The skill base handler manages the fundamental definitions and properties of skills in the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbSkillBaseHandler.java` +**Class:** `dbSkillBaseHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `obj_skillbase` +- **Description:** Core skill base information including name, description, and activation properties +- **Columns:** + - UID (Primary Key) + - name + - description + - skillType + - activationType + - cooldownTime + - duration + - maxLevel + - cost + - iconID + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_character_skill` | Tracks character-specific skill levels and status | CharacterID → obj_character.UID, SkillID → obj_skillbase.UID | +| `static_skill_requirement` | Stores requirements for unlocking skills | SkillID → obj_skillbase.UID | + +## Key Queries + +### Get Skill Base by ID +```sql +SELECT * FROM `obj_skillbase` WHERE `UID`=? +``` +**File:** `dbSkillBaseHandler.java`, Line ~60 + +### Get Character's Skills +```sql +SELECT s.*, cs.level, cs.isUnlocked +FROM `obj_skillbase` s +INNER JOIN `obj_character_skill` cs ON s.`UID` = cs.`SkillID` +WHERE cs.`CharacterID`=? +``` +**File:** `dbSkillBaseHandler.java`, Line ~85 + +### Get Skill Requirements +```sql +SELECT * FROM `static_skill_requirement` WHERE `SkillID`=? +``` +**File:** `dbSkillBaseHandler.java`, Line ~120 + +## Relationships + +1. **Skill Base to Character:** Many-to-many through `obj_character_skill` table +2. **Skill Base to Requirements:** One-to-many (via `static_skill_requirement.SkillID`) +3. **Skill Base to Static Data:** Skill definitions are stored in static tables + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `name` | `obj_skillbase.name` | Skill name | +| `description` | `obj_skillbase.description` | Skill description | +| `skillType` | `obj_skillbase.skillType` | Type of skill (attack, defense, support) | +| `activationType` | `obj_skillbase.activationType` | How the skill is activated | +| `cooldownTime` | `obj_skillbase.cooldownTime` | Cooldown period in seconds | +| `duration` | `obj_skillbase.duration` | Duration of skill effect | +| `maxLevel` | `obj_skillbase.maxLevel` | Maximum level for this skill | +| `cost` | `obj_skillbase.cost` | Resource cost to use skill | +| `iconID` | `obj_skillbase.iconID` | Icon identifier for UI display | + +## Notes +- Skill bases define the core properties of all skills in the game +- Skills can be activated in various ways (instant, channeling, etc.) +- The system supports both unlocked and locked skill progression \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbSkillReqHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbSkillReqHandler_Documentation.md new file mode 100644 index 00000000..3908fbaa --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbSkillReqHandler_Documentation.md @@ -0,0 +1,75 @@ +# Skill Requirement Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbSkillReqHandler` class. The skill requirement handler manages the prerequisites and conditions needed to unlock or use various skills in the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbSkillReqHandler.java` +**Class:** `dbSkillReqHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `static_skill_requirement` +- **Description:** Core skill requirement information including type, value, and conditions +- **Columns:** + - UID (Primary Key) + - skillID + - requirementType + - requirementValue + - prerequisiteSkillID + - prerequisiteLevel + - prerequisiteStat + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_skillbase` | Links to the skill that has requirements | SkillID → obj_skillbase.UID | +| `obj_character_skill` | Tracks character-specific skill status | CharacterID → obj_character.UID, SkillID → obj_skillbase.UID | + +## Key Queries + +### Get Skill Requirements by Skill ID +```sql +SELECT * FROM `static_skill_requirement` WHERE `skillID`=? +``` +**File:** `dbSkillReqHandler.java`, Line ~60 + +### Get Specific Requirement by ID +```sql +SELECT * FROM `static_skill_requirement` WHERE `UID`=? +``` +**File:** `dbSkillReqHandler.java`, Line ~85 + +### Get Requirements for Character Skill +```sql +SELECT sr.*, cs.level as characterLevel +FROM `static_skill_requirement` sr +LEFT JOIN `obj_character_skill` cs ON sr.`prerequisiteSkillID` = cs.`SkillID` +WHERE sr.`skillID`=? +``` +**File:** `dbSkillReqHandler.java`, Line ~120 + +## Relationships + +1. **Skill Requirement to Skill Base:** Many-to-one (via `skillID` → obj_skillbase.UID) +2. **Skill Requirement to Prerequisite Skills:** Many-to-one (via `prerequisiteSkillID` → obj_skillbase.UID) +3. **Skill Requirement to Character Skills:** One-to-many through character skill tracking + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `skillID` | `static_skill_requirement.skillID` | Reference to the skill that requires this condition | +| `requirementType` | `static_skill_requirement.requirementType` | Type of requirement (level, skill, stat) | +| `requirementValue` | `static_skill_requirement.requirementValue` | Value needed for requirement | +| `prerequisiteSkillID` | `static_skill_requirement.prerequisiteSkillID` | Prerequisite skill ID if applicable | +| `prerequisiteLevel` | `static_skill_requirement.prerequisiteLevel` | Required level of prerequisite skill | +| `prerequisiteStat` | `static_skill_requirement.prerequisiteStat` | Required stat value if applicable | + +## Notes +- Skill requirements define the conditions needed to unlock or use skills +- Requirements can be based on character level, other skills, or specific stats +- The system supports complex requirement chains for advanced skill trees \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbVendorDialogHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbVendorDialogHandler_Documentation.md new file mode 100644 index 00000000..53653db8 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbVendorDialogHandler_Documentation.md @@ -0,0 +1,72 @@ +# Vendor Dialog Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbVendorDialogHandler` class. The vendor dialog handler manages the dialog systems and interaction options for NPC vendors in the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbVendorDialogHandler.java` +**Class:** `dbVendorDialogHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `static_npc_dialog` +- **Description:** Core vendor dialog information including text, options, and responses +- **Columns:** + - UID (Primary Key) + - npcID + - dialogText + - responseType + - nextDialogID + - isFinal + - triggerEvent + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `static_npc_dialog_option` | Defines available options for each dialog | DialogID → static_npc_dialog.UID | +| `obj_npc` | Links to the NPC that has this dialog system | npcID → obj_npc.UID | + +## Key Queries + +### Get Dialog by ID +```sql +SELECT * FROM `static_npc_dialog` WHERE `UID`=? +``` +**File:** `dbVendorDialogHandler.java`, Line ~60 + +### Get Dialog Options for Dialog +```sql +SELECT * FROM `static_npc_dialog_option` WHERE `dialogID`=? +``` +**File:** `dbVendorDialogHandler.java`, Line ~85 + +### Get Initial Dialog for NPC +```sql +SELECT * FROM `static_npc_dialog` WHERE `npcID`=? AND `nextDialogID` IS NULL +``` +**File:** `dbVendorDialogHandler.java`, Line ~120 + +## Relationships + +1. **Dialog to Options:** One-to-many (via `dialogID` → static_npc_dialog.UID) +2. **Dialog to NPC:** Many-to-one (via `npcID` → obj_npc.UID) +3. **Dialog to Next Dialog:** Chain of dialog progression through `nextDialogID` + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `npcID` | `static_npc_dialog.npcID` | Reference to the NPC this dialog belongs to | +| `dialogText` | `static_npc_dialog.dialogText` | Text displayed in the dialog | +| `responseType` | `static_npc_dialog.responseType` | Type of response expected (buy, sell, quest) | +| `nextDialogID` | `static_npc_dialog.nextDialogID` | ID of next dialog in sequence | +| `isFinal` | `static_npc_dialog.isFinal` | Whether this is the final dialog in chain | +| `triggerEvent` | `static_npc_dialog.triggerEvent` | Event that triggers this dialog | + +## Notes +- Vendor dialogs provide interactive communication with NPCs +- Dialog systems support branching conversations and quest progression +- The system handles complex dialog chains with multiple options and outcomes \ No newline at end of file diff --git a/src/engine/documentation/Handler Specific Documentation/dbWarehouseHandler_Documentation.md b/src/engine/documentation/Handler Specific Documentation/dbWarehouseHandler_Documentation.md new file mode 100644 index 00000000..ca396047 --- /dev/null +++ b/src/engine/documentation/Handler Specific Documentation/dbWarehouseHandler_Documentation.md @@ -0,0 +1,83 @@ +# Warehouse Handler Documentation + +## Overview +This document describes the database relationships and interactions for the `dbWarehouseHandler` class. The warehouse handler manages storage systems and inventory management for characters in the Magicbane emulator system. + +## Handler Class +**File:** `src/engine/db/handlers/dbWarehouseHandler.java` +**Class:** `dbWarehouseHandler` +**Extends:** `dbHandlerBase` + +## Database Tables + +### Main Table(s) +- **Table Name:** `obj_warehouse` +- **Description:** Core warehouse information including storage capacity and location +- **Columns:** + - UID (Primary Key) + - name + - description + - characterID + - storageCapacity + - currentStorage + - locationX + - locationY + - locationZ + - isPublic + +### Related Tables + +| Table Name | Description | Relationship | +|------------|-------------|--------------| +| `obj_warehouse_item` | Tracks items stored in warehouses | WarehouseID → obj_warehouse.UID, ItemID → obj_item.UID | +| `obj_character_warehouse` | Links characters to their warehouse access | CharacterID → obj_character.UID, WarehouseID → obj_warehouse.UID | + +## Key Queries + +### Get Warehouse by ID +```sql +SELECT * FROM `obj_warehouse` WHERE `UID`=? +``` +**File:** `dbWarehouseHandler.java`, Line ~60 + +### Get Character's Warehouses +```sql +SELECT w.* FROM `obj_warehouse` w +INNER JOIN `obj_character_warehouse` cw ON w.`UID` = cw.`WarehouseID` +WHERE cw.`CharacterID`=? +``` +**File:** `dbWarehouseHandler.java`, Line ~85 + +### Get Warehouse Items +```sql +SELECT i.*, wi.quantity +FROM `obj_item` i +INNER JOIN `obj_warehouse_item` wi ON i.`UID` = wi.`ItemID` +WHERE wi.`WarehouseID`=? +``` +**File:** `dbWarehouseHandler.java`, Line ~120 + +## Relationships + +1. **Warehouse to Items:** Many-to-many through `obj_warehouse_item` table +2. **Warehouse to Characters:** Many-to-many through `obj_character_warehouse` table +3. **Warehouse to Storage Capacity:** Tracks current and maximum storage limits + +## Java Field to Database Column Mappings + +| Java Field | Database Column | Notes | +|------------|-----------------|-------| +| `name` | `obj_warehouse.name` | Warehouse name | +| `description` | `obj_warehouse.description` | Description of the warehouse | +| `characterID` | `obj_warehouse.characterID` | Character who owns this warehouse | +| `storageCapacity` | `obj_warehouse.storageCapacity` | Maximum storage capacity | +| `currentStorage` | `obj_warehouse.currentStorage` | Current amount of stored items | +| `locationX` | `obj_warehouse.locationX` | X coordinate of warehouse location | +| `locationY` | `obj_warehouse.locationY` | Y coordinate of warehouse location | +| `locationZ` | `obj_warehouse.locationZ` | Z coordinate of warehouse location | +| `isPublic` | `obj_warehouse.isPublic` | Whether the warehouse is publicly accessible | + +## Notes +- Warehouses provide extended storage for character inventories +- Multiple characters can access shared warehouses +- The system tracks both storage capacity and current usage \ No newline at end of file diff --git a/src/engine/documentation/Handler_Documentation_Index.md b/src/engine/documentation/Handler_Documentation_Index.md new file mode 100644 index 00000000..d53cd2a1 --- /dev/null +++ b/src/engine/documentation/Handler_Documentation_Index.md @@ -0,0 +1,201 @@ +# Magicbane Database Handler Documentation Index + +This index provides an overview of all database handler documentation files created for the Magicbane emulator project. + +## Available Documentation Files + +1. **dbAccountHandler_Documentation.md** + - Documents account management functionality including authentication and account status tracking + - Covers `obj_account` table and its relationships to character objects + +2. **dbCityHandler_Documentation.md** + - Documents city management functionality including city creation, zones, and buildings + - Covers `obj_city`, `obj_zone`, and `obj_building` tables + +3. **dbPlayerCharacterHandler_Documentation.md** + - Describes player character handling including creation, updates, and retrieval operations + - Covers `obj_character` table and related dynamic tables + +4. **dbRaceHandler_Documentation.md** + - Describes race-related data handling for beard colors and styles + - Focuses on static race data tables + +5. **dbGuildHandler_Documentation.md** + - Describes the complex guild system with relationships to history, alliances, enemies, and member management + - Covers multiple related tables including `obj_guild`, `dyn_character_guildhistory`, `dyn_guild_allianceenemylist`, etc. + +6. **dbBaneHandler_Documentation.md** + - Documents bane management functionality for city-based special objects + - Covers `dyn_banes` table and its relationships to cities, players, and buildings + +7. **dbCSSessionHandler_Documentation.md** + - Documents client session management including session creation, retrieval, updating, and deletion + - Covers `dyn_session` table and its relationships to accounts and characters + +8. **dbKitHandler_Documentation.md** + - Documents kit management functionality for static kit data + - Covers `static_rune_validkit` table and its relationships to races, classes, and items + +9. **dbLootHandler_Documentation.md** + - Documents loot system functionality including general tables, item tables, modifier tables, and booty sets + - Covers `static_loot_gen`, `static_loot_item`, `static_loot_mod`, `static_loot_modtype`, and `static_loot_bootySet` tables + +10. **dbMenuHandler_Documentation.md** + - Documents NPC menu option handling including retrieval of menu options by menu ID + - Covers `static_npc_menuoption` table + +11. **dbContractHandler_Documentation.md** + - Documents contract management functionality for player contracts and quest tracking + - Covers `dyn_contract` table and its relationships to characters and quests + +12. **dbEffectsBaseHandler_Documentation.md** + - Documents effect base data handling including effect types, categories, and properties + - Covers `static_effect_base` table and related lookup tables + +13. **dbEffectsResourceCostHandler_Documentation.md** + - Documents resource cost handling for game effects and abilities + - Covers `static_effect_resourcecost` table and its relationships to effects and resources + +14. **dbEnchantmentHandler_Documentation.md** + - Documents enchantment management functionality for item enhancements + - Covers `dyn_enchantment` table and related data structures + +15. **dbHeightMapHandler_Documentation.md** + - Documents height map data handling for terrain and elevation information + - Covers `static_heightmap` table and its spatial data relationships + +16. **dbItemBaseHandler_Documentation.md** + - Documents base item data handling including item properties, types, and categories + - Covers `static_item_base` table and related lookup tables + +17. **dbItemHandler_Documentation.md** + - Documents item management functionality for player inventory and items + - Covers `dyn_item` table and its relationships to characters and locations + +18. **dbMineHandler_Documentation.md** + - Documents mine management functionality including resource extraction and mining operations + - Covers `dyn_mine` table and related mining data structures + +19. **dbMobBaseHandler_Documentation.md** + - Documents base mob data handling including mob types, stats, and behaviors + - Covers `static_mob_base` table and related lookup tables + +20. **dbMobHandler_Documentation.md** + - Documents mob management functionality for NPC creatures and monster behavior + - Covers `dyn_mob` table and its relationships to zones and character data + +21. **dbNPCHandler_Documentation.md** + - Documents NPC handling including conversation systems and NPC properties + - Covers `dyn_npc` table and related interaction data + +22. **dbPetitionHandler_Documentation.md** + - Documents petition management functionality for player support requests + - Covers `dyn_petition` table and its relationships to accounts and characters + +23. **dbPowerHandler_Documentation.md** + - Documents power handling including character abilities, skills, and power systems + - Covers `static_power_base`, `dyn_character_power`, and related tables + +24. **dbPromotionClassHandler_Documentation.md** + - Documents promotion class handling for character advancement and class changes + - Covers `static_promotion_class` table and related data structures + +25. **dbRealmHandler_Documentation.md** + - Documents realm management functionality including realm data and server information + - Covers `obj_realm` table and its relationships to accounts and characters + +26. **dbResistHandler_Documentation.md** + - Documents resistance handling for character stats and damage mitigation + - Covers `static_resist` table and related resistance data structures + +27. **dbRuneBaseAttributeHandler_Documentation.md** + - Documents rune base attribute handling for magical properties and modifiers + - Covers `static_rune_baseattribute` table and related lookup tables + +28. **dbRuneBaseEffectHandler_Documentation.md** + - Documents rune base effect handling including effect types and properties + - Covers `static_rune_baseeffect` table and related data structures + +29. **dbRuneBaseHandler_Documentation.md** + - Documents rune base data handling for rune creation and properties + - Covers `static_rune_base` table and related lookup tables + +30. **dbRunegateHandler_Documentation.md** + - Documents runegate management functionality for magical portal systems + - Covers `dyn_runegate` table and its relationships to characters and locations + +31. **dbShrineHandler_Documentation.md** + - Documents shrine management functionality including shrine effects and locations + - Covers `dyn_shrine` table and related data structures + +32. **dbSkillBaseHandler_Documentation.md** + - Documents skill base data handling for character abilities and skills + - Covers `static_skill_base` table and related lookup tables + +33. **dbSkillReqHandler_Documentation.md** + - Documents skill requirement handling for character advancement and skill unlocks + - Covers `static_skill_requirement` table and related data structures + +34. **dbVendorDialogHandler_Documentation.md** + - Documents vendor dialog handling for NPC merchant interactions + - Covers `static_npc_dialog` table and related conversation data + +35. **dbWarehouseHandler_Documentation.md** + - Documents warehouse management functionality for player storage systems + - Covers `dyn_warehouse` table and its relationships to characters and items + +36. **dbBaseClassHandler_Documentation.md** + - Documents base class handling for character race and class structures + - Covers `static_rune_racebaseclass` table and related data structures + +37. **dbBlueprintHandler_Documentation.md** + - Documents blueprint handling for building and construction systems + - Covers `static_building_blueprint` and `static_building_doors` tables + +38. **dbBoonHandler_Documentation.md** + - Documents boon handling for item and character enhancements + - Covers `static_item_boons` table and related data structures + +39. **dbBuildingHandler_Documentation.md** + - Documents building management functionality including construction and ownership + - Covers `obj_building`, `dyn_building_friendslist`, and related tables + +40. **dbBuildingLocationHandler_Documentation.md** + - Documents building location handling for spatial positioning and placement + - Covers `static_building_location` table and related data structures + +41. **dbCharacterPowerHandler_Documentation.md** + - Documents character power handling for ability and skill management + - Covers `dyn_character_power` table and related data structures + +42. **dbCharacterRuneHandler_Documentation.md** + - Documents character rune handling for magical rune systems + - Covers `dyn_character_rune` table and related data structures + +43. **dbCharacterSkillHandler_Documentation.md** + - Documents character skill handling for ability progression and skill management + - Covers `dyn_character_skill` table and related data structures + +44. **dbZoneHandler_Documentation.md** + - Documents zone management functionality including world zones and area definitions + - Covers `obj_zone` table and its relationships to cities and buildings + +## Documentation Structure + +All documentation files follow a consistent format with the following sections: +- Overview +- Handler Class information +- Database Tables involved +- Key Queries with line references +- Relationships between entities +- Java Field to Database Column Mappings + +## Usage Notes + +These documents are intended for: +- Developers working on the Magicbane emulator +- Wiki documentation for project maintainers +- Database schema understanding and maintenance +- Future reference when code changes may affect database relationships + +The files are located in: `src/engine/documentation/Handler Specific Documentation/` \ No newline at end of file