Author SHA1 Message Date
Nico 3a6c0b5575 docs(database): add current Vcore MariaDB schemas
clang PCH / build (push) Has been cancelled
GCC PCH / build (push) Has been cancelled
2026-10-08 10:37:27 +02:00
Nico 96c937d5e4 full implementation of viano dungeon bots
clang PCH / build (push) Has been cancelled
GCC PCH / build (push) Has been cancelled
2026-10-08 09:40:02 +02:00
Nico 634606b5ba Added item to summon DungeonBots
clang PCH / build (push) Has been cancelled
GCC PCH / build (push) Has been cancelled
2026-10-07 19:49:32 +02:00
13 changed files with 11635 additions and 39 deletions

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
# Vcore Database Schemas
This directory contains schema-only snapshots of the MariaDB databases
used by Vcore (World of Warcraft Cataclysm 4.3.4).
## Databases
- cata_world
- cata_locale_reference
- cata_characters
- cata_auth
- cata_hotfixes
- vcore_dev
The files contain database structures only, not production table data.
These snapshots reflect the database state at the time of export.
They are not a substitute for SQL migrations or database backups.
Initial snapshot: 2026-10-08.
+300
View File
@@ -0,0 +1,300 @@
/*M!999999\- enable the sandbox mode */
/*!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 */;
/*!40101 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 */;
DROP TABLE IF EXISTS `account`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `account` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Identifier',
`username` varchar(32) NOT NULL DEFAULT '',
`salt` binary(32) NOT NULL,
`verifier` binary(32) NOT NULL,
`session_key_auth` binary(40) DEFAULT NULL,
`session_key_bnet` varbinary(64) DEFAULT NULL,
`totp_secret` varbinary(128) DEFAULT NULL,
`v` varchar(64) NOT NULL DEFAULT '',
`s` varchar(64) NOT NULL DEFAULT '',
`token_key` varchar(100) NOT NULL DEFAULT '',
`email` varchar(255) NOT NULL DEFAULT '',
`reg_mail` varchar(255) NOT NULL DEFAULT '',
`joindate` timestamp NOT NULL DEFAULT current_timestamp(),
`last_ip` varchar(15) NOT NULL DEFAULT '127.0.0.1',
`last_attempt_ip` varchar(15) NOT NULL DEFAULT '127.0.0.1',
`failed_logins` int(10) unsigned NOT NULL DEFAULT 0,
`locked` tinyint(3) unsigned NOT NULL DEFAULT 0,
`lock_country` varchar(2) NOT NULL DEFAULT '00',
`last_login` timestamp NULL DEFAULT NULL,
`online` tinyint(3) unsigned NOT NULL DEFAULT 0,
`expansion` tinyint(3) unsigned NOT NULL DEFAULT 3,
`mutetime` bigint(20) NOT NULL DEFAULT 0,
`mutereason` varchar(255) NOT NULL DEFAULT '',
`muteby` varchar(50) NOT NULL DEFAULT '',
`locale` tinyint(3) unsigned NOT NULL DEFAULT 0,
`os` varchar(5) DEFAULT NULL,
`timezone_offset` smallint(6) NOT NULL DEFAULT 0,
`recruiter` int(10) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Account System';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `account_access`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `account_access` (
`AccountID` int(10) unsigned NOT NULL,
`SecurityLevel` tinyint(3) unsigned NOT NULL,
`RealmID` int(11) NOT NULL DEFAULT -1,
PRIMARY KEY (`AccountID`,`RealmID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `account_banned`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `account_banned` (
`id` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'Account id',
`bandate` int(10) unsigned NOT NULL DEFAULT 0,
`unbandate` int(10) unsigned NOT NULL DEFAULT 0,
`bannedby` varchar(50) NOT NULL,
`banreason` varchar(255) NOT NULL,
`active` tinyint(3) unsigned NOT NULL DEFAULT 1,
PRIMARY KEY (`id`,`bandate`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Ban List';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `account_muted`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `account_muted` (
`guid` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'Global Unique Identifier',
`mutedate` int(10) unsigned NOT NULL DEFAULT 0,
`mutetime` int(10) unsigned NOT NULL DEFAULT 0,
`mutedby` varchar(50) NOT NULL,
`mutereason` varchar(255) NOT NULL,
PRIMARY KEY (`guid`,`mutedate`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='mute List';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `autobroadcast`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `autobroadcast` (
`realmid` int(11) NOT NULL DEFAULT -1,
`id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
`weight` tinyint(3) unsigned DEFAULT 1,
`text` longtext NOT NULL,
PRIMARY KEY (`id`,`realmid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `build_auth_key`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `build_auth_key` (
`build` int(11) NOT NULL,
`platform` char(4) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`arch` char(4) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`type` char(4) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`key` binary(16) NOT NULL,
PRIMARY KEY (`build`,`platform`,`arch`,`type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `build_executable_hash`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `build_executable_hash` (
`build` int(11) NOT NULL,
`platform` char(4) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`executableHash` binary(20) NOT NULL,
PRIMARY KEY (`build`,`platform`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `build_info`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `build_info` (
`build` int(11) NOT NULL,
`majorVersion` int(11) DEFAULT NULL,
`minorVersion` int(11) DEFAULT NULL,
`bugfixVersion` int(11) DEFAULT NULL,
`hotfixVersion` char(3) DEFAULT NULL,
PRIMARY KEY (`build`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `ip_banned`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `ip_banned` (
`ip` varchar(15) NOT NULL DEFAULT '127.0.0.1',
`bandate` int(10) unsigned NOT NULL,
`unbandate` int(10) unsigned NOT NULL,
`bannedby` varchar(50) NOT NULL DEFAULT '[Console]',
`banreason` varchar(255) NOT NULL DEFAULT 'no reason',
PRIMARY KEY (`ip`,`bandate`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Banned IPs';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `logs`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `logs` (
`time` int(10) unsigned NOT NULL,
`realm` int(10) unsigned NOT NULL,
`type` varchar(250) NOT NULL,
`level` tinyint(3) unsigned NOT NULL DEFAULT 0,
`string` text CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `logs_ip_actions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `logs_ip_actions` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Identifier',
`account_id` int(10) unsigned NOT NULL COMMENT 'Account ID',
`character_guid` int(10) unsigned NOT NULL COMMENT 'Character Guid',
`type` tinyint(3) unsigned NOT NULL,
`ip` varchar(15) NOT NULL DEFAULT '127.0.0.1',
`systemnote` text DEFAULT NULL COMMENT 'Notes inserted by system',
`unixtime` int(10) unsigned NOT NULL COMMENT 'Unixtime',
`time` timestamp NOT NULL DEFAULT current_timestamp() COMMENT 'Timestamp',
`comment` text DEFAULT NULL COMMENT 'Allows users to add a comment',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Used to log ips of individual actions';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `rbac_account_permissions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `rbac_account_permissions` (
`accountId` int(10) unsigned NOT NULL COMMENT 'Account id',
`permissionId` int(10) unsigned NOT NULL COMMENT 'Permission id',
`granted` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Granted = 1, Denied = 0',
`realmId` int(11) NOT NULL DEFAULT -1 COMMENT 'Realm Id, -1 means all',
PRIMARY KEY (`accountId`,`permissionId`,`realmId`),
KEY `fk__rbac_account_roles__rbac_permissions` (`permissionId`),
CONSTRAINT `fk__rbac_account_permissions__account` FOREIGN KEY (`accountId`) REFERENCES `account` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk__rbac_account_roles__rbac_permissions` FOREIGN KEY (`permissionId`) REFERENCES `rbac_permissions` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Account-Permission relation';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `rbac_default_permissions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `rbac_default_permissions` (
`secId` int(10) unsigned NOT NULL COMMENT 'Security Level id',
`permissionId` int(10) unsigned NOT NULL COMMENT 'permission id',
`realmId` int(11) NOT NULL DEFAULT -1 COMMENT 'Realm Id, -1 means all',
PRIMARY KEY (`secId`,`permissionId`,`realmId`),
KEY `fk__rbac_default_permissions__rbac_permissions` (`permissionId`),
CONSTRAINT `fk__rbac_default_permissions__rbac_permissions` FOREIGN KEY (`permissionId`) REFERENCES `rbac_permissions` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Default permission to assign to different account security levels';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `rbac_linked_permissions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `rbac_linked_permissions` (
`id` int(10) unsigned NOT NULL COMMENT 'Permission id',
`linkedId` int(10) unsigned NOT NULL COMMENT 'Linked Permission id',
PRIMARY KEY (`id`,`linkedId`),
KEY `fk__rbac_linked_permissions__rbac_permissions1` (`id`),
KEY `fk__rbac_linked_permissions__rbac_permissions2` (`linkedId`),
CONSTRAINT `fk__rbac_linked_permissions__rbac_permissions1` FOREIGN KEY (`id`) REFERENCES `rbac_permissions` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk__rbac_linked_permissions__rbac_permissions2` FOREIGN KEY (`linkedId`) REFERENCES `rbac_permissions` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Permission - Linked Permission relation';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `rbac_permissions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `rbac_permissions` (
`id` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'Permission id',
`name` varchar(100) NOT NULL COMMENT 'Permission name',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Permission List';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `realmcharacters`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `realmcharacters` (
`realmid` int(10) unsigned NOT NULL DEFAULT 0,
`acctid` int(10) unsigned NOT NULL,
`numchars` tinyint(3) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`realmid`,`acctid`),
KEY `acctid` (`acctid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Realm Character Tracker';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `realmlist`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `realmlist` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL DEFAULT '',
`address` varchar(255) NOT NULL DEFAULT '127.0.0.1',
`localAddress` varchar(255) NOT NULL DEFAULT '127.0.0.1',
`localSubnetMask` varchar(255) NOT NULL DEFAULT '255.255.255.0',
`port` smallint(5) unsigned NOT NULL DEFAULT 8085,
`icon` tinyint(3) unsigned NOT NULL DEFAULT 0,
`flag` tinyint(3) unsigned NOT NULL DEFAULT 2,
`timezone` tinyint(3) unsigned NOT NULL DEFAULT 0,
`allowedSecurityLevel` tinyint(3) unsigned NOT NULL DEFAULT 0,
`population` float unsigned NOT NULL DEFAULT 0,
`gamebuild` int(10) unsigned NOT NULL DEFAULT 15595,
`Region` tinyint(3) unsigned NOT NULL DEFAULT 2,
`Battlegroup` tinyint(3) unsigned NOT NULL DEFAULT 1,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Realm System';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `secret_digest`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `secret_digest` (
`id` int(10) unsigned NOT NULL,
`digest` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `updates`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `updates` (
`name` varchar(200) NOT NULL COMMENT 'filename with extension of the update.',
`hash` char(40) DEFAULT '' COMMENT 'sha1 hash of the sql file.',
`state` enum('RELEASED','ARCHIVED') NOT NULL DEFAULT 'RELEASED' COMMENT 'defines if an update is released or archived.',
`timestamp` timestamp NOT NULL DEFAULT current_timestamp() COMMENT 'timestamp when the query was applied.',
`speed` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'time the query takes to apply in ms.',
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='List of all applied updates in this database.';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `updates_include`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `updates_include` (
`path` varchar(200) NOT NULL COMMENT 'directory to include. $ means relative to the source directory.',
`state` enum('RELEASED','ARCHIVED') NOT NULL DEFAULT 'RELEASED' COMMENT 'defines if the directory contains released or archived updates.',
PRIMARY KEY (`path`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='List of directories where we want to include sql updates.';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `uptime`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `uptime` (
`realmid` int(10) unsigned NOT NULL,
`starttime` int(10) unsigned NOT NULL DEFAULT 0,
`uptime` int(10) unsigned NOT NULL DEFAULT 0,
`maxplayers` smallint(5) unsigned NOT NULL DEFAULT 0,
`revision` varchar(255) NOT NULL DEFAULT 'Trinitycore',
PRIMARY KEY (`realmid`,`starttime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Uptime system';
/*!40101 SET character_set_client = @saved_cs_client */;
/*!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 */;
File diff suppressed because it is too large. Load diff
+315
View File
@@ -0,0 +1,315 @@
/*M!999999\- enable the sandbox mode */
/*!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 */;
/*!40101 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 */;
DROP TABLE IF EXISTS `hotfix_data`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `hotfix_data` (
`TableHash` int(10) unsigned NOT NULL DEFAULT 0,
`RecordID` int(11) NOT NULL,
`Deleted` tinyint(3) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`TableHash`,`RecordID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `item`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `item` (
`ID` int(10) unsigned NOT NULL DEFAULT 0,
`ClassID` int(10) unsigned NOT NULL DEFAULT 0,
`SubclassID` int(10) unsigned NOT NULL DEFAULT 0,
`SoundOverrideSubclassID` int(11) NOT NULL DEFAULT 0,
`Material` int(11) NOT NULL DEFAULT 0,
`DisplayInfoID` int(10) unsigned NOT NULL DEFAULT 0,
`InventoryType` int(10) unsigned NOT NULL DEFAULT 0,
`SheatheType` int(10) unsigned NOT NULL DEFAULT 0,
`VerifiedBuild` smallint(6) NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `item_currency_cost`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `item_currency_cost` (
`ID` int(10) unsigned NOT NULL DEFAULT 0,
`ItemID` int(10) unsigned NOT NULL DEFAULT 0,
`VerifiedBuild` smallint(6) NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`),
UNIQUE KEY `idx_itemId` (`ItemID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `item_extended_cost`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `item_extended_cost` (
`ID` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredHonorPoints` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredArenaPoints` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredArenaSlot` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredItem1` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredItem2` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredItem3` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredItem4` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredItem5` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredItemCount1` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredItemCount2` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredItemCount3` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredItemCount4` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredItemCount5` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredPersonalArenaRating` int(10) unsigned NOT NULL DEFAULT 0,
`ItemPurchaseGroup` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredCurrency1` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredCurrency2` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredCurrency3` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredCurrency4` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredCurrency5` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredCurrencyCount1` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredCurrencyCount2` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredCurrencyCount3` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredCurrencyCount4` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredCurrencyCount5` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredFactionId` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredFactionStanding` int(10) unsigned NOT NULL DEFAULT 0,
`RequirementFlags` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredGuildLevel` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredAchievement` int(10) unsigned NOT NULL DEFAULT 0,
`VerifiedBuild` smallint(6) NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `item_sparse`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `item_sparse` (
`ID` int(10) unsigned NOT NULL DEFAULT 0,
`Quality` int(10) unsigned NOT NULL DEFAULT 0,
`Flags1` int(10) unsigned NOT NULL DEFAULT 0,
`Flags2` int(10) unsigned NOT NULL DEFAULT 0,
`PriceRandomValue` float NOT NULL DEFAULT 0,
`PriceVariance` float NOT NULL DEFAULT 0,
`BuyCount` int(10) unsigned NOT NULL DEFAULT 0,
`BuyPrice` int(10) unsigned NOT NULL DEFAULT 0,
`SellPrice` int(10) unsigned NOT NULL DEFAULT 0,
`InventoryType` int(10) unsigned NOT NULL DEFAULT 0,
`AllowableClass` int(11) NOT NULL DEFAULT 0,
`AllowableRace` int(11) NOT NULL DEFAULT 0,
`ItemLevel` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredLevel` int(11) NOT NULL DEFAULT 0,
`RequiredSkill` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredSkillRank` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredSpell` int(11) NOT NULL DEFAULT 0,
`RequiredHonorRank` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredCityRank` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredReputationFaction` int(10) unsigned NOT NULL DEFAULT 0,
`RequiredReputationRank` int(10) unsigned NOT NULL DEFAULT 0,
`MaxCount` int(11) NOT NULL DEFAULT 0,
`Stackable` int(11) NOT NULL DEFAULT 0,
`ContainerSlots` int(10) unsigned NOT NULL DEFAULT 0,
`ItemStatType1` int(11) NOT NULL DEFAULT 0,
`ItemStatType2` int(11) NOT NULL DEFAULT 0,
`ItemStatType3` int(11) NOT NULL DEFAULT 0,
`ItemStatType4` int(11) NOT NULL DEFAULT 0,
`ItemStatType5` int(11) NOT NULL DEFAULT 0,
`ItemStatType6` int(11) NOT NULL DEFAULT 0,
`ItemStatType7` int(11) NOT NULL DEFAULT 0,
`ItemStatType8` int(11) NOT NULL DEFAULT 0,
`ItemStatType9` int(11) NOT NULL DEFAULT 0,
`ItemStatType10` int(11) NOT NULL DEFAULT 0,
`ItemStatValue1` int(11) NOT NULL DEFAULT 0,
`ItemStatValue2` int(11) NOT NULL DEFAULT 0,
`ItemStatValue3` int(11) NOT NULL DEFAULT 0,
`ItemStatValue4` int(11) NOT NULL DEFAULT 0,
`ItemStatValue5` int(11) NOT NULL DEFAULT 0,
`ItemStatValue6` int(11) NOT NULL DEFAULT 0,
`ItemStatValue7` int(11) NOT NULL DEFAULT 0,
`ItemStatValue8` int(11) NOT NULL DEFAULT 0,
`ItemStatValue9` int(11) NOT NULL DEFAULT 0,
`ItemStatValue10` int(11) NOT NULL DEFAULT 0,
`ItemStatAllocation1` int(11) NOT NULL DEFAULT 0,
`ItemStatAllocation2` int(11) NOT NULL DEFAULT 0,
`ItemStatAllocation3` int(11) NOT NULL DEFAULT 0,
`ItemStatAllocation4` int(11) NOT NULL DEFAULT 0,
`ItemStatAllocation5` int(11) NOT NULL DEFAULT 0,
`ItemStatAllocation6` int(11) NOT NULL DEFAULT 0,
`ItemStatAllocation7` int(11) NOT NULL DEFAULT 0,
`ItemStatAllocation8` int(11) NOT NULL DEFAULT 0,
`ItemStatAllocation9` int(11) NOT NULL DEFAULT 0,
`ItemStatAllocation10` int(11) NOT NULL DEFAULT 0,
`ItemStatSocketCostMultiplier1` int(11) NOT NULL DEFAULT 0,
`ItemStatSocketCostMultiplier2` int(11) NOT NULL DEFAULT 0,
`ItemStatSocketCostMultiplier3` int(11) NOT NULL DEFAULT 0,
`ItemStatSocketCostMultiplier4` int(11) NOT NULL DEFAULT 0,
`ItemStatSocketCostMultiplier5` int(11) NOT NULL DEFAULT 0,
`ItemStatSocketCostMultiplier6` int(11) NOT NULL DEFAULT 0,
`ItemStatSocketCostMultiplier7` int(11) NOT NULL DEFAULT 0,
`ItemStatSocketCostMultiplier8` int(11) NOT NULL DEFAULT 0,
`ItemStatSocketCostMultiplier9` int(11) NOT NULL DEFAULT 0,
`ItemStatSocketCostMultiplier10` int(11) NOT NULL DEFAULT 0,
`ScalingStatDistribution` int(11) NOT NULL DEFAULT 0,
`DamageType` int(11) NOT NULL DEFAULT 0,
`Delay` int(10) unsigned NOT NULL DEFAULT 0,
`RangedModRange` float NOT NULL DEFAULT 0,
`SpellID1` int(11) NOT NULL DEFAULT 0,
`SpellID2` int(11) NOT NULL DEFAULT 0,
`SpellID3` int(11) NOT NULL DEFAULT 0,
`SpellID4` int(11) NOT NULL DEFAULT 0,
`SpellID5` int(11) NOT NULL DEFAULT 0,
`SpellTrigger1` int(11) NOT NULL DEFAULT 0,
`SpellTrigger2` int(11) NOT NULL DEFAULT 0,
`SpellTrigger3` int(11) NOT NULL DEFAULT 0,
`SpellTrigger4` int(11) NOT NULL DEFAULT 0,
`SpellTrigger5` int(11) NOT NULL DEFAULT 0,
`SpellCharges1` int(11) NOT NULL DEFAULT 0,
`SpellCharges2` int(11) NOT NULL DEFAULT 0,
`SpellCharges3` int(11) NOT NULL DEFAULT 0,
`SpellCharges4` int(11) NOT NULL DEFAULT 0,
`SpellCharges5` int(11) NOT NULL DEFAULT 0,
`SpellCooldown1` int(11) NOT NULL DEFAULT 0,
`SpellCooldown2` int(11) NOT NULL DEFAULT 0,
`SpellCooldown3` int(11) NOT NULL DEFAULT 0,
`SpellCooldown4` int(11) NOT NULL DEFAULT 0,
`SpellCooldown5` int(11) NOT NULL DEFAULT 0,
`SpellCategory1` int(11) NOT NULL DEFAULT 0,
`SpellCategory2` int(11) NOT NULL DEFAULT 0,
`SpellCategory3` int(11) NOT NULL DEFAULT 0,
`SpellCategory4` int(11) NOT NULL DEFAULT 0,
`SpellCategory5` int(11) NOT NULL DEFAULT 0,
`SpellCategoryCooldown1` int(11) NOT NULL DEFAULT 0,
`SpellCategoryCooldown2` int(11) NOT NULL DEFAULT 0,
`SpellCategoryCooldown3` int(11) NOT NULL DEFAULT 0,
`SpellCategoryCooldown4` int(11) NOT NULL DEFAULT 0,
`SpellCategoryCooldown5` int(11) NOT NULL DEFAULT 0,
`Bonding` int(11) NOT NULL DEFAULT 0,
`Display` mediumtext DEFAULT NULL,
`Display1` mediumtext DEFAULT NULL,
`Display2` mediumtext DEFAULT NULL,
`Display3` mediumtext DEFAULT NULL,
`Description` mediumtext DEFAULT NULL,
`PageText` int(10) unsigned NOT NULL DEFAULT 0,
`LanguageID` int(11) NOT NULL DEFAULT 0,
`PageMaterial` int(11) NOT NULL DEFAULT 0,
`StartQuest` int(11) NOT NULL DEFAULT 0,
`LockID` int(10) unsigned NOT NULL DEFAULT 0,
`Material` int(11) NOT NULL DEFAULT 0,
`SheatheType` int(11) NOT NULL DEFAULT 0,
`RandomProperty` int(11) NOT NULL DEFAULT 0,
`RandomSuffix` int(10) unsigned NOT NULL DEFAULT 0,
`ItemSet` int(10) unsigned NOT NULL DEFAULT 0,
`AreaID` int(10) unsigned NOT NULL DEFAULT 0,
`MapID` int(11) NOT NULL DEFAULT 0,
`BagFamily` int(11) NOT NULL DEFAULT 0,
`TotemCategory` int(11) NOT NULL DEFAULT 0,
`SocketColor1` int(11) NOT NULL DEFAULT 0,
`SocketColor2` int(11) NOT NULL DEFAULT 0,
`SocketColor3` int(11) NOT NULL DEFAULT 0,
`Content1` int(10) unsigned NOT NULL DEFAULT 0,
`Content2` int(10) unsigned NOT NULL DEFAULT 0,
`Content3` int(10) unsigned NOT NULL DEFAULT 0,
`SocketBonus` int(11) NOT NULL DEFAULT 0,
`GemProperties` int(11) NOT NULL DEFAULT 0,
`ArmorDamageModifier` float NOT NULL DEFAULT 0,
`Duration` int(11) NOT NULL DEFAULT 0,
`ItemLimitCategory` int(11) NOT NULL DEFAULT 0,
`HolidayID` int(11) NOT NULL DEFAULT 0,
`StatScalingFactor` float NOT NULL DEFAULT 0,
`CurrencySubstitutionID` int(11) NOT NULL DEFAULT 0,
`CurrencySubstitutionCount` int(11) NOT NULL DEFAULT 0,
`VerifiedBuild` smallint(6) NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `item_sparse_locale`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `item_sparse_locale` (
`ID` int(10) unsigned NOT NULL DEFAULT 0,
`locale` varchar(4) NOT NULL,
`Display_lang` mediumtext DEFAULT NULL,
`Display1_lang` mediumtext DEFAULT NULL,
`Display2_lang` mediumtext DEFAULT NULL,
`Display3_lang` mediumtext DEFAULT NULL,
`Description_lang` mediumtext DEFAULT NULL,
`VerifiedBuild` smallint(6) NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`,`locale`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `key_chain`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `key_chain` (
`ID` int(10) unsigned NOT NULL DEFAULT 0,
`Key1` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key2` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key3` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key4` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key5` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key6` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key7` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key8` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key9` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key10` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key11` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key12` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key13` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key14` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key15` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key16` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key17` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key18` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key19` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key20` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key21` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key22` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key23` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key24` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key25` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key26` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key27` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key28` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key29` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key30` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key31` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Key32` tinyint(3) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `updates`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `updates` (
`name` varchar(200) NOT NULL COMMENT 'filename with extension of the update.',
`hash` char(40) DEFAULT '' COMMENT 'sha1 hash of the sql file.',
`state` enum('RELEASED','ARCHIVED') NOT NULL DEFAULT 'RELEASED' COMMENT 'defines if an update is released or archived.',
`timestamp` timestamp NOT NULL DEFAULT current_timestamp() COMMENT 'timestamp when the query was applied.',
`speed` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'time the query takes to apply in ms.',
PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='List of all applied updates in this database.';
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `updates_include`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `updates_include` (
`path` varchar(200) NOT NULL COMMENT 'directory to include. $ means relative to the source directory.',
`state` enum('RELEASED','ARCHIVED') NOT NULL DEFAULT 'RELEASED' COMMENT 'defines if the directory contains released or archived updates.',
PRIMARY KEY (`path`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='List of directories where we want to include sql updates.';
/*!40101 SET character_set_client = @saved_cs_client */;
/*!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 */;
+374
View File
@@ -0,0 +1,374 @@
/*M!999999\- enable the sandbox mode */
/*!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 */;
/*!40101 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 */;
DROP TABLE IF EXISTS `backup_creature_locale_before_mangos_names`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `backup_creature_locale_before_mangos_names` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`locale` varchar(4) NOT NULL,
`Name` text DEFAULT NULL,
`FemaleName` text DEFAULT NULL,
`Title` text DEFAULT NULL,
`VerifiedBuild` smallint(6) DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `backup_creature_locale_missing_rows`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `backup_creature_locale_missing_rows` (
`entry` int(10) unsigned NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `backup_guildmaster_gossip_options`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `backup_guildmaster_gossip_options` (
`MenuID` int(10) unsigned NOT NULL DEFAULT 0,
`OptionID` int(10) unsigned NOT NULL DEFAULT 0,
`OptionIcon` tinyint(3) unsigned NOT NULL DEFAULT 0,
`OptionText` text DEFAULT NULL,
`OptionBroadcastTextID` int(10) unsigned NOT NULL DEFAULT 0,
`OptionType` int(10) unsigned NOT NULL DEFAULT 0,
`OptionNpcflag` bigint(20) unsigned NOT NULL DEFAULT 0,
`ActionMenuID` int(10) unsigned NOT NULL DEFAULT 0,
`ActionPoiID` int(10) unsigned NOT NULL DEFAULT 0,
`BoxCoded` tinyint(3) unsigned NOT NULL DEFAULT 0,
`BoxMoney` int(10) unsigned NOT NULL DEFAULT 0,
`BoxText` mediumtext DEFAULT NULL,
`BoxBroadcastTextID` int(10) unsigned NOT NULL DEFAULT 0,
`VerifiedBuild` smallint(6) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `backup_guildmaster_urtrun_gossip_options`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `backup_guildmaster_urtrun_gossip_options` (
`MenuID` int(10) unsigned NOT NULL DEFAULT 0,
`OptionID` int(10) unsigned NOT NULL DEFAULT 0,
`OptionIcon` tinyint(3) unsigned NOT NULL DEFAULT 0,
`OptionText` text DEFAULT NULL,
`OptionBroadcastTextID` int(10) unsigned NOT NULL DEFAULT 0,
`OptionType` int(10) unsigned NOT NULL DEFAULT 0,
`OptionNpcflag` bigint(20) unsigned NOT NULL DEFAULT 0,
`ActionMenuID` int(10) unsigned NOT NULL DEFAULT 0,
`ActionPoiID` int(10) unsigned NOT NULL DEFAULT 0,
`BoxCoded` tinyint(3) unsigned NOT NULL DEFAULT 0,
`BoxMoney` int(10) unsigned NOT NULL DEFAULT 0,
`BoxText` mediumtext DEFAULT NULL,
`BoxBroadcastTextID` int(10) unsigned NOT NULL DEFAULT 0,
`VerifiedBuild` smallint(6) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `backup_quest_locale_before_gtdb_fill`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `backup_quest_locale_before_gtdb_fill` (
`ID` int(10) unsigned NOT NULL DEFAULT 0,
`locale` varchar(4) NOT NULL,
`Title` text DEFAULT NULL,
`Details` text DEFAULT NULL,
`Objectives` text DEFAULT NULL,
`OfferRewardText` text DEFAULT NULL,
`RequestItemsText` text DEFAULT NULL,
`EndText` text DEFAULT NULL,
`CompletedText` text DEFAULT NULL,
`ObjectiveText1` text DEFAULT NULL,
`ObjectiveText2` text DEFAULT NULL,
`ObjectiveText3` text DEFAULT NULL,
`ObjectiveText4` text DEFAULT NULL,
`QuestGiverTextWindow` text DEFAULT NULL,
`QuestGiverTargetName` text DEFAULT NULL,
`QuestTurnTextWindow` text DEFAULT NULL,
`QuestTurnTargetName` text DEFAULT NULL,
`VerifiedBuild` smallint(6) DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `backup_quest_locale_before_mangos_fill`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `backup_quest_locale_before_mangos_fill` (
`ID` int(10) unsigned NOT NULL DEFAULT 0,
`locale` varchar(4) NOT NULL,
`Title` text DEFAULT NULL,
`Details` text DEFAULT NULL,
`Objectives` text DEFAULT NULL,
`OfferRewardText` text DEFAULT NULL,
`RequestItemsText` text DEFAULT NULL,
`EndText` text DEFAULT NULL,
`CompletedText` text DEFAULT NULL,
`ObjectiveText1` text DEFAULT NULL,
`ObjectiveText2` text DEFAULT NULL,
`ObjectiveText3` text DEFAULT NULL,
`ObjectiveText4` text DEFAULT NULL,
`QuestGiverTextWindow` text DEFAULT NULL,
`QuestGiverTargetName` text DEFAULT NULL,
`QuestTurnTextWindow` text DEFAULT NULL,
`QuestTurnTargetName` text DEFAULT NULL,
`VerifiedBuild` smallint(6) DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `backup_quest_locale_missing_rows`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `backup_quest_locale_missing_rows` (
`ID` int(10) unsigned NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `backup_quest_locale_missing_rows_before_gtdb`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `backup_quest_locale_missing_rows_before_gtdb` (
`ID` int(10) unsigned NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_001`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_001` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_002`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_002` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_003`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_003` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_004`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_004` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_005`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_005` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_006`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_006` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_007`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_007` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_008`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_008` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_009`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_009` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_010`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_010` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_011`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_011` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_012`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_012` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_013`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_013` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_014`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_014` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_batch_015`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_batch_015` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `creature_name_review_exceptions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `creature_name_review_exceptions` (
`entry` int(10) unsigned NOT NULL,
`EnglishName` text NOT NULL,
`ProposedGermanName` text DEFAULT NULL,
`reason` varchar(255) DEFAULT NULL,
`status` varchar(32) NOT NULL DEFAULT 'open',
`final_german_name` text DEFAULT NULL,
`notes` text DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `gtdb_quest_de`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `gtdb_quest_de` (
`ID` int(10) unsigned NOT NULL,
`Title` text DEFAULT NULL,
`Details` text DEFAULT NULL,
`Objectives` text DEFAULT NULL,
`OfferRewardText` text DEFAULT NULL,
`RequestItemsText` text DEFAULT NULL,
`EndText` text DEFAULT NULL,
`CompletedText` text DEFAULT NULL,
`ObjectiveText1` text DEFAULT NULL,
`ObjectiveText2` text DEFAULT NULL,
`ObjectiveText3` text DEFAULT NULL,
`ObjectiveText4` text DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `mangos_creature_de`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `mangos_creature_de` (
`entry` int(10) unsigned NOT NULL,
`name_de` text DEFAULT NULL,
`subname_de` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `mangos_quest_de`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `mangos_quest_de` (
`ID` int(10) unsigned NOT NULL,
`Title` text DEFAULT NULL,
`Details` text DEFAULT NULL,
`Objectives` text DEFAULT NULL,
`OfferRewardText` text DEFAULT NULL,
`RequestItemsText` text DEFAULT NULL,
`EndText` text DEFAULT NULL,
`CompletedText` text DEFAULT NULL,
`ObjectiveText1` text DEFAULT NULL,
`ObjectiveText2` text DEFAULT NULL,
`ObjectiveText3` text DEFAULT NULL,
`ObjectiveText4` text DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `strong_creature_name_matches`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `strong_creature_name_matches` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`GermanName` text DEFAULT NULL,
PRIMARY KEY (`entry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `unresolved_creature_names`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `unresolved_creature_names` (
`entry` int(10) unsigned NOT NULL DEFAULT 0,
`EnglishName` varchar(100) NOT NULL,
`MangosGermanName` text DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!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 */;
File diff suppressed because it is too large. Load diff
+233
View File
@@ -0,0 +1,233 @@
/*M!999999\- enable the sandbox mode */
/*!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 */;
/*!40101 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 */;
DROP TABLE IF EXISTS `bug_report_attachments`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `bug_report_attachments` (
`attachment_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`report_id` bigint(20) unsigned NOT NULL,
`attachment_type` varchar(32) NOT NULL DEFAULT 'screenshot',
`file_name` varchar(255) NOT NULL,
`file_path` varchar(1024) NOT NULL,
`mime_type` varchar(128) DEFAULT NULL,
`file_size` bigint(20) unsigned DEFAULT NULL,
`description` varchar(255) DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`attachment_id`),
KEY `idx_bug_report_attachments_report_id` (`report_id`),
KEY `idx_bug_report_attachments_type` (`attachment_type`),
KEY `idx_bug_report_attachments_created_at` (`created_at`),
CONSTRAINT `fk_bug_report_attachments_report` FOREIGN KEY (`report_id`) REFERENCES `bug_reports` (`report_id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `bug_reports`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `bug_reports` (
`report_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`report_token` varchar(96) DEFAULT NULL,
`bug_id` bigint(20) unsigned DEFAULT NULL,
`source_type` varchar(32) NOT NULL DEFAULT 'player',
`reported_severity` varchar(16) NOT NULL DEFAULT 'unknown',
`status` varchar(16) NOT NULL DEFAULT 'open',
`account_id` bigint(20) unsigned DEFAULT NULL,
`character_guid` bigint(20) unsigned DEFAULT NULL,
`character_name` varchar(64) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
`description` text NOT NULL,
`expected_behavior` text DEFAULT NULL,
`reproduction_notes` text DEFAULT NULL,
`reproducible` tinyint(1) DEFAULT NULL,
`map_id` int(10) unsigned DEFAULT NULL,
`zone_id` int(10) unsigned DEFAULT NULL,
`area_id` int(10) unsigned DEFAULT NULL,
`position_x` float DEFAULT NULL,
`position_y` float DEFAULT NULL,
`position_z` float DEFAULT NULL,
`orientation` float DEFAULT NULL,
`target_guid` bigint(20) unsigned DEFAULT NULL,
`target_entry` int(10) unsigned DEFAULT NULL,
`target_type` varchar(32) DEFAULT NULL,
`quest_id` int(10) unsigned DEFAULT NULL,
`client_build` int(10) unsigned DEFAULT NULL,
`server_version` varchar(128) DEFAULT NULL,
`core_commit` varchar(64) DEFAULT NULL,
`context_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`context_json`)),
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`closed_at` datetime DEFAULT NULL,
`closed_by_account_id` bigint(20) unsigned DEFAULT NULL,
`closure_reason` varchar(32) DEFAULT NULL,
`closure_note` text DEFAULT NULL,
PRIMARY KEY (`report_id`),
UNIQUE KEY `uq_bug_reports_report_token` (`report_token`),
KEY `idx_bug_reports_bug_id` (`bug_id`),
KEY `idx_bug_reports_created_at` (`created_at`),
KEY `idx_bug_reports_character` (`character_guid`),
KEY `idx_bug_reports_quest` (`quest_id`),
KEY `idx_bug_reports_target` (`target_type`,`target_entry`),
KEY `idx_bug_reports_status_created` (`status`,`created_at`),
KEY `idx_bug_reports_reported_severity` (`reported_severity`),
KEY `idx_bug_reports_zone` (`zone_id`,`area_id`),
CONSTRAINT `fk_bug_reports_bug` FOREIGN KEY (`bug_id`) REFERENCES `bugs` (`bug_id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `bug_reproduction_events`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `bug_reproduction_events` (
`event_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`reproduction_id` bigint(20) unsigned NOT NULL,
`source` varchar(16) NOT NULL DEFAULT 'server',
`event_time` datetime NOT NULL DEFAULT current_timestamp(),
`event_type` varchar(64) NOT NULL,
`entity_type` varchar(32) DEFAULT NULL,
`entity_id` bigint(20) unsigned DEFAULT NULL,
`entity_guid` bigint(20) unsigned DEFAULT NULL,
`data_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`data_json`)),
PRIMARY KEY (`event_id`),
KEY `idx_repro_event_reproduction` (`reproduction_id`),
KEY `idx_repro_event_type` (`event_type`),
KEY `idx_repro_event_time` (`event_time`),
KEY `idx_repro_event_source` (`source`),
CONSTRAINT `bug_reproduction_events_ibfk_1` FOREIGN KEY (`reproduction_id`) REFERENCES `bug_reproductions` (`reproduction_id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=526 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `bug_reproductions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `bug_reproductions` (
`reproduction_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`session_token` varchar(96) DEFAULT NULL,
`bug_id` bigint(20) unsigned DEFAULT NULL,
`report_id` bigint(20) unsigned DEFAULT NULL,
`tester_account_id` bigint(20) unsigned DEFAULT NULL,
`tester_character_guid` bigint(20) unsigned DEFAULT NULL,
`tester_character_name` varchar(64) DEFAULT NULL,
`result` varchar(32) NOT NULL DEFAULT 'unknown',
`description` text DEFAULT NULL,
`steps` text DEFAULT NULL,
`observation` text DEFAULT NULL,
`map_id` int(10) unsigned DEFAULT NULL,
`zone_id` int(10) unsigned DEFAULT NULL,
`area_id` int(10) unsigned DEFAULT NULL,
`position_x` float DEFAULT NULL,
`position_y` float DEFAULT NULL,
`position_z` float DEFAULT NULL,
`orientation` float DEFAULT NULL,
`target_guid` bigint(20) unsigned DEFAULT NULL,
`target_entry` int(10) unsigned DEFAULT NULL,
`target_type` varchar(32) DEFAULT NULL,
`quest_id` int(10) unsigned DEFAULT NULL,
`diagnostic_focus_type` varchar(32) DEFAULT NULL,
`diagnostic_focus_id` bigint(20) DEFAULT NULL,
`context_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`context_json`)),
`started_at` datetime DEFAULT NULL,
`finished_at` datetime DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`reproduction_id`),
UNIQUE KEY `uq_bug_reproductions_session_token` (`session_token`),
KEY `idx_repro_bug` (`bug_id`),
KEY `idx_repro_report` (`report_id`),
KEY `idx_repro_quest` (`quest_id`),
KEY `idx_repro_zone` (`zone_id`),
KEY `idx_repro_created` (`created_at`),
KEY `idx_bug_reproductions_diagnostic_focus` (`diagnostic_focus_type`,`diagnostic_focus_id`),
CONSTRAINT `bug_reproductions_ibfk_1` FOREIGN KEY (`bug_id`) REFERENCES `bugs` (`bug_id`) ON DELETE SET NULL,
CONSTRAINT `bug_reproductions_ibfk_2` FOREIGN KEY (`report_id`) REFERENCES `bug_reports` (`report_id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `bugs`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `bugs` (
`bug_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`bug_token` varchar(96) DEFAULT NULL,
`title` varchar(255) NOT NULL,
`status` varchar(32) NOT NULL DEFAULT 'new',
`severity` varchar(32) NOT NULL DEFAULT 'unknown',
`category` varchar(32) NOT NULL DEFAULT 'unknown',
`primary_entity_type` varchar(32) DEFAULT NULL,
`primary_entity_id` bigint(20) unsigned DEFAULT NULL,
`primary_map_id` int(10) unsigned DEFAULT NULL,
`primary_zone_id` int(10) unsigned DEFAULT NULL,
`primary_area_id` int(10) unsigned DEFAULT NULL,
`description` text DEFAULT NULL,
`developer_notes` mediumtext DEFAULT NULL,
`resolution_notes` mediumtext DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`resolved_at` datetime DEFAULT NULL,
PRIMARY KEY (`bug_id`),
UNIQUE KEY `uq_bugs_bug_token` (`bug_token`),
KEY `idx_bugs_status` (`status`),
KEY `idx_bugs_category` (`category`),
KEY `idx_bugs_severity` (`severity`),
KEY `idx_bugs_entity` (`primary_entity_type`,`primary_entity_id`),
KEY `idx_bugs_created_at` (`created_at`),
KEY `idx_bugs_zone` (`primary_zone_id`,`primary_area_id`),
KEY `idx_bugs_updated_at` (`updated_at`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `diagnostic_event_catalog`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `diagnostic_event_catalog` (
`event_entry` tinyint(3) unsigned NOT NULL,
`display_name` varchar(128) NOT NULL,
`category` varchar(32) NOT NULL DEFAULT 'seasonal',
`enabled` tinyint(1) NOT NULL DEFAULT 1,
`sort_order` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`event_entry`),
KEY `idx_diagnostic_event_catalog_enabled_sort` (`enabled`,`sort_order`,`display_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `diagnostic_runs`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `diagnostic_runs` (
`diagnostic_run_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`run_token` varchar(96) DEFAULT NULL,
`bug_id` bigint(20) unsigned NOT NULL,
`requested_by_account_id` bigint(20) unsigned DEFAULT NULL,
`requested_by_character_guid` bigint(20) unsigned DEFAULT NULL,
`status` varchar(16) NOT NULL DEFAULT 'queued',
`claim_token` varchar(96) DEFAULT NULL,
`claimed_by` varchar(255) DEFAULT NULL,
`claimed_at` datetime DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
`started_at` datetime DEFAULT NULL,
`finished_at` datetime DEFAULT NULL,
`output_path` text DEFAULT NULL,
`error_message` text DEFAULT NULL,
`wowdiag_version` varchar(64) DEFAULT NULL,
`core_revision` varchar(64) DEFAULT NULL,
PRIMARY KEY (`diagnostic_run_id`),
UNIQUE KEY `uq_diagnostic_runs_token` (`run_token`),
UNIQUE KEY `uq_diagnostic_runs_claim_token` (`claim_token`),
KEY `idx_diagnostic_runs_bug` (`bug_id`),
KEY `idx_diagnostic_runs_status_created` (`status`,`created_at`),
KEY `idx_diagnostic_runs_claimed_at` (`claimed_at`),
CONSTRAINT `fk_diagnostic_runs_bug` FOREIGN KEY (`bug_id`) REFERENCES `bugs` (`bug_id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!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 */;
+103 -21
View File
@@ -46,6 +46,39 @@ namespace VianoAdventurers
|| scriptName.rfind("npc_alliance_adventurer_tank", 0) == 0;
}
// VIANO_FACTION_MODELS_V1
static uint32 GetVianoAdventurerDisplayId(Creature* creature)
{
static constexpr uint32 HORDE_MODELS[] =
{
30063,
30064,
30065,
30066
};
static constexpr uint32 ALLIANCE_MODELS[] =
{
24361,
24541,
24543,
24542
};
uint32 const* models = HORDE_MODELS;
if (creature)
{
uint32 const entry = creature->GetEntry();
if (entry >= 900004 && entry <= 900006)
models = ALLIANCE_MODELS;
}
return models[urand(0, 3)];
}
static void GetVianoFollowSlot(Creature* bot, Player* owner, float& distance, float& angle)
{
distance = FOLLOW_DISTANCE;
@@ -316,20 +349,18 @@ namespace VianoAdventurers
me->SetFaction(owner->GetFaction());
me->SetLevel(owner->getLevel());
me->UpdateLevelDependantStats();
static constexpr uint32 HORDE_ADVENTURER_MODELS[] =
{
30063,
30064,
30065,
30066
};
uint32 displayId = HORDE_ADVENTURER_MODELS[urand(0, 3)];
uint32 const displayId =
GetVianoAdventurerDisplayId(me);
me->SetDisplayId(displayId, true);
TC_LOG_INFO("scripts","[VianoAI] Horde adventurer display selected: %u", displayId);
TC_LOG_INFO(
"scripts",
"[VianoAI] adventurer display selected: "
"entry=%u display=%u",
me->GetEntry(),
displayId);
// REACT_PASSIVE lets AttackStart() briefly set a victim, but the
// core subsequently drops that victim again. We already suppress
@@ -1095,16 +1126,11 @@ namespace VianoAdventurers
me->SetFaction(owner->GetFaction());
me->SetLevel(owner->getLevel());
me->UpdateLevelDependantStats();
uint32 const displayId =
GetVianoAdventurerDisplayId(me);
static constexpr uint32 HORDE_ADVENTURER_MODELS[] =
{
30063,
30064,
30065,
30066
};
me->SetDisplayId(displayId, true);
me->SetDisplayId(HORDE_ADVENTURER_MODELS[urand(0, 3)], true);
SetEquipmentSlots(false, 50179, 50794, EQUIP_NO_CHANGE);
me->SetReactState(REACT_DEFENSIVE);
@@ -1517,9 +1543,11 @@ namespace VianoAdventurers
me->SetLevel(owner->getLevel());
me->UpdateLevelDependantStats();
ConfigureMana(true);
uint32 const displayId =
GetVianoAdventurerDisplayId(me);
me->SetDisplayId(displayId, true);
static constexpr uint32 MODELS[] = { 30063, 30064, 30065, 30066 };
me->SetDisplayId(MODELS[urand(0, 3)], true);
SetEquipmentSlots(false, 39426, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE);
me->SetReactState(REACT_PASSIVE);
FollowOwner(owner);
@@ -1674,6 +1702,57 @@ void UpdateAI(uint32 diff) override
return new npc_horde_adventurer_healerAI(creature);
}
};
// VIANO_ALLIANCE_ADVENTURERS_V1
//
// Alliance adventurers intentionally reuse the same combat AI as their
// Horde counterparts. Faction, models and default equipment are supplied
// by their own creature_template rows.
class npc_alliance_adventurer_melee : public CreatureScript
{
public:
npc_alliance_adventurer_melee()
: CreatureScript("npc_alliance_adventurer_melee")
{
}
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_horde_adventurer_melee::
npc_horde_adventurer_meleeAI(creature);
}
};
class npc_alliance_adventurer_tank : public CreatureScript
{
public:
npc_alliance_adventurer_tank()
: CreatureScript("npc_alliance_adventurer_tank")
{
}
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_horde_adventurer_tank::
npc_horde_adventurer_tankAI(creature);
}
};
class npc_alliance_adventurer_healer : public CreatureScript
{
public:
npc_alliance_adventurer_healer()
: CreatureScript("npc_alliance_adventurer_healer")
{
}
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_horde_adventurer_healer::
npc_horde_adventurer_healerAI(creature);
}
};
}
void AddSC_viano_adventurers()
@@ -1682,4 +1761,7 @@ void AddSC_viano_adventurers()
new npc_horde_adventurer_melee();
new npc_horde_adventurer_tank();
new npc_horde_adventurer_healer();
new npc_alliance_adventurer_melee();
new npc_alliance_adventurer_tank();
new npc_alliance_adventurer_healer();
}
File diff suppressed because it is too large. Load diff
+536 -18
View File
@@ -31,6 +31,7 @@ EndContentData */
#include "ScriptMgr.h"
#include "GameObject.h"
#include "Group.h"
#include "Item.h"
#include "Player.h"
#include "ScriptedCreature.h"
@@ -38,6 +39,9 @@ EndContentData */
#include "SpellMgr.h"
#include "TemporarySummon.h"
#include "Log.h"
#include <algorithm>
#include <list>
#include <vector>
namespace ItemScripts
{
@@ -414,26 +418,298 @@ class item_generic_limit_chance_above_60 : public ItemScript
}
};
/*#####
# item_horde_adventurer_horn
# Vcore dungeon horns
#####*/
class item_horde_adventurer_horn : public ItemScript
enum VcoreDungeonHornSpells
{
SPELL_VCORE_HORN_TANK = 120000,
SPELL_VCORE_HORN_HEALER = 120001,
SPELL_VCORE_HORN_DAMAGE = 120002,
SPELL_VCORE_HORN_DAMAGE_3 = 120003
};
enum VcoreDungeonHornNpcs
{
NPC_HORDE_ADVENTURER_DAMAGE = 900001,
NPC_HORDE_ADVENTURER_TANK = 900002,
NPC_HORDE_ADVENTURER_HEALER = 900003,
// TODO: replace once Alliance creature templates exist.
NPC_ALLIANCE_ADVENTURER_DAMAGE = 900004,
NPC_ALLIANCE_ADVENTURER_TANK = 900005,
NPC_ALLIANCE_ADVENTURER_HEALER = 900006
};
static constexpr uint32 VCORE_DUNGEON_GROUP_LIMIT = 5;
struct VcoreHornPlan
{
uint32 occupancy = 0;
uint32 freeSlots = 0;
uint32 ownBots = 0;
uint32 spawnCount = 0;
uint32 replaceCount = 0;
};
static uint32 GetVcoreHornSpellForItem(uint32 itemId)
{
switch (itemId)
{
case 80000:
case 80004:
return SPELL_VCORE_HORN_TANK;
case 80001:
case 80005:
return SPELL_VCORE_HORN_HEALER;
case 80002:
case 80006:
return SPELL_VCORE_HORN_DAMAGE;
case 80003:
case 80007:
return SPELL_VCORE_HORN_DAMAGE_3;
default:
return 0;
}
}
static uint32 GetVcoreHornRequestedCount(uint32 spellId)
{
return spellId == SPELL_VCORE_HORN_DAMAGE_3 ? 3u : 1u;
}
static bool IsVcoreHordeHorn(uint32 itemId)
{
return itemId >= 80000 && itemId <= 80003;
}
static bool IsVcoreAllianceHorn(uint32 itemId)
{
return itemId >= 80004 && itemId <= 80007;
}
static uint32 GetVcoreHornNpcEntry(Player* player, uint32 spellId)
{
if (!player)
return 0;
if (player->GetTeam() == HORDE)
{
switch (spellId)
{
case SPELL_VCORE_HORN_TANK:
return NPC_HORDE_ADVENTURER_TANK;
case SPELL_VCORE_HORN_HEALER:
return NPC_HORDE_ADVENTURER_HEALER;
case SPELL_VCORE_HORN_DAMAGE:
case SPELL_VCORE_HORN_DAMAGE_3:
return NPC_HORDE_ADVENTURER_DAMAGE;
default:
return 0;
}
}
if (player->GetTeam() == ALLIANCE)
{
switch (spellId)
{
case SPELL_VCORE_HORN_TANK:
return NPC_ALLIANCE_ADVENTURER_TANK;
case SPELL_VCORE_HORN_HEALER:
return NPC_ALLIANCE_ADVENTURER_HEALER;
case SPELL_VCORE_HORN_DAMAGE:
case SPELL_VCORE_HORN_DAMAGE_3:
return NPC_ALLIANCE_ADVENTURER_DAMAGE;
default:
return 0;
}
}
return 0;
}
static void CollectVcoreDungeonBots(
Player* player,
std::vector<Creature*>& allBots,
std::vector<Creature*>& ownBots)
{
allBots.clear();
ownBots.clear();
if (!player)
return;
std::list<Unit*> units;
player->GetPartyMembers(units);
for (Unit* unit : units)
{
Creature* creature = unit ? unit->ToCreature() : nullptr;
if (!creature)
continue;
if (!creature->IsAlive())
continue;
if (!creature->IsVianoAdventurer())
continue;
if (!creature->IsInMap(player))
continue;
if (std::find(allBots.begin(), allBots.end(), creature) == allBots.end())
allBots.push_back(creature);
Unit* owner = creature->GetOwner();
if (owner && owner->GetGUID() == player->GetGUID())
ownBots.push_back(creature);
}
// Current Viano summons receive increasing Creature GUIDs.
// The Viano formation code already uses the same ordering.
// Therefore this gives oldest -> newest.
std::sort(
ownBots.begin(),
ownBots.end(),
[](Creature const* left, Creature const* right)
{
return left->GetGUID().GetRawValue()
< right->GetGUID().GetRawValue();
});
}
static uint32 GetVcoreRealPlayerCount(Player* player)
{
if (!player)
return 0;
if (Group* group = player->GetGroup())
return group->GetMembersCount();
return 1;
}
static VcoreHornPlan BuildVcoreHornPlan(
Player* player,
uint32 requestedCount,
std::vector<Creature*>& ownBots)
{
VcoreHornPlan plan;
std::vector<Creature*> allBots;
CollectVcoreDungeonBots(
player,
allBots,
ownBots);
uint32 const realPlayers =
GetVcoreRealPlayerCount(player);
uint32 const botCount =
uint32(allBots.size());
plan.occupancy =
realPlayers + botCount;
plan.ownBots =
uint32(ownBots.size());
// Do not mutate an already invalid >5 state.
if (plan.occupancy > VCORE_DUNGEON_GROUP_LIMIT)
return plan;
plan.freeSlots =
VCORE_DUNGEON_GROUP_LIMIT - plan.occupancy;
plan.spawnCount =
std::min(
requestedCount,
plan.freeSlots + plan.ownBots);
plan.replaceCount =
plan.spawnCount > plan.freeSlots
? plan.spawnCount - plan.freeSlots
: 0;
return plan;
}
class item_vcore_dungeon_horn : public ItemScript
{
public:
item_horde_adventurer_horn() : ItemScript("item_horde_adventurer_horn") { }
bool OnUse(Player* player, Item* item, SpellCastTargets const& /*targets*/) override
item_vcore_dungeon_horn()
: ItemScript("item_vcore_dungeon_horn")
{
}
bool OnUse(
Player* player,
Item* item,
SpellCastTargets const& /*targets*/) override
{
if (!player || !item)
return true;
uint32 const itemId =
item->GetEntry();
uint32 const spellId =
GetVcoreHornSpellForItem(itemId);
TC_LOG_INFO(
"scripts",
"[VianoHorn] OnUse player='%s' item=%u",
"[VianoHorn] OnUse player='%s' item=%u spell=%u",
player->GetName().c_str(),
item->GetEntry());
itemId,
spellId);
if (!spellId)
{
TC_LOG_ERROR(
"scripts",
"[VianoHorn] unknown horn item=%u",
itemId);
return true;
}
if ((IsVcoreHordeHorn(itemId)
&& player->GetTeam() != HORDE)
||
(IsVcoreAllianceHorn(itemId)
&& player->GetTeam() != ALLIANCE))
{
TC_LOG_INFO(
"scripts",
"[VianoHorn] rejected: wrong faction player='%s' item=%u",
player->GetName().c_str(),
itemId);
player->SendEquipError(
EQUIP_ERR_CLIENT_LOCKED_OUT,
item,
nullptr);
return true;
}
// Horns may not be used during combat.
if (player->IsInCombat())
{
TC_LOG_INFO("scripts",
TC_LOG_INFO(
"scripts",
"[VianoHorn] rejected: player is in combat");
player->SendEquipError(
@@ -444,10 +720,10 @@ public:
return true;
}
// Horns may only be used inside dungeon instances.
if (!player->GetMap()->IsDungeon())
{
TC_LOG_INFO("scripts",
TC_LOG_INFO(
"scripts",
"[VianoHorn] rejected: player is not inside a dungeon");
player->SendEquipError(
@@ -458,17 +734,258 @@ public:
return true;
}
// Alliance NPC templates are not configured yet.
// Reject before the normal cast so no cooldown is consumed.
uint32 const npcEntry =
GetVcoreHornNpcEntry(
player,
spellId);
if (!npcEntry)
{
TC_LOG_INFO(
"scripts",
"[VianoHorn] rejected: no creature entry configured "
"for team=%u spell=%u",
uint32(player->GetTeam()),
spellId);
player->SendEquipError(
EQUIP_ERR_CLIENT_LOCKED_OUT,
item,
nullptr);
return true;
}
uint32 const requestedCount =
GetVcoreHornRequestedCount(spellId);
std::vector<Creature*> ownBots;
VcoreHornPlan const plan =
BuildVcoreHornPlan(
player,
requestedCount,
ownBots);
TC_LOG_INFO(
"scripts",
"[VianoHorn] prechecks passed; allowing normal item spell processing");
"[VianoHorn] precheck occupancy=%u free=%u own=%u "
"requested=%u spawn=%u replace=%u",
plan.occupancy,
plan.freeSlots,
plan.ownBots,
requestedCount,
plan.spawnCount,
plan.replaceCount);
// IMPORTANT:
// false means the ItemScript does not consume/suppress the normal item use.
// The item's SpellID1 (120000-120003) may now run through the regular
// Trinity spell lifecycle.
// Full group and nothing belonging to this player
// can be replaced. Do not start the spell/cooldown.
if (!plan.spawnCount)
{
player->SendEquipError(
EQUIP_ERR_CLIENT_LOCKED_OUT,
item,
nullptr);
return true;
}
// Preserve the normal item -> spell lifecycle.
return false;
}
};
};
class spell_vcore_dungeon_horn : public SpellScriptLoader
{
public:
spell_vcore_dungeon_horn()
: SpellScriptLoader("spell_vcore_dungeon_horn")
{
}
class spell_vcore_dungeon_horn_SpellScript
: public SpellScript
{
void HandleAfterCast()
{
Player* player =
GetCaster()
? GetCaster()->ToPlayer()
: nullptr;
if (!player)
return;
uint32 const spellId =
GetSpellInfo()->Id;
if (spellId < SPELL_VCORE_HORN_TANK
|| spellId > SPELL_VCORE_HORN_DAMAGE_3)
{
return;
}
// Re-check immediately before changing world state.
if (player->IsInCombat())
{
TC_LOG_INFO(
"scripts",
"[VianoHorn] AfterCast aborted: player entered combat");
return;
}
if (!player->GetMap()->IsDungeon())
{
TC_LOG_INFO(
"scripts",
"[VianoHorn] AfterCast aborted: player left dungeon");
return;
}
uint32 const npcEntry =
GetVcoreHornNpcEntry(
player,
spellId);
if (!npcEntry)
{
TC_LOG_ERROR(
"scripts",
"[VianoHorn] AfterCast aborted: no NPC entry "
"team=%u spell=%u",
uint32(player->GetTeam()),
spellId);
return;
}
uint32 const requestedCount =
GetVcoreHornRequestedCount(spellId);
std::vector<Creature*> ownBots;
VcoreHornPlan const plan =
BuildVcoreHornPlan(
player,
requestedCount,
ownBots);
TC_LOG_INFO(
"scripts",
"[VianoHorn] AfterCast player='%s' spell=%u npc=%u "
"occupancy=%u free=%u own=%u requested=%u "
"spawn=%u replace=%u",
player->GetName().c_str(),
spellId,
npcEntry,
plan.occupancy,
plan.freeSlots,
plan.ownBots,
requestedCount,
plan.spawnCount,
plan.replaceCount);
if (!plan.spawnCount)
return;
// Replace only this player's oldest active bots.
for (uint32 i = 0;
i < plan.replaceCount
&& i < ownBots.size();
++i)
{
Creature* oldBot =
ownBots[i];
if (!oldBot)
continue;
TC_LOG_INFO(
"scripts",
"[VianoHorn] replacing own bot "
"entry=%u guid=%s",
oldBot->GetEntry(),
oldBot->GetGUID().ToString().c_str());
oldBot->DespawnOrUnsummon();
}
uint32 spawned = 0;
for (uint32 i = 0;
i < plan.spawnCount;
++i)
{
// Prevent 3-DD summons from stacking exactly
// on the same coordinates.
float const yOffset =
(float(i)
- (float(plan.spawnCount) - 1.0f) / 2.0f)
* 1.5f;
Creature* summon =
player->SummonCreature(
npcEntry,
player->GetPositionX() + 2.0f,
player->GetPositionY() + yOffset,
player->GetPositionZ(),
player->GetOrientation(),
TEMPSUMMON_MANUAL_DESPAWN,
0);
if (!summon)
{
TC_LOG_ERROR(
"scripts",
"[VianoHorn] summon failed "
"player='%s' spell=%u npc=%u index=%u",
player->GetName().c_str(),
spellId,
npcEntry,
i);
continue;
}
++spawned;
TC_LOG_INFO(
"scripts",
"[VianoHorn] summoned "
"entry=%u guid=%s owner='%s'",
summon->GetEntry(),
summon->GetGUID().ToString().c_str(),
player->GetName().c_str());
}
TC_LOG_INFO(
"scripts",
"[VianoHorn] completed "
"player='%s' spell=%u spawned=%u "
"requested=%u replaced=%u",
player->GetName().c_str(),
spellId,
spawned,
requestedCount,
plan.replaceCount);
}
void Register() override
{
AfterCast.Register(
&spell_vcore_dungeon_horn_SpellScript::HandleAfterCast);
}
};
SpellScript* GetSpellScript() const override
{
return new spell_vcore_dungeon_horn_SpellScript();
}
};
}// namespace ItemScripts
@@ -486,5 +1003,6 @@ void AddSC_item_scripts()
new item_dehta_trap_smasher();
new item_captured_frog();
new item_generic_limit_chance_above_60();
new item_horde_adventurer_horn();
new item_vcore_dungeon_horn();
new spell_vcore_dungeon_horn();
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,490 @@
/*
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* ScriptData
SDName: Item_Scripts
SD%Complete: 100
SDComment: Items for a range of different items. See content below (in script)
SDCategory: Items
EndScriptData */
/* ContentData
item_nether_wraith_beacon(i31742) Summons creatures for quest Becoming a Spellfire Tailor (q10832)
item_flying_machine(i34060, i34061) Engineering crafted flying machines
item_gor_dreks_ointment(i30175) Protecting Our Own(q10488)
item_only_for_flight Items which should only useable while flying
EndContentData */
#include "ScriptMgr.h"
#include "GameObject.h"
#include "Item.h"
#include "Player.h"
#include "ScriptedCreature.h"
#include "Spell.h"
#include "SpellMgr.h"
#include "TemporarySummon.h"
#include "Log.h"
namespace ItemScripts
{
/*#####
# item_only_for_flight
#####*/
enum OnlyForFlight
{
SPELL_ARCANE_CHARGES = 45072
};
class item_only_for_flight : public ItemScript
{
public:
item_only_for_flight() : ItemScript("item_only_for_flight") { }
bool OnUse(Player* player, Item* item, SpellCastTargets const& /*targets*/) override
{
uint32 itemId = item->GetEntry();
bool disabled = false;
//for special scripts
switch (itemId)
{
case 24538:
if (player->GetAreaId() != 3628)
disabled = true;
break;
case 34489:
if (player->GetZoneId() != 4080)
disabled = true;
break;
case 34475:
if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_ARCANE_CHARGES))
Spell::SendCastResult(player, spellInfo, 1, SPELL_FAILED_NOT_ON_GROUND);
break;
}
// allow use in flight only
if (player->IsInFlight() && !disabled)
return false;
// error
player->SendEquipError(EQUIP_ERR_CLIENT_LOCKED_OUT, item, nullptr);
return true;
}
};
/*#####
# item_nether_wraith_beacon
#####*/
class item_nether_wraith_beacon : public ItemScript
{
public:
item_nether_wraith_beacon() : ItemScript("item_nether_wraith_beacon") { }
bool OnUse(Player* player, Item* /*item*/, SpellCastTargets const& /*targets*/) override
{
if (player->GetQuestStatus(10832) == QUEST_STATUS_INCOMPLETE)
{
if (Creature* nether = player->SummonCreature(22408, player->GetPositionX(), player->GetPositionY()+20, player->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 180000))
nether->AI()->AttackStart(player);
if (Creature* nether = player->SummonCreature(22408, player->GetPositionX(), player->GetPositionY()-20, player->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 180000))
nether->AI()->AttackStart(player);
}
return false;
}
};
/*#####
# item_gor_dreks_ointment
#####*/
class item_gor_dreks_ointment : public ItemScript
{
public:
item_gor_dreks_ointment() : ItemScript("item_gor_dreks_ointment") { }
bool OnUse(Player* player, Item* item, SpellCastTargets const& targets) override
{
if (targets.GetUnitTarget() && targets.GetUnitTarget()->GetTypeId() == TYPEID_UNIT &&
targets.GetUnitTarget()->GetEntry() == 20748 && !targets.GetUnitTarget()->HasAura(32578))
return false;
player->SendEquipError(EQUIP_ERR_CLIENT_LOCKED_OUT, item, nullptr);
return true;
}
};
/*#####
# item_incendiary_explosives
#####*/
class item_incendiary_explosives : public ItemScript
{
public:
item_incendiary_explosives() : ItemScript("item_incendiary_explosives") { }
bool OnUse(Player* player, Item* item, SpellCastTargets const & /*targets*/) override
{
if (player->FindNearestCreature(26248, 15) || player->FindNearestCreature(26249, 15))
return false;
else
{
player->SendEquipError(EQUIP_ERR_OUT_OF_RANGE, item, nullptr);
return true;
}
}
};
/*#####
# item_mysterious_egg
#####*/
class item_mysterious_egg : public ItemScript
{
public:
item_mysterious_egg() : ItemScript("item_mysterious_egg") { }
bool OnExpire(Player* player, ItemTemplate const* /*pItemProto*/) override
{
ItemPosCountVec dest;
uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, 39883, 1); // Cracked Egg
if (msg == EQUIP_ERR_OK)
player->StoreNewItem(dest, 39883, true, GenerateItemRandomPropertyId(39883));
return true;
}
};
/*#####
# item_disgusting_jar
#####*/
class item_disgusting_jar : public ItemScript
{
public:
item_disgusting_jar() : ItemScript("item_disgusting_jar") { }
bool OnExpire(Player* player, ItemTemplate const* /*pItemProto*/) override
{
ItemPosCountVec dest;
uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, 44718, 1); // Ripe Disgusting Jar
if (msg == EQUIP_ERR_OK)
player->StoreNewItem(dest, 44718, true, GenerateItemRandomPropertyId(44718));
return true;
}
};
/*#####
# item_pile_fake_furs
#####*/
enum PileFakeFur
{
GO_CARIBOU_TRAP_1 = 187982,
GO_CARIBOU_TRAP_2 = 187995,
GO_CARIBOU_TRAP_3 = 187996,
GO_CARIBOU_TRAP_4 = 187997,
GO_CARIBOU_TRAP_5 = 187998,
GO_CARIBOU_TRAP_6 = 187999,
GO_CARIBOU_TRAP_7 = 188000,
GO_CARIBOU_TRAP_8 = 188001,
GO_CARIBOU_TRAP_9 = 188002,
GO_CARIBOU_TRAP_10 = 188003,
GO_CARIBOU_TRAP_11 = 188004,
GO_CARIBOU_TRAP_12 = 188005,
GO_CARIBOU_TRAP_13 = 188006,
GO_CARIBOU_TRAP_14 = 188007,
GO_CARIBOU_TRAP_15 = 188008,
GO_HIGH_QUALITY_FUR = 187983,
NPC_NESINGWARY_TRAPPER = 25835
};
#define CaribouTrapsNum 15
const uint32 CaribouTraps[CaribouTrapsNum] =
{
GO_CARIBOU_TRAP_1, GO_CARIBOU_TRAP_2, GO_CARIBOU_TRAP_3, GO_CARIBOU_TRAP_4, GO_CARIBOU_TRAP_5,
GO_CARIBOU_TRAP_6, GO_CARIBOU_TRAP_7, GO_CARIBOU_TRAP_8, GO_CARIBOU_TRAP_9, GO_CARIBOU_TRAP_10,
GO_CARIBOU_TRAP_11, GO_CARIBOU_TRAP_12, GO_CARIBOU_TRAP_13, GO_CARIBOU_TRAP_14, GO_CARIBOU_TRAP_15,
};
class item_pile_fake_furs : public ItemScript
{
public:
item_pile_fake_furs() : ItemScript("item_pile_fake_furs") { }
bool OnUse(Player* player, Item* /*item*/, SpellCastTargets const & /*targets*/) override
{
GameObject* go = nullptr;
for (uint8 i = 0; i < CaribouTrapsNum; ++i)
{
go = player->FindNearestGameObject(CaribouTraps[i], 5.0f);
if (go)
break;
}
if (!go)
return false;
if (go->FindNearestCreature(NPC_NESINGWARY_TRAPPER, 10.0f, true) || go->FindNearestCreature(NPC_NESINGWARY_TRAPPER, 10.0f, false) || go->FindNearestGameObject(GO_HIGH_QUALITY_FUR, 2.0f))
return true;
float x, y, z;
go->GetClosePoint(x, y, z, go->GetCombatReach() / 3, 7.0f);
go->SummonGameObject(GO_HIGH_QUALITY_FUR, *go, QuaternionData(), 1);
if (TempSummon* summon = player->SummonCreature(NPC_NESINGWARY_TRAPPER, x, y, z, go->GetOrientation(), TEMPSUMMON_DEAD_DESPAWN, 1000))
{
summon->SetVisible(false);
summon->SetReactState(REACT_PASSIVE);
summon->SetImmuneToPC(true);
}
return false;
}
};
/*#####
# item_petrov_cluster_bombs
#####*/
enum PetrovClusterBombs
{
SPELL_PETROV_BOMB = 42406,
AREA_ID_SHATTERED_STRAITS = 4064,
ZONE_ID_HOWLING = 495
};
class item_petrov_cluster_bombs : public ItemScript
{
public:
item_petrov_cluster_bombs() : ItemScript("item_petrov_cluster_bombs") { }
bool OnUse(Player* player, Item* /*item*/, const SpellCastTargets & /*targets*/) override
{
if (player->GetZoneId() != ZONE_ID_HOWLING)
return false;
if (!player->GetTransport() || player->GetAreaId() != AREA_ID_SHATTERED_STRAITS)
{
if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_PETROV_BOMB))
Spell::SendCastResult(player, spellInfo, 1, SPELL_FAILED_NOT_HERE);
return true;
}
return false;
}
};
/*######
# item_dehta_trap_smasher
# For quest 11876, Help Those That Cannot Help Themselves
######*/
enum HelpThemselves
{
QUEST_CANNOT_HELP_THEMSELVES = 11876,
NPC_TRAPPED_MAMMOTH_CALF = 25850,
GO_MAMMOTH_TRAP_1 = 188022,
GO_MAMMOTH_TRAP_2 = 188024,
GO_MAMMOTH_TRAP_3 = 188025,
GO_MAMMOTH_TRAP_4 = 188026,
GO_MAMMOTH_TRAP_5 = 188027,
GO_MAMMOTH_TRAP_6 = 188028,
GO_MAMMOTH_TRAP_7 = 188029,
GO_MAMMOTH_TRAP_8 = 188030,
GO_MAMMOTH_TRAP_9 = 188031,
GO_MAMMOTH_TRAP_10 = 188032,
GO_MAMMOTH_TRAP_11 = 188033,
GO_MAMMOTH_TRAP_12 = 188034,
GO_MAMMOTH_TRAP_13 = 188035,
GO_MAMMOTH_TRAP_14 = 188036,
GO_MAMMOTH_TRAP_15 = 188037,
GO_MAMMOTH_TRAP_16 = 188038,
GO_MAMMOTH_TRAP_17 = 188039,
GO_MAMMOTH_TRAP_18 = 188040,
GO_MAMMOTH_TRAP_19 = 188041,
GO_MAMMOTH_TRAP_20 = 188042,
GO_MAMMOTH_TRAP_21 = 188043,
GO_MAMMOTH_TRAP_22 = 188044,
};
#define MammothTrapsNum 22
const uint32 MammothTraps[MammothTrapsNum] =
{
GO_MAMMOTH_TRAP_1, GO_MAMMOTH_TRAP_2, GO_MAMMOTH_TRAP_3, GO_MAMMOTH_TRAP_4, GO_MAMMOTH_TRAP_5,
GO_MAMMOTH_TRAP_6, GO_MAMMOTH_TRAP_7, GO_MAMMOTH_TRAP_8, GO_MAMMOTH_TRAP_9, GO_MAMMOTH_TRAP_10,
GO_MAMMOTH_TRAP_11, GO_MAMMOTH_TRAP_12, GO_MAMMOTH_TRAP_13, GO_MAMMOTH_TRAP_14, GO_MAMMOTH_TRAP_15,
GO_MAMMOTH_TRAP_16, GO_MAMMOTH_TRAP_17, GO_MAMMOTH_TRAP_18, GO_MAMMOTH_TRAP_19, GO_MAMMOTH_TRAP_20,
GO_MAMMOTH_TRAP_21, GO_MAMMOTH_TRAP_22
};
class item_dehta_trap_smasher : public ItemScript
{
public:
item_dehta_trap_smasher() : ItemScript("item_dehta_trap_smasher") { }
bool OnUse(Player* player, Item* /*item*/, const SpellCastTargets & /*targets*/) override
{
if (player->GetQuestStatus(QUEST_CANNOT_HELP_THEMSELVES) != QUEST_STATUS_INCOMPLETE)
return false;
Creature* pMammoth = player->FindNearestCreature(NPC_TRAPPED_MAMMOTH_CALF, 5.0f);
if (!pMammoth)
return false;
GameObject* pTrap = nullptr;
for (uint8 i = 0; i < MammothTrapsNum; ++i)
{
pTrap = player->FindNearestGameObject(MammothTraps[i], 11.0f);
if (pTrap)
{
pMammoth->AI()->DoAction(1);
pTrap->SetGoState(GO_STATE_READY);
player->KilledMonsterCredit(NPC_TRAPPED_MAMMOTH_CALF);
return true;
}
}
return false;
}
};
enum CapturedFrog
{
QUEST_THE_PERFECT_SPIES = 25444,
NPC_VANIRAS_SENTRY_TOTEM = 40187
};
class item_captured_frog : public ItemScript
{
public:
item_captured_frog() : ItemScript("item_captured_frog") { }
bool OnUse(Player* player, Item* item, SpellCastTargets const& /*targets*/) override
{
if (player->GetQuestStatus(QUEST_THE_PERFECT_SPIES) == QUEST_STATUS_INCOMPLETE)
{
if (player->FindNearestCreature(NPC_VANIRAS_SENTRY_TOTEM, 10.0f))
return false;
else
player->SendEquipError(EQUIP_ERR_OUT_OF_RANGE, item, nullptr);
}
else
player->SendEquipError(EQUIP_ERR_CLIENT_LOCKED_OUT, item, nullptr);
return true;
}
};
// Only used currently for
// 19169: Nightfall
class item_generic_limit_chance_above_60 : public ItemScript
{
public:
item_generic_limit_chance_above_60() : ItemScript("item_generic_limit_chance_above_60") { }
bool OnCastItemCombatSpell(Player* /*player*/, Unit* victim, SpellInfo const* /*spellInfo*/, Item* /*item*/) override
{
// spell proc chance gets severely reduced on victims > 60 (formula unknown)
if (victim->getLevel() > 60)
{
// gives ~0.1% proc chance at lvl 70
float const lvlPenaltyFactor = 9.93f;
float const failureChance = (victim->getLevel() - 60) * lvlPenaltyFactor;
// base ppm chance was already rolled, only roll success chance
return !roll_chance_f(failureChance);
}
return true;
}
};
/*#####
# item_horde_adventurer_horn
#####*/
class item_horde_adventurer_horn : public ItemScript
{
public:
item_horde_adventurer_horn() : ItemScript("item_horde_adventurer_horn") { }
bool OnUse(Player* player, Item* item, SpellCastTargets const& /*targets*/) override
{
TC_LOG_INFO(
"scripts",
"[VianoHorn] OnUse player='%s' item=%u",
player->GetName().c_str(),
item->GetEntry());
// Horns may not be used during combat.
if (player->IsInCombat())
{
TC_LOG_INFO("scripts",
"[VianoHorn] rejected: player is in combat");
player->SendEquipError(
EQUIP_ERR_CLIENT_LOCKED_OUT,
item,
nullptr);
return true;
}
// Horns may only be used inside dungeon instances.
if (!player->GetMap()->IsDungeon())
{
TC_LOG_INFO("scripts",
"[VianoHorn] rejected: player is not inside a dungeon");
player->SendEquipError(
EQUIP_ERR_CLIENT_LOCKED_OUT,
item,
nullptr);
return true;
}
TC_LOG_INFO(
"scripts",
"[VianoHorn] prechecks passed; allowing normal item spell processing");
// IMPORTANT:
// false means the ItemScript does not consume/suppress the normal item use.
// The item's SpellID1 (120000-120003) may now run through the regular
// Trinity spell lifecycle.
return false;
}
};
}// namespace ItemScripts
void AddSC_item_scripts()
{
using namespace ItemScripts;
new item_only_for_flight();
new item_nether_wraith_beacon();
new item_gor_dreks_ointment();
new item_incendiary_explosives();
new item_mysterious_egg();
new item_disgusting_jar();
new item_pile_fake_furs();
new item_petrov_cluster_bombs();
new item_dehta_trap_smasher();
new item_captured_frog();
new item_generic_limit_chance_above_60();
new item_horde_adventurer_horn();
}