mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-24 07:30:07 -04:00
Core: Updated to 10.0.5
This commit is contained in:
@@ -685,7 +685,11 @@ INSERT INTO `build_info` VALUES
|
||||
(47067,10,0,2,NULL,NULL,'63862CFCDEA6BD2BD7F740EB36B65657',NULL,NULL,NULL),
|
||||
(47187,10,0,2,NULL,NULL,'711F8455C5000C237292E1E6E90631E1',NULL,NULL,NULL),
|
||||
(47213,10,0,2,NULL,NULL,'23C50D88CEAC0A8696ADDE8DD244D4A2',NULL,NULL,NULL),
|
||||
(47631,10,0,2,NULL,NULL,'F986AB91D0AEB20822EFB72F4256713C',NULL,NULL,NULL);
|
||||
(47631,10,0,2,NULL,NULL,'F986AB91D0AEB20822EFB72F4256713C',NULL,NULL,NULL),
|
||||
(47777,10,0,5,NULL,NULL,'A88C04915AB9E035A104E55C4DCF5F9F',NULL,NULL,NULL),
|
||||
(47799,10,0,5,NULL,NULL,'7364EB093C23DB2CDC9513D5A7B4933E',NULL,NULL,NULL),
|
||||
(47825,10,0,5,NULL,NULL,'82A3B94E5E727AF3A208B471FF2054C0',NULL,NULL,NULL),
|
||||
(47849,10,0,5,NULL,NULL,'DD8BBE2087A28C0AF4984CBE23A1C707',NULL,NULL,NULL);
|
||||
/*!40000 ALTER TABLE `build_info` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
@@ -2293,7 +2297,7 @@ CREATE TABLE `realmlist` (
|
||||
`timezone` tinyint unsigned NOT NULL DEFAULT '0',
|
||||
`allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0',
|
||||
`population` float unsigned NOT NULL DEFAULT '0',
|
||||
`gamebuild` int unsigned NOT NULL DEFAULT '47631',
|
||||
`gamebuild` int unsigned NOT NULL DEFAULT '47849',
|
||||
`Region` tinyint unsigned NOT NULL DEFAULT '1',
|
||||
`Battlegroup` tinyint unsigned NOT NULL DEFAULT '1',
|
||||
PRIMARY KEY (`id`),
|
||||
@@ -2308,7 +2312,7 @@ CREATE TABLE `realmlist` (
|
||||
LOCK TABLES `realmlist` WRITE;
|
||||
/*!40000 ALTER TABLE `realmlist` DISABLE KEYS */;
|
||||
INSERT INTO `realmlist` VALUES
|
||||
(1,'Trinity','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,47631,1,1);
|
||||
(1,'Trinity','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,47849,1,1);
|
||||
/*!40000 ALTER TABLE `realmlist` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
@@ -2643,7 +2647,8 @@ INSERT INTO `updates` VALUES
|
||||
('2022_12_20_00_auth.sql','BA88146743B060A14937688C0DB94BF11C6CF1BA','ARCHIVED','2022-12-20 03:10:07',0),
|
||||
('2022_12_21_00_auth.sql','B395CAE993D65E035AA621941D4C384E2E2E7DF5','RELEASED','2022-12-21 01:16:56',0),
|
||||
('2022_12_22_00_auth.sql','BBF3CDD7927520F0381ECEF1F30152CBD5344D6A','RELEASED','2022-12-22 16:35:36',0),
|
||||
('2023_01_17_00_auth.sql','EAEA99DF10DCC648C161D836FFA681D5B0F4CDC3','RELEASED','2023-01-17 18:41:32',0);
|
||||
('2023_01_17_00_auth.sql','EAEA99DF10DCC648C161D836FFA681D5B0F4CDC3','RELEASED','2023-01-17 18:41:32',0),
|
||||
('2023_01_28_00_auth.sql','94A640018494B9203100178EC67A582987456B8B','RELEASED','2023-01-28 00:11:59',0);
|
||||
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
||||
@@ -3114,7 +3114,7 @@ DROP TABLE IF EXISTS `mail`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mail` (
|
||||
`id` int unsigned NOT NULL DEFAULT '0' COMMENT 'Identifier',
|
||||
`id` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Identifier',
|
||||
`messageType` tinyint unsigned NOT NULL DEFAULT '0',
|
||||
`stationery` tinyint NOT NULL DEFAULT '41',
|
||||
`mailTemplateId` smallint unsigned NOT NULL DEFAULT '0',
|
||||
@@ -3150,7 +3150,7 @@ DROP TABLE IF EXISTS `mail_items`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mail_items` (
|
||||
`mail_id` int unsigned NOT NULL DEFAULT '0',
|
||||
`mail_id` bigint unsigned NOT NULL DEFAULT '0',
|
||||
`item_guid` bigint unsigned NOT NULL DEFAULT '0',
|
||||
`receiver` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Character Global Unique Identifier',
|
||||
PRIMARY KEY (`item_guid`),
|
||||
@@ -3691,7 +3691,8 @@ INSERT INTO `updates` VALUES
|
||||
('2022_12_16_00_characters.sql','36D6220143109ECD37219CC4A84773B31EAE9E50','ARCHIVED','2022-12-16 22:52:19',0),
|
||||
('2022_12_17_00_characters.sql','3E005BD6B9C60653749B0B3C19CBC497092B9CCB','ARCHIVED','2022-12-17 18:26:43',0),
|
||||
('2022_12_20_00_characters.sql','75A37A085AF1B953926E4352E439C7916B290924','ARCHIVED','2022-12-20 03:10:07',0),
|
||||
('2022_12_30_00_characters.sql','5F90C2BFFBB8F6CE0A3327A2CAABCD5CA3C2BA60','RELEASED','2022-12-30 22:50:16',0);
|
||||
('2022_12_30_00_characters.sql','5F90C2BFFBB8F6CE0A3327A2CAABCD5CA3C2BA60','RELEASED','2022-12-30 22:50:16',0),
|
||||
('2023_01_28_00_characters.sql','0280F79FD6EC93FFB3CC67B6499CEDA49D582BFC','RELEASED','2023-01-28 00:11:03',0);
|
||||
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
DELETE FROM `build_info` WHERE `build` IN (47777,47799,47825,47849);
|
||||
INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`,`winAuthSeed`,`win64AuthSeed`,`mac64AuthSeed`,`winChecksumSeed`,`macChecksumSeed`) VALUES
|
||||
(47777,10,0,5,NULL,NULL,'A88C04915AB9E035A104E55C4DCF5F9F',NULL,NULL,NULL),
|
||||
(47799,10,0,5,NULL,NULL,'7364EB093C23DB2CDC9513D5A7B4933E',NULL,NULL,NULL),
|
||||
(47825,10,0,5,NULL,NULL,'82A3B94E5E727AF3A208B471FF2054C0',NULL,NULL,NULL),
|
||||
(47849,10,0,5,NULL,NULL,'DD8BBE2087A28C0AF4984CBE23A1C707',NULL,NULL,NULL);
|
||||
|
||||
UPDATE `realmlist` SET `gamebuild`=47849 WHERE `gamebuild`=47631;
|
||||
|
||||
ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '47849';
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `mail` MODIFY `id` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Identifier';
|
||||
ALTER TABLE `mail_items` MODIFY `mail_id` bigint unsigned NOT NULL DEFAULT '0';
|
||||
@@ -3858,6 +3858,10 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
|
||||
if (GameTime::GetGameTime() - referencePlayer->m_playerData->LogoutTime < int64(reqValue) * DAY)
|
||||
return false;
|
||||
break;
|
||||
case ModifierTreeType::PlayerHasPerksProgramPendingReward: // 350
|
||||
if (!referencePlayer->m_activePlayerData->HasPerksProgramPendingReward)
|
||||
return false;
|
||||
break;
|
||||
case ModifierTreeType::PlayerCanUseItem: // 351
|
||||
{
|
||||
ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(reqValue);
|
||||
@@ -3865,6 +3869,29 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
case ModifierTreeType::PlayerHasAtLeastProfPathRanks: // 355
|
||||
{
|
||||
auto traitNodeEntryRankCount = [referencePlayer, secondaryAsset]()
|
||||
{
|
||||
uint32 ranks = 0;
|
||||
for (UF::TraitConfig const& traitConfig : referencePlayer->m_activePlayerData->TraitConfigs)
|
||||
{
|
||||
if (TraitConfigType(*traitConfig.Type) != TraitConfigType::Profession)
|
||||
continue;
|
||||
|
||||
if (*traitConfig.SkillLineID != int32(secondaryAsset))
|
||||
continue;
|
||||
|
||||
for (UF::TraitEntry const& traitEntry : traitConfig.Entries)
|
||||
if (sTraitNodeEntryStore.AssertEntry(traitEntry.TraitNodeEntryID)->GetNodeEntryType() == TraitNodeEntryType::ProfPath)
|
||||
ranks += traitEntry.Rank + traitEntry.GrantedRanks;
|
||||
}
|
||||
return ranks;
|
||||
}();
|
||||
if (traitNodeEntryRankCount < reqValue)
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2581,15 +2581,17 @@ struct CommentatorStartLocationMeta
|
||||
|
||||
struct CommentatorTrackedCooldownMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[4] =
|
||||
static constexpr DB2MetaField Fields[6] =
|
||||
{
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_BYTE, 1, false },
|
||||
{ FT_BYTE, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 1661584, -1, 4, 3, 0xDF3511FC, Fields, 3 };
|
||||
static constexpr DB2Meta Instance{ 1661584, -1, 6, 5, 0x43CD7801, Fields, 5 };
|
||||
};
|
||||
|
||||
struct CommunityIconMeta
|
||||
@@ -5323,7 +5325,7 @@ struct GossipXUIDisplayInfoMeta
|
||||
|
||||
struct GradientEffectMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[16] =
|
||||
static constexpr DB2MetaField Fields[18] =
|
||||
{
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
@@ -5341,9 +5343,11 @@ struct GradientEffectMeta
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 2433582, -1, 16, 16, 0x1E246107, Fields, -1 };
|
||||
static constexpr DB2Meta Instance{ 2433582, -1, 18, 18, 0xA5B6854E, Fields, -1 };
|
||||
};
|
||||
|
||||
struct GroundEffectDoodadMeta
|
||||
@@ -6109,8 +6113,9 @@ struct ItemDisenchantLootMeta
|
||||
|
||||
struct ItemDisplayInfoMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[15] =
|
||||
static constexpr DB2MetaField Fields[16] =
|
||||
{
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, false },
|
||||
@@ -6128,7 +6133,7 @@ struct ItemDisplayInfoMeta
|
||||
{ FT_INT, 2, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 1266429, -1, 15, 15, 0xF2D99687, Fields, -1 };
|
||||
static constexpr DB2Meta Instance{ 1266429, -1, 16, 16, 0xD922B51F, Fields, -1 };
|
||||
};
|
||||
|
||||
struct ItemDisplayInfoMaterialResMeta
|
||||
@@ -8403,6 +8408,134 @@ struct PathPropertyMeta
|
||||
static constexpr DB2Meta Instance{ 801735, -1, 3, 3, 0x635DCADD, Fields, -1 };
|
||||
};
|
||||
|
||||
struct PerksActivityMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[5] =
|
||||
{
|
||||
{ FT_STRING, 1, true },
|
||||
{ FT_STRING, 1, true },
|
||||
{ FT_INT, 1, false },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 4519766, 2, 5, 5, 0x6FD48C11, Fields, -1 };
|
||||
};
|
||||
|
||||
struct PerksActivityTagMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[2] =
|
||||
{
|
||||
{ FT_STRING, 1, true },
|
||||
{ FT_INT, 1, false },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 4694317, 1, 2, 2, 0x0FBA68B8, Fields, -1 };
|
||||
};
|
||||
|
||||
struct PerksActivityThresholdMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[5] =
|
||||
{
|
||||
{ FT_INT, 1, false },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 4519767, 0, 5, 4, 0xF25916E9, Fields, 4 };
|
||||
};
|
||||
|
||||
struct PerksActivityThresholdGroupMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[3] =
|
||||
{
|
||||
{ FT_STRING, 1, true },
|
||||
{ FT_INT, 1, false },
|
||||
{ FT_INT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 4519768, 1, 3, 3, 0x780A31D9, Fields, -1 };
|
||||
};
|
||||
|
||||
struct PerksActivityXIntervalMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[3] =
|
||||
{
|
||||
{ FT_INT, 1, false },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 4519781, 0, 3, 2, 0xA0A40503, Fields, 2 };
|
||||
};
|
||||
|
||||
struct PerksActivityXTagMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[3] =
|
||||
{
|
||||
{ FT_INT, 1, false },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 4694318, 0, 3, 2, 0x5254EC49, Fields, 2 };
|
||||
};
|
||||
|
||||
struct PerksVendorCategoryMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[4] =
|
||||
{
|
||||
{ FT_STRING, 1, true },
|
||||
{ FT_INT, 1, false },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 4281310, 1, 4, 4, 0x94980739, Fields, -1 };
|
||||
};
|
||||
|
||||
struct PerksVendorItemMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[8] =
|
||||
{
|
||||
{ FT_INT, 1, false },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 4281311, 0, 8, 8, 0x451B856E, Fields, -1 };
|
||||
};
|
||||
|
||||
struct PerksVendorItemUIInfoMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[3] =
|
||||
{
|
||||
{ FT_INT, 1, false },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 4281312, 0, 3, 3, 0xD787F0DD, Fields, -1 };
|
||||
};
|
||||
|
||||
struct PerksVendorItemXIntervalMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[2] =
|
||||
{
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 4872513, -1, 2, 2, 0xD8D92220, Fields, -1 };
|
||||
};
|
||||
|
||||
struct PhaseMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[1] =
|
||||
@@ -12808,14 +12941,15 @@ struct UiMapXMapArtMeta
|
||||
|
||||
struct UiModelSceneMeta
|
||||
{
|
||||
static constexpr DB2MetaField Fields[3] =
|
||||
static constexpr DB2MetaField Fields[4] =
|
||||
{
|
||||
{ FT_INT, 1, false },
|
||||
{ FT_BYTE, 1, true },
|
||||
{ FT_BYTE, 1, false },
|
||||
{ FT_BYTE, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 1548215, 0, 3, 3, 0x97CD29E5, Fields, -1 };
|
||||
static constexpr DB2Meta Instance{ 1548215, 0, 4, 4, 0xD6CFDD08, Fields, -1 };
|
||||
};
|
||||
|
||||
struct UiModelSceneActorMeta
|
||||
@@ -12825,16 +12959,16 @@ struct UiModelSceneActorMeta
|
||||
{ FT_STRING_NOT_LOCALIZED, 1, true },
|
||||
{ FT_FLOAT, 3, true },
|
||||
{ FT_INT, 1, false },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_BYTE, 1, false },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 1548214, 2, 10, 9, 0xA3270DEE, Fields, 9 };
|
||||
static constexpr DB2Meta Instance{ 1548214, 2, 10, 10, 0x6B7EE2AC, Fields, 3 };
|
||||
};
|
||||
|
||||
struct UiModelSceneActorDisplayMeta
|
||||
@@ -12861,21 +12995,21 @@ struct UiModelSceneCameraMeta
|
||||
{ FT_FLOAT, 3, true },
|
||||
{ FT_FLOAT, 3, true },
|
||||
{ FT_INT, 1, false },
|
||||
{ FT_BYTE, 1, false },
|
||||
{ FT_BYTE, 1, false },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_BYTE, 1, false },
|
||||
{ FT_BYTE, 1, false },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_FLOAT, 1, true },
|
||||
};
|
||||
|
||||
static constexpr DB2Meta Instance{ 1548213, 3, 16, 15, 0x10F8A956, Fields, 15 };
|
||||
static constexpr DB2Meta Instance{ 1548213, 3, 16, 16, 0x1C131B80, Fields, 4 };
|
||||
};
|
||||
|
||||
struct UiPartyPoseMeta
|
||||
|
||||
@@ -3966,6 +3966,8 @@ struct TraitNodeEntryEntry
|
||||
int32 TraitDefinitionID;
|
||||
int32 MaxRanks;
|
||||
uint8 NodeEntryType;
|
||||
|
||||
TraitNodeEntryType GetNodeEntryType() const { return static_cast<TraitNodeEntryType>(NodeEntryType); }
|
||||
};
|
||||
|
||||
struct TraitNodeEntryXTraitCondEntry
|
||||
|
||||
@@ -616,6 +616,8 @@ enum class CriteriaType : uint8
|
||||
|
||||
FulfillAnyCraftingOrder = 245, /*NYI*/
|
||||
FulfillCraftingOrderType = 246, /*NYI*/ // {CraftingOrderType}
|
||||
|
||||
PerksProgramMonthComplete = 249, /*NYI*/
|
||||
Count
|
||||
};
|
||||
|
||||
@@ -1466,7 +1468,11 @@ enum class ModifierTreeType : int32
|
||||
CraftingOrderSkillLineAbility = 347, /*NYI*/
|
||||
CraftingOrderProfession = 348, /*NYI*/ // ProfessionEnum
|
||||
|
||||
PlayerHasPerksProgramPendingReward = 350,
|
||||
PlayerCanUseItem = 351, // Player can use item {#Item}
|
||||
|
||||
PlayerHasAtLeastProfPathRanks = 355, // Player has purchased or granted at least {#Count} ranks in {SkillLine} config
|
||||
PlayerHasAtLeastMissingProfPathRanks = 356, /*NYI*/ // Player is missing least {#Count} ranks in {SkillLine} config
|
||||
};
|
||||
|
||||
enum class ModifierTreeOperator : int8
|
||||
|
||||
@@ -40,7 +40,7 @@ struct GameObjectTemplate
|
||||
int32 ContentTuningId;
|
||||
union
|
||||
{
|
||||
// 0 GAMEOBJECT_TYPE_DOOR
|
||||
// 0 GAMEOBJECT_TYPE_DOOR
|
||||
struct
|
||||
{
|
||||
uint32 startOpen; // 0 startOpen, enum { false, true, }; Default: false
|
||||
@@ -512,6 +512,7 @@ struct GameObjectTemplate
|
||||
uint32 SitAnimKit; // 2 Sit Anim Kit, References: AnimKit, NoValue = 0
|
||||
uint32 InteractRadiusOverride; // 3 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
|
||||
uint32 CustomizationScope; // 4 Customization Scope, int, Min value: 0, Max value: 2147483647, Default value: 0
|
||||
uint32 Preventteleportingtheplayeroutofthebarbershopchair;// 5 Prevent teleporting the player out of the barbershop chair, enum { false, true, }; Default: false
|
||||
} barberChair;
|
||||
// 33 GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING
|
||||
struct
|
||||
@@ -818,6 +819,12 @@ struct GameObjectTemplate
|
||||
{
|
||||
uint32 Profession; // 0 Profession, enum { First Aid, Blacksmithing, Leatherworking, Alchemy, Herbalism, Cooking, Mining, Tailoring, Engineering, Enchanting, Fishing, Skinning, Jewelcrafting, Inscription, Archaeology, }; Default: Blacksmithing
|
||||
} craftingTable;
|
||||
// 62 GAMEOBJECT_TYPE_PERKS_PROGRAM_CHEST
|
||||
struct
|
||||
{
|
||||
uint32 Script; // 0 Script, References: SpellScript, NoValue = 0
|
||||
uint32 autoClose; // 1 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000
|
||||
} PerksProgramChest;
|
||||
struct
|
||||
{
|
||||
uint32 data[MAX_GAMEOBJECT_DATA];
|
||||
@@ -1052,13 +1059,14 @@ struct GameObjectTemplate
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case GAMEOBJECT_TYPE_DOOR: return door.autoClose;
|
||||
case GAMEOBJECT_TYPE_BUTTON: return button.autoClose;
|
||||
case GAMEOBJECT_TYPE_TRAP: return trap.autoClose;
|
||||
case GAMEOBJECT_TYPE_GOOBER: return goober.autoClose;
|
||||
case GAMEOBJECT_TYPE_TRANSPORT: return transport.autoClose;
|
||||
case GAMEOBJECT_TYPE_AREADAMAGE: return areaDamage.autoClose;
|
||||
case GAMEOBJECT_TYPE_TRAPDOOR: return trapdoor.autoClose;
|
||||
case GAMEOBJECT_TYPE_DOOR: return door.autoClose;
|
||||
case GAMEOBJECT_TYPE_BUTTON: return button.autoClose;
|
||||
case GAMEOBJECT_TYPE_TRAP: return trap.autoClose;
|
||||
case GAMEOBJECT_TYPE_GOOBER: return goober.autoClose;
|
||||
case GAMEOBJECT_TYPE_TRANSPORT: return transport.autoClose;
|
||||
case GAMEOBJECT_TYPE_AREADAMAGE: return areaDamage.autoClose;
|
||||
case GAMEOBJECT_TYPE_TRAPDOOR: return trapdoor.autoClose;
|
||||
case GAMEOBJECT_TYPE_PERKS_PROGRAM_CHEST: return PerksProgramChest.autoClose;
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -22,6 +22,7 @@
|
||||
#include "ItemPacketsCommon.h"
|
||||
#include "MythicPlusPacketsCommon.h"
|
||||
#include "ObjectGuid.h"
|
||||
#include "PerksProgramPacketsCommon.h"
|
||||
#include "Position.h"
|
||||
#include "QuaternionData.h"
|
||||
#include "UpdateField.h"
|
||||
@@ -255,7 +256,7 @@ struct PassiveSpellHistory : public IsUpdateFieldStructureTag
|
||||
bool operator!=(PassiveSpellHistory const& right) const { return !(*this == right); }
|
||||
};
|
||||
|
||||
struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<196>
|
||||
struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<197>
|
||||
{
|
||||
UpdateField<std::vector<uint32>, 0, 1> StateWorldEffectIDs;
|
||||
DynamicUpdateField<UF::PassiveSpellHistory, 0, 2> PassiveSpells;
|
||||
@@ -376,25 +377,26 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<196>
|
||||
UpdateField<int32, 96, 114> LooksLikeMountID;
|
||||
UpdateField<int32, 96, 115> LooksLikeCreatureID;
|
||||
UpdateField<int32, 96, 116> LookAtControllerID;
|
||||
UpdateField<int32, 96, 117> TaxiNodesID;
|
||||
UpdateField<ObjectGuid, 96, 118> GuildGUID;
|
||||
UpdateField<int32, 96, 119> FlightCapabilityID;
|
||||
UpdateField<uint32, 96, 120> SilencedSchoolMask;
|
||||
UpdateField<ObjectGuid, 96, 121> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object
|
||||
UpdateFieldArray<uint32, 2, 122, 123> NpcFlags;
|
||||
UpdateField<int32, 96, 117> PerksVendorItemID;
|
||||
UpdateField<int32, 96, 118> TaxiNodesID;
|
||||
UpdateField<ObjectGuid, 96, 119> GuildGUID;
|
||||
UpdateField<int32, 96, 120> FlightCapabilityID;
|
||||
UpdateField<uint32, 96, 121> SilencedSchoolMask;
|
||||
UpdateField<ObjectGuid, 96, 122> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object
|
||||
UpdateFieldArray<uint32, 2, 123, 124> NpcFlags;
|
||||
struct NpcFlagsTag : ViewerDependentValueTag<uint32> {};
|
||||
UpdateFieldArray<int32, 7, 125, 126> Power;
|
||||
UpdateFieldArray<int32, 7, 125, 133> MaxPower;
|
||||
UpdateFieldArray<float, 7, 125, 140> PowerRegenFlatModifier;
|
||||
UpdateFieldArray<float, 7, 125, 147> PowerRegenInterruptedFlatModifier;
|
||||
UpdateFieldArray<UF::VisibleItem, 3, 154, 155> VirtualItems;
|
||||
UpdateFieldArray<uint32, 2, 158, 159> AttackRoundBaseTime;
|
||||
UpdateFieldArray<int32, 4, 161, 162> Stats;
|
||||
UpdateFieldArray<int32, 4, 161, 166> StatPosBuff;
|
||||
UpdateFieldArray<int32, 4, 161, 170> StatNegBuff;
|
||||
UpdateFieldArray<int32, 7, 174, 175> Resistances;
|
||||
UpdateFieldArray<int32, 7, 174, 182> BonusResistanceMods;
|
||||
UpdateFieldArray<int32, 7, 174, 189> ManaCostModifier;
|
||||
UpdateFieldArray<int32, 7, 126, 127> Power;
|
||||
UpdateFieldArray<int32, 7, 126, 134> MaxPower;
|
||||
UpdateFieldArray<float, 7, 126, 141> PowerRegenFlatModifier;
|
||||
UpdateFieldArray<float, 7, 126, 148> PowerRegenInterruptedFlatModifier;
|
||||
UpdateFieldArray<UF::VisibleItem, 3, 155, 156> VirtualItems;
|
||||
UpdateFieldArray<uint32, 2, 159, 160> AttackRoundBaseTime;
|
||||
UpdateFieldArray<int32, 4, 162, 163> Stats;
|
||||
UpdateFieldArray<int32, 4, 162, 167> StatPosBuff;
|
||||
UpdateFieldArray<int32, 4, 162, 171> StatNegBuff;
|
||||
UpdateFieldArray<int32, 7, 175, 176> Resistances;
|
||||
UpdateFieldArray<int32, 7, 175, 183> BonusResistanceMods;
|
||||
UpdateFieldArray<int32, 7, 175, 190> ManaCostModifier;
|
||||
|
||||
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const;
|
||||
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const;
|
||||
@@ -751,136 +753,151 @@ struct CraftingOrder : public IsUpdateFieldStructureTag, public HasChangesMask<4
|
||||
void ClearChangesMask();
|
||||
};
|
||||
|
||||
struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1571>
|
||||
struct PersonalCraftingOrderCount : public IsUpdateFieldStructureTag
|
||||
{
|
||||
int32 ProfessionID;
|
||||
uint32 Count;
|
||||
|
||||
void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
|
||||
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
|
||||
bool operator==(PersonalCraftingOrderCount const& right) const;
|
||||
bool operator!=(PersonalCraftingOrderCount const& right) const { return !(*this == right); }
|
||||
};
|
||||
|
||||
struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1575>
|
||||
{
|
||||
UpdateField<bool, 0, 1> BackpackAutoSortDisabled;
|
||||
UpdateField<bool, 0, 2> BankAutoSortDisabled;
|
||||
UpdateField<bool, 0, 3> SortBagsRightToLeft;
|
||||
UpdateField<bool, 0, 4> InsertItemsLeftToRight;
|
||||
UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 30, 31> Research;
|
||||
DynamicUpdateField<uint64, 0, 5> KnownTitles;
|
||||
DynamicUpdateField<uint16, 0, 7> ResearchSites;
|
||||
DynamicUpdateField<uint32, 0, 8> ResearchSiteProgress;
|
||||
DynamicUpdateField<int32, 0, 9> DailyQuestsCompleted;
|
||||
DynamicUpdateField<int32, 0, 10> AvailableQuestLineXQuestIDs;
|
||||
DynamicUpdateField<int32, 0, 11> Heirlooms;
|
||||
DynamicUpdateField<uint32, 0, 12> HeirloomFlags;
|
||||
DynamicUpdateField<int32, 0, 13> Toys;
|
||||
DynamicUpdateField<uint32, 0, 14> ToyFlags;
|
||||
DynamicUpdateField<uint32, 0, 15> Transmog;
|
||||
DynamicUpdateField<int32, 0, 16> ConditionalTransmog;
|
||||
DynamicUpdateField<int32, 0, 17> SelfResSpells;
|
||||
DynamicUpdateField<uint32, 0, 18> RuneforgePowers;
|
||||
DynamicUpdateField<uint32, 0, 19> TransmogIllusions;
|
||||
DynamicUpdateField<UF::SpellPctModByLabel, 0, 21> SpellPctModByLabel;
|
||||
DynamicUpdateField<UF::SpellFlatModByLabel, 0, 22> SpellFlatModByLabel;
|
||||
DynamicUpdateField<UF::MawPower, 0, 23> MawPowers;
|
||||
DynamicUpdateField<UF::MultiFloorExplore, 0, 24> MultiFloorExploration;
|
||||
DynamicUpdateField<UF::RecipeProgressionInfo, 0, 25> RecipeProgression;
|
||||
DynamicUpdateField<UF::ReplayedQuest, 0, 26> ReplayedQuests;
|
||||
DynamicUpdateField<int32, 0, 27> DisabledSpells;
|
||||
DynamicUpdateField<UF::PVPInfo, 0, 6> PvpInfo;
|
||||
DynamicUpdateField<UF::CharacterRestriction, 0, 20> CharacterRestrictions;
|
||||
DynamicUpdateField<UF::TraitConfig, 0, 28> TraitConfigs;
|
||||
DynamicUpdateField<UF::CraftingOrder, 0, 29> CraftingOrders;
|
||||
UpdateField<ObjectGuid, 0, 32> FarsightObject;
|
||||
UpdateField<ObjectGuid, 0, 33> SummonedBattlePetGUID;
|
||||
UpdateField<uint64, 34, 35> Coinage;
|
||||
UpdateField<int32, 34, 36> XP;
|
||||
UpdateField<int32, 34, 37> NextLevelXP;
|
||||
UpdateField<int32, 34, 38> TrialXP;
|
||||
UpdateField<UF::SkillInfo, 34, 39> Skill;
|
||||
UpdateField<int32, 34, 40> CharacterPoints;
|
||||
UpdateField<int32, 34, 41> MaxTalentTiers;
|
||||
UpdateField<uint32, 34, 42> TrackCreatureMask;
|
||||
UpdateField<float, 34, 43> MainhandExpertise;
|
||||
UpdateField<float, 34, 44> OffhandExpertise;
|
||||
UpdateField<float, 34, 45> RangedExpertise;
|
||||
UpdateField<float, 34, 46> CombatRatingExpertise;
|
||||
UpdateField<float, 34, 47> BlockPercentage;
|
||||
UpdateField<float, 34, 48> DodgePercentage;
|
||||
UpdateField<float, 34, 49> DodgePercentageFromAttribute;
|
||||
UpdateField<float, 34, 50> ParryPercentage;
|
||||
UpdateField<float, 34, 51> ParryPercentageFromAttribute;
|
||||
UpdateField<float, 34, 52> CritPercentage;
|
||||
UpdateField<float, 34, 53> RangedCritPercentage;
|
||||
UpdateField<float, 34, 54> OffhandCritPercentage;
|
||||
UpdateField<float, 34, 55> SpellCritPercentage;
|
||||
UpdateField<int32, 34, 56> ShieldBlock;
|
||||
UpdateField<float, 34, 57> ShieldBlockCritPercentage;
|
||||
UpdateField<float, 34, 58> Mastery;
|
||||
UpdateField<float, 34, 59> Speed;
|
||||
UpdateField<float, 34, 60> Avoidance;
|
||||
UpdateField<float, 34, 61> Sturdiness;
|
||||
UpdateField<int32, 34, 62> Versatility;
|
||||
UpdateField<float, 34, 63> VersatilityBonus;
|
||||
UpdateField<float, 34, 64> PvpPowerDamage;
|
||||
UpdateField<float, 34, 65> PvpPowerHealing;
|
||||
UpdateField<int32, 66, 67> ModHealingDonePos;
|
||||
UpdateField<float, 66, 68> ModHealingPercent;
|
||||
UpdateField<float, 66, 69> ModPeriodicHealingDonePercent;
|
||||
UpdateField<float, 66, 70> ModSpellPowerPercent;
|
||||
UpdateField<float, 66, 71> ModResiliencePercent;
|
||||
UpdateField<float, 66, 72> OverrideSpellPowerByAPPercent;
|
||||
UpdateField<float, 66, 73> OverrideAPBySpellPowerPercent;
|
||||
UpdateField<int32, 66, 74> ModTargetResistance;
|
||||
UpdateField<int32, 66, 75> ModTargetPhysicalResistance;
|
||||
UpdateField<uint32, 66, 76> LocalFlags;
|
||||
UpdateField<uint8, 66, 77> GrantableLevels;
|
||||
UpdateField<uint8, 66, 78> MultiActionBars;
|
||||
UpdateField<uint8, 66, 79> LifetimeMaxRank;
|
||||
UpdateField<uint8, 66, 80> NumRespecs;
|
||||
UpdateField<uint32, 66, 81> PvpMedals;
|
||||
UpdateField<uint16, 66, 82> TodayHonorableKills;
|
||||
UpdateField<uint16, 66, 83> YesterdayHonorableKills;
|
||||
UpdateField<uint32, 66, 84> LifetimeHonorableKills;
|
||||
UpdateField<int32, 66, 85> WatchedFactionIndex;
|
||||
UpdateField<int32, 66, 86> MaxLevel;
|
||||
UpdateField<int32, 66, 87> ScalingPlayerLevelDelta;
|
||||
UpdateField<int32, 66, 88> MaxCreatureScalingLevel;
|
||||
UpdateField<int32, 66, 89> PetSpellPower;
|
||||
UpdateField<float, 66, 90> UiHitModifier;
|
||||
UpdateField<float, 66, 91> UiSpellHitModifier;
|
||||
UpdateField<int32, 66, 92> HomeRealmTimeOffset;
|
||||
UpdateField<float, 66, 93> ModPetHaste;
|
||||
UpdateField<int8, 66, 94> JailersTowerLevelMax;
|
||||
UpdateField<int8, 66, 95> JailersTowerLevel;
|
||||
UpdateField<uint8, 66, 96> LocalRegenFlags;
|
||||
UpdateField<uint8, 66, 97> AuraVision;
|
||||
UpdateField<uint8, 98, 99> NumBackpackSlots;
|
||||
UpdateField<int32, 98, 100> OverrideSpellsID;
|
||||
UpdateField<uint16, 98, 101> LootSpecID;
|
||||
UpdateField<uint32, 98, 102> OverrideZonePVPType;
|
||||
UpdateField<ObjectGuid, 98, 103> BnetAccount;
|
||||
UpdateField<uint64, 98, 104> GuildClubMemberID;
|
||||
UpdateField<int32, 98, 105> Honor;
|
||||
UpdateField<int32, 98, 106> HonorNextLevel;
|
||||
UpdateField<uint8, 98, 107> NumBankSlots;
|
||||
UpdateField<UF::ActivePlayerUnk901, 98, 109> Field_1410;
|
||||
OptionalUpdateField<UF::QuestSession, 98, 108> QuestSession;
|
||||
UpdateField<int32, 98, 110> UiChromieTimeExpansionID;
|
||||
UpdateField<int32, 98, 111> TransportServerTime;
|
||||
UpdateField<uint32, 98, 112> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
|
||||
UpdateField<int16, 98, 113> DEBUGSoulbindConduitRank;
|
||||
UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 98, 114> DungeonScore;
|
||||
UpdateField<uint32, 98, 115> ActiveCombatTraitConfigID;
|
||||
UpdateFieldArray<ObjectGuid, 218, 116, 117> InvSlots;
|
||||
UpdateFieldArray<uint64, 240, 335, 336> ExploredZones;
|
||||
UpdateFieldArray<UF::RestInfo, 2, 576, 577> RestInfo;
|
||||
UpdateFieldArray<int32, 7, 579, 580> ModDamageDonePos;
|
||||
UpdateFieldArray<int32, 7, 579, 587> ModDamageDoneNeg;
|
||||
UpdateFieldArray<float, 7, 579, 594> ModDamageDonePercent;
|
||||
UpdateFieldArray<float, 7, 579, 601> ModHealingDonePercent;
|
||||
UpdateFieldArray<float, 3, 608, 609> WeaponDmgMultipliers;
|
||||
UpdateFieldArray<float, 3, 608, 612> WeaponAtkSpeedMultipliers;
|
||||
UpdateFieldArray<uint32, 12, 615, 616> BuybackPrice;
|
||||
UpdateFieldArray<int64, 12, 615, 628> BuybackTimestamp;
|
||||
UpdateFieldArray<int32, 32, 640, 641> CombatRatings;
|
||||
UpdateFieldArray<uint32, 4, 673, 674> NoReagentCostMask;
|
||||
UpdateFieldArray<int32, 2, 678, 679> ProfessionSkillLine;
|
||||
UpdateFieldArray<uint32, 5, 681, 682> BagSlotFlags;
|
||||
UpdateFieldArray<uint32, 7, 687, 688> BankBagSlotFlags;
|
||||
UpdateFieldArray<uint64, 875, 695, 696> QuestCompleted;
|
||||
UpdateField<bool, 0, 5> HasPerksProgramPendingReward;
|
||||
UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 32, 33> Research;
|
||||
DynamicUpdateField<uint64, 0, 6> KnownTitles;
|
||||
DynamicUpdateField<uint16, 0, 8> ResearchSites;
|
||||
DynamicUpdateField<uint32, 0, 9> ResearchSiteProgress;
|
||||
DynamicUpdateField<int32, 0, 10> DailyQuestsCompleted;
|
||||
DynamicUpdateField<int32, 0, 11> AvailableQuestLineXQuestIDs;
|
||||
DynamicUpdateField<int32, 0, 12> Heirlooms;
|
||||
DynamicUpdateField<uint32, 0, 13> HeirloomFlags;
|
||||
DynamicUpdateField<int32, 0, 14> Toys;
|
||||
DynamicUpdateField<uint32, 0, 15> ToyFlags;
|
||||
DynamicUpdateField<uint32, 0, 16> Transmog;
|
||||
DynamicUpdateField<int32, 0, 17> ConditionalTransmog;
|
||||
DynamicUpdateField<int32, 0, 18> SelfResSpells;
|
||||
DynamicUpdateField<uint32, 0, 19> RuneforgePowers;
|
||||
DynamicUpdateField<uint32, 0, 20> TransmogIllusions;
|
||||
DynamicUpdateField<UF::SpellPctModByLabel, 0, 22> SpellPctModByLabel;
|
||||
DynamicUpdateField<UF::SpellFlatModByLabel, 0, 23> SpellFlatModByLabel;
|
||||
DynamicUpdateField<UF::MawPower, 0, 24> MawPowers;
|
||||
DynamicUpdateField<UF::MultiFloorExplore, 0, 25> MultiFloorExploration;
|
||||
DynamicUpdateField<UF::RecipeProgressionInfo, 0, 26> RecipeProgression;
|
||||
DynamicUpdateField<UF::ReplayedQuest, 0, 27> ReplayedQuests;
|
||||
DynamicUpdateField<int32, 0, 28> DisabledSpells;
|
||||
DynamicUpdateField<UF::PersonalCraftingOrderCount, 0, 31> PersonalCraftingOrderCounts;
|
||||
DynamicUpdateField<UF::PVPInfo, 0, 7> PvpInfo;
|
||||
DynamicUpdateField<UF::CharacterRestriction, 0, 21> CharacterRestrictions;
|
||||
DynamicUpdateField<UF::TraitConfig, 0, 29> TraitConfigs;
|
||||
DynamicUpdateField<UF::CraftingOrder, 0, 30> CraftingOrders;
|
||||
UpdateField<ObjectGuid, 34, 35> FarsightObject;
|
||||
UpdateField<ObjectGuid, 34, 36> SummonedBattlePetGUID;
|
||||
UpdateField<uint64, 34, 37> Coinage;
|
||||
UpdateField<int32, 34, 38> XP;
|
||||
UpdateField<int32, 34, 39> NextLevelXP;
|
||||
UpdateField<int32, 34, 40> TrialXP;
|
||||
UpdateField<UF::SkillInfo, 34, 41> Skill;
|
||||
UpdateField<int32, 34, 42> CharacterPoints;
|
||||
UpdateField<int32, 34, 43> MaxTalentTiers;
|
||||
UpdateField<uint32, 34, 44> TrackCreatureMask;
|
||||
UpdateField<float, 34, 45> MainhandExpertise;
|
||||
UpdateField<float, 34, 46> OffhandExpertise;
|
||||
UpdateField<float, 34, 47> RangedExpertise;
|
||||
UpdateField<float, 34, 48> CombatRatingExpertise;
|
||||
UpdateField<float, 34, 49> BlockPercentage;
|
||||
UpdateField<float, 34, 50> DodgePercentage;
|
||||
UpdateField<float, 34, 51> DodgePercentageFromAttribute;
|
||||
UpdateField<float, 34, 52> ParryPercentage;
|
||||
UpdateField<float, 34, 53> ParryPercentageFromAttribute;
|
||||
UpdateField<float, 34, 54> CritPercentage;
|
||||
UpdateField<float, 34, 55> RangedCritPercentage;
|
||||
UpdateField<float, 34, 56> OffhandCritPercentage;
|
||||
UpdateField<float, 34, 57> SpellCritPercentage;
|
||||
UpdateField<int32, 34, 58> ShieldBlock;
|
||||
UpdateField<float, 34, 59> ShieldBlockCritPercentage;
|
||||
UpdateField<float, 34, 60> Mastery;
|
||||
UpdateField<float, 34, 61> Speed;
|
||||
UpdateField<float, 34, 62> Avoidance;
|
||||
UpdateField<float, 34, 63> Sturdiness;
|
||||
UpdateField<int32, 34, 64> Versatility;
|
||||
UpdateField<float, 34, 65> VersatilityBonus;
|
||||
UpdateField<float, 66, 67> PvpPowerDamage;
|
||||
UpdateField<float, 66, 68> PvpPowerHealing;
|
||||
UpdateField<int32, 66, 69> ModHealingDonePos;
|
||||
UpdateField<float, 66, 70> ModHealingPercent;
|
||||
UpdateField<float, 66, 71> ModPeriodicHealingDonePercent;
|
||||
UpdateField<float, 66, 72> ModSpellPowerPercent;
|
||||
UpdateField<float, 66, 73> ModResiliencePercent;
|
||||
UpdateField<float, 66, 74> OverrideSpellPowerByAPPercent;
|
||||
UpdateField<float, 66, 75> OverrideAPBySpellPowerPercent;
|
||||
UpdateField<int32, 66, 76> ModTargetResistance;
|
||||
UpdateField<int32, 66, 77> ModTargetPhysicalResistance;
|
||||
UpdateField<uint32, 66, 78> LocalFlags;
|
||||
UpdateField<uint8, 66, 79> GrantableLevels;
|
||||
UpdateField<uint8, 66, 80> MultiActionBars;
|
||||
UpdateField<uint8, 66, 81> LifetimeMaxRank;
|
||||
UpdateField<uint8, 66, 82> NumRespecs;
|
||||
UpdateField<uint32, 66, 83> PvpMedals;
|
||||
UpdateField<uint16, 66, 84> TodayHonorableKills;
|
||||
UpdateField<uint16, 66, 85> YesterdayHonorableKills;
|
||||
UpdateField<uint32, 66, 86> LifetimeHonorableKills;
|
||||
UpdateField<int32, 66, 87> WatchedFactionIndex;
|
||||
UpdateField<int32, 66, 88> MaxLevel;
|
||||
UpdateField<int32, 66, 89> ScalingPlayerLevelDelta;
|
||||
UpdateField<int32, 66, 90> MaxCreatureScalingLevel;
|
||||
UpdateField<int32, 66, 91> PetSpellPower;
|
||||
UpdateField<float, 66, 92> UiHitModifier;
|
||||
UpdateField<float, 66, 93> UiSpellHitModifier;
|
||||
UpdateField<int32, 66, 94> HomeRealmTimeOffset;
|
||||
UpdateField<float, 66, 95> ModPetHaste;
|
||||
UpdateField<int8, 66, 96> JailersTowerLevelMax;
|
||||
UpdateField<int8, 66, 97> JailersTowerLevel;
|
||||
UpdateField<uint8, 98, 99> LocalRegenFlags;
|
||||
UpdateField<uint8, 98, 100> AuraVision;
|
||||
UpdateField<uint8, 98, 101> NumBackpackSlots;
|
||||
UpdateField<int32, 98, 102> OverrideSpellsID;
|
||||
UpdateField<uint16, 98, 103> LootSpecID;
|
||||
UpdateField<uint32, 98, 104> OverrideZonePVPType;
|
||||
UpdateField<ObjectGuid, 98, 105> BnetAccount;
|
||||
UpdateField<uint64, 98, 106> GuildClubMemberID;
|
||||
UpdateField<int32, 98, 107> Honor;
|
||||
UpdateField<int32, 98, 108> HonorNextLevel;
|
||||
UpdateField<int32, 98, 109> PerksProgramCurrency;
|
||||
UpdateField<uint8, 98, 110> NumBankSlots;
|
||||
UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 98, 111> FrozenPerksVendorItem;
|
||||
UpdateField<UF::ActivePlayerUnk901, 98, 113> Field_1410;
|
||||
OptionalUpdateField<UF::QuestSession, 98, 112> QuestSession;
|
||||
UpdateField<int32, 98, 114> UiChromieTimeExpansionID;
|
||||
UpdateField<int32, 98, 115> TransportServerTime;
|
||||
UpdateField<uint32, 98, 116> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
|
||||
UpdateField<int16, 98, 117> DEBUGSoulbindConduitRank;
|
||||
UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 98, 118> DungeonScore;
|
||||
UpdateField<uint32, 98, 119> ActiveCombatTraitConfigID;
|
||||
UpdateFieldArray<ObjectGuid, 218, 120, 121> InvSlots;
|
||||
UpdateFieldArray<uint64, 240, 339, 340> ExploredZones;
|
||||
UpdateFieldArray<UF::RestInfo, 2, 580, 581> RestInfo;
|
||||
UpdateFieldArray<int32, 7, 583, 584> ModDamageDonePos;
|
||||
UpdateFieldArray<int32, 7, 583, 591> ModDamageDoneNeg;
|
||||
UpdateFieldArray<float, 7, 583, 598> ModDamageDonePercent;
|
||||
UpdateFieldArray<float, 7, 583, 605> ModHealingDonePercent;
|
||||
UpdateFieldArray<float, 3, 612, 613> WeaponDmgMultipliers;
|
||||
UpdateFieldArray<float, 3, 612, 616> WeaponAtkSpeedMultipliers;
|
||||
UpdateFieldArray<uint32, 12, 619, 620> BuybackPrice;
|
||||
UpdateFieldArray<int64, 12, 619, 632> BuybackTimestamp;
|
||||
UpdateFieldArray<int32, 32, 644, 645> CombatRatings;
|
||||
UpdateFieldArray<uint32, 4, 677, 678> NoReagentCostMask;
|
||||
UpdateFieldArray<int32, 2, 682, 683> ProfessionSkillLine;
|
||||
UpdateFieldArray<uint32, 5, 685, 686> BagSlotFlags;
|
||||
UpdateFieldArray<uint32, 7, 691, 692> BankBagSlotFlags;
|
||||
UpdateFieldArray<uint64, 875, 699, 700> QuestCompleted;
|
||||
|
||||
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
|
||||
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
|
||||
|
||||
@@ -2650,7 +2650,7 @@ void Player::SendUnlearnSpells()
|
||||
SendDirectMessage(sendUnlearnSpells.Write());
|
||||
}
|
||||
|
||||
void Player::RemoveMail(uint32 id)
|
||||
void Player::RemoveMail(uint64 id)
|
||||
{
|
||||
for (PlayerMails::iterator itr = m_mail.begin(); itr != m_mail.end(); ++itr)
|
||||
{
|
||||
@@ -2663,7 +2663,7 @@ void Player::RemoveMail(uint32 id)
|
||||
}
|
||||
}
|
||||
|
||||
void Player::SendMailResult(uint32 mailId, MailResponseType mailAction, MailResponseResult mailError, uint32 equipError, ObjectGuid::LowType item_guid, uint32 item_count) const
|
||||
void Player::SendMailResult(uint64 mailId, MailResponseType mailAction, MailResponseResult mailError, uint32 equipError, ObjectGuid::LowType itemGuid, uint32 itemCount) const
|
||||
{
|
||||
WorldPackets::Mail::MailCommandResult result;
|
||||
|
||||
@@ -2675,8 +2675,8 @@ void Player::SendMailResult(uint32 mailId, MailResponseType mailAction, MailResp
|
||||
result.BagResult = equipError;
|
||||
else if (mailAction == MAIL_ITEM_TAKEN)
|
||||
{
|
||||
result.AttachID = item_guid;
|
||||
result.QtyInInventory = item_count;
|
||||
result.AttachID = itemGuid;
|
||||
result.QtyInInventory = itemCount;
|
||||
}
|
||||
SendDirectMessage(result.Write());
|
||||
}
|
||||
@@ -3578,7 +3578,7 @@ void Player::ResetPvpTalents()
|
||||
RemovePvpTalent(talentInfo, spec);
|
||||
}
|
||||
|
||||
Mail* Player::GetMail(uint32 id)
|
||||
Mail* Player::GetMail(uint64 id)
|
||||
{
|
||||
for (PlayerMails::iterator itr = m_mail.begin(); itr != m_mail.end(); ++itr)
|
||||
if ((*itr)->messageID == id)
|
||||
@@ -3865,7 +3865,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
|
||||
|
||||
if (resultMail)
|
||||
{
|
||||
std::unordered_map<uint32, std::vector<Item*>> itemsByMail;
|
||||
std::unordered_map<uint64, std::vector<Item*>> itemsByMail;
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_MAILITEMS);
|
||||
stmt->setUInt64(0, guid);
|
||||
@@ -3900,7 +3900,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
|
||||
do
|
||||
{
|
||||
Field* fields = resultItems->Fetch();
|
||||
uint32 mailId = fields[44].GetUInt32();
|
||||
uint64 mailId = fields[44].GetUInt64();
|
||||
if (Item* mailItem = _LoadMailedItem(playerguid, nullptr, mailId, nullptr, fields, Trinity::Containers::MapGetValuePtr(additionalData, fields[0].GetUInt64())))
|
||||
itemsByMail[mailId].push_back(mailItem);
|
||||
|
||||
@@ -3911,7 +3911,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
|
||||
{
|
||||
Field* mailFields = resultMail->Fetch();
|
||||
|
||||
uint32 mail_id = mailFields[0].GetUInt32();
|
||||
uint64 mail_id = mailFields[0].GetUInt64();
|
||||
uint8 mailType = mailFields[1].GetUInt8();
|
||||
uint16 mailTemplateId= mailFields[2].GetUInt16();
|
||||
ObjectGuid::LowType sender = mailFields[3].GetUInt64();
|
||||
@@ -3923,7 +3923,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
|
||||
// We can return mail now
|
||||
// So firstly delete the old one
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID);
|
||||
stmt->setUInt32(0, mail_id);
|
||||
stmt->setUInt64(0, mail_id);
|
||||
trans->Append(stmt);
|
||||
|
||||
// Mail is not from player
|
||||
@@ -3932,7 +3932,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
|
||||
if (has_items)
|
||||
{
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID);
|
||||
stmt->setUInt32(0, mail_id);
|
||||
stmt->setUInt64(0, mail_id);
|
||||
trans->Append(stmt);
|
||||
}
|
||||
continue;
|
||||
@@ -3953,7 +3953,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
|
||||
}
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID);
|
||||
stmt->setUInt32(0, mail_id);
|
||||
stmt->setUInt64(0, mail_id);
|
||||
trans->Append(stmt);
|
||||
|
||||
uint32 pl_account = sCharacterCache->GetCharacterAccountIdByGuid(playerguid);
|
||||
@@ -16748,10 +16748,15 @@ void Player::SendQuestUpdateAddPlayer(Quest const* quest, uint16 newCount) const
|
||||
}
|
||||
|
||||
void Player::SendQuestGiverStatusMultiple()
|
||||
{
|
||||
SendQuestGiverStatusMultiple(m_clientGUIDs);
|
||||
}
|
||||
|
||||
void Player::SendQuestGiverStatusMultiple(GuidUnorderedSet const& guids)
|
||||
{
|
||||
WorldPackets::Quest::QuestGiverStatusMultiple response;
|
||||
|
||||
for (auto itr = m_clientGUIDs.begin(); itr != m_clientGUIDs.end(); ++itr)
|
||||
for (auto itr = guids.begin(); itr != guids.end(); ++itr)
|
||||
{
|
||||
if (itr->IsAnyTypeCreature())
|
||||
{
|
||||
@@ -18528,7 +18533,7 @@ Item* Player::_LoadItem(CharacterDatabaseTransaction trans, uint32 zoneId, uint3
|
||||
}
|
||||
|
||||
// load mailed item which should receive current player
|
||||
Item* Player::_LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint32 mailId, Mail* mail, Field* fields, ItemAdditionalLoadInfo* addionalData)
|
||||
Item* Player::_LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint64 mailId, Mail* mail, Field* fields, ItemAdditionalLoadInfo* addionalData)
|
||||
{
|
||||
ObjectGuid::LowType itemGuid = fields[0].GetUInt64();
|
||||
uint32 itemEntry = fields[1].GetUInt32();
|
||||
@@ -18600,7 +18605,7 @@ void Player::_LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mail
|
||||
{
|
||||
m_mail.clear();
|
||||
|
||||
std::unordered_map<uint32, Mail*> mailById;
|
||||
std::unordered_map<uint64, Mail*> mailById;
|
||||
|
||||
if (mailsResult)
|
||||
{
|
||||
@@ -18609,7 +18614,7 @@ void Player::_LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mail
|
||||
Field* fields = mailsResult->Fetch();
|
||||
Mail* m = new Mail();
|
||||
|
||||
m->messageID = fields[0].GetUInt32();
|
||||
m->messageID = fields[0].GetUInt64();
|
||||
m->messageType = fields[1].GetUInt8();
|
||||
m->sender = fields[2].GetUInt64();
|
||||
m->receiver = fields[3].GetUInt64();
|
||||
@@ -18646,7 +18651,7 @@ void Player::_LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mail
|
||||
do
|
||||
{
|
||||
Field* fields = mailItemsResult->Fetch();
|
||||
uint32 mailId = fields[52].GetUInt32();
|
||||
uint64 mailId = fields[52].GetUInt64();
|
||||
_LoadMailedItem(GetGUID(), this, mailId, mailById[mailId], fields, Trinity::Containers::MapGetValuePtr(additionalData, fields[0].GetUInt64()));
|
||||
} while (mailItemsResult->NextRow());
|
||||
}
|
||||
@@ -20113,7 +20118,7 @@ void Player::_SaveMail(CharacterDatabaseTransaction trans)
|
||||
stmt->setUInt64(3, m->money);
|
||||
stmt->setUInt64(4, m->COD);
|
||||
stmt->setUInt8(5, uint8(m->checked));
|
||||
stmt->setUInt32(6, m->messageID);
|
||||
stmt->setUInt64(6, m->messageID);
|
||||
|
||||
trans->Append(stmt);
|
||||
|
||||
@@ -20141,11 +20146,11 @@ void Player::_SaveMail(CharacterDatabaseTransaction trans)
|
||||
}
|
||||
}
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID);
|
||||
stmt->setUInt32(0, m->messageID);
|
||||
stmt->setUInt64(0, m->messageID);
|
||||
trans->Append(stmt);
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID);
|
||||
stmt->setUInt32(0, m->messageID);
|
||||
stmt->setUInt64(0, m->messageID);
|
||||
trans->Append(stmt);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1674,6 +1674,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
void SendQuestUpdateAddCreditSimple(QuestObjective const& obj) const;
|
||||
void SendQuestUpdateAddPlayer(Quest const* quest, uint16 newCount) const;
|
||||
void SendQuestGiverStatusMultiple();
|
||||
void SendQuestGiverStatusMultiple(GuidUnorderedSet const& guids);
|
||||
void SendDisplayToast(uint32 entry, DisplayToastType type, bool isBonusRoll, uint32 quantity, DisplayToastMethod method, uint32 questId = 0, Item* item = nullptr) const;
|
||||
|
||||
uint32 GetSharedQuestID() const { return m_sharedQuestId; }
|
||||
@@ -1760,16 +1761,16 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
void SetTarget(ObjectGuid const& /*guid*/) override { } /// Used for serverside target changes, does not apply to players
|
||||
void SetSelection(ObjectGuid const& guid) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Target), guid); }
|
||||
|
||||
void SendMailResult(uint32 mailId, MailResponseType mailAction, MailResponseResult mailError, uint32 equipError = 0, ObjectGuid::LowType item_guid = UI64LIT(0), uint32 item_count = 0) const;
|
||||
void SendMailResult(uint64 mailId, MailResponseType mailAction, MailResponseResult mailError, uint32 equipError = 0, ObjectGuid::LowType itemGuid = UI64LIT(0), uint32 itemCount = 0) const;
|
||||
void SendNewMail() const;
|
||||
void UpdateNextMailTimeAndUnreads();
|
||||
void AddNewMailDeliverTime(time_t deliver_time);
|
||||
|
||||
void RemoveMail(uint32 id);
|
||||
void RemoveMail(uint64 id);
|
||||
|
||||
void AddMail(Mail* mail) { m_mail.push_front(mail);}// for call from WorldSession::SendMailTo
|
||||
uint32 GetMailSize() const { return uint32(m_mail.size()); }
|
||||
Mail* GetMail(uint32 id);
|
||||
Mail* GetMail(uint64 id);
|
||||
|
||||
PlayerMails const& GetMails() const { return m_mail; }
|
||||
|
||||
@@ -2915,7 +2916,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
void _LoadVoidStorage(PreparedQueryResult result);
|
||||
void _LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mailItemsResult, PreparedQueryResult artifactResult, PreparedQueryResult azeriteItemResult,
|
||||
PreparedQueryResult azeriteItemMilestonePowersResult, PreparedQueryResult azeriteItemUnlockedEssencesResult, PreparedQueryResult azeriteEmpoweredItemResult);
|
||||
static Item* _LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint32 mailId, Mail* mail, Field* fields, ItemAdditionalLoadInfo* addionalData);
|
||||
static Item* _LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint64 mailId, Mail* mail, Field* fields, ItemAdditionalLoadInfo* addionalData);
|
||||
void _LoadQuestStatus(PreparedQueryResult result);
|
||||
void _LoadQuestStatusObjectives(PreparedQueryResult result);
|
||||
void _LoadQuestStatusRewarded(PreparedQueryResult result);
|
||||
|
||||
@@ -6526,7 +6526,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp)
|
||||
return; // any mails need to be returned or deleted
|
||||
}
|
||||
|
||||
std::map<uint32 /*messageId*/, MailItemInfoVec> itemsCache;
|
||||
std::map<uint64 /*messageId*/, MailItemInfoVec> itemsCache;
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_EXPIRED_MAIL_ITEMS);
|
||||
stmt->setUInt32(0, curTime);
|
||||
if (PreparedQueryResult items = CharacterDatabase.Query(stmt))
|
||||
@@ -6537,7 +6537,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp)
|
||||
Field* fields = items->Fetch();
|
||||
item.item_guid = fields[0].GetUInt64();
|
||||
item.item_template = fields[1].GetUInt32();
|
||||
uint32 mailId = fields[2].GetUInt32();
|
||||
uint64 mailId = fields[2].GetUInt64();
|
||||
itemsCache[mailId].push_back(item);
|
||||
} while (items->NextRow());
|
||||
}
|
||||
@@ -6552,7 +6552,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp)
|
||||
continue;
|
||||
|
||||
Mail* m = new Mail;
|
||||
m->messageID = fields[0].GetUInt32();
|
||||
m->messageID = fields[0].GetUInt64();
|
||||
m->messageType = fields[1].GetUInt8();
|
||||
m->sender = fields[2].GetUInt64();
|
||||
m->receiver = receiver;
|
||||
@@ -6582,7 +6582,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp)
|
||||
}
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID);
|
||||
stmt->setUInt32(0, m->messageID);
|
||||
stmt->setUInt64(0, m->messageID);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
else
|
||||
@@ -6594,7 +6594,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp)
|
||||
stmt->setInt64 (2, curTime + 30 * DAY);
|
||||
stmt->setInt64 (3, curTime);
|
||||
stmt->setUInt8 (4, uint8(MAIL_CHECK_MASK_RETURNED));
|
||||
stmt->setUInt32(5, m->messageID);
|
||||
stmt->setUInt64(5, m->messageID);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
for (MailItemInfoVec::iterator itr2 = m->items.begin(); itr2 != m->items.end(); ++itr2)
|
||||
{
|
||||
@@ -6616,7 +6616,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp)
|
||||
}
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID);
|
||||
stmt->setUInt32(0, m->messageID);
|
||||
stmt->setUInt64(0, m->messageID);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
delete m;
|
||||
++deletedCount;
|
||||
@@ -7512,7 +7512,7 @@ void ObjectMgr::SetHighestGuids()
|
||||
|
||||
result = CharacterDatabase.Query("SELECT MAX(id) FROM mail");
|
||||
if (result)
|
||||
_mailId = (*result)[0].GetUInt32()+1;
|
||||
_mailId = (*result)[0].GetUInt64()+1;
|
||||
|
||||
result = CharacterDatabase.Query("SELECT MAX(arenateamid) FROM arena_team");
|
||||
if (result)
|
||||
@@ -7572,7 +7572,7 @@ uint64 ObjectMgr::GenerateEquipmentSetGuid()
|
||||
return _equipmentSetGuid++;
|
||||
}
|
||||
|
||||
uint32 ObjectMgr::GenerateMailID()
|
||||
uint64 ObjectMgr::GenerateMailID()
|
||||
{
|
||||
if (_mailId >= 0xFFFFFFFE)
|
||||
{
|
||||
|
||||
@@ -1457,7 +1457,7 @@ class TC_GAME_API ObjectMgr
|
||||
|
||||
uint32 GenerateAuctionID();
|
||||
uint64 GenerateEquipmentSetGuid();
|
||||
uint32 GenerateMailID();
|
||||
uint64 GenerateMailID();
|
||||
uint32 GeneratePetNumber();
|
||||
uint64 GenerateVoidStorageItemId();
|
||||
ObjectGuid::LowType GenerateCreatureSpawnId();
|
||||
@@ -1794,7 +1794,7 @@ class TC_GAME_API ObjectMgr
|
||||
// first free id for selected id type
|
||||
uint32 _auctionId;
|
||||
uint64 _equipmentSetGuid;
|
||||
std::atomic<uint32> _mailId;
|
||||
std::atomic<uint64> _mailId;
|
||||
std::atomic<uint32> _hiPetNumber;
|
||||
ObjectGuid::LowType _creatureSpawnId;
|
||||
ObjectGuid::LowType _gameObjectSpawnId;
|
||||
|
||||
@@ -1467,8 +1467,6 @@ void WorldSession::SendFeatureSystemStatus()
|
||||
|
||||
/// START OF DUMMY VALUES
|
||||
features.ComplaintStatus = COMPLAINT_ENABLED_WITH_AUTO_IGNORE;
|
||||
features.ScrollOfResurrectionRequestsRemaining = 1;
|
||||
features.ScrollOfResurrectionMaxRequestsPerDay = 1;
|
||||
features.TwitterPostThrottleLimit = 60;
|
||||
features.TwitterPostThrottleCooldown = 20;
|
||||
features.CfgRealmID = 2;
|
||||
|
||||
@@ -158,7 +158,7 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& sendMail)
|
||||
|
||||
// test the receiver's Faction... or all items are account bound
|
||||
bool accountBound = !mailInfo.Attachments.empty();
|
||||
for (auto const& att : mailInfo.Attachments)
|
||||
for (WorldPackets::Mail::SendMail::StructSendMail::MailAttachment const& att : mailInfo.Attachments)
|
||||
{
|
||||
if (Item* item = player->GetItemByGuid(att.ItemGUID))
|
||||
{
|
||||
@@ -185,7 +185,7 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& sendMail)
|
||||
|
||||
std::vector<Item*> items;
|
||||
|
||||
for (auto const& att : mailInfo.Attachments)
|
||||
for (WorldPackets::Mail::SendMail::StructSendMail::MailAttachment const& att : mailInfo.Attachments)
|
||||
{
|
||||
if (att.ItemGUID.IsEmpty())
|
||||
{
|
||||
@@ -384,11 +384,11 @@ void WorldSession::HandleMailReturnToSender(WorldPackets::Mail::MailReturnToSend
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID);
|
||||
stmt->setUInt32(0, returnToSender.MailID);
|
||||
stmt->setUInt64(0, returnToSender.MailID);
|
||||
trans->Append(stmt);
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID);
|
||||
stmt->setUInt32(0, returnToSender.MailID);
|
||||
stmt->setUInt64(0, returnToSender.MailID);
|
||||
trans->Append(stmt);
|
||||
|
||||
player->RemoveMail(returnToSender.MailID);
|
||||
@@ -421,7 +421,7 @@ void WorldSession::HandleMailReturnToSender(WorldPackets::Mail::MailReturnToSend
|
||||
//called when player takes item attached in mail
|
||||
void WorldSession::HandleMailTakeItem(WorldPackets::Mail::MailTakeItem& takeItem)
|
||||
{
|
||||
uint32 AttachID = takeItem.AttachID;
|
||||
uint64 AttachID = takeItem.AttachID;
|
||||
|
||||
if (!CanOpenMailBox(takeItem.Mailbox))
|
||||
return;
|
||||
|
||||
@@ -797,6 +797,11 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::Ques
|
||||
_player->SendQuestGiverStatusMultiple();
|
||||
}
|
||||
|
||||
void WorldSession::HandleQuestgiverStatusTrackedQueryOpcode(WorldPackets::Quest::QuestGiverStatusTrackedQuery& questGiverStatusTrackedQuery)
|
||||
{
|
||||
_player->SendQuestGiverStatusMultiple(questGiverStatusTrackedQuery.QuestGiverGUIDs);
|
||||
}
|
||||
|
||||
void WorldSession::HandleRequestWorldQuestUpdate(WorldPackets::Quest::RequestWorldQuestUpdate& /*packet*/)
|
||||
{
|
||||
WorldPackets::Quest::WorldQuestUpdateResponse response;
|
||||
|
||||
@@ -197,7 +197,7 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction trans, MailReceiver cons
|
||||
if (pReceiver)
|
||||
prepareItems(pReceiver, trans); // generate mail template items
|
||||
|
||||
uint32 mailId = sObjectMgr->GenerateMailID();
|
||||
uint64 mailId = sObjectMgr->GenerateMailID();
|
||||
|
||||
time_t deliver_time = GameTime::GetGameTime() + deliver_delay;
|
||||
|
||||
@@ -221,7 +221,7 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction trans, MailReceiver cons
|
||||
// Add to DB
|
||||
uint8 index = 0;
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_MAIL);
|
||||
stmt->setUInt32( index, mailId);
|
||||
stmt->setUInt64( index, mailId);
|
||||
stmt->setUInt8 (++index, uint8(sender.GetMailMessageType()));
|
||||
stmt->setInt8 (++index, int8(sender.GetStationery()));
|
||||
stmt->setUInt16(++index, GetMailTemplateId());
|
||||
@@ -241,7 +241,7 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction trans, MailReceiver cons
|
||||
{
|
||||
Item* pItem = mailItemIter->second;
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_MAIL_ITEM);
|
||||
stmt->setUInt32(0, mailId);
|
||||
stmt->setUInt64(0, mailId);
|
||||
stmt->setUInt64(1, pItem->GetGUID().GetCounter());
|
||||
stmt->setUInt64(2, receiver.GetPlayerGUIDLow());
|
||||
trans->Append(stmt);
|
||||
|
||||
@@ -171,7 +171,7 @@ typedef std::vector<MailItemInfo> MailItemInfoVec;
|
||||
|
||||
struct TC_GAME_API Mail
|
||||
{
|
||||
uint32 messageID;
|
||||
uint64 messageID;
|
||||
uint8 messageType;
|
||||
uint8 stationery;
|
||||
uint16 mailTemplateId;
|
||||
|
||||
@@ -2833,10 +2833,12 @@ enum GameobjectTypes : uint8
|
||||
GAMEOBJECT_TYPE_LEGENDARY_FORGE = 57,
|
||||
GAMEOBJECT_TYPE_GARR_TALENT_TREE = 58,
|
||||
GAMEOBJECT_TYPE_WEEKLY_REWARD_CHEST = 59,
|
||||
GAMEOBJECT_TYPE_CLIENT_MODEL = 60
|
||||
GAMEOBJECT_TYPE_CLIENT_MODEL = 60,
|
||||
GAMEOBJECT_TYPE_CRAFTING_TABLE = 61,
|
||||
GAMEOBJECT_TYPE_PERKS_PROGRAM_CHEST = 62,
|
||||
};
|
||||
|
||||
#define MAX_GAMEOBJECT_TYPE 61 // sending to client this or greater value can crash client.
|
||||
#define MAX_GAMEOBJECT_TYPE 63 // sending to client this or greater value can crash client.
|
||||
#define MAX_GAMEOBJECT_DATA 35 // Max number of uint32 vars in gameobject_template data field
|
||||
|
||||
enum GameObjectFlags
|
||||
@@ -7528,289 +7530,290 @@ enum class GameError : uint32
|
||||
ERR_DIFFICULTY_CHANGE_ENCOUNTER = 828,
|
||||
ERR_DIFFICULTY_CHANGE_COMBAT = 829,
|
||||
ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 830,
|
||||
ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 831,
|
||||
ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 832,
|
||||
ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 833,
|
||||
ERR_ARENA_TEAM_PARTY_SIZE = 834,
|
||||
ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 835,
|
||||
ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 836,
|
||||
ERR_SOLO_SHUFFLE_MIN_ITEM_LEVEL = 837,
|
||||
ERR_PVP_PLAYER_ABANDONED = 838,
|
||||
ERR_QUEST_FORCE_REMOVED_S = 839,
|
||||
ERR_ATTACK_NO_ACTIONS = 840,
|
||||
ERR_IN_RANDOM_BG = 841,
|
||||
ERR_IN_NON_RANDOM_BG = 842,
|
||||
ERR_BN_FRIEND_SELF = 843,
|
||||
ERR_BN_FRIEND_ALREADY = 844,
|
||||
ERR_BN_FRIEND_BLOCKED = 845,
|
||||
ERR_BN_FRIEND_LIST_FULL = 846,
|
||||
ERR_BN_FRIEND_REQUEST_SENT = 847,
|
||||
ERR_BN_BROADCAST_THROTTLE = 848,
|
||||
ERR_BG_DEVELOPER_ONLY = 849,
|
||||
ERR_CURRENCY_SPELL_SLOT_MISMATCH = 850,
|
||||
ERR_CURRENCY_NOT_TRADABLE = 851,
|
||||
ERR_REQUIRES_EXPANSION_S = 852,
|
||||
ERR_QUEST_FAILED_SPELL = 853,
|
||||
ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 854,
|
||||
ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 855,
|
||||
ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 856,
|
||||
ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 857,
|
||||
ERR_TALENT_FAILED_UNKNOWN = 858,
|
||||
ERR_TALENT_FAILED_IN_COMBAT = 859,
|
||||
ERR_TALENT_FAILED_IN_PVP_MATCH = 860,
|
||||
ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 861,
|
||||
ERR_WARGAME_REQUEST_FAILURE = 862,
|
||||
ERR_RANK_REQUIRES_AUTHENTICATOR = 863,
|
||||
ERR_GUILD_BANK_VOUCHER_FAILED = 864,
|
||||
ERR_WARGAME_REQUEST_SENT = 865,
|
||||
ERR_REQUIRES_ACHIEVEMENT_I = 866,
|
||||
ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 867,
|
||||
ERR_CANT_BUY_QUANTITY = 868,
|
||||
ERR_ITEM_IS_BATTLE_PAY_LOCKED = 869,
|
||||
ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 870,
|
||||
ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 871,
|
||||
ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 872,
|
||||
ERR_INSUFF_TRACKED_CURRENCY_IS = 873,
|
||||
ERR_NOT_ON_TOURNAMENT_REALM = 874,
|
||||
ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 875,
|
||||
ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 876,
|
||||
ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 877,
|
||||
ERR_CANT_DO_THAT_IN_A_GROUP = 878,
|
||||
ERR_GUILD_LEADER_REPLACED = 879,
|
||||
ERR_TRANSMOGRIFY_CANT_EQUIP = 880,
|
||||
ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 881,
|
||||
ERR_TRANSMOGRIFY_NOT_SOULBOUND = 882,
|
||||
ERR_TRANSMOGRIFY_INVALID_SOURCE = 883,
|
||||
ERR_TRANSMOGRIFY_INVALID_DESTINATION = 884,
|
||||
ERR_TRANSMOGRIFY_MISMATCH = 885,
|
||||
ERR_TRANSMOGRIFY_LEGENDARY = 886,
|
||||
ERR_TRANSMOGRIFY_SAME_ITEM = 887,
|
||||
ERR_TRANSMOGRIFY_SAME_APPEARANCE = 888,
|
||||
ERR_TRANSMOGRIFY_NOT_EQUIPPED = 889,
|
||||
ERR_VOID_DEPOSIT_FULL = 890,
|
||||
ERR_VOID_WITHDRAW_FULL = 891,
|
||||
ERR_VOID_STORAGE_WRAPPED = 892,
|
||||
ERR_VOID_STORAGE_STACKABLE = 893,
|
||||
ERR_VOID_STORAGE_UNBOUND = 894,
|
||||
ERR_VOID_STORAGE_REPAIR = 895,
|
||||
ERR_VOID_STORAGE_CHARGES = 896,
|
||||
ERR_VOID_STORAGE_QUEST = 897,
|
||||
ERR_VOID_STORAGE_CONJURED = 898,
|
||||
ERR_VOID_STORAGE_MAIL = 899,
|
||||
ERR_VOID_STORAGE_BAG = 900,
|
||||
ERR_VOID_TRANSFER_STORAGE_FULL = 901,
|
||||
ERR_VOID_TRANSFER_INV_FULL = 902,
|
||||
ERR_VOID_TRANSFER_INTERNAL_ERROR = 903,
|
||||
ERR_VOID_TRANSFER_ITEM_INVALID = 904,
|
||||
ERR_DIFFICULTY_DISABLED_IN_LFG = 905,
|
||||
ERR_VOID_STORAGE_UNIQUE = 906,
|
||||
ERR_VOID_STORAGE_LOOT = 907,
|
||||
ERR_VOID_STORAGE_HOLIDAY = 908,
|
||||
ERR_VOID_STORAGE_DURATION = 909,
|
||||
ERR_VOID_STORAGE_LOAD_FAILED = 910,
|
||||
ERR_VOID_STORAGE_INVALID_ITEM = 911,
|
||||
ERR_PARENTAL_CONTROLS_CHAT_MUTED = 912,
|
||||
ERR_SOR_START_EXPERIENCE_INCOMPLETE = 913,
|
||||
ERR_SOR_INVALID_EMAIL = 914,
|
||||
ERR_SOR_INVALID_COMMENT = 915,
|
||||
ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 916,
|
||||
ERR_CHALLENGE_MODE_RESET_KEYSTONE = 917,
|
||||
ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 918,
|
||||
ERR_REPORT_SUBMITTED_SUCCESSFULLY = 919,
|
||||
ERR_REPORT_SUBMISSION_FAILED = 920,
|
||||
ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 921,
|
||||
ERR_BUG_SUBMITTED_SUCCESSFULLY = 922,
|
||||
ERR_CHALLENGE_MODE_ENABLED = 923,
|
||||
ERR_CHALLENGE_MODE_DISABLED = 924,
|
||||
ERR_PETBATTLE_CREATE_FAILED = 925,
|
||||
ERR_PETBATTLE_NOT_HERE = 926,
|
||||
ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 927,
|
||||
ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 928,
|
||||
ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 929,
|
||||
ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 930,
|
||||
ERR_PETBATTLE_NOT_WHILE_DEAD = 931,
|
||||
ERR_PETBATTLE_NOT_WHILE_FLYING = 932,
|
||||
ERR_PETBATTLE_TARGET_INVALID = 933,
|
||||
ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 934,
|
||||
ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 935,
|
||||
ERR_PETBATTLE_NOT_A_TRAINER = 936,
|
||||
ERR_PETBATTLE_DECLINED = 937,
|
||||
ERR_PETBATTLE_IN_BATTLE = 938,
|
||||
ERR_PETBATTLE_INVALID_LOADOUT = 939,
|
||||
ERR_PETBATTLE_ALL_PETS_DEAD = 940,
|
||||
ERR_PETBATTLE_NO_PETS_IN_SLOTS = 941,
|
||||
ERR_PETBATTLE_NO_ACCOUNT_LOCK = 942,
|
||||
ERR_PETBATTLE_WILD_PET_TAPPED = 943,
|
||||
ERR_PETBATTLE_RESTRICTED_ACCOUNT = 944,
|
||||
ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 945,
|
||||
ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 946,
|
||||
ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 947,
|
||||
ERR_CANT_HAVE_MORE_PETS = 948,
|
||||
ERR_PVP_MAP_NOT_FOUND = 949,
|
||||
ERR_PVP_MAP_NOT_SET = 950,
|
||||
ERR_PETBATTLE_QUEUE_QUEUED = 951,
|
||||
ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 952,
|
||||
ERR_PETBATTLE_QUEUE_JOIN_FAILED = 953,
|
||||
ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 954,
|
||||
ERR_PETBATTLE_QUEUE_REMOVED = 955,
|
||||
ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 956,
|
||||
ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 957,
|
||||
ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 958,
|
||||
ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 959,
|
||||
ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 960,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 961,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 962,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 963,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 964,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 965,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 966,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_DEAD = 967,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 968,
|
||||
ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 969,
|
||||
ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 970,
|
||||
ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 971,
|
||||
ERR_HAS_RESTRICTION = 972,
|
||||
ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 973,
|
||||
ERR_ITEM_UPGRADE_NO_PATH = 974,
|
||||
ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 975,
|
||||
ERR_BONUS_ROLL_EMPTY = 976,
|
||||
ERR_CHALLENGE_MODE_FULL = 977,
|
||||
ERR_CHALLENGE_MODE_IN_PROGRESS = 978,
|
||||
ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 979,
|
||||
ERR_BATTLETAG_FRIEND_NOT_FOUND = 980,
|
||||
ERR_BATTLETAG_FRIEND_NOT_VALID = 981,
|
||||
ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 982,
|
||||
ERR_BATTLETAG_FRIEND_THROTTLED = 983,
|
||||
ERR_BATTLETAG_FRIEND_SUCCESS = 984,
|
||||
ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 985,
|
||||
ERR_PETBATTLE_INTERNAL = 986,
|
||||
ERR_CANT_CAGE_PET_YET = 987,
|
||||
ERR_NO_LOOT_IN_CHALLENGE_MODE = 988,
|
||||
ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 989,
|
||||
ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 990,
|
||||
ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 991,
|
||||
ERR_RECRUIT_A_FRIEND_FAILED = 992,
|
||||
ERR_SET_LOOT_PERSONAL = 993,
|
||||
ERR_SET_LOOT_METHOD_FAILED_COMBAT = 994,
|
||||
ERR_REAGENT_BANK_FULL = 995,
|
||||
ERR_REAGENT_BANK_LOCKED = 996,
|
||||
ERR_GARRISON_BUILDING_EXISTS = 997,
|
||||
ERR_GARRISON_INVALID_PLOT = 998,
|
||||
ERR_GARRISON_INVALID_BUILDINGID = 999,
|
||||
ERR_GARRISON_INVALID_PLOT_BUILDING = 1000,
|
||||
ERR_GARRISON_REQUIRES_BLUEPRINT = 1001,
|
||||
ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1002,
|
||||
ERR_GARRISON_NOT_ENOUGH_GOLD = 1003,
|
||||
ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1004,
|
||||
ERR_ALREADY_USING_LFG_LIST = 1005,
|
||||
ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1006,
|
||||
ERR_TOY_USE_LIMIT_REACHED = 1007,
|
||||
ERR_TOY_ALREADY_KNOWN = 1008,
|
||||
ERR_TRANSMOG_SET_ALREADY_KNOWN = 1009,
|
||||
ERR_NOT_ENOUGH_CURRENCY = 1010,
|
||||
ERR_SPEC_IS_DISABLED = 1011,
|
||||
ERR_FEATURE_RESTRICTED_TRIAL = 1012,
|
||||
ERR_CANT_BE_OBLITERATED = 1013,
|
||||
ERR_CANT_BE_SCRAPPED = 1014,
|
||||
ERR_CANT_BE_RECRAFTED = 1015,
|
||||
ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1016,
|
||||
ERR_MUST_EQUIP_ARTIFACT = 1017,
|
||||
ERR_CANT_DO_THAT_RIGHT_NOW = 1018,
|
||||
ERR_AFFECTING_COMBAT = 1019,
|
||||
ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1020,
|
||||
ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1021,
|
||||
ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1022,
|
||||
ERR_MOVIE_RECORDING_WARNING_PERF = 1023,
|
||||
ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1024,
|
||||
ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1025,
|
||||
ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1026,
|
||||
ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1027,
|
||||
ERR_NO_CHALLENGE_MODE_REWARD = 1028,
|
||||
ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1029,
|
||||
ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1030,
|
||||
ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1031,
|
||||
ERR_TALENT_FAILED_REST_AREA = 1032,
|
||||
ERR_CANNOT_ABANDON_LAST_PET = 1033,
|
||||
ERR_TEST_CVAR_SET_SSS = 1034,
|
||||
ERR_QUEST_TURN_IN_FAIL_REASON = 1035,
|
||||
ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1036,
|
||||
ERR_TALENT_GRANTED_BY_AURA = 1037,
|
||||
ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1038,
|
||||
ERR_GLYPH_TARGET_NOT_AVAILABLE = 1039,
|
||||
ERR_PVP_WARMODE_TOGGLE_ON = 1040,
|
||||
ERR_PVP_WARMODE_TOGGLE_OFF = 1041,
|
||||
ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1042,
|
||||
ERR_SPELL_FAILED_CANT_FLY_HERE = 1043,
|
||||
ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1044,
|
||||
ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1045,
|
||||
ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1046,
|
||||
ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1047,
|
||||
ERR_VOICE_CHAT_SERVICE_LOST = 1048,
|
||||
ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1049,
|
||||
ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1050,
|
||||
ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1051,
|
||||
ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1052,
|
||||
ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1053,
|
||||
ERR_VOICE_CHAT_PLAYER_SILENCED = 1054,
|
||||
ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1055,
|
||||
ERR_VOICE_CHAT_DISABLED = 1056,
|
||||
ERR_NO_PVP_REWARD = 1057,
|
||||
ERR_CLAIMED_PVP_REWARD = 1058,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1059,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1060,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1061,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1062,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1063,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1064,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1065,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1066,
|
||||
ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1067,
|
||||
ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1068,
|
||||
ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1069,
|
||||
ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1070,
|
||||
ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1071,
|
||||
ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1072,
|
||||
ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1073,
|
||||
ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1074,
|
||||
ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1075,
|
||||
ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1076,
|
||||
ERR_SOCKETING_REQUIRES_TINKER_GEM = 1077,
|
||||
ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1078,
|
||||
ERR_LEVEL_LINKING_RESULT_LINKED = 1079,
|
||||
ERR_LEVEL_LINKING_RESULT_UNLINKED = 1080,
|
||||
ERR_CLUB_FINDER_ERROR_POST_CLUB = 1081,
|
||||
ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1082,
|
||||
ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1083,
|
||||
ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1084,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1085,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1086,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1087,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1088,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1089,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1090,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1091,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1092,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1093,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1094,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1095,
|
||||
ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1096,
|
||||
ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1097,
|
||||
ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1098,
|
||||
ERR_SOULBIND_INVALID_CONDUIT = 1099,
|
||||
ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1100,
|
||||
ERR_SOULBIND_INVALID_TALENT = 1101,
|
||||
ERR_SOULBIND_DUPLICATE_CONDUIT = 1102,
|
||||
ERR_ACTIVATE_SOULBIND_S = 1103,
|
||||
ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1104,
|
||||
ERR_CANT_USE_PROFANITY = 1105,
|
||||
ERR_NOT_IN_PET_BATTLE = 1106,
|
||||
ERR_NOT_IN_NPE = 1107,
|
||||
ERR_NO_SPEC = 1108,
|
||||
ERR_NO_DOMINATIONSHARD_OVERWRITE = 1109,
|
||||
ERR_USE_WEEKLY_REWARDS_DISABLED = 1110,
|
||||
ERR_CROSS_FACTION_GROUP_JOINED = 1111,
|
||||
ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1112,
|
||||
ERR_EQUIPABLESPELLS_SLOTS_FULL = 1113,
|
||||
ERR_DIFFICULTY_CHANGE_PLAYER_ON_VEHICLE = 831,
|
||||
ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 832,
|
||||
ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 833,
|
||||
ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 834,
|
||||
ERR_ARENA_TEAM_PARTY_SIZE = 835,
|
||||
ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 836,
|
||||
ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 837,
|
||||
ERR_SOLO_SHUFFLE_MIN_ITEM_LEVEL = 838,
|
||||
ERR_PVP_PLAYER_ABANDONED = 839,
|
||||
ERR_QUEST_FORCE_REMOVED_S = 840,
|
||||
ERR_ATTACK_NO_ACTIONS = 841,
|
||||
ERR_IN_RANDOM_BG = 842,
|
||||
ERR_IN_NON_RANDOM_BG = 843,
|
||||
ERR_BN_FRIEND_SELF = 844,
|
||||
ERR_BN_FRIEND_ALREADY = 845,
|
||||
ERR_BN_FRIEND_BLOCKED = 846,
|
||||
ERR_BN_FRIEND_LIST_FULL = 847,
|
||||
ERR_BN_FRIEND_REQUEST_SENT = 848,
|
||||
ERR_BN_BROADCAST_THROTTLE = 849,
|
||||
ERR_BG_DEVELOPER_ONLY = 850,
|
||||
ERR_CURRENCY_SPELL_SLOT_MISMATCH = 851,
|
||||
ERR_CURRENCY_NOT_TRADABLE = 852,
|
||||
ERR_REQUIRES_EXPANSION_S = 853,
|
||||
ERR_QUEST_FAILED_SPELL = 854,
|
||||
ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 855,
|
||||
ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 856,
|
||||
ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 857,
|
||||
ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 858,
|
||||
ERR_TALENT_FAILED_UNKNOWN = 859,
|
||||
ERR_TALENT_FAILED_IN_COMBAT = 860,
|
||||
ERR_TALENT_FAILED_IN_PVP_MATCH = 861,
|
||||
ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 862,
|
||||
ERR_WARGAME_REQUEST_FAILURE = 863,
|
||||
ERR_RANK_REQUIRES_AUTHENTICATOR = 864,
|
||||
ERR_GUILD_BANK_VOUCHER_FAILED = 865,
|
||||
ERR_WARGAME_REQUEST_SENT = 866,
|
||||
ERR_REQUIRES_ACHIEVEMENT_I = 867,
|
||||
ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 868,
|
||||
ERR_CANT_BUY_QUANTITY = 869,
|
||||
ERR_ITEM_IS_BATTLE_PAY_LOCKED = 870,
|
||||
ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 871,
|
||||
ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 872,
|
||||
ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 873,
|
||||
ERR_INSUFF_TRACKED_CURRENCY_IS = 874,
|
||||
ERR_NOT_ON_TOURNAMENT_REALM = 875,
|
||||
ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 876,
|
||||
ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 877,
|
||||
ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 878,
|
||||
ERR_CANT_DO_THAT_IN_A_GROUP = 879,
|
||||
ERR_GUILD_LEADER_REPLACED = 880,
|
||||
ERR_TRANSMOGRIFY_CANT_EQUIP = 881,
|
||||
ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 882,
|
||||
ERR_TRANSMOGRIFY_NOT_SOULBOUND = 883,
|
||||
ERR_TRANSMOGRIFY_INVALID_SOURCE = 884,
|
||||
ERR_TRANSMOGRIFY_INVALID_DESTINATION = 885,
|
||||
ERR_TRANSMOGRIFY_MISMATCH = 886,
|
||||
ERR_TRANSMOGRIFY_LEGENDARY = 887,
|
||||
ERR_TRANSMOGRIFY_SAME_ITEM = 888,
|
||||
ERR_TRANSMOGRIFY_SAME_APPEARANCE = 889,
|
||||
ERR_TRANSMOGRIFY_NOT_EQUIPPED = 890,
|
||||
ERR_VOID_DEPOSIT_FULL = 891,
|
||||
ERR_VOID_WITHDRAW_FULL = 892,
|
||||
ERR_VOID_STORAGE_WRAPPED = 893,
|
||||
ERR_VOID_STORAGE_STACKABLE = 894,
|
||||
ERR_VOID_STORAGE_UNBOUND = 895,
|
||||
ERR_VOID_STORAGE_REPAIR = 896,
|
||||
ERR_VOID_STORAGE_CHARGES = 897,
|
||||
ERR_VOID_STORAGE_QUEST = 898,
|
||||
ERR_VOID_STORAGE_CONJURED = 899,
|
||||
ERR_VOID_STORAGE_MAIL = 900,
|
||||
ERR_VOID_STORAGE_BAG = 901,
|
||||
ERR_VOID_TRANSFER_STORAGE_FULL = 902,
|
||||
ERR_VOID_TRANSFER_INV_FULL = 903,
|
||||
ERR_VOID_TRANSFER_INTERNAL_ERROR = 904,
|
||||
ERR_VOID_TRANSFER_ITEM_INVALID = 905,
|
||||
ERR_DIFFICULTY_DISABLED_IN_LFG = 906,
|
||||
ERR_VOID_STORAGE_UNIQUE = 907,
|
||||
ERR_VOID_STORAGE_LOOT = 908,
|
||||
ERR_VOID_STORAGE_HOLIDAY = 909,
|
||||
ERR_VOID_STORAGE_DURATION = 910,
|
||||
ERR_VOID_STORAGE_LOAD_FAILED = 911,
|
||||
ERR_VOID_STORAGE_INVALID_ITEM = 912,
|
||||
ERR_PARENTAL_CONTROLS_CHAT_MUTED = 913,
|
||||
ERR_SOR_START_EXPERIENCE_INCOMPLETE = 914,
|
||||
ERR_SOR_INVALID_EMAIL = 915,
|
||||
ERR_SOR_INVALID_COMMENT = 916,
|
||||
ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 917,
|
||||
ERR_CHALLENGE_MODE_RESET_KEYSTONE = 918,
|
||||
ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 919,
|
||||
ERR_REPORT_SUBMITTED_SUCCESSFULLY = 920,
|
||||
ERR_REPORT_SUBMISSION_FAILED = 921,
|
||||
ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 922,
|
||||
ERR_BUG_SUBMITTED_SUCCESSFULLY = 923,
|
||||
ERR_CHALLENGE_MODE_ENABLED = 924,
|
||||
ERR_CHALLENGE_MODE_DISABLED = 925,
|
||||
ERR_PETBATTLE_CREATE_FAILED = 926,
|
||||
ERR_PETBATTLE_NOT_HERE = 927,
|
||||
ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 928,
|
||||
ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 929,
|
||||
ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 930,
|
||||
ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 931,
|
||||
ERR_PETBATTLE_NOT_WHILE_DEAD = 932,
|
||||
ERR_PETBATTLE_NOT_WHILE_FLYING = 933,
|
||||
ERR_PETBATTLE_TARGET_INVALID = 934,
|
||||
ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 935,
|
||||
ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 936,
|
||||
ERR_PETBATTLE_NOT_A_TRAINER = 937,
|
||||
ERR_PETBATTLE_DECLINED = 938,
|
||||
ERR_PETBATTLE_IN_BATTLE = 939,
|
||||
ERR_PETBATTLE_INVALID_LOADOUT = 940,
|
||||
ERR_PETBATTLE_ALL_PETS_DEAD = 941,
|
||||
ERR_PETBATTLE_NO_PETS_IN_SLOTS = 942,
|
||||
ERR_PETBATTLE_NO_ACCOUNT_LOCK = 943,
|
||||
ERR_PETBATTLE_WILD_PET_TAPPED = 944,
|
||||
ERR_PETBATTLE_RESTRICTED_ACCOUNT = 945,
|
||||
ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 946,
|
||||
ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 947,
|
||||
ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 948,
|
||||
ERR_CANT_HAVE_MORE_PETS = 949,
|
||||
ERR_PVP_MAP_NOT_FOUND = 950,
|
||||
ERR_PVP_MAP_NOT_SET = 951,
|
||||
ERR_PETBATTLE_QUEUE_QUEUED = 952,
|
||||
ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 953,
|
||||
ERR_PETBATTLE_QUEUE_JOIN_FAILED = 954,
|
||||
ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 955,
|
||||
ERR_PETBATTLE_QUEUE_REMOVED = 956,
|
||||
ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 957,
|
||||
ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 958,
|
||||
ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 959,
|
||||
ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 960,
|
||||
ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 961,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 962,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 963,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 964,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 965,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 966,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 967,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_DEAD = 968,
|
||||
ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 969,
|
||||
ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 970,
|
||||
ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 971,
|
||||
ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 972,
|
||||
ERR_HAS_RESTRICTION = 973,
|
||||
ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 974,
|
||||
ERR_ITEM_UPGRADE_NO_PATH = 975,
|
||||
ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 976,
|
||||
ERR_BONUS_ROLL_EMPTY = 977,
|
||||
ERR_CHALLENGE_MODE_FULL = 978,
|
||||
ERR_CHALLENGE_MODE_IN_PROGRESS = 979,
|
||||
ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 980,
|
||||
ERR_BATTLETAG_FRIEND_NOT_FOUND = 981,
|
||||
ERR_BATTLETAG_FRIEND_NOT_VALID = 982,
|
||||
ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 983,
|
||||
ERR_BATTLETAG_FRIEND_THROTTLED = 984,
|
||||
ERR_BATTLETAG_FRIEND_SUCCESS = 985,
|
||||
ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 986,
|
||||
ERR_PETBATTLE_INTERNAL = 987,
|
||||
ERR_CANT_CAGE_PET_YET = 988,
|
||||
ERR_NO_LOOT_IN_CHALLENGE_MODE = 989,
|
||||
ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 990,
|
||||
ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 991,
|
||||
ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 992,
|
||||
ERR_RECRUIT_A_FRIEND_FAILED = 993,
|
||||
ERR_SET_LOOT_PERSONAL = 994,
|
||||
ERR_SET_LOOT_METHOD_FAILED_COMBAT = 995,
|
||||
ERR_REAGENT_BANK_FULL = 996,
|
||||
ERR_REAGENT_BANK_LOCKED = 997,
|
||||
ERR_GARRISON_BUILDING_EXISTS = 998,
|
||||
ERR_GARRISON_INVALID_PLOT = 999,
|
||||
ERR_GARRISON_INVALID_BUILDINGID = 1000,
|
||||
ERR_GARRISON_INVALID_PLOT_BUILDING = 1001,
|
||||
ERR_GARRISON_REQUIRES_BLUEPRINT = 1002,
|
||||
ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1003,
|
||||
ERR_GARRISON_NOT_ENOUGH_GOLD = 1004,
|
||||
ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1005,
|
||||
ERR_ALREADY_USING_LFG_LIST = 1006,
|
||||
ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1007,
|
||||
ERR_TOY_USE_LIMIT_REACHED = 1008,
|
||||
ERR_TOY_ALREADY_KNOWN = 1009,
|
||||
ERR_TRANSMOG_SET_ALREADY_KNOWN = 1010,
|
||||
ERR_NOT_ENOUGH_CURRENCY = 1011,
|
||||
ERR_SPEC_IS_DISABLED = 1012,
|
||||
ERR_FEATURE_RESTRICTED_TRIAL = 1013,
|
||||
ERR_CANT_BE_OBLITERATED = 1014,
|
||||
ERR_CANT_BE_SCRAPPED = 1015,
|
||||
ERR_CANT_BE_RECRAFTED = 1016,
|
||||
ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1017,
|
||||
ERR_MUST_EQUIP_ARTIFACT = 1018,
|
||||
ERR_CANT_DO_THAT_RIGHT_NOW = 1019,
|
||||
ERR_AFFECTING_COMBAT = 1020,
|
||||
ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1021,
|
||||
ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1022,
|
||||
ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1023,
|
||||
ERR_MOVIE_RECORDING_WARNING_PERF = 1024,
|
||||
ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1025,
|
||||
ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1026,
|
||||
ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1027,
|
||||
ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1028,
|
||||
ERR_NO_CHALLENGE_MODE_REWARD = 1029,
|
||||
ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1030,
|
||||
ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1031,
|
||||
ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1032,
|
||||
ERR_TALENT_FAILED_REST_AREA = 1033,
|
||||
ERR_CANNOT_ABANDON_LAST_PET = 1034,
|
||||
ERR_TEST_CVAR_SET_SSS = 1035,
|
||||
ERR_QUEST_TURN_IN_FAIL_REASON = 1036,
|
||||
ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1037,
|
||||
ERR_TALENT_GRANTED_BY_AURA = 1038,
|
||||
ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1039,
|
||||
ERR_GLYPH_TARGET_NOT_AVAILABLE = 1040,
|
||||
ERR_PVP_WARMODE_TOGGLE_ON = 1041,
|
||||
ERR_PVP_WARMODE_TOGGLE_OFF = 1042,
|
||||
ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1043,
|
||||
ERR_SPELL_FAILED_CANT_FLY_HERE = 1044,
|
||||
ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1045,
|
||||
ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1046,
|
||||
ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1047,
|
||||
ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1048,
|
||||
ERR_VOICE_CHAT_SERVICE_LOST = 1049,
|
||||
ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1050,
|
||||
ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1051,
|
||||
ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1052,
|
||||
ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1053,
|
||||
ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1054,
|
||||
ERR_VOICE_CHAT_PLAYER_SILENCED = 1055,
|
||||
ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1056,
|
||||
ERR_VOICE_CHAT_DISABLED = 1057,
|
||||
ERR_NO_PVP_REWARD = 1058,
|
||||
ERR_CLAIMED_PVP_REWARD = 1059,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1060,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1061,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1062,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1063,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1064,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1065,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1066,
|
||||
ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1067,
|
||||
ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1068,
|
||||
ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1069,
|
||||
ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1070,
|
||||
ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1071,
|
||||
ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1072,
|
||||
ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1073,
|
||||
ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1074,
|
||||
ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1075,
|
||||
ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1076,
|
||||
ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1077,
|
||||
ERR_SOCKETING_REQUIRES_TINKER_GEM = 1078,
|
||||
ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1079,
|
||||
ERR_LEVEL_LINKING_RESULT_LINKED = 1080,
|
||||
ERR_LEVEL_LINKING_RESULT_UNLINKED = 1081,
|
||||
ERR_CLUB_FINDER_ERROR_POST_CLUB = 1082,
|
||||
ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1083,
|
||||
ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1084,
|
||||
ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1085,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1086,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1087,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1088,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1089,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1090,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1091,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1092,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1093,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1094,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1095,
|
||||
ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1096,
|
||||
ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1097,
|
||||
ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1098,
|
||||
ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1099,
|
||||
ERR_SOULBIND_INVALID_CONDUIT = 1100,
|
||||
ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1101,
|
||||
ERR_SOULBIND_INVALID_TALENT = 1102,
|
||||
ERR_SOULBIND_DUPLICATE_CONDUIT = 1103,
|
||||
ERR_ACTIVATE_SOULBIND_S = 1104,
|
||||
ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1105,
|
||||
ERR_CANT_USE_PROFANITY = 1106,
|
||||
ERR_NOT_IN_PET_BATTLE = 1107,
|
||||
ERR_NOT_IN_NPE = 1108,
|
||||
ERR_NO_SPEC = 1109,
|
||||
ERR_NO_DOMINATIONSHARD_OVERWRITE = 1110,
|
||||
ERR_USE_WEEKLY_REWARDS_DISABLED = 1111,
|
||||
ERR_CROSS_FACTION_GROUP_JOINED = 1112,
|
||||
ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1113,
|
||||
ERR_EQUIPABLESPELLS_SLOTS_FULL = 1114,
|
||||
};
|
||||
|
||||
enum class MountResult : uint32
|
||||
|
||||
@@ -348,6 +348,14 @@ WorldPacket const* WorldPackets::Battleground::RatedPvpInfo::Write()
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::RatedMatchDeserterPenalty const& ratedMatchDeserterPenalty)
|
||||
{
|
||||
data << int32(ratedMatchDeserterPenalty.PersonalRatingChange);
|
||||
data << int32(ratedMatchDeserterPenalty.QueuePenaltySpellID);
|
||||
data << ratedMatchDeserterPenalty.QueuePenaltyDuration;
|
||||
return data;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Battleground::PVPMatchInitialize::Write()
|
||||
{
|
||||
_worldPacket << uint32(MapID);
|
||||
@@ -358,8 +366,12 @@ WorldPacket const* WorldPackets::Battleground::PVPMatchInitialize::Write()
|
||||
_worldPacket << uint32(BattlemasterListID);
|
||||
_worldPacket.WriteBit(Registered);
|
||||
_worldPacket.WriteBit(AffectsRating);
|
||||
_worldPacket.WriteBit(DeserterPenalty.has_value());
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
if (DeserterPenalty)
|
||||
_worldPacket << *DeserterPenalty;
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
|
||||
@@ -465,6 +465,13 @@ namespace WorldPackets
|
||||
} Bracket[6];
|
||||
};
|
||||
|
||||
struct RatedMatchDeserterPenalty
|
||||
{
|
||||
int32 PersonalRatingChange = 0;
|
||||
int32 QueuePenaltySpellID = 0;
|
||||
WorldPackets::Duration<Milliseconds, int32> QueuePenaltyDuration;
|
||||
};
|
||||
|
||||
class PVPMatchInitialize final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
@@ -483,6 +490,7 @@ namespace WorldPackets
|
||||
MatchState State = Inactive;
|
||||
Timestamp<> StartTime;
|
||||
WorldPackets::Duration<Seconds> Duration;
|
||||
Optional<RatedMatchDeserterPenalty> DeserterPenalty;
|
||||
uint8 ArenaFaction = 0;
|
||||
uint32 BattlemasterListID = 0;
|
||||
bool Registered = false;
|
||||
|
||||
@@ -30,11 +30,12 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellReducedReagent const& spellReduced
|
||||
ByteBuffer& operator<<(ByteBuffer& data, CraftingData const& craftingData)
|
||||
{
|
||||
data << int32(craftingData.CraftingQualityID);
|
||||
data << int32(craftingData.field_4);
|
||||
data << int32(craftingData.field_8);
|
||||
data << float(craftingData.QualityProgress);
|
||||
data << int32(craftingData.SkillLineAbilityID);
|
||||
data << int32(craftingData.CraftingDataID);
|
||||
data << int32(craftingData.Multicraft);
|
||||
data << int32(craftingData.field_10);
|
||||
data << int32(craftingData.field_14);
|
||||
data << int32(craftingData.SkillFromReagents);
|
||||
data << int32(craftingData.Skill);
|
||||
data << int32(craftingData.CritBonusSkill);
|
||||
data << float(craftingData.field_1C);
|
||||
data << uint64(craftingData.field_20);
|
||||
|
||||
@@ -32,11 +32,12 @@ struct SpellReducedReagent
|
||||
struct CraftingData
|
||||
{
|
||||
int32 CraftingQualityID = 0;
|
||||
int32 field_4 = 0;
|
||||
int32 field_8 = 0;
|
||||
float QualityProgress = 0.0f;
|
||||
int32 SkillLineAbilityID = 0;
|
||||
int32 CraftingDataID = 0;
|
||||
int32 Multicraft = 0;
|
||||
int32 field_10 = 0;
|
||||
int32 field_14 = 0;
|
||||
int32 SkillFromReagents = 0;
|
||||
int32 Skill = 0;
|
||||
int32 CritBonusSkill = 0;
|
||||
float field_1C = 0.0f;
|
||||
uint64 field_20 = 0;
|
||||
|
||||
@@ -58,7 +58,7 @@ WorldPackets::Mail::MailAttachedItem::MailAttachedItem(::Item const* item, uint8
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Mail::MailAttachedItem const& att)
|
||||
{
|
||||
data << uint8(att.Position);
|
||||
data << int32(att.AttachID);
|
||||
data << uint64(att.AttachID);
|
||||
data << int32(att.Count);
|
||||
data << int32(att.Charges);
|
||||
data << uint32(att.MaxDurability);
|
||||
@@ -114,7 +114,7 @@ WorldPackets::Mail::MailListEntry::MailListEntry(::Mail const* mail, ::Player* p
|
||||
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Mail::MailListEntry const& entry)
|
||||
{
|
||||
data << int32(entry.MailID);
|
||||
data << uint64(entry.MailID);
|
||||
data << uint8(entry.SenderType);
|
||||
data << uint64(entry.Cod);
|
||||
data << int32(entry.StationeryID);
|
||||
@@ -198,12 +198,12 @@ void WorldPackets::Mail::MailReturnToSender::Read()
|
||||
|
||||
WorldPacket const* WorldPackets::Mail::MailCommandResult::Write()
|
||||
{
|
||||
_worldPacket << uint32(MailID);
|
||||
_worldPacket << uint32(Command);
|
||||
_worldPacket << uint32(ErrorCode);
|
||||
_worldPacket << uint32(BagResult);
|
||||
_worldPacket << uint32(AttachID);
|
||||
_worldPacket << uint32(QtyInInventory);
|
||||
_worldPacket << uint64(MailID);
|
||||
_worldPacket << int32(Command);
|
||||
_worldPacket << int32(ErrorCode);
|
||||
_worldPacket << int32(BagResult);
|
||||
_worldPacket << uint64(AttachID);
|
||||
_worldPacket << int32(QtyInInventory);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace WorldPackets
|
||||
MailAttachedItem(::Item const* item, uint8 pos);
|
||||
|
||||
uint8 Position = 0;
|
||||
int32 AttachID = 0;
|
||||
uint64 AttachID = 0;
|
||||
Item::ItemInstance Item;
|
||||
int32 Count = 0;
|
||||
int32 Charges = 0;
|
||||
@@ -49,7 +49,7 @@ namespace WorldPackets
|
||||
{
|
||||
MailListEntry(::Mail const* mail, ::Player* player);
|
||||
|
||||
int32 MailID = 0;
|
||||
uint64 MailID = 0;
|
||||
uint8 SenderType = 0;
|
||||
Optional<ObjectGuid> SenderCharacter;
|
||||
Optional<uint32> AltSenderID;
|
||||
@@ -93,7 +93,7 @@ namespace WorldPackets
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid Mailbox;
|
||||
uint32 MailID = 0;
|
||||
uint64 MailID = 0;
|
||||
};
|
||||
|
||||
class SendMail final : public ClientPacket
|
||||
@@ -131,12 +131,12 @@ namespace WorldPackets
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
uint32 MailID = 0;
|
||||
uint32 Command = 0;
|
||||
uint32 ErrorCode = 0;
|
||||
uint32 BagResult = 0;
|
||||
uint32 AttachID = 0;
|
||||
uint32 QtyInInventory = 0;
|
||||
uint64 MailID = 0;
|
||||
int32 Command = 0;
|
||||
int32 ErrorCode = 0;
|
||||
int32 BagResult = 0;
|
||||
uint64 AttachID = 0;
|
||||
int32 QtyInInventory = 0;
|
||||
};
|
||||
|
||||
class MailReturnToSender final : public ClientPacket
|
||||
@@ -146,7 +146,7 @@ namespace WorldPackets
|
||||
|
||||
void Read() override;
|
||||
|
||||
int32 MailID = 0;
|
||||
uint64 MailID = 0;
|
||||
ObjectGuid SenderGUID;
|
||||
};
|
||||
|
||||
@@ -158,7 +158,7 @@ namespace WorldPackets
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid Mailbox;
|
||||
int32 MailID = 0;
|
||||
uint64 MailID = 0;
|
||||
};
|
||||
|
||||
class MailDelete final : public ClientPacket
|
||||
@@ -168,7 +168,7 @@ namespace WorldPackets
|
||||
|
||||
void Read() override;
|
||||
|
||||
int32 MailID = 0;
|
||||
uint64 MailID = 0;
|
||||
int32 DeleteReason = 0;
|
||||
};
|
||||
|
||||
@@ -180,8 +180,8 @@ namespace WorldPackets
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid Mailbox;
|
||||
int32 MailID = 0;
|
||||
int32 AttachID = 0;
|
||||
uint64 MailID = 0;
|
||||
uint64 AttachID = 0;
|
||||
};
|
||||
|
||||
class MailTakeMoney final : public ClientPacket
|
||||
@@ -192,8 +192,8 @@ namespace WorldPackets
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid Mailbox;
|
||||
int32 MailID = 0;
|
||||
int64 Money = 0;
|
||||
uint64 MailID = 0;
|
||||
uint64 Money = 0;
|
||||
};
|
||||
|
||||
class MailQueryNextMailTime final : public ClientPacket
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#include "PerksProgramPacketsCommon.h"
|
||||
|
||||
namespace WorldPackets::PerksProgram
|
||||
{
|
||||
ByteBuffer& operator<<(ByteBuffer& data, PerksVendorItem const& perksVendorItem)
|
||||
{
|
||||
data << int32(perksVendorItem.VendorItemID);
|
||||
data << int32(perksVendorItem.MountID);
|
||||
data << int32(perksVendorItem.BattlePetSpeciesID);
|
||||
data << int32(perksVendorItem.TransmogSetID);
|
||||
data << int32(perksVendorItem.ItemModifiedAppearanceID);
|
||||
data << int32(perksVendorItem.Field_14);
|
||||
data << int32(perksVendorItem.Field_18);
|
||||
data << int32(perksVendorItem.Price);
|
||||
data << perksVendorItem.AvailableUntil;
|
||||
data.WriteBit(perksVendorItem.Disabled);
|
||||
data.FlushBits();
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#ifndef PerksPorgramPacketsCommon_h__
|
||||
#define PerksPorgramPacketsCommon_h__
|
||||
|
||||
#include "PacketUtilities.h"
|
||||
|
||||
namespace WorldPackets::PerksProgram
|
||||
{
|
||||
struct PerksVendorItem
|
||||
{
|
||||
int32 VendorItemID = 0;
|
||||
int32 MountID = 0;
|
||||
int32 BattlePetSpeciesID = 0;
|
||||
int32 TransmogSetID = 0;
|
||||
int32 ItemModifiedAppearanceID = 0;
|
||||
int32 Field_14 = 0;
|
||||
int32 Field_18 = 0;
|
||||
int32 Price = 0;
|
||||
Timestamp<> AvailableUntil;
|
||||
bool Disabled = false;
|
||||
};
|
||||
|
||||
ByteBuffer& operator<<(ByteBuffer& data, PerksVendorItem const& perksVendorItem);
|
||||
}
|
||||
|
||||
#endif // PerksPorgramPacketsCommon_h__
|
||||
@@ -45,6 +45,22 @@ void QuestGiverStatusQuery::Read()
|
||||
_worldPacket >> QuestGiverGUID;
|
||||
}
|
||||
|
||||
void QuestGiverStatusTrackedQuery::Read()
|
||||
{
|
||||
uint32 guidCount = 0;
|
||||
_worldPacket >> guidCount;
|
||||
if (guidCount > 1000)
|
||||
throw PacketArrayMaxCapacityException(guidCount, 1000);
|
||||
|
||||
QuestGiverGUIDs.reserve(guidCount);
|
||||
for (uint32 i = 0; i < guidCount; ++i)
|
||||
{
|
||||
ObjectGuid guid;
|
||||
_worldPacket >> guid;
|
||||
QuestGiverGUIDs.insert(guid);
|
||||
}
|
||||
}
|
||||
|
||||
WorldPacket const* QuestGiverStatus::Write()
|
||||
{
|
||||
_worldPacket << QuestGiver.Guid;
|
||||
|
||||
@@ -49,6 +49,16 @@ namespace WorldPackets
|
||||
void Read() override { }
|
||||
};
|
||||
|
||||
class QuestGiverStatusTrackedQuery final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
QuestGiverStatusTrackedQuery(WorldPacket&& packet) : ClientPacket(CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
GuidUnorderedSet QuestGiverGUIDs;
|
||||
};
|
||||
|
||||
struct QuestGiverInfo
|
||||
{
|
||||
QuestGiverInfo() { }
|
||||
|
||||
@@ -907,7 +907,6 @@ void SelfRes::Read()
|
||||
void GetMirrorImageData::Read()
|
||||
{
|
||||
_worldPacket >> UnitGUID;
|
||||
_worldPacket >> DisplayID;
|
||||
}
|
||||
|
||||
MirrorImageComponentedData::MirrorImageComponentedData()
|
||||
|
||||
@@ -906,7 +906,6 @@ namespace WorldPackets
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid UnitGUID;
|
||||
uint32 DisplayID = 0;
|
||||
};
|
||||
|
||||
class MirrorImageComponentedData final : public ServerPacket
|
||||
|
||||
@@ -52,9 +52,6 @@ WorldPacket const* FeatureSystemStatus::Write()
|
||||
{
|
||||
_worldPacket << uint8(ComplaintStatus);
|
||||
|
||||
_worldPacket << uint32(ScrollOfResurrectionRequestsRemaining);
|
||||
_worldPacket << uint32(ScrollOfResurrectionMaxRequestsPerDay);
|
||||
|
||||
_worldPacket << uint32(CfgRealmID);
|
||||
_worldPacket << int32(CfgRealmRecID);
|
||||
|
||||
@@ -87,14 +84,13 @@ WorldPacket const* FeatureSystemStatus::Write()
|
||||
|
||||
_worldPacket.WriteBit(VoiceEnabled);
|
||||
_worldPacket.WriteBit(EuropaTicketSystemStatus.has_value());
|
||||
_worldPacket.WriteBit(ScrollOfResurrectionEnabled);
|
||||
_worldPacket.WriteBit(BpayStoreEnabled);
|
||||
_worldPacket.WriteBit(BpayStoreAvailable);
|
||||
_worldPacket.WriteBit(BpayStoreDisabledByParentalControls);
|
||||
_worldPacket.WriteBit(ItemRestorationButtonEnabled);
|
||||
_worldPacket.WriteBit(BrowserEnabled);
|
||||
|
||||
_worldPacket.WriteBit(SessionAlert.has_value());
|
||||
|
||||
_worldPacket.WriteBit(RAFSystem.Enabled);
|
||||
_worldPacket.WriteBit(RAFSystem.RecruitingEnabled);
|
||||
_worldPacket.WriteBit(CharUndeleteEnabled);
|
||||
@@ -102,8 +98,8 @@ WorldPacket const* FeatureSystemStatus::Write()
|
||||
_worldPacket.WriteBit(CommerceSystemEnabled);
|
||||
_worldPacket.WriteBit(TutorialsEnabled);
|
||||
_worldPacket.WriteBit(TwitterEnabled);
|
||||
|
||||
_worldPacket.WriteBit(Unk67);
|
||||
|
||||
_worldPacket.WriteBit(WillKickFromWorld);
|
||||
_worldPacket.WriteBit(KioskModeEnabled);
|
||||
_worldPacket.WriteBit(CompetitiveModeEnabled);
|
||||
@@ -111,8 +107,8 @@ WorldPacket const* FeatureSystemStatus::Write()
|
||||
_worldPacket.WriteBit(WarModeFeatureEnabled);
|
||||
_worldPacket.WriteBit(ClubsEnabled);
|
||||
_worldPacket.WriteBit(ClubsBattleNetClubTypeAllowed);
|
||||
|
||||
_worldPacket.WriteBit(ClubsCharacterClubTypeAllowed);
|
||||
|
||||
_worldPacket.WriteBit(ClubsPresenceUpdateEnabled);
|
||||
_worldPacket.WriteBit(VoiceChatDisabledByParentalControl);
|
||||
_worldPacket.WriteBit(VoiceChatMutedByParentalControl);
|
||||
@@ -120,8 +116,8 @@ WorldPacket const* FeatureSystemStatus::Write()
|
||||
_worldPacket.WriteBit(IsMuted);
|
||||
_worldPacket.WriteBit(ClubFinderEnabled);
|
||||
_worldPacket.WriteBit(Unknown901CheckoutRelated);
|
||||
|
||||
_worldPacket.WriteBit(TextToSpeechFeatureEnabled);
|
||||
|
||||
_worldPacket.WriteBit(ChatDisabledByDefault);
|
||||
_worldPacket.WriteBit(ChatDisabledByPlayer);
|
||||
_worldPacket.WriteBit(LFGListCustomRequiresAuthenticator);
|
||||
|
||||
@@ -114,10 +114,7 @@ namespace WorldPackets
|
||||
bool BpayStoreAvailable = false;
|
||||
bool BpayStoreEnabled = false;
|
||||
Optional<SessionAlertConfig> SessionAlert;
|
||||
uint32 ScrollOfResurrectionMaxRequestsPerDay = 0;
|
||||
bool ScrollOfResurrectionEnabled = false;
|
||||
Optional<EuropaTicketConfig> EuropaTicketSystemStatus;
|
||||
uint32 ScrollOfResurrectionRequestsRemaining = 0;
|
||||
uint32 CfgRealmID = 0;
|
||||
uint8 ComplaintStatus = 0;
|
||||
int32 CfgRealmRecID = 0;
|
||||
|
||||
@@ -147,7 +147,7 @@ namespace WorldPackets
|
||||
|
||||
struct SupportTicketMailInfo
|
||||
{
|
||||
int32 MailID = 0;
|
||||
int64 MailID = 0;
|
||||
std::string MailSubject;
|
||||
std::string MailBody;
|
||||
};
|
||||
@@ -259,7 +259,7 @@ namespace WorldPackets
|
||||
|
||||
uint8 ComplaintType = 0;
|
||||
ComplaintOffender Offender;
|
||||
uint32 MailID = 0;
|
||||
uint64 MailID = 0;
|
||||
ComplaintChat Chat;
|
||||
uint64 EventGuid = 0;
|
||||
uint64 InviteGuid = 0;
|
||||
|
||||
@@ -693,6 +693,11 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_PARTY_INVITE_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyInviteResponseOpcode);
|
||||
DEFINE_HANDLER(CMSG_PARTY_UNINVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyUninviteOpcode);
|
||||
DEFINE_HANDLER(CMSG_PERFORM_ITEM_INTERACTION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_PURCHASE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_REFUND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_STATUS_REQUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_PETITION_BUY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionBuy);
|
||||
DEFINE_HANDLER(CMSG_PETITION_RENAME_GUILD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionRenameGuild);
|
||||
DEFINE_HANDLER(CMSG_PETITION_SHOW_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionShowList);
|
||||
@@ -754,6 +759,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_QUEST_GIVER_REQUEST_REWARD, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverRequestRewardOpcode);
|
||||
DEFINE_HANDLER(CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverStatusMultipleQuery);
|
||||
DEFINE_HANDLER(CMSG_QUEST_GIVER_STATUS_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverStatusQueryOpcode);
|
||||
DEFINE_HANDLER(CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverStatusTrackedQueryOpcode);
|
||||
DEFINE_HANDLER(CMSG_QUEST_LOG_REMOVE_QUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestLogRemoveQuest);
|
||||
DEFINE_HANDLER(CMSG_QUEST_POI_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestPOIQuery);
|
||||
DEFINE_HANDLER(CMSG_QUEST_PUSH_RESULT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestPushResult);
|
||||
@@ -990,6 +996,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_CRITERIA_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_DATA_TIMES, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_HEIRLOOM_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_MOUNT_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_MOUNT_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_TOY_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
@@ -1265,6 +1272,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRAFT_ENCHANT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CREATE_CHAR, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CREATE_SHIPMENT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CREATOR_VISUALS_OVERRIDE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRITERIA_DELETED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CRITERIA_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CROSSED_INEBRIATION_THRESHOLD, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
@@ -1756,6 +1764,11 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAST_TIME_EVENTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAUSE_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PENDING_RAID_LOCK, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_DISABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_VENDOR_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_ALREADY_SIGNED, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_RENAME_GUILD_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SHOW_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
@@ -1913,11 +1926,14 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESEARCH_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_COMPRESSION_CONTEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_FAILED_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_LAST_LOADED_CONFIG_CVARS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_QUEST_POI, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_RANGED_COMBAT_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_WEEKLY_CURRENCY, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPEC_WIPE_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPOND_INSPECT_ACHIEVEMENTS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPONSE_PERK_PENDING_REWARDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPONSE_PERK_RECENT_PURCHASES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESTART_GLOBAL_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESTRICTED_ACCOUNT_WARNING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -640,6 +640,7 @@ namespace WorldPackets
|
||||
class QuestConfirmAccept;
|
||||
class QuestGiverStatusQuery;
|
||||
class QuestGiverStatusMultipleQuery;
|
||||
class QuestGiverStatusTrackedQuery;
|
||||
class QuestGiverHello;
|
||||
class QueryQuestInfo;
|
||||
class QuestGiverChooseReward;
|
||||
@@ -1516,6 +1517,7 @@ class TC_GAME_API WorldSession
|
||||
|
||||
void HandleQuestgiverStatusQueryOpcode(WorldPackets::Quest::QuestGiverStatusQuery& packet);
|
||||
void HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::QuestGiverStatusMultipleQuery& packet);
|
||||
void HandleQuestgiverStatusTrackedQueryOpcode(WorldPackets::Quest::QuestGiverStatusTrackedQuery& questGiverStatusTrackedQuery);
|
||||
void HandleQuestgiverHelloOpcode(WorldPackets::Quest::QuestGiverHello& packet);
|
||||
void HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestGiverAcceptQuest& packet);
|
||||
void HandleQuestgiverQueryQuestOpcode(WorldPackets::Quest::QuestGiverQueryQuest& packet);
|
||||
|
||||
@@ -905,8 +905,8 @@ DumpReturn PlayerDumpReader::LoadDump(std::istream& input, uint32 account, std::
|
||||
std::map<ObjectGuid::LowType, ObjectGuid::LowType> items;
|
||||
ObjectGuid::LowType itemLowGuidOffset = sObjectMgr->GetGenerator<HighGuid::Item>().GetNextAfterMaxUsed();
|
||||
|
||||
std::map<uint32, uint32> mails;
|
||||
uint32 mailLowGuidOffset = sObjectMgr->_mailId;
|
||||
std::map<uint64, uint64> mails;
|
||||
uint64 mailLowGuidOffset = sObjectMgr->_mailId;
|
||||
|
||||
std::map<uint32, uint32> petIds;
|
||||
uint32 petLowGuidOffset = sObjectMgr->_hiPetNumber;
|
||||
|
||||
@@ -585,6 +585,16 @@ DB2FileInfo const DBFilesClientList[] =
|
||||
{ 801733, "PathNode.db2" },
|
||||
{ 801734, "PathNodeProperty.db2" },
|
||||
{ 801735, "PathProperty.db2" },
|
||||
{ 4519766, "PerksActivity.db2" },
|
||||
{ 4694317, "PerksActivityTag.db2" },
|
||||
{ 4519767, "PerksActivityThreshold.db2" },
|
||||
{ 4519768, "PerksActivityThresholdGroup.db2" },
|
||||
{ 4519781, "PerksActivityXInterval.db2" },
|
||||
{ 4694318, "PerksActivityXTag.db2" },
|
||||
{ 4281310, "PerksVendorCategory.db2" },
|
||||
{ 4281311, "PerksVendorItem.db2" },
|
||||
{ 4281312, "PerksVendorItemUIInfo.db2" },
|
||||
{ 4872513, "PerksVendorItemXInterval.db2" },
|
||||
{ 1348558, "Phase.db2" },
|
||||
{ 1267336, "PhaseShiftZoneSounds.db2" },
|
||||
{ 987581, "PhaseXPhaseGroup.db2" },
|
||||
|
||||
Reference in New Issue
Block a user