Core/Transmog: Update transmog system to 12.0

This commit is contained in:
Shauren
2026-03-21 13:41:42 +01:00
parent ec3065b354
commit db8552567d
43 changed files with 2883 additions and 290 deletions

View File

@@ -459,6 +459,30 @@ LOCK TABLES `battlenet_account_transmog_illusions` WRITE;
/*!40000 ALTER TABLE `battlenet_account_transmog_illusions` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `battlenet_account_transmog_outfits`
--
DROP TABLE IF EXISTS `battlenet_account_transmog_outfits`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `battlenet_account_transmog_outfits` (
`battlenetAccountId` int unsigned NOT NULL,
`transmogOutfitId` int NOT NULL DEFAULT '0',
PRIMARY KEY (`battlenetAccountId`,`blobIndex`),
CONSTRAINT `fk_battlenet_account_transmog_outfits` FOREIGN KEY (`battlenetAccountId`) REFERENCES `battlenet_accounts` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `battlenet_account_transmog_outfits`
--
LOCK TABLES `battlenet_account_transmog_outfits` WRITE;
/*!40000 ALTER TABLE `battlenet_account_transmog_outfits` DISABLE KEYS */;
/*!40000 ALTER TABLE `battlenet_account_transmog_outfits` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `battlenet_account_warband_scenes`
--
@@ -4147,7 +4171,8 @@ INSERT INTO `updates` VALUES
('2026_03_10_00_auth.sql','4BB4EBC719F80F7BEA667E6DA49815B358956FEA','RELEASED','2026-03-10 20:42:13',0),
('2026_03_14_00_auth.sql','4CE4AF3D9E1BF173832B25F4D1A730A93ED016FA','RELEASED','2026-03-14 12:03:14',0),
('2026_03_18_00_auth.sql','7A755DADF9AAC9016FD01B26ACEC714FAB5E3269','RELEASED','2026-03-18 12:36:48',0),
('2026_03_20_00_auth.sql','9083386953291DA3D0634E90D40863F7625FF37E','RELEASED','2026-03-20 01:11:00',0);
('2026_03_20_00_auth.sql','9083386953291DA3D0634E90D40863F7625FF37E','RELEASED','2026-03-20 01:11:00',0),
('2026_03_21_00_auth.sql','6D47EFD7FBCD159F5BC5B5A6020E61824280E92A','RELEASED','2026-03-21 00:08:26',0);
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
UNLOCK TABLES;

View File

@@ -1891,6 +1891,89 @@ LOCK TABLES `character_trait_entry` WRITE;
/*!40000 ALTER TABLE `character_trait_entry` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `character_transmog_outfit`
--
DROP TABLE IF EXISTS `character_transmog_outfit`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `character_transmog_outfit` (
`guid` bigint NOT NULL,
`transmogOutfitId` int NOT NULL,
`name` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL,
`icon` int NOT NULL,
`situationsEnabled` tinyint(1) NOT NULL,
PRIMARY KEY (`guid`,`transmogOutfitId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `character_transmog_outfit`
--
LOCK TABLES `character_transmog_outfit` WRITE;
/*!40000 ALTER TABLE `character_transmog_outfit` DISABLE KEYS */;
/*!40000 ALTER TABLE `character_transmog_outfit` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `character_transmog_outfit_situation`
--
DROP TABLE IF EXISTS `character_transmog_outfit_situation`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `character_transmog_outfit_situation` (
`guid` bigint NOT NULL,
`transmogOutfitId` int NOT NULL,
`situationID` int NOT NULL,
`specID` int NOT NULL,
`loadoutID` int NOT NULL,
`equipmentSetID` int NOT NULL,
PRIMARY KEY (`guid`,`transmogOutfitId`,`situationID`,`specID`,`loadoutID`,`equipmentSetID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `character_transmog_outfit_situation`
--
LOCK TABLES `character_transmog_outfit_situation` WRITE;
/*!40000 ALTER TABLE `character_transmog_outfit_situation` DISABLE KEYS */;
/*!40000 ALTER TABLE `character_transmog_outfit_situation` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `character_transmog_outfit_slot`
--
DROP TABLE IF EXISTS `character_transmog_outfit_slot`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `character_transmog_outfit_slot` (
`guid` bigint NOT NULL,
`transmogOutfitId` int NOT NULL,
`slot` tinyint NOT NULL,
`slotOption` tinyint NOT NULL,
`itemModifiedAppearanceID` int NOT NULL,
`appearanceDisplayType` tinyint NOT NULL,
`spellItemEnchantmentID` int NOT NULL,
`illusionDisplayType` tinyint NOT NULL,
`flags` int NOT NULL,
PRIMARY KEY (`guid`,`transmogOutfitId`,`slot`,`slotOption`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `character_transmog_outfit_slot`
--
LOCK TABLES `character_transmog_outfit_slot` WRITE;
/*!40000 ALTER TABLE `character_transmog_outfit_slot` DISABLE KEYS */;
/*!40000 ALTER TABLE `character_transmog_outfit_slot` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `character_transmog_outfits`
--
@@ -2043,6 +2126,8 @@ CREATE TABLE `characters` (
`personalTabardBorderStyle` int NOT NULL DEFAULT '-1',
`personalTabardBorderColor` int NOT NULL DEFAULT '-1',
`personalTabardBackgroundColor` int NOT NULL DEFAULT '-1',
`transmogOutfitEquippedId` int NOT NULL DEFAULT '2',
`transmogOutfitLocked` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`guid`),
UNIQUE KEY `idx_name` (`name`),
KEY `idx_account` (`account`),
@@ -3832,7 +3917,8 @@ INSERT INTO `updates` VALUES
('2025_11_25_00_characters.sql','A0C04B2404B1832421402F78436DDC4AA18EBAD8','ARCHIVED','2025-11-25 22:28:32',0),
('2026_01_14_00_characters.sql','FF5D889A41BBD9F9827489DEC08BCA9DB457933E','ARCHIVED','2026-01-14 23:40:33',0),
('2026_01_28_00_characters.sql','807B6622970E81089806C3B45C6C7A32EF531BCA','ARCHIVED','2026-01-25 21:53:51',0),
('2026_02_06_00_characters.sql','90735F4481A137E79B8371F291008CF6051657AC','ARCHIVED','2026-02-06 12:45:48',0);
('2026_02_06_00_characters.sql','90735F4481A137E79B8371F291008CF6051657AC','ARCHIVED','2026-02-06 12:45:48',0),
('2026_03_21_00_characters.sql','87963F4E341B195D4B4C4514A3119092DF127431','RELEASED','2026-03-21 00:42:13',0);
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
UNLOCK TABLES;

View File

@@ -0,0 +1,10 @@
--
-- Table structure for table `battlenet_account_transmog_outfits`
--
DROP TABLE IF EXISTS `battlenet_account_transmog_outfits`;
CREATE TABLE `battlenet_account_transmog_outfits` (
`battlenetAccountId` int unsigned NOT NULL,
`transmogOutfitId` int NOT NULL DEFAULT '0',
PRIMARY KEY (`battlenetAccountId`,`transmogOutfitId`),
CONSTRAINT `fk_battlenet_account_transmog_outfits` FOREIGN KEY (`battlenetAccountId`) REFERENCES `battlenet_accounts` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

View File

@@ -0,0 +1,47 @@
ALTER TABLE `characters`
ADD `transmogOutfitEquippedId` int NOT NULL DEFAULT 2 AFTER `personalTabardBackgroundColor`,
ADD `transmogOutfitLocked` tinyint(1) NOT NULL DEFAULT 0 AFTER `transmogOutfitEquippedId`;
--
-- Table structure for table `character_transmog_outfit`
--
DROP TABLE IF EXISTS `character_transmog_outfit`;
CREATE TABLE `character_transmog_outfit` (
`guid` bigint NOT NULL,
`transmogOutfitId` int NOT NULL,
`name` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL,
`icon` int NOT NULL,
`situationsEnabled` tinyint(1) NOT NULL,
PRIMARY KEY (`guid`,`transmogOutfitId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Table structure for table `character_transmog_outfit_situation`
--
DROP TABLE IF EXISTS `character_transmog_outfit_situation`;
CREATE TABLE `character_transmog_outfit_situation` (
`guid` bigint NOT NULL,
`transmogOutfitId` int NOT NULL,
`situationID` int NOT NULL,
`specID` int NOT NULL,
`loadoutID` int NOT NULL,
`equipmentSetID` int NOT NULL,
PRIMARY KEY (`guid`,`transmogOutfitId`,`situationID`,`specID`,`loadoutID`,`equipmentSetID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Table structure for table `character_transmog_outfit_slot`
--
DROP TABLE IF EXISTS `character_transmog_outfit_slot`;
CREATE TABLE `character_transmog_outfit_slot` (
`guid` bigint NOT NULL,
`transmogOutfitId` int NOT NULL,
`slot` tinyint NOT NULL,
`slotOption` tinyint NOT NULL,
`itemModifiedAppearanceID` int NOT NULL,
`appearanceDisplayType` tinyint NOT NULL,
`spellItemEnchantmentID` int NOT NULL,
`illusionDisplayType` tinyint NOT NULL,
`flags` int NOT NULL,
PRIMARY KEY (`guid`,`transmogOutfitId`,`slot`,`slotOption`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

View File

@@ -0,0 +1,190 @@
--
-- Table structure for table `transmog_outfit_entry`
--
DROP TABLE IF EXISTS `transmog_outfit_entry`;
CREATE TABLE `transmog_outfit_entry` (
`Cost` bigint unsigned NOT NULL DEFAULT '0',
`Name` text,
`ID` int unsigned NOT NULL DEFAULT '0',
`OrderIndex` int NOT NULL DEFAULT '0',
`Source` tinyint unsigned NOT NULL DEFAULT '0',
`Flags` int NOT NULL DEFAULT '0',
`SetType` tinyint unsigned NOT NULL DEFAULT '0',
`OverrideCostModifier` float NOT NULL DEFAULT '0',
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Table structure for table `transmog_outfit_entry_locale`
--
DROP TABLE IF EXISTS `transmog_outfit_entry_locale`;
CREATE TABLE `transmog_outfit_entry_locale` (
`ID` int unsigned NOT NULL DEFAULT '0',
`locale` varchar(4) NOT NULL,
`Name_lang` text,
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`locale`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
PARTITION BY LIST COLUMNS(locale)
(PARTITION deDE VALUES IN ('deDE') ENGINE = InnoDB,
PARTITION esES VALUES IN ('esES') ENGINE = InnoDB,
PARTITION esMX VALUES IN ('esMX') ENGINE = InnoDB,
PARTITION frFR VALUES IN ('frFR') ENGINE = InnoDB,
PARTITION itIT VALUES IN ('itIT') ENGINE = InnoDB,
PARTITION koKR VALUES IN ('koKR') ENGINE = InnoDB,
PARTITION ptBR VALUES IN ('ptBR') ENGINE = InnoDB,
PARTITION ruRU VALUES IN ('ruRU') ENGINE = InnoDB,
PARTITION zhCN VALUES IN ('zhCN') ENGINE = InnoDB,
PARTITION zhTW VALUES IN ('zhTW') ENGINE = InnoDB);
--
-- Table structure for table `transmog_outfit_slot_info`
--
DROP TABLE IF EXISTS `transmog_outfit_slot_info`;
CREATE TABLE `transmog_outfit_slot_info` (
`InventorySlotName` text,
`ID` int unsigned NOT NULL DEFAULT '0',
`TransmogOutfitSlotEnum` tinyint NOT NULL DEFAULT '0',
`InventorySlotEnum` int NOT NULL DEFAULT '0',
`Flags` int NOT NULL DEFAULT '0',
`Unused1200` tinyint unsigned NOT NULL DEFAULT '0',
`TransmogCollectionType` tinyint unsigned NOT NULL DEFAULT '0',
`SecondarySlotID` int NOT NULL DEFAULT '0',
`InventorySlotID` int NOT NULL DEFAULT '0',
`UnassignedAtlasID` int NOT NULL DEFAULT '0',
`UnassignedDisplayAtlasID` int NOT NULL DEFAULT '0',
`ItemCostMultiplier` float NOT NULL DEFAULT '0',
`IllusionCostMultiplier` float NOT NULL DEFAULT '0',
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Table structure for table `transmog_outfit_slot_option`
--
DROP TABLE IF EXISTS `transmog_outfit_slot_option`;
CREATE TABLE `transmog_outfit_slot_option` (
`ID` int unsigned NOT NULL DEFAULT '0',
`Name` text,
`OptionEnum` tinyint unsigned NOT NULL DEFAULT '0',
`TransmogOutfitSlotInfoID` int unsigned NOT NULL DEFAULT '0',
`Flags` int NOT NULL DEFAULT '0',
`SecondaryOptionID` int NOT NULL DEFAULT '0',
`ItemCostMultiplier` float NOT NULL DEFAULT '0',
`IllusionCostMultiplier` float NOT NULL DEFAULT '0',
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Table structure for table `transmog_outfit_slot_option_locale`
--
DROP TABLE IF EXISTS `transmog_outfit_slot_option_locale`;
CREATE TABLE `transmog_outfit_slot_option_locale` (
`ID` int unsigned NOT NULL DEFAULT '0',
`locale` varchar(4) NOT NULL,
`Name_lang` text,
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`locale`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
PARTITION BY LIST COLUMNS(locale)
(PARTITION deDE VALUES IN ('deDE') ENGINE = InnoDB,
PARTITION esES VALUES IN ('esES') ENGINE = InnoDB,
PARTITION esMX VALUES IN ('esMX') ENGINE = InnoDB,
PARTITION frFR VALUES IN ('frFR') ENGINE = InnoDB,
PARTITION itIT VALUES IN ('itIT') ENGINE = InnoDB,
PARTITION koKR VALUES IN ('koKR') ENGINE = InnoDB,
PARTITION ptBR VALUES IN ('ptBR') ENGINE = InnoDB,
PARTITION ruRU VALUES IN ('ruRU') ENGINE = InnoDB,
PARTITION zhCN VALUES IN ('zhCN') ENGINE = InnoDB,
PARTITION zhTW VALUES IN ('zhTW') ENGINE = InnoDB);
--
-- Table structure for table `transmog_situation`
--
DROP TABLE IF EXISTS `transmog_situation`;
CREATE TABLE `transmog_situation` (
`Name` text,
`ID` int unsigned NOT NULL DEFAULT '0',
`SituationEnum` tinyint NOT NULL DEFAULT '0',
`Flags` int NOT NULL DEFAULT '0',
`TransmogSituationGroupID` int unsigned NOT NULL DEFAULT '0',
`OrderIndex` int NOT NULL DEFAULT '0',
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Table structure for table `transmog_situation_locale`
--
DROP TABLE IF EXISTS `transmog_situation_locale`;
CREATE TABLE `transmog_situation_locale` (
`ID` int unsigned NOT NULL DEFAULT '0',
`locale` varchar(4) NOT NULL,
`Name_lang` text,
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`locale`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
PARTITION BY LIST COLUMNS(locale)
(PARTITION deDE VALUES IN ('deDE') ENGINE = InnoDB,
PARTITION esES VALUES IN ('esES') ENGINE = InnoDB,
PARTITION esMX VALUES IN ('esMX') ENGINE = InnoDB,
PARTITION frFR VALUES IN ('frFR') ENGINE = InnoDB,
PARTITION itIT VALUES IN ('itIT') ENGINE = InnoDB,
PARTITION koKR VALUES IN ('koKR') ENGINE = InnoDB,
PARTITION ptBR VALUES IN ('ptBR') ENGINE = InnoDB,
PARTITION ruRU VALUES IN ('ruRU') ENGINE = InnoDB,
PARTITION zhCN VALUES IN ('zhCN') ENGINE = InnoDB,
PARTITION zhTW VALUES IN ('zhTW') ENGINE = InnoDB);
--
-- Table structure for table `transmog_situation_group`
--
DROP TABLE IF EXISTS `transmog_situation_group`;
CREATE TABLE `transmog_situation_group` (
`ID` int unsigned NOT NULL DEFAULT '0',
`TransmogSituationTriggerID` int unsigned NOT NULL DEFAULT '0',
`OrderIndex` int NOT NULL DEFAULT '0',
`Flags` int NOT NULL DEFAULT '0',
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Table structure for table `transmog_situation_trigger`
--
DROP TABLE IF EXISTS `transmog_situation_trigger`;
CREATE TABLE `transmog_situation_trigger` (
`Name` text,
`Description` text,
`ID` int unsigned NOT NULL DEFAULT '0',
`TriggerEnum` tinyint unsigned NOT NULL DEFAULT '0',
`Flags` int NOT NULL DEFAULT '0',
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Table structure for table `transmog_situation_trigger_locale`
--
DROP TABLE IF EXISTS `transmog_situation_trigger_locale`;
CREATE TABLE `transmog_situation_trigger_locale` (
`ID` int unsigned NOT NULL DEFAULT '0',
`locale` varchar(4) NOT NULL,
`Name_lang` text,
`Description_lang` text,
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`locale`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
PARTITION BY LIST COLUMNS(locale)
(PARTITION deDE VALUES IN ('deDE') ENGINE = InnoDB,
PARTITION esES VALUES IN ('esES') ENGINE = InnoDB,
PARTITION esMX VALUES IN ('esMX') ENGINE = InnoDB,
PARTITION frFR VALUES IN ('frFR') ENGINE = InnoDB,
PARTITION itIT VALUES IN ('itIT') ENGINE = InnoDB,
PARTITION koKR VALUES IN ('koKR') ENGINE = InnoDB,
PARTITION ptBR VALUES IN ('ptBR') ENGINE = InnoDB,
PARTITION ruRU VALUES IN ('ruRU') ENGINE = InnoDB,
PARTITION zhCN VALUES IN ('zhCN') ENGINE = InnoDB,
PARTITION zhTW VALUES IN ('zhTW') ENGINE = InnoDB);