From e0309d94c8502d57734998cac769c474f355f7a2 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 18 Sep 2018 23:37:45 +0200 Subject: Core/Players: Updated pvp talent implementation to bfa --- src/server/database/Database/Implementation/CharacterDatabase.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/server/database/Database/Implementation') diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index d0227fde660..359a1dd92db 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -139,7 +139,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_SEL_CHARACTER_BGDATA, "SELECT instanceId, team, joinX, joinY, joinZ, joinO, joinMapId, taxiStart, taxiEnd, mountSpell FROM character_battleground_data WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_GLYPHS, "SELECT talentGroup, glyphId FROM character_glyphs WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_TALENTS, "SELECT talentId, talentGroup FROM character_talent WHERE guid = ?", CONNECTION_ASYNC); - PrepareStatement(CHAR_SEL_CHARACTER_PVP_TALENTS, "SELECT talentId, talentGroup FROM character_pvp_talent WHERE guid = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_SEL_CHARACTER_PVP_TALENTS, "SELECT talentId0, talentId1, talentId2, talentId3, talentGroup FROM character_pvp_talent WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_SKILLS, "SELECT skill, value, max FROM character_skills WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_RANDOMBG, "SELECT guid FROM character_battleground_random WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_BANNED, "SELECT guid FROM character_banned WHERE guid = ? AND active = 1", CONNECTION_ASYNC); @@ -624,7 +624,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_DEL_PETITION_SIGNATURE_BY_OWNER, "DELETE FROM petition_sign WHERE ownerguid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_INS_CHAR_GLYPHS, "INSERT INTO character_glyphs VALUES(?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_INS_CHAR_TALENT, "INSERT INTO character_talent (guid, talentId, talentGroup) VALUES (?, ?, ?)", CONNECTION_ASYNC); - PrepareStatement(CHAR_INS_CHAR_PVP_TALENT, "INSERT INTO character_pvp_talent (guid, talentId, talentGroup) VALUES (?, ?, ?)", CONNECTION_ASYNC); + PrepareStatement(CHAR_INS_CHAR_PVP_TALENT, "INSERT INTO character_pvp_talent (guid, talentId0, talentId1, talentId2, talentId3, talentGroup) VALUES (?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_CHAR_LIST_SLOT, "UPDATE characters SET slot = ? WHERE guid = ? AND account = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_INS_CHAR_FISHINGSTEPS, "INSERT INTO character_fishingsteps (guid, fishingSteps) VALUES (?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_CHAR_FISHINGSTEPS, "DELETE FROM character_fishingsteps WHERE guid = ?", CONNECTION_ASYNC); -- cgit v1.2.3 From a6fb448b44b5c7e64e6ea960bf951ccf0a8dd0c9 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 25 Sep 2018 21:08:38 +0200 Subject: Core/DataStores: Updated hotfix database structure * Updated handling for removed db2s --- .../hotfixes/master/2018_09_25_00_hotfixes.sql | 1730 ++++++++++++++++++++ sql/updates/world/master/2018_09_25_00_world.sql | 13 + .../Database/Implementation/HotfixDatabase.cpp | 697 ++++---- .../Database/Implementation/HotfixDatabase.h | 34 +- src/server/game/DataStores/DB2LoadInfo.h | 1690 ++++++++++--------- src/server/game/DataStores/DB2Stores.cpp | 557 +++++-- src/server/game/DataStores/DB2Stores.h | 8 +- src/server/game/DataStores/DB2Structure.h | 49 + src/server/game/DataStores/DBCEnums.h | 30 +- src/server/game/DataStores/GameTables.cpp | 2 + src/server/game/Entities/Taxi/TaxiPathGraph.cpp | 19 +- src/server/game/Globals/ObjectMgr.cpp | 15 +- src/server/game/Globals/ObjectMgr.h | 4 +- src/server/game/Phasing/PhaseShift.cpp | 16 +- src/server/game/Phasing/PhaseShift.h | 14 +- src/server/game/Phasing/PhasingHandler.cpp | 41 +- src/server/game/Server/Packets/MiscPackets.cpp | 8 +- src/server/game/Server/Packets/MiscPackets.h | 2 +- src/server/game/Spells/SpellInfo.cpp | 27 +- src/server/scripts/Commands/cs_debug.cpp | 2 +- 20 files changed, 3645 insertions(+), 1313 deletions(-) create mode 100644 sql/updates/hotfixes/master/2018_09_25_00_hotfixes.sql create mode 100644 sql/updates/world/master/2018_09_25_00_world.sql (limited to 'src/server/database/Database/Implementation') diff --git a/sql/updates/hotfixes/master/2018_09_25_00_hotfixes.sql b/sql/updates/hotfixes/master/2018_09_25_00_hotfixes.sql new file mode 100644 index 00000000000..607af5502dd --- /dev/null +++ b/sql/updates/hotfixes/master/2018_09_25_00_hotfixes.sql @@ -0,0 +1,1730 @@ +-- +-- Table structure for table `achievement` +-- +ALTER TABLE `achievement` + MODIFY `Description` text FIRST, + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Reward`, + MODIFY `Faction` tinyint(4) NOT NULL DEFAULT 0 AFTER `InstanceID`, + MODIFY `MinimumCriteria` tinyint(4) NOT NULL DEFAULT 0 AFTER `Category`, + MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `Points`, + MODIFY `UiOrder` smallint(6) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `SharesCriteria` smallint(6) NOT NULL DEFAULT 0 AFTER `CriteriaTree`; + +-- +-- Table structure for table `achievement_locale` +-- +ALTER TABLE `achievement_locale` MODIFY `Description_lang` text AFTER `locale`; + +-- +-- Table structure for table `area_table` +-- +ALTER TABLE `area_table` + MODIFY `SoundProviderPref` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `AreaBit`, + MODIFY `SoundProviderPrefUnderwater` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `SoundProviderPref`, + MODIFY `UwAmbience` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `AmbienceID`, + MODIFY `ExplorationLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `UwZoneMusic`, + MODIFY `IntroSound` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ExplorationLevel`, + MODIFY `UwIntroSound` int(10) unsigned NOT NULL DEFAULT 0 AFTER `IntroSound`, + MODIFY `AmbientMultiplier` float NOT NULL DEFAULT 0 AFTER `FactionGroupMask`, + MODIFY `MountFlags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `AmbientMultiplier`, + MODIFY `PvpCombatWorldStateID` smallint(6) NOT NULL DEFAULT 0 AFTER `MountFlags`, + MODIFY `WildBattlePetLevelMax` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `WildBattlePetLevelMin`, + MODIFY `WindSettingsID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `WildBattlePetLevelMax`, + MODIFY `Flags1` int(11) NOT NULL DEFAULT 0 AFTER `WindSettingsID`, + MODIFY `Flags2` int(11) NOT NULL DEFAULT 0 AFTER `Flags1`, + MODIFY `LiquidTypeID1` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Flags2`, + MODIFY `LiquidTypeID2` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `LiquidTypeID1`, + MODIFY `LiquidTypeID3` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `LiquidTypeID2`, + MODIFY `LiquidTypeID4` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `LiquidTypeID3`; + +-- +-- Table structure for table `area_trigger` +-- +ALTER TABLE `area_trigger` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `PosZ`, + MODIFY `ContinentID` smallint(6) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `PhaseUseFlags` tinyint(4) NOT NULL DEFAULT 0 AFTER `ContinentID`, + MODIFY `PhaseID` smallint(6) NOT NULL DEFAULT 0 AFTER `PhaseUseFlags`, + MODIFY `PhaseGroupID` smallint(6) NOT NULL DEFAULT 0 AFTER `PhaseID`, + MODIFY `Radius` float NOT NULL DEFAULT 0 AFTER `PhaseGroupID`, + MODIFY `ShapeType` tinyint(4) NOT NULL DEFAULT 0 AFTER `BoxYaw`; + +-- +-- Table structure for table `artifact` +-- +ALTER TABLE `artifact` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Name`, + MODIFY `UiTextureKitID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `UiNameColor` int(11) NOT NULL DEFAULT 0 AFTER `UiTextureKitID`, + MODIFY `ArtifactCategoryID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Flags`; + +-- +-- Table structure for table `artifact_appearance` +-- +ALTER TABLE `artifact_appearance` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Name`, + MODIFY `ArtifactAppearanceSetID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `DisplayIndex` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ArtifactAppearanceSetID`, + MODIFY `UnlockPlayerConditionID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `DisplayIndex`, + MODIFY `ItemAppearanceModifierID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `UnlockPlayerConditionID`, + MODIFY `UiSwatchColor` int(11) NOT NULL DEFAULT 0 AFTER `ItemAppearanceModifierID`, + MODIFY `UiModelSaturation` float NOT NULL DEFAULT 0 AFTER `UiSwatchColor`, + MODIFY `OverrideShapeshiftDisplayID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `OverrideShapeshiftFormID`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `UiAltItemAppearanceID`, + MODIFY `UiCameraID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Flags`; + +-- +-- Table structure for table `artifact_appearance_set` +-- +ALTER TABLE `artifact_appearance_set` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `DisplayIndex` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `artifact_power` +-- +ALTER TABLE `artifact_power` + CHANGE `PosX` `DisplayPosX` float NOT NULL DEFAULT 0 FIRST, + CHANGE `PosY` `DisplayPosY` float NOT NULL DEFAULT 0 AFTER `DisplayPosX`, + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `DisplayPosY`, + MODIFY `Label` int(11) NOT NULL DEFAULT 0 AFTER `MaxPurchasableRank`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Label`; + +-- +-- Table structure for table `artifact_power_rank` +-- +ALTER TABLE `artifact_power_rank` + MODIFY `RankIndex` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `AuraPointsOverride` float NOT NULL DEFAULT 0 AFTER `ItemBonusListID`; + +-- +-- Table structure for table `artifact_unlock` +-- +ALTER TABLE `artifact_unlock` + MODIFY `PowerID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ItemBonusListID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `PowerRank`; + +-- +-- Table structure for table `barber_shop_style` +-- +ALTER TABLE `barber_shop_style` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `CostModifier` float NOT NULL DEFAULT 0 AFTER `Type`; + +-- +-- Table structure for table `battle_pet_breed_state` +-- +ALTER TABLE `battle_pet_breed_state` MODIFY `BattlePetStateID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `battle_pet_species` +-- +ALTER TABLE `battle_pet_species` + MODIFY `Description` text FIRST, + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SourceText`, + MODIFY `IconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `SummonSpellID`, + MODIFY `Flags` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `PetTypeEnum`; + +-- +-- Table structure for table `battle_pet_species_locale` +-- +ALTER TABLE `battle_pet_species_locale` MODIFY `Description_lang` text AFTER `locale`; + +-- +-- Table structure for table `battle_pet_species_state` +-- +ALTER TABLE `battle_pet_species_state` MODIFY `BattlePetStateID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `battlemaster_list` +-- +ALTER TABLE `battlemaster_list` + MODIFY `InstanceType` tinyint(4) NOT NULL DEFAULT 0 AFTER `LongDescription`, + MODIFY `MinLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `InstanceType`, + MODIFY `MaxLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `MinLevel`, + MODIFY `RatedPlayers` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaxLevel`, + MODIFY `MinPlayers` tinyint(4) NOT NULL DEFAULT 0 AFTER `RatedPlayers`, + MODIFY `MaxPlayers` tinyint(4) NOT NULL DEFAULT 0 AFTER `MinPlayers`, + MODIFY `GroupsAllowed` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaxPlayers`, + MODIFY `MaxGroupSize` tinyint(4) NOT NULL DEFAULT 0 AFTER `GroupsAllowed`, + MODIFY `HolidayWorldState` smallint(6) NOT NULL DEFAULT 0 AFTER `MaxGroupSize`, + MODIFY `Flags` tinyint(4) NOT NULL DEFAULT 0 AFTER `HolidayWorldState`, + MODIFY `IconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `RequiredPlayerConditionID` smallint(6) NOT NULL DEFAULT 0 AFTER `IconFileDataID`, + MODIFY `MapID1` smallint(6) NOT NULL DEFAULT 0 AFTER `RequiredPlayerConditionID`; + +-- +-- Table structure for table `broadcast_text` +-- +ALTER TABLE `broadcast_text` + ADD `ChatBubbleDurationMs` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Text1`, + MODIFY `LanguageID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ConditionID` int(11) NOT NULL DEFAULT 0 AFTER `LanguageID`, + MODIFY `EmotesID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ConditionID`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `EmotesID`, + MODIFY `SoundEntriesID1` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ChatBubbleDurationMs`, + MODIFY `SoundEntriesID2` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SoundEntriesID1`, + MODIFY `EmoteID1` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `SoundEntriesID2`; + +-- +-- Table structure for table `cfg_regions` +-- +ALTER TABLE `cfg_regions` + MODIFY `Raidorigin` int(10) unsigned NOT NULL DEFAULT 0 AFTER `RegionID`, + MODIFY `ChallengeOrigin` int(10) unsigned NOT NULL DEFAULT 0 AFTER `RegionGroupMask`; + +-- +-- Table structure for table `char_base_section` +-- +ALTER TABLE `char_base_section` MODIFY `LayoutResType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `char_sections` +-- +ALTER TABLE `char_sections` + MODIFY `ColorIndex` tinyint(4) NOT NULL DEFAULT 0 AFTER `VariationIndex`, + MODIFY `Flags` smallint(6) NOT NULL DEFAULT 0 AFTER `ColorIndex`, + MODIFY `MaterialResourcesID1` int(11) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `MaterialResourcesID2` int(11) NOT NULL DEFAULT 0 AFTER `MaterialResourcesID1`, + MODIFY `MaterialResourcesID3` int(11) NOT NULL DEFAULT 0 AFTER `MaterialResourcesID2`; + +-- +-- Table structure for table `char_start_outfit` +-- +ALTER TABLE `char_start_outfit` + MODIFY `ClassID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `SexID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ClassID`, + MODIFY `OutfitID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `SexID`, + MODIFY `PetDisplayID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `OutfitID`, + MODIFY `PetFamilyID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `PetDisplayID`, + MODIFY `ItemID1` int(11) NOT NULL DEFAULT 0 AFTER `PetFamilyID`; + +-- +-- Table structure for table `chr_classes` +-- +ALTER TABLE `chr_classes` + MODIFY `Filename` text AFTER `Name`, + MODIFY `NameFemale` text AFTER `NameMale`, + MODIFY `PetNameToken` text AFTER `NameFemale`, + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `PetNameToken`, + MODIFY `IconFileDataID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SelectScreenFileDataID`, + MODIFY `PrimaryStatPriority` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `DefaultSpec`, + MODIFY `RangedAttackPowerPerAgility` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `DisplayPower`, + MODIFY `AttackPowerPerAgility` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `RangedAttackPowerPerAgility`, + MODIFY `AttackPowerPerStrength` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `AttackPowerPerAgility`; + +-- +-- Table structure for table `chr_classes_locale` +-- +ALTER TABLE `chr_classes_locale` MODIFY `NameFemale_lang` text AFTER `NameMale_lang`; + +-- +-- Table structure for table `chr_classes_x_power_types` +-- +ALTER TABLE `chr_classes_x_power_types` MODIFY `PowerType` tinyint(4) NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `chr_races` +-- +ALTER TABLE `chr_races` + CHANGE `DisplayRaceID` `HelmVisFallbackRaceID` int(11) NOT NULL DEFAULT 0 AFTER `MaleSkeletonFileDataID`, + ADD `MaleModelFallbackRaceID` tinyint(4) NOT NULL DEFAULT 0 AFTER `NeutralRaceID`, + ADD `MaleModelFallbackSex` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaleModelFallbackRaceID`, + ADD `FemaleModelFallbackRaceID` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaleModelFallbackSex`, + ADD `FemaleModelFallbackSex` tinyint(4) NOT NULL DEFAULT 0 AFTER `FemaleModelFallbackRaceID`, + ADD `MaleTextureFallbackRaceID` tinyint(4) NOT NULL DEFAULT 0 AFTER `FemaleModelFallbackSex`, + ADD `MaleTextureFallbackSex` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaleTextureFallbackRaceID`, + ADD `FemaleTextureFallbackRaceID` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaleTextureFallbackSex`, + ADD `FemaleTextureFallbackSex` tinyint(4) NOT NULL DEFAULT 0 AFTER `FemaleTextureFallbackRaceID`, + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `NameFemaleLowercase`, + MODIFY `HighResMaleDisplayId` int(10) unsigned NOT NULL DEFAULT 0 AFTER `FemaleDisplayId`, + MODIFY `HighResFemaleDisplayId` int(10) unsigned NOT NULL DEFAULT 0 AFTER `HighResMaleDisplayId`, + MODIFY `CreateScreenFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `HighResFemaleDisplayId`, + MODIFY `AlteredFormStartVisualKitID1` int(10) unsigned NOT NULL DEFAULT 0 AFTER `LowResScreenFileDataID`, + MODIFY `AlteredFormStartVisualKitID2` int(10) unsigned NOT NULL DEFAULT 0 AFTER `AlteredFormStartVisualKitID1`, + MODIFY `AlteredFormStartVisualKitID3` int(10) unsigned NOT NULL DEFAULT 0 AFTER `AlteredFormStartVisualKitID2`, + MODIFY `AlteredFormFinishVisualKitID1` int(10) unsigned NOT NULL DEFAULT 0 AFTER `AlteredFormStartVisualKitID3`, + MODIFY `AlteredFormFinishVisualKitID2` int(10) unsigned NOT NULL DEFAULT 0 AFTER `AlteredFormFinishVisualKitID1`, + MODIFY `AlteredFormFinishVisualKitID3` int(10) unsigned NOT NULL DEFAULT 0 AFTER `AlteredFormFinishVisualKitID2`, + MODIFY `HeritageArmorAchievementID` int(11) NOT NULL DEFAULT 0 AFTER `AlteredFormFinishVisualKitID3`, + MODIFY `StartingLevel` int(11) NOT NULL DEFAULT 0 AFTER `HeritageArmorAchievementID`, + MODIFY `FemaleSkeletonFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `UiDisplayOrder`, + MODIFY `MaleSkeletonFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `FemaleSkeletonFileDataID`, + MODIFY `FactionID` smallint(6) NOT NULL DEFAULT 0 AFTER `HelmVisFallbackRaceID`, + MODIFY `CinematicSequenceID` smallint(6) NOT NULL DEFAULT 0 AFTER `FactionID`, + MODIFY `CharComponentTexLayoutHiResID` tinyint(4) NOT NULL DEFAULT 0 AFTER `CharComponentTextureLayoutID`; + +-- +-- Table structure for table `chr_specialization` +-- +ALTER TABLE `chr_specialization` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `Flags` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Role`, + MODIFY `PrimaryStatPriority` tinyint(4) NOT NULL DEFAULT 0 AFTER `SpellIconFileID`, + MODIFY `AnimReplacements` int(11) NOT NULL DEFAULT 0 AFTER `PrimaryStatPriority`, + MODIFY `MasterySpellID1` int(11) NOT NULL DEFAULT 0 AFTER `AnimReplacements`, + MODIFY `MasterySpellID2` int(11) NOT NULL DEFAULT 0 AFTER `MasterySpellID1`; + +-- +-- Table structure for table `cinematic_camera` +-- +ALTER TABLE `cinematic_camera` MODIFY `SoundID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `OriginZ`; + +-- +-- Table structure for table `content_tuning` +-- +DROP TABLE IF EXISTS `content_tuning`; +CREATE TABLE `content_tuning` ( + `ID` int(10) unsigned NOT NULL DEFAULT '0', + `MinLevel` int(11) NOT NULL DEFAULT '0', + `MaxLevel` int(11) NOT NULL DEFAULT '0', + `Flags` int(11) NOT NULL DEFAULT '0', + `ExpectedStatModID` int(11) NOT NULL DEFAULT '0', + `DifficultyESMID` int(11) NOT NULL DEFAULT '0', + `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `creature_display_info` +-- +ALTER TABLE `creature_display_info` + ADD `DissolveEffectID` int(11) NOT NULL DEFAULT 0 AFTER `MountPoofSpellVisualKitID`, + ADD `DissolveOutEffectID` int(11) NOT NULL DEFAULT 0 AFTER `Gender`, + ADD `CreatureModelMinLod` tinyint(4) NOT NULL DEFAULT 0 AFTER `DissolveOutEffectID`, + MODIFY `ModelID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `SoundID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ModelID`, + MODIFY `CreatureModelScale` float NOT NULL DEFAULT 0 AFTER `SizeClass`, + MODIFY `CreatureModelAlpha` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `CreatureModelScale`, + MODIFY `BloodID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `CreatureModelAlpha`, + MODIFY `NPCSoundID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ExtendedDisplayInfoID`, + MODIFY `ParticleColorID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `NPCSoundID`, + MODIFY `PortraitCreatureDisplayInfoID` int(11) NOT NULL DEFAULT 0 AFTER `ParticleColorID`, + MODIFY `AnimReplacementSetID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ObjectEffectPackageID`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `AnimReplacementSetID`, + MODIFY `PlayerOverrideScale` float NOT NULL DEFAULT 0 AFTER `StateSpellVisualKitID`, + MODIFY `UnarmedWeaponType` tinyint(4) NOT NULL DEFAULT 0 AFTER `PetInstanceScale`, + MODIFY `Gender` tinyint(4) NOT NULL DEFAULT 0 AFTER `DissolveEffectID`, + DROP `CreatureGeosetData`; + +-- +-- Table structure for table `creature_display_info_extra` +-- +ALTER TABLE `creature_display_info_extra` + MODIFY `Flags` tinyint(4) NOT NULL DEFAULT 0 AFTER `FacialHairID`, + MODIFY `BakeMaterialResourcesID` int(11) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `HDBakeMaterialResourcesID` int(11) NOT NULL DEFAULT 0 AFTER `BakeMaterialResourcesID`, + MODIFY `CustomDisplayOption1` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `HDBakeMaterialResourcesID`; + +-- +-- Table structure for table `creature_family` +-- +ALTER TABLE `creature_family` + MODIFY `MinScaleLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `MinScale`, + MODIFY `MaxScaleLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaxScale`, + MODIFY `PetFoodMask` smallint(6) NOT NULL DEFAULT 0 AFTER `MaxScaleLevel`, + MODIFY `PetTalentType` tinyint(4) NOT NULL DEFAULT 0 AFTER `PetFoodMask`; + +-- +-- Table structure for table `creature_model_data` +-- +ALTER TABLE `creature_model_data` + MODIFY `GeoBox5` float NOT NULL DEFAULT 0 AFTER `GeoBox4`, + MODIFY `GeoBox6` float NOT NULL DEFAULT 0 AFTER `GeoBox5`, + MODIFY `Flags` int(10) unsigned NOT NULL DEFAULT 0 AFTER `GeoBox6`, + MODIFY `FileDataID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `BloodID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `FileDataID`, + MODIFY `FootprintTextureID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `BloodID`, + MODIFY `FootprintTextureLength` float NOT NULL DEFAULT 0 AFTER `FootprintTextureID`, + MODIFY `FootprintTextureWidth` float NOT NULL DEFAULT 0 AFTER `FootprintTextureLength`, + MODIFY `FootprintParticleScale` float NOT NULL DEFAULT 0 AFTER `FootprintTextureWidth`, + MODIFY `FoleyMaterialID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `FootprintParticleScale`, + MODIFY `FootstepCameraEffectID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `FoleyMaterialID`, + MODIFY `DeathThudCameraEffectID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `FootstepCameraEffectID`, + MODIFY `SoundID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `DeathThudCameraEffectID`, + MODIFY `SizeClass` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SoundID`, + MODIFY `CollisionWidth` float NOT NULL DEFAULT 0 AFTER `SizeClass`, + MODIFY `CollisionHeight` float NOT NULL DEFAULT 0 AFTER `CollisionWidth`, + MODIFY `WorldEffectScale` float NOT NULL DEFAULT 0 AFTER `CollisionHeight`, + MODIFY `CreatureGeosetDataID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `WorldEffectScale`, + MODIFY `HoverHeight` float NOT NULL DEFAULT 0 AFTER `CreatureGeosetDataID`, + MODIFY `AttachedEffectScale` float NOT NULL DEFAULT 0 AFTER `HoverHeight`, + MODIFY `ModelScale` float NOT NULL DEFAULT 0 AFTER `AttachedEffectScale`, + MODIFY `MissileCollisionRadius` float NOT NULL DEFAULT 0 AFTER `ModelScale`, + MODIFY `MountHeight` float NOT NULL DEFAULT 0 AFTER `MissileCollisionRaise`; + +-- +-- Table structure for table `criteria` +-- +ALTER TABLE `criteria` + MODIFY `Type` smallint(6) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Asset` int(10) NOT NULL DEFAULT 0 AFTER `Type`, + MODIFY `StartEvent` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ModifierTreeId`, + MODIFY `StartAsset` int(11) NOT NULL DEFAULT 0 AFTER `StartEvent`, + MODIFY `FailAsset` int(11) NOT NULL DEFAULT 0 AFTER `FailEvent`, + MODIFY `EligibilityWorldStateID` smallint(6) NOT NULL DEFAULT 0 AFTER `Flags`; + +-- +-- Table structure for table `criteria_tree` +-- +ALTER TABLE `criteria_tree` + MODIFY `Parent` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `Amount` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Parent`, + MODIFY `Flags` smallint(6) NOT NULL DEFAULT 0 AFTER `OrderIndex`; + +-- +-- Table structure for table `currency_types` +-- +ALTER TABLE `currency_types` + ADD `FactionID` int(11) NOT NULL DEFAULT 0 AFTER `Quality`, + MODIFY `CategoryID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `InventoryIconFileID` int(11) NOT NULL DEFAULT 0 AFTER `CategoryID`, + MODIFY `SpellWeight` int(10) unsigned NOT NULL DEFAULT 0 AFTER `InventoryIconFileID`, + MODIFY `SpellCategory` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `SpellWeight`, + MODIFY `MaxQty` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SpellCategory`, + MODIFY `MaxEarnablePerWeek` int(10) unsigned NOT NULL DEFAULT 0 AFTER `MaxQty`, + MODIFY `Quality` tinyint(4) NOT NULL DEFAULT 0 AFTER `Flags`; + +-- +-- Table structure for table `destructible_model_data` +-- +ALTER TABLE `destructible_model_data` + MODIFY `State1Wmo` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `State0AmbientDoodadSet`, + MODIFY `State2Wmo` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `State1AmbientDoodadSet`, + MODIFY `State3Wmo` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `State2AmbientDoodadSet`, + MODIFY `EjectDirection` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `State3AmbientDoodadSet`, + MODIFY `DoNotHighlight` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `EjectDirection`, + MODIFY `State0Wmo` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `DoNotHighlight`, + MODIFY `HealEffect` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `State0Wmo`, + MODIFY `HealEffectSpeed` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `HealEffect`, + MODIFY `State0NameSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `HealEffectSpeed`, + MODIFY `State1NameSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `State0NameSet`, + MODIFY `State2NameSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `State1NameSet`, + MODIFY `State3NameSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `State2NameSet`; + +-- +-- Table structure for table `difficulty` +-- +ALTER TABLE `difficulty` + MODIFY `InstanceType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Name`, + MODIFY `OrderIndex` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `InstanceType`, + MODIFY `OldEnumValue` tinyint(4) NOT NULL DEFAULT 0 AFTER `OrderIndex`, + MODIFY `FallbackDifficultyID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `OldEnumValue`, + MODIFY `ItemContext` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `GroupSizeHealthCurveID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ToggleDifficultyID`, + MODIFY `GroupSizeDmgCurveID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `GroupSizeHealthCurveID`, + MODIFY `GroupSizeSpellPointsCurveID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `GroupSizeDmgCurveID`; + +-- +-- Table structure for table `dungeon_encounter` +-- +ALTER TABLE `dungeon_encounter` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Name`, + MODIFY `OrderIndex` int(11) NOT NULL DEFAULT 0 AFTER `DifficultyID`, + MODIFY `CreatureDisplayID` int(11) NOT NULL DEFAULT 0 AFTER `Bit`; + +-- +-- Table structure for table `emotes` +-- +ALTER TABLE `emotes` + MODIFY `AnimID` int(11) NOT NULL DEFAULT 0 AFTER `EmoteSlashCommand`, + MODIFY `EventSoundID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `EmoteSpecProcParam`, + MODIFY `SpellVisualKitID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `EventSoundID`, + MODIFY `ClassMask` int(11) NOT NULL DEFAULT 0 AFTER `SpellVisualKitID`; + +-- +-- Table structure for table `emotes_text_sound` +-- +ALTER TABLE `emotes_text_sound` MODIFY `ClassID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `RaceID`; + +-- +-- Table structure for table `expected_stat` +-- +DROP TABLE IF EXISTS `expected_stat`; +CREATE TABLE `expected_stat` ( + `ID` int(10) unsigned NOT NULL DEFAULT 0, + `ExpansionID` int(11) NOT NULL DEFAULT 0, + `CreatureHealth` float NOT NULL DEFAULT 0, + `PlayerHealth` float NOT NULL DEFAULT 0, + `CreatureAutoAttackDps` float NOT NULL DEFAULT 0, + `CreatureArmor` float NOT NULL DEFAULT 0, + `PlayerMana` float NOT NULL DEFAULT 0, + `PlayerPrimaryStat` float NOT NULL DEFAULT 0, + `PlayerSecondaryStat` float NOT NULL DEFAULT 0, + `ArmorConstant` float NOT NULL DEFAULT 0, + `CreatureSpellDamage` float NOT NULL DEFAULT 0, + `Lvl` int(11) NOT NULL DEFAULT 0, + `VerifiedBuild` smallint(6) NOT NULL DEFAULT 0, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `expected_stat_mod` +-- +DROP TABLE IF EXISTS `expected_stat_mod`; +CREATE TABLE `expected_stat_mod` ( + `ID` int(10) unsigned NOT NULL DEFAULT 0, + `CreatureHealthMod` float NOT NULL DEFAULT 0, + `PlayerHealthMod` float NOT NULL DEFAULT 0, + `CreatureAutoAttackDPSMod` float NOT NULL DEFAULT 0, + `CreatureArmorMod` float NOT NULL DEFAULT 0, + `PlayerManaMod` float NOT NULL DEFAULT 0, + `PlayerPrimaryStatMod` float NOT NULL DEFAULT 0, + `PlayerSecondaryStatMod` float NOT NULL DEFAULT 0, + `ArmorConstantMod` float NOT NULL DEFAULT 0, + `CreatureSpellDamageMod` float NOT NULL DEFAULT 0, + `VerifiedBuild` smallint(6) NOT NULL DEFAULT 0, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `faction` +-- +ALTER TABLE `faction` + MODIFY `ReputationIndex` smallint(6) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ParentFactionID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ReputationIndex`, + MODIFY `Expansion` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ParentFactionID`, + MODIFY `FriendshipRepID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Expansion`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `FriendshipRepID`, + MODIFY `ParagonFactionID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `ReputationFlags1` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ReputationClassMask4`, + MODIFY `ReputationFlags2` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ReputationFlags1`, + MODIFY `ReputationFlags3` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ReputationFlags2`, + MODIFY `ReputationFlags4` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ReputationFlags3`, + MODIFY `ReputationBase1` int(11) NOT NULL DEFAULT 0 AFTER `ReputationFlags4`, + MODIFY `ReputationBase2` int(11) NOT NULL DEFAULT 0 AFTER `ReputationBase1`, + MODIFY `ReputationBase3` int(11) NOT NULL DEFAULT 0 AFTER `ReputationBase2`, + MODIFY `ReputationBase4` int(11) NOT NULL DEFAULT 0 AFTER `ReputationBase3`, + MODIFY `ReputationMax1` int(11) NOT NULL DEFAULT 0 AFTER `ReputationBase4`, + MODIFY `ReputationMax2` int(11) NOT NULL DEFAULT 0 AFTER `ReputationMax1`, + MODIFY `ReputationMax3` int(11) NOT NULL DEFAULT 0 AFTER `ReputationMax2`, + MODIFY `ReputationMax4` int(11) NOT NULL DEFAULT 0 AFTER `ReputationMax3`, + MODIFY `ParentFactionMod1` float NOT NULL DEFAULT 0 AFTER `ReputationMax4`, + MODIFY `ParentFactionMod2` float NOT NULL DEFAULT 0 AFTER `ParentFactionMod1`; + +-- +-- Table structure for table `faction_locale` +-- +ALTER TABLE `faction_template` + MODIFY `FactionGroup` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `FriendGroup` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `FactionGroup`, + MODIFY `EnemyGroup` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `FriendGroup`; + +-- +-- Table structure for table `gameobject_display_info` +-- +ALTER TABLE `gameobject_display_info` + MODIFY `FileDataID` int(11) NOT NULL DEFAULT 0 AFTER `GeoBoxMaxZ`, + MODIFY `ObjectEffectPackageID` smallint(6) NOT NULL DEFAULT 0 AFTER `FileDataID`; + +-- +-- Table structure for table `gameobjects` +-- +ALTER TABLE `gameobjects` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Rot4`, + MODIFY `OwnerID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `DisplayID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `OwnerID`, + MODIFY `TypeID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Scale`, + MODIFY `PhaseUseFlags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `TypeID`, + MODIFY `PhaseID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `PhaseUseFlags`, + MODIFY `PhaseGroupID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `PhaseID`, + MODIFY `PropValue1` int(11) NOT NULL DEFAULT 0 AFTER `PhaseGroupID`; + +-- +-- Table structure for table `garr_ability` +-- +ALTER TABLE `garr_ability` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `IconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `GarrFollowerTypeID`, + MODIFY `FactionChangeGarrAbilityID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `IconFileDataID`, + MODIFY `Flags` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `FactionChangeGarrAbilityID`; + +-- +-- Table structure for table `garr_building` +-- +ALTER TABLE `garr_building` + MODIFY `AllianceName` text AFTER `HordeName`, + MODIFY `GarrTypeID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Tooltip`, + MODIFY `BuildingType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `GarrTypeID`, + MODIFY `GarrSiteID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `AllianceGameObjectID`, + MODIFY `UpgradeLevel` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `GarrSiteID`, + MODIFY `BuildSeconds` int(11) NOT NULL DEFAULT 0 AFTER `UpgradeLevel`, + MODIFY `CurrencyQty` int(11) NOT NULL DEFAULT 0 AFTER `CurrencyTypeID`, + MODIFY `IconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `AllianceUiTextureKitID`, + MODIFY `MaxAssignments` int(11) NOT NULL DEFAULT 0 AFTER `HordeSceneScriptPackageID`, + MODIFY `ShipmentCapacity` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `MaxAssignments`; + +-- +-- Table structure for table `garr_building_locale` +-- +ALTER TABLE `garr_building_locale` MODIFY `AllianceName_lang` text AFTER `HordeName_lang`; + +-- +-- Table structure for table `garr_building_plot_inst` +-- +ALTER TABLE `garr_building_plot_inst` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `MapOffsetY`, + MODIFY `GarrBuildingID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `GarrSiteLevelPlotInstID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `GarrBuildingID`; + +-- +-- Table structure for table `garr_class_spec` +-- +ALTER TABLE `garr_class_spec` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ClassSpecFemale`; + +-- +-- Table structure for table `garr_follower` +-- +ALTER TABLE `garr_follower` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `TitleName`, + MODIFY `GarrTypeID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `GarrFollowerTypeID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `GarrTypeID`, + MODIFY `Quality` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `AllianceGarrClassSpecID`, + MODIFY `FollowerLevel` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Quality`, + MODIFY `ItemLevelWeapon` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `FollowerLevel`, + MODIFY `ItemLevelArmor` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ItemLevelWeapon`, + MODIFY `HordeSourceTypeEnum` tinyint(4) NOT NULL DEFAULT 0 AFTER `ItemLevelArmor`, + MODIFY `AllianceSourceTypeEnum` tinyint(4) NOT NULL DEFAULT 0 AFTER `HordeSourceTypeEnum`, + MODIFY `HordeIconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `AllianceSourceTypeEnum`, + MODIFY `AllianceIconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `HordeIconFileDataID`, + MODIFY `HordeGarrFollItemSetID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `AllianceIconFileDataID`, + MODIFY `AllianceGarrFollItemSetID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `HordeGarrFollItemSetID`, + MODIFY `HordeUITextureKitID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `AllianceGarrFollItemSetID`, + MODIFY `AllianceUITextureKitID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `HordeUITextureKitID`, + MODIFY `HordeFlavorGarrStringID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Vitality`, + MODIFY `AllianceFlavorGarrStringID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `HordeFlavorGarrStringID`, + MODIFY `HordeSlottingBroadcastTextID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `AllianceFlavorGarrStringID`, + MODIFY `AllySlottingBroadcastTextID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `HordeSlottingBroadcastTextID`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ChrClassID`, + MODIFY `Gender` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Flags`; + +-- +-- Table structure for table `garr_follower_x_ability` +-- +ALTER TABLE `garr_follower_x_ability` + ADD `OrderIndex` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `FactionIndex` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `OrderIndex`; + +-- +-- Table structure for table `garr_plot` +-- +ALTER TABLE `garr_plot` + MODIFY `PlotType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Name`, + MODIFY `AllianceConstructObjID` int(11) NOT NULL DEFAULT 0 AFTER `HordeConstructObjID`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `AllianceConstructObjID`; + +-- +-- Table structure for table `garr_site_level` +-- +ALTER TABLE `garr_site_level` + MODIFY `GarrSiteID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `TownHallUiPosY`, + MODIFY `GarrLevel` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `GarrSiteID`, + MODIFY `UiTextureKitID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `UpgradeMovieID`, + MODIFY `MaxBuildingLevel` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `UiTextureKitID`; + +-- +-- Table structure for table `gem_properties` +-- +ALTER TABLE `gem_properties` + MODIFY `EnchantId` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Type` int(11) NOT NULL DEFAULT 0 AFTER `EnchantId`; + +-- +-- Table structure for table `guild_color_background` +-- +ALTER TABLE `guild_color_background` MODIFY `Blue` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Red`; + +-- +-- Table structure for table `guild_color_border` +-- +ALTER TABLE `guild_color_border` MODIFY `Blue` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Red`; + +-- +-- Table structure for table `guild_color_emblem` +-- +ALTER TABLE `guild_color_emblem` MODIFY `Blue` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Red`; + +-- +-- Table structure for table `heirloom` +-- +ALTER TABLE `heirloom` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SourceText`, + MODIFY `StaticUpgradedItemID` int(11) NOT NULL DEFAULT 0 AFTER `LegacyUpgradedItemID`, + MODIFY `SourceTypeEnum` tinyint(4) NOT NULL DEFAULT 0 AFTER `StaticUpgradedItemID`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `SourceTypeEnum`, + MODIFY `LegacyItemID` int(11) NOT NULL DEFAULT 0 AFTER `Flags`; + +-- +-- Table structure for table `holidays` +-- +ALTER TABLE `holidays` + MODIFY `Region` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Looping` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Region`, + MODIFY `HolidayNameID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Looping`, + MODIFY `HolidayDescriptionID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `HolidayNameID`, + MODIFY `Priority` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `HolidayDescriptionID`, + MODIFY `CalendarFilterType` tinyint(4) NOT NULL DEFAULT 0 AFTER `Priority`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `CalendarFilterType`, + MODIFY `Duration1` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `Duration2` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Duration1`, + MODIFY `Duration3` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Duration2`, + MODIFY `Duration4` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Duration3`, + MODIFY `Duration5` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Duration4`, + MODIFY `Duration6` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Duration5`, + MODIFY `Duration7` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Duration6`, + MODIFY `Duration8` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Duration7`, + MODIFY `Duration9` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Duration8`, + MODIFY `Duration10` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Duration9`, + MODIFY `Date1` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Duration10`, + MODIFY `Date2` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Date1`, + MODIFY `Date3` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Date2`, + MODIFY `Date4` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Date3`; + +-- +-- Table structure for table `item` +-- +ALTER TABLE `item` + MODIFY `InventoryType` tinyint(4) NOT NULL DEFAULT 0 AFTER `Material`, + MODIFY `SoundOverrideSubclassID` tinyint(4) NOT NULL DEFAULT 0 AFTER `SheatheType`, + MODIFY `IconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `SoundOverrideSubclassID`; + +-- +-- Table structure for table `item_appearance` +-- +ALTER TABLE `item_appearance` MODIFY `DisplayType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `item_armor_quality` +-- +ALTER TABLE `item_armor_quality` DROP `ItemLevel`; + +-- +-- Table structure for table `item_armor_total` +-- +ALTER TABLE `item_armor_total` MODIFY `ItemLevel` smallint(6) NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `item_bonus_tree_node` +-- +ALTER TABLE `item_bonus_tree_node` MODIFY `ItemContext` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `item_class` +-- +ALTER TABLE `item_class` MODIFY `ClassID` tinyint(4) NOT NULL DEFAULT 0 AFTER `ClassName`; + +-- +-- Table structure for table `item_damage_ammo` +-- +ALTER TABLE `item_damage_ammo` MODIFY `ItemLevel` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `item_damage_one_hand` +-- +ALTER TABLE `item_damage_one_hand` MODIFY `ItemLevel` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `item_damage_one_hand_caster` +-- +ALTER TABLE `item_damage_one_hand_caster` MODIFY `ItemLevel` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `item_damage_two_hand` +-- +ALTER TABLE `item_damage_two_hand` MODIFY `ItemLevel` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `item_damage_two_hand_caster` +-- +ALTER TABLE `item_damage_two_hand_caster` MODIFY `ItemLevel` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `item_disenchant_loot` +-- +ALTER TABLE `item_disenchant_loot` + MODIFY `Subclass` tinyint(4) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Quality` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Subclass`, + MODIFY `MinLevel` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Quality`; + +-- +-- Table structure for table `item_effect` +-- +ALTER TABLE `item_effect` + MODIFY `LegacySlotIndex` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `TriggerType` tinyint(4) NOT NULL DEFAULT 0 AFTER `LegacySlotIndex`, + MODIFY `Charges` smallint(6) NOT NULL DEFAULT 0 AFTER `TriggerType`, + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `SpellCategoryID`; + +-- +-- Table structure for table `item_extended_cost` +-- +ALTER TABLE `item_extended_cost` + MODIFY `RequiredArenaRating` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ArenaBracket` tinyint(4) NOT NULL DEFAULT 0 AFTER `RequiredArenaRating`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ArenaBracket`, + MODIFY `MinFactionID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `MinReputation` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `MinFactionID`, + MODIFY `RequiredAchievement` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `MinReputation`, + MODIFY `ItemID1` int(11) NOT NULL DEFAULT 0 AFTER `RequiredAchievement`, + MODIFY `ItemID2` int(11) NOT NULL DEFAULT 0 AFTER `ItemID1`, + MODIFY `CurrencyID4` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `CurrencyID3`, + MODIFY `CurrencyID5` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `CurrencyID4`, + MODIFY `CurrencyCount1` int(10) unsigned NOT NULL DEFAULT 0 AFTER `CurrencyID5`, + MODIFY `CurrencyCount2` int(10) unsigned NOT NULL DEFAULT 0 AFTER `CurrencyCount1`, + MODIFY `CurrencyCount3` int(10) unsigned NOT NULL DEFAULT 0 AFTER `CurrencyCount2`, + MODIFY `CurrencyCount4` int(10) unsigned NOT NULL DEFAULT 0 AFTER `CurrencyCount3`, + MODIFY `CurrencyCount5` int(10) unsigned NOT NULL DEFAULT 0 AFTER `CurrencyCount4`; + +-- +-- Table structure for table `item_limit_category_condition` +-- +ALTER TABLE `item_limit_category_condition` + MODIFY `AddQuantity` tinyint(4) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ParentItemLimitCategoryID` int(11) NOT NULL DEFAULT 0 AFTER `PlayerConditionID`; + +-- +-- Table structure for table `item_modified_appearance` +-- +ALTER TABLE `item_modified_appearance` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 FIRST; + +-- +-- Table structure for table `item_price_base` +-- +ALTER TABLE `item_price_base` MODIFY `ItemLevel` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `item_search_name` +-- +ALTER TABLE `item_search_name` + ADD `Flags4` int(11) NOT NULL DEFAULT 0 AFTER `Flags3`, + MODIFY `RequiredLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `AllowableClass`, + MODIFY `RequiredAbility` int(10) unsigned NOT NULL DEFAULT 0 AFTER `RequiredSkillRank`, + MODIFY `ItemLevel` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `RequiredAbility`, + MODIFY `Flags1` int(11) NOT NULL DEFAULT 0 AFTER `ItemLevel`, + MODIFY `Flags2` int(11) NOT NULL DEFAULT 0 AFTER `Flags1`, + MODIFY `Flags3` int(11) NOT NULL DEFAULT 0 AFTER `Flags2`; + +-- +-- Table structure for table `item_set` +-- +ALTER TABLE `item_set` + MODIFY `SetFlags` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Name`, + MODIFY `RequiredSkill` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SetFlags`, + MODIFY `RequiredSkillRank` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `RequiredSkill`; + +-- +-- Table structure for table `item_set_spell` +-- +ALTER TABLE `item_set_spell` MODIFY `ChrSpecID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `item_sparse` +-- +ALTER TABLE `item_sparse` + ADD `FactionRelated` int(11) NOT NULL DEFAULT 0 AFTER `Flags4`, + MODIFY `Description` text AFTER `AllowableRace`, + MODIFY `Display2` text AFTER `Display3`, + MODIFY `Display1` text AFTER `Display2`, + MODIFY `Display` text AFTER `Display1`, + MODIFY `DmgVariance` float NOT NULL DEFAULT 0 AFTER `Display`, + MODIFY `DurationInInventory` int(10) unsigned NOT NULL DEFAULT 0 AFTER `DmgVariance`, + MODIFY `QualityModifier` float NOT NULL DEFAULT 0 AFTER `DurationInInventory`, + MODIFY `BagFamily` int(10) unsigned NOT NULL DEFAULT 0 AFTER `QualityModifier`, + MODIFY `ItemRange` float NOT NULL DEFAULT 0 AFTER `BagFamily`, + MODIFY `StatPercentageOfSocket1` float NOT NULL DEFAULT 0 AFTER `ItemRange`, + MODIFY `StatPercentageOfSocket2` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket1`, + MODIFY `StatPercentageOfSocket3` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket2`, + MODIFY `StatPercentageOfSocket4` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket3`, + MODIFY `StatPercentageOfSocket5` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket4`, + MODIFY `StatPercentageOfSocket6` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket5`, + MODIFY `StatPercentageOfSocket7` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket6`, + MODIFY `StatPercentageOfSocket8` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket7`, + MODIFY `StatPercentageOfSocket9` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket8`, + MODIFY `StatPercentageOfSocket10` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket9`, + MODIFY `Stackable` int(11) NOT NULL DEFAULT 0 AFTER `StatPercentEditor10`, + MODIFY `MaxCount` int(11) NOT NULL DEFAULT 0 AFTER `Stackable`, + MODIFY `RequiredAbility` int(10) unsigned NOT NULL DEFAULT 0 AFTER `MaxCount`, + MODIFY `SellPrice` int(10) unsigned NOT NULL DEFAULT 0 AFTER `RequiredAbility`, + MODIFY `BuyPrice` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SellPrice`, + MODIFY `VendorStackCount` int(10) unsigned NOT NULL DEFAULT 0 AFTER `BuyPrice`, + MODIFY `PriceVariance` float NOT NULL DEFAULT 0 AFTER `VendorStackCount`, + MODIFY `PriceRandomValue` float NOT NULL DEFAULT 0 AFTER `PriceVariance`, + MODIFY `Flags1` int(11) NOT NULL DEFAULT 0 AFTER `PriceRandomValue`, + MODIFY `Flags2` int(11) NOT NULL DEFAULT 0 AFTER `Flags1`, + MODIFY `Flags3` int(11) NOT NULL DEFAULT 0 AFTER `Flags2`, + MODIFY `Flags4` int(11) NOT NULL DEFAULT 0 AFTER `Flags3`, + MODIFY `ItemNameDescriptionID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `FactionRelated`, + MODIFY `RequiredTransmogHoliday` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ItemNameDescriptionID`, + MODIFY `RequiredHoliday` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `RequiredTransmogHoliday`, + MODIFY `LimitCategory` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `RequiredHoliday`, + MODIFY `GemProperties` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `LimitCategory`, + MODIFY `SocketMatchEnchantmentId` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `GemProperties`, + MODIFY `TotemCategoryID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `SocketMatchEnchantmentId`, + MODIFY `InstanceBound` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `TotemCategoryID`, + MODIFY `ItemSet` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ZoneBound`, + MODIFY `ItemRandomSuffixGroupID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ItemSet`, + MODIFY `RandomSelect` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ItemRandomSuffixGroupID`, + MODIFY `LockID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `RandomSelect`, + MODIFY `StartQuestID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `LockID`, + MODIFY `PageID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `StartQuestID`, + MODIFY `ItemDelay` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `PageID`, + MODIFY `ScalingStatDistributionID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ItemDelay`, + MODIFY `MinFactionID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ScalingStatDistributionID`, + MODIFY `RequiredSkillRank` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `MinFactionID`, + MODIFY `RequiredSkill` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `RequiredSkillRank`, + MODIFY `ItemLevel` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `RequiredSkill`, + MODIFY `AllowableClass` smallint(6) NOT NULL DEFAULT 0 AFTER `ItemLevel`, + MODIFY `ExpansionID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `AllowableClass`, + MODIFY `ArtifactID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ExpansionID`, + MODIFY `SpellWeight` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ArtifactID`, + MODIFY `SpellWeightCategory` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `SpellWeight`, + MODIFY `SocketType1` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `SpellWeightCategory`, + MODIFY `SocketType2` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `SocketType1`, + MODIFY `SocketType3` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `SocketType2`, + MODIFY `SheatheType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `SocketType3`, + MODIFY `Material` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `SheatheType`, + MODIFY `PageMaterialID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Material`, + MODIFY `LanguageID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `PageMaterialID`, + MODIFY `Bonding` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `LanguageID`, + MODIFY `DamageDamageType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Bonding`, + MODIFY `ContainerSlots` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `StatModifierBonusStat10`, + MODIFY `MinReputation` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ContainerSlots`, + MODIFY `RequiredPVPMedal` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `MinReputation`, + MODIFY `RequiredPVPRank` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `RequiredPVPMedal`, + MODIFY `RequiredLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `RequiredPVPRank`, + MODIFY `InventoryType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `RequiredLevel`, + MODIFY `OverallQualityID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `InventoryType`, + DROP `ItemStatValue1`, + DROP `ItemStatValue2`, + DROP `ItemStatValue3`, + DROP `ItemStatValue4`, + DROP `ItemStatValue5`, + DROP `ItemStatValue6`, + DROP `ItemStatValue7`, + DROP `ItemStatValue8`, + DROP `ItemStatValue9`, + DROP `ItemStatValue10`; + +-- +-- Table structure for table `item_sparse_locale` +-- +ALTER TABLE `item_sparse_locale` + MODIFY `Description_lang` text AFTER `locale`, + MODIFY `Display3_lang` text AFTER `Description_lang`, + MODIFY `Display2_lang` text AFTER `Display3_lang`, + MODIFY `Display1_lang` text AFTER `Display2_lang`; + +-- +-- Table structure for table `item_spec` +-- +ALTER TABLE `item_spec` MODIFY `SpecializationID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `SecondaryStat`; + +-- +-- Table structure for table `item_upgrade` +-- +ALTER TABLE `item_upgrade` + MODIFY `PrerequisiteID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ItemLevelIncrement`, + MODIFY `CurrencyType` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `PrerequisiteID`, + MODIFY `CurrencyAmount` int(10) unsigned NOT NULL DEFAULT 0 AFTER `CurrencyType`; + +-- +-- Table structure for table `lfg_dungeons` +-- +ALTER TABLE `lfg_dungeons` + CHANGE `Flags` `Flags1` int(11) NOT NULL DEFAULT 0 AFTER `MentorCharLevel`, + ADD `Flags2` int(11) NOT NULL DEFAULT 0 AFTER `Flags1`, + MODIFY `MinLevel` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `TypeID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `MaxLevel`, + MODIFY `Subtype` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `TypeID`, + MODIFY `Faction` tinyint(4) NOT NULL DEFAULT 0 AFTER `Subtype`, + MODIFY `IconTextureFileID` int(11) NOT NULL DEFAULT 0 AFTER `Faction`, + MODIFY `RewardsBgTextureFileID` int(11) NOT NULL DEFAULT 0 AFTER `IconTextureFileID`, + MODIFY `PopupBgTextureFileID` int(11) NOT NULL DEFAULT 0 AFTER `RewardsBgTextureFileID`, + MODIFY `ExpansionLevel` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `PopupBgTextureFileID`, + MODIFY `MapID` smallint(6) NOT NULL DEFAULT 0 AFTER `ExpansionLevel`, + MODIFY `DifficultyID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `MapID`, + MODIFY `MinGear` float NOT NULL DEFAULT 0 AFTER `DifficultyID`, + MODIFY `GroupID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `MinGear`, + MODIFY `OrderIndex` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `GroupID`, + MODIFY `RequiredPlayerConditionId` int(10) unsigned NOT NULL DEFAULT 0 AFTER `OrderIndex`, + MODIFY `TargetLevelMax` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `TargetLevelMin`, + MODIFY `RandomID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `TargetLevelMax`, + MODIFY `ScenarioID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `RandomID`, + MODIFY `FinalEncounterID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ScenarioID`, + MODIFY `BonusReputationAmount` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `MinCountDamage`, + MODIFY `MentorItemLevel` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `BonusReputationAmount`; + +-- +-- Table structure for table `liquid_type` +-- +ALTER TABLE `liquid_type` + ADD `MinimapStaticCol` int(11) NOT NULL DEFAULT 0 AFTER `MaterialID`, + ADD `Coefficient1` float NOT NULL DEFAULT 0 AFTER `Int4`, + ADD `Coefficient2` float NOT NULL DEFAULT 0 AFTER `Coefficient1`, + ADD `Coefficient3` float NOT NULL DEFAULT 0 AFTER `Coefficient2`, + ADD `Coefficient4` float NOT NULL DEFAULT 0 AFTER `Coefficient3`, + MODIFY `Flags` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Texture6`, + MODIFY `SoundBank` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `SoundID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SoundBank`, + MODIFY `LightID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `DirDarkenIntensity`, + MODIFY `ParticleMovement` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ParticleScale`, + MODIFY `ParticleTexSlots` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ParticleMovement`, + MODIFY `MaterialID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ParticleTexSlots`, + MODIFY `FrameCountTexture1` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `MinimapStaticCol`, + MODIFY `FrameCountTexture2` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `FrameCountTexture1`, + MODIFY `FrameCountTexture3` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `FrameCountTexture2`, + MODIFY `FrameCountTexture4` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `FrameCountTexture3`, + MODIFY `FrameCountTexture5` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `FrameCountTexture4`, + MODIFY `FrameCountTexture6` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `FrameCountTexture5`, + MODIFY `Color1` int(11) NOT NULL DEFAULT 0 AFTER `FrameCountTexture6`, + MODIFY `Color2` int(11) NOT NULL DEFAULT 0 AFTER `Color1`; + +-- +-- Table structure for table `map` +-- +ALTER TABLE `map` + ADD `ZmpFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `WindSettingsID`, + MODIFY `MapType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `CorpseY`, + MODIFY `InstanceType` tinyint(4) NOT NULL DEFAULT 0 AFTER `MapType`, + MODIFY `ExpansionID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `InstanceType`, + MODIFY `TimeOffset` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `CosmeticParentMapID`, + MODIFY `MinimapIconScale` float NOT NULL DEFAULT 0 AFTER `TimeOffset`, + MODIFY `CorpseMapID` smallint(6) NOT NULL DEFAULT 0 AFTER `MinimapIconScale`, + MODIFY `WindSettingsID` smallint(6) NOT NULL DEFAULT 0 AFTER `MaxPlayers`, + MODIFY `Flags1` int(11) NOT NULL DEFAULT 0 AFTER `ZmpFileDataID`, + MODIFY `Flags2` int(11) NOT NULL DEFAULT 0 AFTER `Flags1`; + +-- +-- Table structure for table `map_difficulty` +-- +ALTER TABLE `map_difficulty` + ADD `ContentTuningID` int(11) NOT NULL DEFAULT 0 AFTER `ItemContextPickerID`, + MODIFY `ItemContextPickerID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Message`, + MODIFY `LockID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `DifficultyID`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ItemContext`; + +-- +-- Table structure for table `modifier_tree` +-- +ALTER TABLE `modifier_tree` + MODIFY `Parent` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Operator` tinyint(4) NOT NULL DEFAULT 0 AFTER `Parent`, + MODIFY `Amount` tinyint(4) NOT NULL DEFAULT 0 AFTER `Operator`, + MODIFY `Asset` int(11) NOT NULL DEFAULT 0 AFTER `Type`, + MODIFY `SecondaryAsset` int(11) NOT NULL DEFAULT 0 AFTER `Asset`; + +-- +-- Table structure for table `mount` +-- +ALTER TABLE `mount` + MODIFY `Description` text AFTER `SourceText`, + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `SourceSpellID` int(11) NOT NULL DEFAULT 0 AFTER `SourceTypeEnum`, + MODIFY `MountFlyRideHeight` float NOT NULL DEFAULT 0 AFTER `PlayerConditionID`; + +-- +-- Dumping data for table `mount_locale` +-- +ALTER TABLE `mount_locale` MODIFY `Description_lang` text AFTER `SourceText_lang`; + +-- +-- Table structure for table `mount_capability` +-- +ALTER TABLE `mount_capability` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 FIRST, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ReqAreaID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ReqRidingSkill`, + MODIFY `ReqSpellAuraID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ReqAreaID`, + MODIFY `ReqSpellKnownID` int(11) NOT NULL DEFAULT 0 AFTER `ReqSpellAuraID`, + MODIFY `ModSpellAuraID` int(11) NOT NULL DEFAULT 0 AFTER `ReqSpellKnownID`; + +-- +-- Table structure for table `movie` +-- +ALTER TABLE `movie` + MODIFY `AudioFileDataID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `KeyID`, + MODIFY `SubtitleFileDataID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `AudioFileDataID`; + +-- +-- Table structure for table `player_condition` +-- +ALTER TABLE `player_condition` + MODIFY `AchievementLogic` int(10) unsigned NOT NULL DEFAULT 0 AFTER `LifetimeMaxPVPRank`, + MODIFY `Gender` tinyint(4) NOT NULL DEFAULT 0 AFTER `AchievementLogic`, + MODIFY `NativeGender` tinyint(4) NOT NULL DEFAULT 0 AFTER `Gender`, + MODIFY `AreaLogic` int(10) unsigned NOT NULL DEFAULT 0 AFTER `NativeGender`, + MODIFY `PhaseUseFlags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `MaxAvgEquippedItemLevel`, + MODIFY `PhaseID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `PhaseUseFlags`, + MODIFY `PhaseGroupID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `PhaseID`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `PhaseGroupID`, + MODIFY `ModifierTreeID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ChrSpecializationRole`, + MODIFY `MaxGuildLevel` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `WeaponSubclassMask`, + MODIFY `MinGuildLevel` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `MaxGuildLevel`, + MODIFY `MaxExpansionTier` tinyint(4) NOT NULL DEFAULT 0 AFTER `MinGuildLevel`, + MODIFY `MinExpansionTier` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaxExpansionTier`, + MODIFY `MinPVPRank` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `MinExpansionTier`, + MODIFY `MaxPVPRank` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `MinPVPRank`, + MODIFY `AreaID1` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Achievement4`, + MODIFY `AreaID2` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `AreaID1`, + MODIFY `AreaID3` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `AreaID2`, + MODIFY `AreaID4` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `AreaID3`; + +-- +-- Table structure for table `power_type` +-- +ALTER TABLE `power_type` + MODIFY `MaxBasePower` smallint(6) NOT NULL DEFAULT 0 AFTER `MinPower`, + MODIFY `DisplayModifier` tinyint(4) NOT NULL DEFAULT 0 AFTER `DefaultPower`, + MODIFY `RegenInterruptTimeMS` smallint(6) NOT NULL DEFAULT 0 AFTER `DisplayModifier`, + MODIFY `RegenPeace` float NOT NULL DEFAULT 0 AFTER `RegenInterruptTimeMS`, + MODIFY `RegenCombat` float NOT NULL DEFAULT 0 AFTER `RegenPeace`, + MODIFY `Flags` smallint(6) NOT NULL DEFAULT 0 AFTER `RegenCombat`; + +-- +-- Table structure for table `prestige_level_info` +-- +ALTER TABLE `prestige_level_info` + ADD `AwardedAchievementID` int(11) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `PrestigeLevel` int(11) NOT NULL DEFAULT 0 AFTER `Name`, + MODIFY `BadgeTextureFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `PrestigeLevel`; + +-- +-- Table structure for table `pvp_talent` +-- +ALTER TABLE `pvp_talent` + ADD `PvpTalentCategoryID` int(11) NOT NULL DEFAULT 0 AFTER `ActionBarSpellID`, + ADD `LevelRequired` int(11) NOT NULL DEFAULT 0 AFTER `PvpTalentCategoryID`, + MODIFY `Description` text FIRST, + MODIFY `SpecID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ActionBarSpellID` int(11) NOT NULL DEFAULT 0 AFTER `Flags`, + DROP `TierID`, + DROP `ColumnIndex`, + DROP `ClassID`, + DROP `Role`; + +-- +-- Table structure for table `pvp_talent_category` +-- +DROP TABLE IF EXISTS `pvp_talent_category`; +CREATE TABLE `pvp_talent_category` ( + `ID` int(10) unsigned NOT NULL DEFAULT 0, + `TalentSlotMask` tinyint(3) unsigned NOT NULL DEFAULT 0, + `VerifiedBuild` smallint(6) NOT NULL DEFAULT 0, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `pvp_talent_slot_unlock` +-- +DROP TABLE IF EXISTS `pvp_talent_slot_unlock`; +CREATE TABLE `pvp_talent_slot_unlock` ( + `ID` int(10) unsigned NOT NULL DEFAULT 0, + `Slot` tinyint(4) NOT NULL DEFAULT 0, + `LevelRequired` int(11) NOT NULL DEFAULT 0, + `DeathKnightLevelRequired` int(11) NOT NULL DEFAULT 0, + `DemonHunterLevelRequired` int(11) NOT NULL DEFAULT 0, + `VerifiedBuild` smallint(6) NOT NULL DEFAULT 0, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `quest_package_item` +-- +ALTER TABLE `quest_package_item` + MODIFY `ItemID` int(11) NOT NULL DEFAULT 0 AFTER `PackageID`, + MODIFY `DisplayType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ItemQuantity`; + +-- +-- Table structure for table `rand_prop_points` +-- +ALTER TABLE `rand_prop_points` ADD `DamageReplaceStat` int(11) NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `reward_pack` +-- +ALTER TABLE `reward_pack` + MODIFY `CharTitleID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ArtifactXPDifficulty` tinyint(4) NOT NULL DEFAULT 0 AFTER `Money`; + +-- +-- Table structure for table `scenario` +-- +ALTER TABLE `scenario` + ADD `UiTextureKitID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Type`; + +-- +-- Table structure for table `scenario_step` +-- +ALTER TABLE `scenario_step` + ADD `VisibilityPlayerConditionID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Flags`, + ADD `WidgetSetID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `VisibilityPlayerConditionID`, + MODIFY `Criteriatreeid` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ScenarioID`, + MODIFY `RewardQuestID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `Criteriatreeid`, + MODIFY `RelatedStep` int(11) NOT NULL DEFAULT 0 AFTER `RewardQuestID`; + +-- +-- Table structure for table `skill_line` +-- +ALTER TABLE `skill_line` + ADD `HordeDisplayName` text AFTER `Description`, + ADD `OverrideSourceInfoDisplayName` text AFTER `HordeDisplayName`, + ADD `ParentTierIndex` int(11) NOT NULL DEFAULT 0 AFTER `ParentSkillLineID`, + ADD `SpellBookSpellID` int(11) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `AlternateVerb` text AFTER `DisplayName`, + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `OverrideSourceInfoDisplayName`, + MODIFY `CanLink` tinyint(4) NOT NULL DEFAULT 0 AFTER `SpellIconFileID`, + MODIFY `Flags` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ParentTierIndex`; + +-- +-- Table structure for table `skill_line_locale` +-- +ALTER TABLE `skill_line_locale` + ADD `HordeDisplayName_lang` text AFTER `Description_lang`, + MODIFY `AlternateVerb_lang` text AFTER `DisplayName_lang`; + +-- +-- Table structure for table `skill_line_ability` +-- +ALTER TABLE `skill_line_ability` + ADD `SkillupSkillLineID` smallint(6) NOT NULL DEFAULT 0 AFTER `TradeSkillCategoryID`, + MODIFY `SkillLine` smallint(6) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `MinSkillLineRank` smallint(6) NOT NULL DEFAULT 0 AFTER `Spell`, + MODIFY `ClassMask` int(11) NOT NULL DEFAULT 0 AFTER `MinSkillLineRank`, + MODIFY `SupercedesSpell` int(11) NOT NULL DEFAULT 0 AFTER `ClassMask`, + MODIFY `AcquireMethod` tinyint(4) NOT NULL DEFAULT 0 AFTER `SupercedesSpell`, + MODIFY `Flags` tinyint(4) NOT NULL DEFAULT 0 AFTER `TrivialSkillLineRankLow`, + MODIFY `NumSkillUps` tinyint(4) NOT NULL DEFAULT 0 AFTER `Flags`; + +-- +-- Table structure for table `skill_race_class_info` +-- +ALTER TABLE `skill_race_class_info` + MODIFY `ClassMask` int(11) NOT NULL DEFAULT 0 AFTER `SkillID`, + MODIFY `SkillTierID` smallint(6) NOT NULL DEFAULT 0 AFTER `MinLevel`; + +-- +-- Table structure for table `sound_kit` +-- +ALTER TABLE `sound_kit` + ADD `SoundKitAdvancedID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `EAXDef`, + MODIFY `SoundType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Flags` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `VolumeFloat`, + MODIFY `DialogType` tinyint(4) NOT NULL DEFAULT 0 AFTER `PitchVariationMinus`, + DROP `SoundEntriesAdvancedID`; + +-- +-- Table structure for table `specialization_spells` +-- +ALTER TABLE `specialization_spells` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `SpecID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `spell_aura_options` +-- +ALTER TABLE `spell_aura_options` + CHANGE `ProcTypeMask` `ProcTypeMask1` int(11) NOT NULL DEFAULT 0 AFTER `SpellProcsPerMinuteID`, + ADD `ProcTypeMask2` int(11) NOT NULL DEFAULT 0 AFTER `ProcTypeMask1`, + MODIFY `DifficultyID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `CumulativeAura` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `DifficultyID`, + MODIFY `ProcChance` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ProcCategoryRecovery`, + MODIFY `ProcCharges` int(11) NOT NULL DEFAULT 0 AFTER `ProcChance`; + +-- +-- Table structure for table `spell_aura_restrictions` +-- +ALTER TABLE `spell_aura_restrictions` + MODIFY `ExcludeTargetAuraState` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ExcludeCasterAuraState`, + MODIFY `CasterAuraSpell` int(11) NOT NULL DEFAULT 0 AFTER `ExcludeTargetAuraState`, + MODIFY `TargetAuraSpell` int(11) NOT NULL DEFAULT 0 AFTER `CasterAuraSpell`, + MODIFY `ExcludeCasterAuraSpell` int(11) NOT NULL DEFAULT 0 AFTER `TargetAuraSpell`, + MODIFY `ExcludeTargetAuraSpell` int(11) NOT NULL DEFAULT 0 AFTER `ExcludeCasterAuraSpell`; + +-- +-- Dumping data for table `spell_cast_times` +-- +ALTER TABLE `spell_cast_times` MODIFY `Minimum` int(11) NOT NULL DEFAULT 0 AFTER `PerLevel`; + +-- +-- Table structure for table `spell_casting_requirements` +-- +ALTER TABLE `spell_casting_requirements` + MODIFY `FacingCasterFlags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `SpellID`, + MODIFY `MinReputation` tinyint(4) NOT NULL DEFAULT 0 AFTER `MinFactionID`, + MODIFY `RequiredAuraVision` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `RequiredAreasID`; + +-- +-- Table structure for table `spell_categories` +-- +ALTER TABLE `spell_categories` + MODIFY `Category` smallint(6) NOT NULL DEFAULT 0 AFTER `DifficultyID`, + MODIFY `StartRecoveryCategory` smallint(6) NOT NULL DEFAULT 0 AFTER `PreventionType`, + MODIFY `ChargeCategory` smallint(6) NOT NULL DEFAULT 0 AFTER `StartRecoveryCategory`; + +-- +-- Table structure for table `spell_category` +-- +ALTER TABLE `spell_category` MODIFY `ChargeRecoveryTime` int(11) NOT NULL DEFAULT 0 AFTER `MaxCharges`; + +-- +-- Table structure for table `spell_class_options` +-- +ALTER TABLE `spell_class_options` + MODIFY `ModalNextSpell` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SpellID`, + MODIFY `SpellClassSet` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ModalNextSpell`, + MODIFY `SpellClassMask1` int(11) NOT NULL DEFAULT 0 AFTER `SpellClassSet`, + MODIFY `SpellClassMask2` int(11) NOT NULL DEFAULT 0 AFTER `SpellClassMask1`, + MODIFY `SpellClassMask3` int(11) NOT NULL DEFAULT 0 AFTER `SpellClassMask2`, + MODIFY `SpellClassMask4` int(11) NOT NULL DEFAULT 0 AFTER `SpellClassMask3`; + +-- +-- Table structure for table `spell_cooldowns` +-- +ALTER TABLE `spell_cooldowns` MODIFY `DifficultyID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `spell_duration` +-- +ALTER TABLE `spell_duration` MODIFY `DurationPerLevel` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Duration`; + +-- +-- Table structure for table `spell_effect` +-- +ALTER TABLE `spell_effect` + MODIFY `DifficultyID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Effect` int(10) unsigned NOT NULL DEFAULT 0 AFTER `EffectIndex`, + MODIFY `EffectAmplitude` float NOT NULL DEFAULT 0 AFTER `Effect`, + MODIFY `EffectAttributes` int(11) NOT NULL DEFAULT 0 AFTER `EffectAmplitude`, + MODIFY `EffectAura` smallint(6) NOT NULL DEFAULT 0 AFTER `EffectAttributes`, + MODIFY `EffectPosFacing` float NOT NULL DEFAULT 0 AFTER `EffectPointsPerResource`, + MODIFY `EffectBasePoints` float NOT NULL DEFAULT 0 AFTER `GroupSizeBasePointsCoefficient`, + MODIFY `EffectMiscValue1` int(11) NOT NULL DEFAULT 0 AFTER `EffectBasePoints`, + MODIFY `EffectMiscValue2` int(11) NOT NULL DEFAULT 0 AFTER `EffectMiscValue1`, + MODIFY `EffectRadiusIndex1` int(10) unsigned NOT NULL DEFAULT 0 AFTER `EffectMiscValue2`, + MODIFY `EffectRadiusIndex2` int(10) unsigned NOT NULL DEFAULT 0 AFTER `EffectRadiusIndex1`, + MODIFY `EffectSpellClassMask1` int(11) NOT NULL DEFAULT 0 AFTER `EffectRadiusIndex2`, + MODIFY `EffectSpellClassMask2` int(11) NOT NULL DEFAULT 0 AFTER `EffectSpellClassMask1`, + MODIFY `EffectSpellClassMask3` int(11) NOT NULL DEFAULT 0 AFTER `EffectSpellClassMask2`, + MODIFY `EffectSpellClassMask4` int(11) NOT NULL DEFAULT 0 AFTER `EffectSpellClassMask3`, + MODIFY `ImplicitTarget1` smallint(6) NOT NULL DEFAULT 0 AFTER `EffectSpellClassMask4`, + MODIFY `ImplicitTarget2` smallint(6) NOT NULL DEFAULT 0 AFTER `ImplicitTarget1`, + DROP `EffectDieSides`; + +-- +-- Table structure for table `spell_equipped_items` +-- +ALTER TABLE `spell_equipped_items` MODIFY `EquippedItemClass` tinyint(4) NOT NULL DEFAULT 0 AFTER `SpellID`; + +-- +-- Table structure for table `spell_item_enchantment` +-- +ALTER TABLE `spell_item_enchantment` + ADD `HordeName` text AFTER `Name`, + MODIFY `TransmogPlayerConditionID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `IconFileDataID`, + MODIFY `ScalingClass` tinyint(4) NOT NULL DEFAULT 0 AFTER `Effect3`, + MODIFY `ScalingClassRestricted` tinyint(4) NOT NULL DEFAULT 0 AFTER `ScalingClass`; + +-- +-- Table structure for table `spell_item_enchantment_locale` +-- +ALTER TABLE `spell_item_enchantment_locale` ADD `HordeName_lang` text AFTER `Name_lang`; + +-- +-- Table structure for table `spell_item_enchantment_condition` +-- +ALTER TABLE `spell_item_enchantment_condition` + MODIFY `LtOperandType4` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `LtOperandType3`, + MODIFY `LtOperandType5` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `LtOperandType4`, + MODIFY `LtOperand1` int(10) unsigned NOT NULL DEFAULT 0 AFTER `LtOperandType5`, + MODIFY `LtOperand2` int(10) unsigned NOT NULL DEFAULT 0 AFTER `LtOperand1`, + MODIFY `LtOperand3` int(10) unsigned NOT NULL DEFAULT 0 AFTER `LtOperand2`, + MODIFY `LtOperand4` int(10) unsigned NOT NULL DEFAULT 0 AFTER `LtOperand3`, + MODIFY `LtOperand5` int(10) unsigned NOT NULL DEFAULT 0 AFTER `LtOperand4`; + +-- +-- Table structure for table `spell_levels` +-- +ALTER TABLE `spell_levels` MODIFY `DifficultyID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +-- +-- Table structure for table `spell_misc` +-- +ALTER TABLE `spell_misc` + ADD `MinDuration` float NOT NULL DEFAULT 0 AFTER `LaunchDelay`, + MODIFY `DifficultyID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Speed` float NOT NULL DEFAULT 0 AFTER `SchoolMask`, + MODIFY `LaunchDelay` float NOT NULL DEFAULT 0 AFTER `Speed`; + +-- +-- Table structure for table `spell_name` +-- +DROP TABLE IF EXISTS `spell_name`; +CREATE TABLE `spell_name` ( + `ID` int(10) unsigned NOT NULL DEFAULT 0, + `Name` text, + `VerifiedBuild` smallint(6) NOT NULL DEFAULT 0, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `spell_name_locale` +-- +DROP TABLE IF EXISTS `spell_name_locale`; +CREATE TABLE `spell_name_locale` ( + `ID` int(10) unsigned NOT NULL DEFAULT 0, + `locale` varchar(4) NOT NULL, + `Name_lang` text, + `VerifiedBuild` smallint(6) NOT NULL DEFAULT 0, + PRIMARY KEY (`ID`,`locale`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `spell_power` +-- +ALTER TABLE `spell_power` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 FIRST, + MODIFY `ManaCost` int(11) NOT NULL DEFAULT 0 AFTER `OrderIndex`, + MODIFY `ManaPerSecond` int(11) NOT NULL DEFAULT 0 AFTER `ManaCostPerLevel`, + MODIFY `PowerDisplayID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ManaPerSecond`, + MODIFY `AltPowerBarID` int(11) NOT NULL DEFAULT 0 AFTER `PowerDisplayID`, + MODIFY `PowerCostPct` float NOT NULL DEFAULT 0 AFTER `AltPowerBarID`, + MODIFY `PowerCostMaxPct` float NOT NULL DEFAULT 0 AFTER `PowerCostPct`, + MODIFY `PowerPctPerSecond` float NOT NULL DEFAULT 0 AFTER `PowerCostMaxPct`, + MODIFY `PowerType` tinyint(4) NOT NULL DEFAULT 0 AFTER `PowerPctPerSecond`, + MODIFY `RequiredAuraSpellID` int(11) NOT NULL DEFAULT 0 AFTER `PowerType`, + MODIFY `OptionalCost` int(10) unsigned NOT NULL DEFAULT 0 AFTER `RequiredAuraSpellID`; + +-- +-- Table structure for table `spell_power_difficulty` +-- +ALTER TABLE `spell_power_difficulty` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 FIRST; + +-- +-- Table structure for table `spell_procs_per_minute_mod` +-- +ALTER TABLE `spell_procs_per_minute_mod` + MODIFY `Param` smallint(6) NOT NULL DEFAULT 0 AFTER `Type`, + MODIFY `Coeff` float NOT NULL DEFAULT 0 AFTER `Param`; + +-- +-- Table structure for table `spell_range` +-- +ALTER TABLE `spell_range` MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `DisplayNameShort`; + +-- +-- Table structure for table `spell_scaling` +-- +ALTER TABLE `spell_scaling` MODIFY `ScalesFromItemLevel` smallint(6) NOT NULL DEFAULT 0 AFTER `MaxScalingLevel`; + +-- +-- Table structure for table `spell_shapeshift` +-- +ALTER TABLE `spell_shapeshift` MODIFY `StanceBarOrder` tinyint(4) NOT NULL DEFAULT 0 AFTER `SpellID`; + +-- +-- Table structure for table `spell_shapeshift_form` +-- +ALTER TABLE `spell_shapeshift_form` + MODIFY `CreatureType` tinyint(4) NOT NULL DEFAULT 0 AFTER `Name`, + MODIFY `AttackIconFileID` int(11) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `BonusActionBar` tinyint(4) NOT NULL DEFAULT 0 AFTER `AttackIconFileID`, + MODIFY `DamageVariance` float NOT NULL DEFAULT 0 AFTER `CombatRoundTime`; + +-- +-- Table structure for table `spell_target_restrictions` +-- +ALTER TABLE `spell_target_restrictions` + MODIFY `ConeDegrees` float NOT NULL DEFAULT 0 AFTER `DifficultyID`, + MODIFY `TargetCreatureType` smallint(6) NOT NULL DEFAULT 0 AFTER `MaxTargetLevel`, + MODIFY `Targets` int(11) NOT NULL DEFAULT 0 AFTER `TargetCreatureType`, + MODIFY `Width` float NOT NULL DEFAULT 0 AFTER `Targets`; + +-- +-- Table structure for table `spell_totems` +-- +ALTER TABLE `spell_totems` + MODIFY `RequiredTotemCategoryID1` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `SpellID`, + MODIFY `RequiredTotemCategoryID2` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `RequiredTotemCategoryID1`; + +-- +-- Table structure for table `spell_x_spell_visual` +-- +ALTER TABLE `spell_x_spell_visual` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 FIRST, + MODIFY `DifficultyID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `SpellIconFileID` int(11) NOT NULL DEFAULT 0 AFTER `Priority`, + MODIFY `ActiveIconFileID` int(11) NOT NULL DEFAULT 0 AFTER `SpellIconFileID`, + MODIFY `ViewerUnitConditionID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ActiveIconFileID`, + MODIFY `ViewerPlayerConditionID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ViewerUnitConditionID`, + MODIFY `CasterUnitConditionID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ViewerPlayerConditionID`, + MODIFY `CasterPlayerConditionID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `CasterUnitConditionID`; + +-- +-- Table structure for table `summon_properties` +-- +ALTER TABLE `summon_properties` MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `Slot`; + +-- +-- Table structure for table `talent` +-- +ALTER TABLE `talent` + MODIFY `TierID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `Flags` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `TierID`, + MODIFY `ColumnIndex` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `ClassID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ColumnIndex`, + MODIFY `SpecID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ClassID`, + MODIFY `SpellID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SpecID`, + MODIFY `OverridesSpellID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SpellID`; + +-- +-- Table structure for table `taxi_nodes` +-- +ALTER TABLE `taxi_nodes` + ADD `VisibilityConditionID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SpecialIconConditionID`, + MODIFY `FlightMapOffsetY` float NOT NULL DEFAULT 0 AFTER `FlightMapOffsetX`, + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `FlightMapOffsetY`, + MODIFY `Facing` float NOT NULL DEFAULT 0 AFTER `UiTextureKitID`, + MODIFY `MountCreatureID1` int(11) NOT NULL DEFAULT 0 AFTER `VisibilityConditionID`, + MODIFY `MountCreatureID2` int(11) NOT NULL DEFAULT 0 AFTER `MountCreatureID1`; + +-- +-- Table structure for table `taxi_path` +-- +ALTER TABLE `taxi_path` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 FIRST; + +-- +-- Table structure for table `taxi_path_node` +-- +ALTER TABLE `taxi_path_node` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `LocZ`, + MODIFY `NodeIndex` int(11) NOT NULL DEFAULT 0 AFTER `PathID`, + MODIFY `ContinentID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `NodeIndex`; + +-- +-- Table structure for table `totem_category` +-- +ALTER TABLE `totem_category` MODIFY `TotemCategoryMask` int(11) NOT NULL DEFAULT 0 AFTER `TotemCategoryType`; + +-- +-- Table structure for table `toy` +-- +ALTER TABLE `toy` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SourceText`; + +-- +-- Table structure for table `transmog_set` +-- +ALTER TABLE `transmog_set` + MODIFY `ClassMask` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `TrackingQuestID`, + MODIFY `ItemNameDescriptionID` int(11) NOT NULL DEFAULT 0 AFTER `TransmogSetGroupID`, + MODIFY `ParentTransmogSetID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ItemNameDescriptionID`, + MODIFY `ExpansionID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `ParentTransmogSetID`, + MODIFY `UiOrder` smallint(6) NOT NULL DEFAULT 0 AFTER `ExpansionID`; + +-- +-- Table structure for table `transport_animation` +-- +ALTER TABLE `transport_animation` MODIFY `TimeIndex` int(10) unsigned NOT NULL DEFAULT 0 AFTER `SequenceID`; + +-- +-- Table structure for table `transport_rotation` +-- +ALTER TABLE `transport_rotation` MODIFY `TimeIndex` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Rot4`; + +-- +-- Table structure for table `ui_map` +-- +DROP TABLE IF EXISTS `ui_map`; +CREATE TABLE `ui_map` ( + `Name` text, + `ID` int(10) unsigned NOT NULL DEFAULT '0', + `ParentUiMapID` int(11) NOT NULL DEFAULT '0', + `Flags` int(11) NOT NULL DEFAULT '0', + `System` int(11) NOT NULL DEFAULT '0', + `Type` int(11) NOT NULL DEFAULT '0', + `LevelRangeMin` int(10) unsigned NOT NULL DEFAULT '0', + `LevelRangeMax` int(10) unsigned NOT NULL DEFAULT '0', + `BountySetID` int(11) NOT NULL DEFAULT '0', + `BountyDisplayLocation` int(10) unsigned NOT NULL DEFAULT '0', + `VisibilityPlayerConditionID` int(11) NOT NULL DEFAULT '0', + `HelpTextPosition` tinyint(4) NOT NULL DEFAULT '0', + `BkgAtlasID` int(11) NOT NULL DEFAULT '0', + `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `ui_map_locale` +-- +DROP TABLE IF EXISTS `ui_map_locale`; +CREATE TABLE `ui_map_locale` ( + `ID` int(10) unsigned NOT NULL DEFAULT '0', + `locale` varchar(4) NOT NULL, + `Name_lang` text, + `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`locale`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `ui_map_assignment` +-- +DROP TABLE IF EXISTS `ui_map_assignment`; +CREATE TABLE `ui_map_assignment` ( + `UiMinX` float NOT NULL DEFAULT '0', + `UiMinY` float NOT NULL DEFAULT '0', + `UiMaxX` float NOT NULL DEFAULT '0', + `UiMaxY` float NOT NULL DEFAULT '0', + `Region1X` float NOT NULL DEFAULT '0', + `Region1Y` float NOT NULL DEFAULT '0', + `Region1Z` float NOT NULL DEFAULT '0', + `Region2X` float NOT NULL DEFAULT '0', + `Region2Y` float NOT NULL DEFAULT '0', + `Region2Z` float NOT NULL DEFAULT '0', + `ID` int(10) unsigned NOT NULL DEFAULT '0', + `UiMapID` int(11) NOT NULL DEFAULT '0', + `OrderIndex` int(11) NOT NULL DEFAULT '0', + `MapID` int(11) NOT NULL DEFAULT '0', + `AreaID` int(11) NOT NULL DEFAULT '0', + `WmoDoodadPlacementID` int(11) NOT NULL DEFAULT '0', + `WmoGroupID` int(11) NOT NULL DEFAULT '0', + `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `ui_map_link` +-- +DROP TABLE IF EXISTS `ui_map_link`; +CREATE TABLE `ui_map_link` ( + `UiMinX` float NOT NULL DEFAULT '0', + `UiMinY` float NOT NULL DEFAULT '0', + `UiMaxX` float NOT NULL DEFAULT '0', + `UiMaxY` float NOT NULL DEFAULT '0', + `ID` int(10) unsigned NOT NULL DEFAULT '0', + `ParentUiMapID` int(11) NOT NULL DEFAULT '0', + `OrderIndex` int(11) NOT NULL DEFAULT '0', + `ChildUiMapID` int(11) NOT NULL DEFAULT '0', + `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `ui_map_x_map_art` +-- +DROP TABLE IF EXISTS `ui_map_x_map_art`; +CREATE TABLE `ui_map_x_map_art` ( + `ID` int(10) unsigned NOT NULL DEFAULT '0', + `PhaseID` int(11) NOT NULL DEFAULT '0', + `UiMapArtID` int(11) NOT NULL DEFAULT '0', + `UiMapID` int(11) NOT NULL DEFAULT '0', + `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `unit_power_bar` +-- +ALTER TABLE `unit_power_bar` + MODIFY `MinPower` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ToolTip`, + MODIFY `MaxPower` int(10) unsigned NOT NULL DEFAULT 0 AFTER `MinPower`, + MODIFY `StartPower` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `MaxPower`, + MODIFY `CenterPower` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `StartPower`, + MODIFY `RegenerationPeace` float NOT NULL DEFAULT 0 AFTER `CenterPower`, + MODIFY `BarType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `RegenerationCombat`, + MODIFY `Flags` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `BarType`, + MODIFY `StartInset` float NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `EndInset` float NOT NULL DEFAULT 0 AFTER `StartInset`; + +-- +-- Table structure for table `vehicle` +-- +ALTER TABLE `vehicle` + MODIFY `FlagsB` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `UiLocomotionType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `CameraYawOffset`, + MODIFY `VehicleUIIndicatorID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `UiLocomotionType`, + MODIFY `MissileTargetingID` int(11) NOT NULL DEFAULT 0 AFTER `VehicleUIIndicatorID`; + +-- +-- Table structure for table `vehicle_seat` +-- +ALTER TABLE `vehicle_seat` + MODIFY `AttachmentOffsetX` float NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `AttachmentOffsetY` float NOT NULL DEFAULT 0 AFTER `AttachmentOffsetX`, + MODIFY `AttachmentOffsetZ` float NOT NULL DEFAULT 0 AFTER `AttachmentOffsetY`, + MODIFY `CameraOffsetX` float NOT NULL DEFAULT 0 AFTER `AttachmentOffsetZ`, + MODIFY `CameraOffsetY` float NOT NULL DEFAULT 0 AFTER `CameraOffsetX`, + MODIFY `CameraOffsetZ` float NOT NULL DEFAULT 0 AFTER `CameraOffsetY`, + MODIFY `AttachmentID` tinyint(4) NOT NULL DEFAULT 0 AFTER `FlagsC`, + MODIFY `EnterAnimStart` int(11) NOT NULL DEFAULT 0 AFTER `EnterMaxArcHeight`, + MODIFY `EnterAnimLoop` int(11) NOT NULL DEFAULT 0 AFTER `EnterAnimStart`, + MODIFY `RideAnimStart` int(11) NOT NULL DEFAULT 0 AFTER `EnterAnimLoop`, + MODIFY `RideAnimLoop` int(11) NOT NULL DEFAULT 0 AFTER `RideAnimStart`, + MODIFY `RideUpperAnimStart` int(11) NOT NULL DEFAULT 0 AFTER `RideAnimLoop`, + MODIFY `RideUpperAnimLoop` int(11) NOT NULL DEFAULT 0 AFTER `RideUpperAnimStart`, + MODIFY `ExitPreDelay` float NOT NULL DEFAULT 0 AFTER `RideUpperAnimLoop`, + MODIFY `ExitAnimStart` int(11) NOT NULL DEFAULT 0 AFTER `ExitMaxArcHeight`, + MODIFY `ExitAnimLoop` int(11) NOT NULL DEFAULT 0 AFTER `ExitAnimStart`, + MODIFY `ExitAnimEnd` int(11) NOT NULL DEFAULT 0 AFTER `ExitAnimLoop`, + MODIFY `VehicleEnterAnim` smallint(6) NOT NULL DEFAULT 0 AFTER `ExitAnimEnd`, + MODIFY `VehicleEnterAnimBone` tinyint(4) NOT NULL DEFAULT 0 AFTER `VehicleEnterAnim`, + MODIFY `VehicleExitAnim` smallint(6) NOT NULL DEFAULT 0 AFTER `VehicleEnterAnimBone`, + MODIFY `VehicleExitAnimBone` tinyint(4) NOT NULL DEFAULT 0 AFTER `VehicleExitAnim`, + MODIFY `VehicleRideAnimLoop` smallint(6) NOT NULL DEFAULT 0 AFTER `VehicleExitAnimBone`, + MODIFY `VehicleRideAnimLoopBone` tinyint(4) NOT NULL DEFAULT 0 AFTER `VehicleRideAnimLoop`, + MODIFY `PassengerAttachmentID` tinyint(4) NOT NULL DEFAULT 0 AFTER `VehicleRideAnimLoopBone`, + MODIFY `PassengerYaw` float NOT NULL DEFAULT 0 AFTER `PassengerAttachmentID`, + MODIFY `PassengerPitch` float NOT NULL DEFAULT 0 AFTER `PassengerYaw`, + MODIFY `PassengerRoll` float NOT NULL DEFAULT 0 AFTER `PassengerPitch`, + MODIFY `VehicleAbilityDisplay` tinyint(4) NOT NULL DEFAULT 0 AFTER `VehicleExitAnimDelay`, + MODIFY `EnterUISoundID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `VehicleAbilityDisplay`, + MODIFY `ExitUISoundID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `EnterUISoundID`, + MODIFY `UiSkinFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `ExitUISoundID`, + MODIFY `CameraEnteringDelay` float NOT NULL DEFAULT 0 AFTER `UiSkinFileDataID`; + +-- +-- Table structure for table `wmo_area_table` +-- +ALTER TABLE `wmo_area_table` + MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `AreaName`, + MODIFY `WmoID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `NameSetID` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `WmoID`, + MODIFY `WmoGroupID` int(11) NOT NULL DEFAULT 0 AFTER `NameSetID`, + MODIFY `SoundProviderPref` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `WmoGroupID`, + MODIFY `SoundProviderPrefUnderwater` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `SoundProviderPref`, + MODIFY `UwAmbience` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `AmbienceID`, + MODIFY `UwZoneMusic` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ZoneMusic`, + MODIFY `AreaTableID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `UwIntroSound`; + +-- +-- Table structure for table `world_effect` +-- +ALTER TABLE `world_effect` + MODIFY `QuestFeedbackEffectID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `TargetType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `WhenToDisplay`, + MODIFY `TargetAsset` int(11) NOT NULL DEFAULT 0 AFTER `TargetType`, + MODIFY `CombatConditionID` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `PlayerConditionID`; + +-- +-- Table structure for table `world_map_overlay` +-- +ALTER TABLE `world_map_overlay` + ADD `UiMapArtID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `HitRectBottom` int(11) NOT NULL DEFAULT 0 AFTER `HitRectTop`, + DROP `TextureName`, + DROP `MapAreaID`; + +-- +-- Table structure for table `world_safe_locs` +-- +ALTER TABLE `world_safe_locs` MODIFY `Facing` float NOT NULL DEFAULT 0 AFTER `MapID`; + +DROP TABLE `garr_plot_locale`; +DROP TABLE `pvp_reward`; +DROP TABLE `pvp_talent_unlock`; +DROP TABLE `sandbox_scaling`; +DROP TABLE `spell`; +DROP TABLE `spell_locale`; +DROP TABLE `world_map_area`; +DROP TABLE `world_map_transforms`; diff --git a/sql/updates/world/master/2018_09_25_00_world.sql b/sql/updates/world/master/2018_09_25_00_world.sql new file mode 100644 index 00000000000..e1942f967a1 --- /dev/null +++ b/sql/updates/world/master/2018_09_25_00_world.sql @@ -0,0 +1,13 @@ +ALTER TABLE `terrain_worldmap` + DROP PRIMARY KEY, + ADD `UiMapPhaseId` int(10) unsigned NOT NULL AFTER `TerrainSwapMap`; + +DELETE FROM `terrain_worldmap` WHERE `TerrainSwapMap`=638; +UPDATE `terrain_worldmap` SET `UiMapPhaseId`=52 WHERE `TerrainSwapMap`=655; +UPDATE `terrain_worldmap` SET `UiMapPhaseId`=54 WHERE `TerrainSwapMap`=656; +UPDATE `terrain_worldmap` SET `UiMapPhaseId`=165 WHERE `TerrainSwapMap`=719; +UPDATE `terrain_worldmap` SET `UiMapPhaseId`=2801 WHERE `TerrainSwapMap`=545; + +ALTER TABLE `terrain_worldmap` + ADD PRIMARY KEY(`TerrainSwapMap`,`UiMapPhaseId`), + DROP `WorldMapArea`; diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index 8c1bb487363..a0646a0b1c1 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -32,9 +32,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() m_stmts.resize(MAX_HOTFIXDATABASE_STATEMENTS); // Achievement.db2 - PrepareStatement(HOTFIX_SEL_ACHIEVEMENT, "SELECT Title, Description, Reward, Flags, InstanceID, Supercedes, Category, UiOrder, SharesCriteria, " - "Faction, Points, MinimumCriteria, ID, IconFileID, CriteriaTree FROM achievement ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_ACHIEVEMENT, "SELECT ID, Title_lang, Description_lang, Reward_lang FROM achievement_locale WHERE locale = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ACHIEVEMENT, "SELECT Description, Title, Reward, ID, InstanceID, Faction, Supercedes, Category, MinimumCriteria, " + "Points, Flags, UiOrder, IconFileID, CriteriaTree, SharesCriteria FROM achievement ORDER BY ID DESC", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_ACHIEVEMENT, "SELECT ID, Description_lang, Title_lang, Reward_lang FROM achievement_locale WHERE locale = ?", CONNECTION_SYNCH); // AnimKit.db2 PrepareStatement(HOTFIX_SEL_ANIM_KIT, "SELECT ID, OneShotDuration, OneShotStopAnimKitID, LowDefAnimKitID FROM anim_kit ORDER BY ID DESC", CONNECTION_SYNCH); @@ -43,34 +43,34 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_AREA_GROUP_MEMBER, "SELECT ID, AreaID, AreaGroupID FROM area_group_member ORDER BY ID DESC", CONNECTION_SYNCH); // AreaTable.db2 - PrepareStatement(HOTFIX_SEL_AREA_TABLE, "SELECT ID, ZoneName, AreaName, Flags1, Flags2, AmbientMultiplier, ContinentID, ParentAreaID, AreaBit, " - "AmbienceID, ZoneMusic, IntroSound, LiquidTypeID1, LiquidTypeID2, LiquidTypeID3, LiquidTypeID4, UwZoneMusic, UwAmbience, " - "PvpCombatWorldStateID, SoundProviderPref, SoundProviderPrefUnderwater, ExplorationLevel, FactionGroupMask, MountFlags, " - "WildBattlePetLevelMin, WildBattlePetLevelMax, WindSettingsID, UwIntroSound FROM area_table ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_AREA_TABLE, "SELECT ID, ZoneName, AreaName, ContinentID, ParentAreaID, AreaBit, SoundProviderPref, " + "SoundProviderPrefUnderwater, AmbienceID, UwAmbience, ZoneMusic, UwZoneMusic, ExplorationLevel, IntroSound, UwIntroSound, FactionGroupMask, " + "AmbientMultiplier, MountFlags, PvpCombatWorldStateID, WildBattlePetLevelMin, WildBattlePetLevelMax, WindSettingsID, Flags1, Flags2, " + "LiquidTypeID1, LiquidTypeID2, LiquidTypeID3, LiquidTypeID4 FROM area_table ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_AREA_TABLE, "SELECT ID, AreaName_lang FROM area_table_locale WHERE locale = ?", CONNECTION_SYNCH); // AreaTrigger.db2 - PrepareStatement(HOTFIX_SEL_AREA_TRIGGER, "SELECT PosX, PosY, PosZ, Radius, BoxLength, BoxWidth, BoxHeight, BoxYaw, ContinentID, PhaseID, " - "PhaseGroupID, ShapeID, AreaTriggerActionSetID, PhaseUseFlags, ShapeType, Flags, ID FROM area_trigger ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_AREA_TRIGGER, "SELECT PosX, PosY, PosZ, ID, ContinentID, PhaseUseFlags, PhaseID, PhaseGroupID, Radius, BoxLength, " + "BoxWidth, BoxHeight, BoxYaw, ShapeType, ShapeID, AreaTriggerActionSetID, Flags FROM area_trigger ORDER BY ID DESC", CONNECTION_SYNCH); // ArmorLocation.db2 PrepareStatement(HOTFIX_SEL_ARMOR_LOCATION, "SELECT ID, Clothmodifier, Leathermodifier, Chainmodifier, Platemodifier, Modifier FROM armor_location" " ORDER BY ID DESC", CONNECTION_SYNCH); // Artifact.db2 - PrepareStatement(HOTFIX_SEL_ARTIFACT, "SELECT ID, Name, UiBarOverlayColor, UiBarBackgroundColor, UiNameColor, UiTextureKitID, " - "ChrSpecializationID, ArtifactCategoryID, Flags, UiModelSceneID, SpellVisualKitID FROM artifact ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ARTIFACT, "SELECT Name, ID, UiTextureKitID, UiNameColor, UiBarOverlayColor, UiBarBackgroundColor, " + "ChrSpecializationID, Flags, ArtifactCategoryID, UiModelSceneID, SpellVisualKitID FROM artifact ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ARTIFACT, "SELECT ID, Name_lang FROM artifact_locale WHERE locale = ?", CONNECTION_SYNCH); // ArtifactAppearance.db2 - PrepareStatement(HOTFIX_SEL_ARTIFACT_APPEARANCE, "SELECT Name, UiSwatchColor, UiModelSaturation, UiModelOpacity, OverrideShapeshiftDisplayID, " - "ArtifactAppearanceSetID, UiCameraID, DisplayIndex, ItemAppearanceModifierID, Flags, OverrideShapeshiftFormID, ID, UnlockPlayerConditionID, " - "UiItemAppearanceID, UiAltItemAppearanceID FROM artifact_appearance ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ARTIFACT_APPEARANCE, "SELECT Name, ID, ArtifactAppearanceSetID, DisplayIndex, UnlockPlayerConditionID, " + "ItemAppearanceModifierID, UiSwatchColor, UiModelSaturation, UiModelOpacity, OverrideShapeshiftFormID, OverrideShapeshiftDisplayID, " + "UiItemAppearanceID, UiAltItemAppearanceID, Flags, UiCameraID FROM artifact_appearance ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ARTIFACT_APPEARANCE, "SELECT ID, Name_lang FROM artifact_appearance_locale WHERE locale = ?", CONNECTION_SYNCH); // ArtifactAppearanceSet.db2 - PrepareStatement(HOTFIX_SEL_ARTIFACT_APPEARANCE_SET, "SELECT Name, Description, UiCameraID, AltHandUICameraID, DisplayIndex, " - "ForgeAttachmentOverride, Flags, ID, ArtifactID FROM artifact_appearance_set ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ARTIFACT_APPEARANCE_SET, "SELECT Name, Description, ID, DisplayIndex, UiCameraID, AltHandUICameraID, " + "ForgeAttachmentOverride, Flags, ArtifactID FROM artifact_appearance_set ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ARTIFACT_APPEARANCE_SET, "SELECT ID, Name_lang, Description_lang FROM artifact_appearance_set_locale" " WHERE locale = ?", CONNECTION_SYNCH); @@ -78,8 +78,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_ARTIFACT_CATEGORY, "SELECT ID, XpMultCurrencyID, XpMultCurveID FROM artifact_category ORDER BY ID DESC", CONNECTION_SYNCH); // ArtifactPower.db2 - PrepareStatement(HOTFIX_SEL_ARTIFACT_POWER, "SELECT PosX, PosY, ArtifactID, Flags, MaxPurchasableRank, Tier, ID, Label FROM artifact_power" - " ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ARTIFACT_POWER, "SELECT DisplayPosX, DisplayPosY, ID, ArtifactID, MaxPurchasableRank, Label, Flags, Tier" + " FROM artifact_power ORDER BY ID DESC", CONNECTION_SYNCH); // ArtifactPowerLink.db2 PrepareStatement(HOTFIX_SEL_ARTIFACT_POWER_LINK, "SELECT ID, PowerA, PowerB FROM artifact_power_link ORDER BY ID DESC", CONNECTION_SYNCH); @@ -88,7 +88,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_ARTIFACT_POWER_PICKER, "SELECT ID, PlayerConditionID FROM artifact_power_picker ORDER BY ID DESC", CONNECTION_SYNCH); // ArtifactPowerRank.db2 - PrepareStatement(HOTFIX_SEL_ARTIFACT_POWER_RANK, "SELECT ID, SpellID, AuraPointsOverride, ItemBonusListID, RankIndex, ArtifactPowerID" + PrepareStatement(HOTFIX_SEL_ARTIFACT_POWER_RANK, "SELECT ID, RankIndex, SpellID, ItemBonusListID, AuraPointsOverride, ArtifactPowerID" " FROM artifact_power_rank ORDER BY ID DESC", CONNECTION_SYNCH); // ArtifactQuestXp.db2 @@ -100,7 +100,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() "MinimumEmpowerKnowledge FROM artifact_tier ORDER BY ID DESC", CONNECTION_SYNCH); // ArtifactUnlock.db2 - PrepareStatement(HOTFIX_SEL_ARTIFACT_UNLOCK, "SELECT ID, ItemBonusListID, PowerRank, PowerID, PlayerConditionID, ArtifactID FROM artifact_unlock" + PrepareStatement(HOTFIX_SEL_ARTIFACT_UNLOCK, "SELECT ID, PowerID, PowerRank, ItemBonusListID, PlayerConditionID, ArtifactID FROM artifact_unlock" " ORDER BY ID DESC", CONNECTION_SYNCH); // AuctionHouse.db2 @@ -114,7 +114,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_BANNED_ADDONS, "SELECT ID, Name, Version, Flags FROM banned_addons ORDER BY ID DESC", CONNECTION_SYNCH); // BarberShopStyle.db2 - PrepareStatement(HOTFIX_SEL_BARBER_SHOP_STYLE, "SELECT DisplayName, Description, CostModifier, Type, Race, Sex, Data, ID FROM barber_shop_style" + PrepareStatement(HOTFIX_SEL_BARBER_SHOP_STYLE, "SELECT DisplayName, Description, ID, Type, CostModifier, Race, Sex, Data FROM barber_shop_style" " ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_BARBER_SHOP_STYLE, "SELECT ID, DisplayName_lang, Description_lang FROM barber_shop_style_locale WHERE locale = ?", CONNECTION_SYNCH); @@ -122,50 +122,50 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_BATTLE_PET_BREED_QUALITY, "SELECT ID, StateMultiplier, QualityEnum FROM battle_pet_breed_quality ORDER BY ID DESC", CONNECTION_SYNCH); // BattlePetBreedState.db2 - PrepareStatement(HOTFIX_SEL_BATTLE_PET_BREED_STATE, "SELECT ID, Value, BattlePetStateID, BattlePetBreedID FROM battle_pet_breed_state" + PrepareStatement(HOTFIX_SEL_BATTLE_PET_BREED_STATE, "SELECT ID, BattlePetStateID, Value, BattlePetBreedID FROM battle_pet_breed_state" " ORDER BY ID DESC", CONNECTION_SYNCH); // BattlePetSpecies.db2 - PrepareStatement(HOTFIX_SEL_BATTLE_PET_SPECIES, "SELECT SourceText, Description, CreatureID, IconFileDataID, SummonSpellID, Flags, PetTypeEnum, " - "SourceTypeEnum, ID, CardUIModelSceneID, LoadoutUIModelSceneID FROM battle_pet_species ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_BATTLE_PET_SPECIES, "SELECT ID, SourceText_lang, Description_lang FROM battle_pet_species_locale WHERE locale = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_BATTLE_PET_SPECIES, "SELECT Description, SourceText, ID, CreatureID, SummonSpellID, IconFileDataID, PetTypeEnum, " + "Flags, SourceTypeEnum, CardUIModelSceneID, LoadoutUIModelSceneID FROM battle_pet_species ORDER BY ID DESC", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_BATTLE_PET_SPECIES, "SELECT ID, Description_lang, SourceText_lang FROM battle_pet_species_locale WHERE locale = ?", CONNECTION_SYNCH); // BattlePetSpeciesState.db2 - PrepareStatement(HOTFIX_SEL_BATTLE_PET_SPECIES_STATE, "SELECT ID, Value, BattlePetStateID, BattlePetSpeciesID FROM battle_pet_species_state" + PrepareStatement(HOTFIX_SEL_BATTLE_PET_SPECIES_STATE, "SELECT ID, BattlePetStateID, Value, BattlePetSpeciesID FROM battle_pet_species_state" " ORDER BY ID DESC", CONNECTION_SYNCH); // BattlemasterList.db2 - PrepareStatement(HOTFIX_SEL_BATTLEMASTER_LIST, "SELECT ID, Name, GameType, ShortDescription, LongDescription, IconFileDataID, MapID1, MapID2, " - "MapID3, MapID4, MapID5, MapID6, MapID7, MapID8, MapID9, MapID10, MapID11, MapID12, MapID13, MapID14, MapID15, MapID16, HolidayWorldState, " - "RequiredPlayerConditionID, InstanceType, GroupsAllowed, MaxGroupSize, MinLevel, MaxLevel, RatedPlayers, MinPlayers, MaxPlayers, Flags" + PrepareStatement(HOTFIX_SEL_BATTLEMASTER_LIST, "SELECT ID, Name, GameType, ShortDescription, LongDescription, InstanceType, MinLevel, MaxLevel, " + "RatedPlayers, MinPlayers, MaxPlayers, GroupsAllowed, MaxGroupSize, HolidayWorldState, Flags, IconFileDataID, RequiredPlayerConditionID, " + "MapID1, MapID2, MapID3, MapID4, MapID5, MapID6, MapID7, MapID8, MapID9, MapID10, MapID11, MapID12, MapID13, MapID14, MapID15, MapID16" " FROM battlemaster_list ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_BATTLEMASTER_LIST, "SELECT ID, Name_lang, GameType_lang, ShortDescription_lang, LongDescription_lang" " FROM battlemaster_list_locale WHERE locale = ?", CONNECTION_SYNCH); // BroadcastText.db2 - PrepareStatement(HOTFIX_SEL_BROADCAST_TEXT, "SELECT ID, Text, Text1, EmoteID1, EmoteID2, EmoteID3, EmoteDelay1, EmoteDelay2, EmoteDelay3, " - "EmotesID, LanguageID, Flags, ConditionID, SoundEntriesID1, SoundEntriesID2 FROM broadcast_text ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_BROADCAST_TEXT, "SELECT Text, Text1, ID, LanguageID, ConditionID, EmotesID, Flags, ChatBubbleDurationMs, " + "SoundEntriesID1, SoundEntriesID2, EmoteID1, EmoteID2, EmoteID3, EmoteDelay1, EmoteDelay2, EmoteDelay3 FROM broadcast_text ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_BROADCAST_TEXT, "SELECT ID, Text_lang, Text1_lang FROM broadcast_text_locale WHERE locale = ?", CONNECTION_SYNCH); // CfgRegions.db2 - PrepareStatement(HOTFIX_SEL_CFG_REGIONS, "SELECT ID, Tag, Raidorigin, ChallengeOrigin, RegionID, RegionGroupMask FROM cfg_regions ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CFG_REGIONS, "SELECT ID, Tag, RegionID, Raidorigin, RegionGroupMask, ChallengeOrigin FROM cfg_regions ORDER BY ID DESC", CONNECTION_SYNCH); // CharacterFacialHairStyles.db2 PrepareStatement(HOTFIX_SEL_CHARACTER_FACIAL_HAIR_STYLES, "SELECT ID, Geoset1, Geoset2, Geoset3, Geoset4, Geoset5, RaceID, SexID, VariationID" " FROM character_facial_hair_styles ORDER BY ID DESC", CONNECTION_SYNCH); // CharBaseSection.db2 - PrepareStatement(HOTFIX_SEL_CHAR_BASE_SECTION, "SELECT ID, VariationEnum, ResolutionVariationEnum, LayoutResType FROM char_base_section" + PrepareStatement(HOTFIX_SEL_CHAR_BASE_SECTION, "SELECT ID, LayoutResType, VariationEnum, ResolutionVariationEnum FROM char_base_section" " ORDER BY ID DESC", CONNECTION_SYNCH); // CharSections.db2 - PrepareStatement(HOTFIX_SEL_CHAR_SECTIONS, "SELECT ID, MaterialResourcesID1, MaterialResourcesID2, MaterialResourcesID3, Flags, RaceID, SexID, " - "BaseSection, VariationIndex, ColorIndex FROM char_sections ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CHAR_SECTIONS, "SELECT ID, RaceID, SexID, BaseSection, VariationIndex, ColorIndex, Flags, MaterialResourcesID1, " + "MaterialResourcesID2, MaterialResourcesID3 FROM char_sections ORDER BY ID DESC", CONNECTION_SYNCH); // CharStartOutfit.db2 - PrepareStatement(HOTFIX_SEL_CHAR_START_OUTFIT, "SELECT ID, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, ItemID6, ItemID7, ItemID8, ItemID9, " - "ItemID10, ItemID11, ItemID12, ItemID13, ItemID14, ItemID15, ItemID16, ItemID17, ItemID18, ItemID19, ItemID20, ItemID21, ItemID22, ItemID23, " - "ItemID24, PetDisplayID, ClassID, SexID, OutfitID, PetFamilyID, RaceID FROM char_start_outfit ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CHAR_START_OUTFIT, "SELECT ID, ClassID, SexID, OutfitID, PetDisplayID, PetFamilyID, ItemID1, ItemID2, ItemID3, " + "ItemID4, ItemID5, ItemID6, ItemID7, ItemID8, ItemID9, ItemID10, ItemID11, ItemID12, ItemID13, ItemID14, ItemID15, ItemID16, ItemID17, " + "ItemID18, ItemID19, ItemID20, ItemID21, ItemID22, ItemID23, ItemID24, RaceID FROM char_start_outfit ORDER BY ID DESC", CONNECTION_SYNCH); // CharTitles.db2 PrepareStatement(HOTFIX_SEL_CHAR_TITLES, "SELECT ID, Name, Name1, MaskID, Flags FROM char_titles ORDER BY ID DESC", CONNECTION_SYNCH); @@ -176,85 +176,90 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_CHAT_CHANNELS, "SELECT ID, Name_lang, Shortcut_lang FROM chat_channels_locale WHERE locale = ?", CONNECTION_SYNCH); // ChrClasses.db2 - PrepareStatement(HOTFIX_SEL_CHR_CLASSES, "SELECT PetNameToken, Name, NameFemale, NameMale, Filename, CreateScreenFileDataID, " - "SelectScreenFileDataID, LowResScreenFileDataID, IconFileDataID, StartingLevel, Flags, CinematicSequenceID, DefaultSpec, DisplayPower, " - "SpellClassSet, AttackPowerPerStrength, AttackPowerPerAgility, RangedAttackPowerPerAgility, PrimaryStatPriority, ID FROM chr_classes" - " ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_CLASSES, "SELECT ID, Name_lang, NameFemale_lang, NameMale_lang FROM chr_classes_locale WHERE locale = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CHR_CLASSES, "SELECT Name, Filename, NameMale, NameFemale, PetNameToken, ID, CreateScreenFileDataID, " + "SelectScreenFileDataID, IconFileDataID, LowResScreenFileDataID, StartingLevel, Flags, CinematicSequenceID, DefaultSpec, PrimaryStatPriority, " + "DisplayPower, RangedAttackPowerPerAgility, AttackPowerPerAgility, AttackPowerPerStrength, SpellClassSet FROM chr_classes ORDER BY ID DESC", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_CLASSES, "SELECT ID, Name_lang, NameMale_lang, NameFemale_lang FROM chr_classes_locale WHERE locale = ?", CONNECTION_SYNCH); // ChrClassesXPowerTypes.db2 PrepareStatement(HOTFIX_SEL_CHR_CLASSES_X_POWER_TYPES, "SELECT ID, PowerType, ClassID FROM chr_classes_x_power_types ORDER BY ID DESC", CONNECTION_SYNCH); // ChrRaces.db2 - PrepareStatement(HOTFIX_SEL_CHR_RACES, "SELECT ClientPrefix, ClientFileString, Name, NameFemale, NameLowercase, NameFemaleLowercase, Flags, " - "MaleDisplayId, FemaleDisplayId, CreateScreenFileDataID, SelectScreenFileDataID, MaleCustomizeOffset1, MaleCustomizeOffset2, " - "MaleCustomizeOffset3, FemaleCustomizeOffset1, FemaleCustomizeOffset2, FemaleCustomizeOffset3, LowResScreenFileDataID, StartingLevel, " - "UiDisplayOrder, FactionID, ResSicknessSpellID, SplashSoundID, CinematicSequenceID, BaseLanguage, CreatureType, Alliance, RaceRelated, " - "UnalteredVisualRaceID, CharComponentTextureLayoutID, DefaultClassID, NeutralRaceID, DisplayRaceID, CharComponentTexLayoutHiResID, ID, " - "HighResMaleDisplayId, HighResFemaleDisplayId, HeritageArmorAchievementID, MaleSkeletonFileDataID, FemaleSkeletonFileDataID, " - "AlteredFormStartVisualKitID1, AlteredFormStartVisualKitID2, AlteredFormStartVisualKitID3, AlteredFormFinishVisualKitID1, " - "AlteredFormFinishVisualKitID2, AlteredFormFinishVisualKitID3 FROM chr_races ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CHR_RACES, "SELECT ClientPrefix, ClientFileString, Name, NameFemale, NameLowercase, NameFemaleLowercase, ID, Flags, " + "MaleDisplayId, FemaleDisplayId, HighResMaleDisplayId, HighResFemaleDisplayId, CreateScreenFileDataID, SelectScreenFileDataID, " + "MaleCustomizeOffset1, MaleCustomizeOffset2, MaleCustomizeOffset3, FemaleCustomizeOffset1, FemaleCustomizeOffset2, FemaleCustomizeOffset3, " + "LowResScreenFileDataID, AlteredFormStartVisualKitID1, AlteredFormStartVisualKitID2, AlteredFormStartVisualKitID3, " + "AlteredFormFinishVisualKitID1, AlteredFormFinishVisualKitID2, AlteredFormFinishVisualKitID3, HeritageArmorAchievementID, StartingLevel, " + "UiDisplayOrder, FemaleSkeletonFileDataID, MaleSkeletonFileDataID, HelmVisFallbackRaceID, FactionID, CinematicSequenceID, ResSicknessSpellID, " + "SplashSoundID, BaseLanguage, CreatureType, Alliance, RaceRelated, UnalteredVisualRaceID, CharComponentTextureLayoutID, " + "CharComponentTexLayoutHiResID, DefaultClassID, NeutralRaceID, MaleModelFallbackRaceID, MaleModelFallbackSex, FemaleModelFallbackRaceID, " + "FemaleModelFallbackSex, MaleTextureFallbackRaceID, MaleTextureFallbackSex, FemaleTextureFallbackRaceID, FemaleTextureFallbackSex" + " FROM chr_races ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_RACES, "SELECT ID, Name_lang, NameFemale_lang, NameLowercase_lang, NameFemaleLowercase_lang" " FROM chr_races_locale WHERE locale = ?", CONNECTION_SYNCH); // ChrSpecialization.db2 - PrepareStatement(HOTFIX_SEL_CHR_SPECIALIZATION, "SELECT Name, FemaleName, Description, MasterySpellID1, MasterySpellID2, ClassID, OrderIndex, " - "PetTalentType, Role, PrimaryStatPriority, ID, SpellIconFileID, Flags, AnimReplacements FROM chr_specialization ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CHR_SPECIALIZATION, "SELECT Name, FemaleName, Description, ID, ClassID, OrderIndex, PetTalentType, Role, Flags, " + "SpellIconFileID, PrimaryStatPriority, AnimReplacements, MasterySpellID1, MasterySpellID2 FROM chr_specialization ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_SPECIALIZATION, "SELECT ID, Name_lang, FemaleName_lang, Description_lang FROM chr_specialization_locale" " WHERE locale = ?", CONNECTION_SYNCH); // CinematicCamera.db2 - PrepareStatement(HOTFIX_SEL_CINEMATIC_CAMERA, "SELECT ID, SoundID, OriginX, OriginY, OriginZ, OriginFacing, FileDataID FROM cinematic_camera" + PrepareStatement(HOTFIX_SEL_CINEMATIC_CAMERA, "SELECT ID, OriginX, OriginY, OriginZ, SoundID, OriginFacing, FileDataID FROM cinematic_camera" " ORDER BY ID DESC", CONNECTION_SYNCH); // CinematicSequences.db2 PrepareStatement(HOTFIX_SEL_CINEMATIC_SEQUENCES, "SELECT ID, SoundID, Camera1, Camera2, Camera3, Camera4, Camera5, Camera6, Camera7, Camera8" " FROM cinematic_sequences ORDER BY ID DESC", CONNECTION_SYNCH); + // ContentTuning.db2 + PrepareStatement(HOTFIX_SEL_CONTENT_TUNING, "SELECT ID, MinLevel, MaxLevel, Flags, ExpectedStatModID, DifficultyESMID FROM content_tuning" + " ORDER BY ID DESC", CONNECTION_SYNCH); + // ConversationLine.db2 PrepareStatement(HOTFIX_SEL_CONVERSATION_LINE, "SELECT ID, BroadcastTextID, SpellVisualKitID, AdditionalDuration, NextConversationLineID, " "AnimKitID, SpeechType, StartAnimation, EndAnimation FROM conversation_line ORDER BY ID DESC", CONNECTION_SYNCH); // CreatureDisplayInfo.db2 - PrepareStatement(HOTFIX_SEL_CREATURE_DISPLAY_INFO, "SELECT ID, CreatureModelScale, ModelID, NPCSoundID, SizeClass, Flags, Gender, " - "ExtendedDisplayInfoID, PortraitTextureFileDataID, CreatureModelAlpha, SoundID, PlayerOverrideScale, PortraitCreatureDisplayInfoID, BloodID, " - "ParticleColorID, CreatureGeosetData, ObjectEffectPackageID, AnimReplacementSetID, UnarmedWeaponType, StateSpellVisualKitID, " - "PetInstanceScale, MountPoofSpellVisualKitID, TextureVariationFileDataID1, TextureVariationFileDataID2, TextureVariationFileDataID3" - " FROM creature_display_info ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CREATURE_DISPLAY_INFO, "SELECT ID, ModelID, SoundID, SizeClass, CreatureModelScale, CreatureModelAlpha, BloodID, " + "ExtendedDisplayInfoID, NPCSoundID, ParticleColorID, PortraitCreatureDisplayInfoID, PortraitTextureFileDataID, ObjectEffectPackageID, " + "AnimReplacementSetID, Flags, StateSpellVisualKitID, PlayerOverrideScale, PetInstanceScale, UnarmedWeaponType, MountPoofSpellVisualKitID, " + "DissolveEffectID, Gender, DissolveOutEffectID, CreatureModelMinLod, TextureVariationFileDataID1, TextureVariationFileDataID2, " + "TextureVariationFileDataID3 FROM creature_display_info ORDER BY ID DESC", CONNECTION_SYNCH); // CreatureDisplayInfoExtra.db2 - PrepareStatement(HOTFIX_SEL_CREATURE_DISPLAY_INFO_EXTRA, "SELECT ID, BakeMaterialResourcesID, HDBakeMaterialResourcesID, DisplayRaceID, " - "DisplaySexID, DisplayClassID, SkinID, FaceID, HairStyleID, HairColorID, FacialHairID, CustomDisplayOption1, CustomDisplayOption2, " - "CustomDisplayOption3, Flags FROM creature_display_info_extra ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CREATURE_DISPLAY_INFO_EXTRA, "SELECT ID, DisplayRaceID, DisplaySexID, DisplayClassID, SkinID, FaceID, HairStyleID, " + "HairColorID, FacialHairID, Flags, BakeMaterialResourcesID, HDBakeMaterialResourcesID, CustomDisplayOption1, CustomDisplayOption2, " + "CustomDisplayOption3 FROM creature_display_info_extra ORDER BY ID DESC", CONNECTION_SYNCH); // CreatureFamily.db2 - PrepareStatement(HOTFIX_SEL_CREATURE_FAMILY, "SELECT ID, Name, MinScale, MaxScale, IconFileID, SkillLine1, SkillLine2, PetFoodMask, " - "MinScaleLevel, MaxScaleLevel, PetTalentType FROM creature_family ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CREATURE_FAMILY, "SELECT ID, Name, MinScale, MinScaleLevel, MaxScale, MaxScaleLevel, PetFoodMask, PetTalentType, " + "IconFileID, SkillLine1, SkillLine2 FROM creature_family ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CREATURE_FAMILY, "SELECT ID, Name_lang FROM creature_family_locale WHERE locale = ?", CONNECTION_SYNCH); // CreatureModelData.db2 - PrepareStatement(HOTFIX_SEL_CREATURE_MODEL_DATA, "SELECT ID, ModelScale, FootprintTextureLength, FootprintTextureWidth, FootprintParticleScale, " - "CollisionWidth, CollisionHeight, MountHeight, GeoBox1, GeoBox2, GeoBox3, GeoBox4, GeoBox5, GeoBox6, WorldEffectScale, AttachedEffectScale, " - "MissileCollisionRadius, MissileCollisionPush, MissileCollisionRaise, OverrideLootEffectScale, OverrideNameScale, OverrideSelectionRadius, " - "TamedPetBaseScale, HoverHeight, Flags, FileDataID, SizeClass, BloodID, FootprintTextureID, FoleyMaterialID, FootstepCameraEffectID, " - "DeathThudCameraEffectID, SoundID, CreatureGeosetDataID FROM creature_model_data ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CREATURE_MODEL_DATA, "SELECT ID, GeoBox1, GeoBox2, GeoBox3, GeoBox4, GeoBox5, GeoBox6, Flags, FileDataID, BloodID, " + "FootprintTextureID, FootprintTextureLength, FootprintTextureWidth, FootprintParticleScale, FoleyMaterialID, FootstepCameraEffectID, " + "DeathThudCameraEffectID, SoundID, SizeClass, CollisionWidth, CollisionHeight, WorldEffectScale, CreatureGeosetDataID, HoverHeight, " + "AttachedEffectScale, ModelScale, MissileCollisionRadius, MissileCollisionPush, MissileCollisionRaise, MountHeight, OverrideLootEffectScale, " + "OverrideNameScale, OverrideSelectionRadius, TamedPetBaseScale FROM creature_model_data ORDER BY ID DESC", CONNECTION_SYNCH); // CreatureType.db2 PrepareStatement(HOTFIX_SEL_CREATURE_TYPE, "SELECT ID, Name, Flags FROM creature_type ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CREATURE_TYPE, "SELECT ID, Name_lang FROM creature_type_locale WHERE locale = ?", CONNECTION_SYNCH); // Criteria.db2 - PrepareStatement(HOTFIX_SEL_CRITERIA, "SELECT ID, Asset, StartAsset, FailAsset, ModifierTreeId, StartTimer, EligibilityWorldStateID, Type, " - "StartEvent, FailEvent, Flags, EligibilityWorldStateValue FROM criteria ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CRITERIA, "SELECT ID, Type, Asset, ModifierTreeId, StartEvent, StartAsset, StartTimer, FailEvent, FailAsset, Flags, " + "EligibilityWorldStateID, EligibilityWorldStateValue FROM criteria ORDER BY ID DESC", CONNECTION_SYNCH); // CriteriaTree.db2 - PrepareStatement(HOTFIX_SEL_CRITERIA_TREE, "SELECT ID, Description, Amount, Flags, Operator, CriteriaID, Parent, OrderIndex FROM criteria_tree" + PrepareStatement(HOTFIX_SEL_CRITERIA_TREE, "SELECT ID, Description, Parent, Amount, Operator, CriteriaID, OrderIndex, Flags FROM criteria_tree" " ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CRITERIA_TREE, "SELECT ID, Description_lang FROM criteria_tree_locale WHERE locale = ?", CONNECTION_SYNCH); // CurrencyTypes.db2 - PrepareStatement(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, Name, Description, MaxQty, MaxEarnablePerWeek, Flags, CategoryID, SpellCategory, Quality, " - "InventoryIconFileID, SpellWeight FROM currency_types ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, Name, Description, CategoryID, InventoryIconFileID, SpellWeight, SpellCategory, MaxQty, " + "MaxEarnablePerWeek, Flags, Quality, FactionID FROM currency_types ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, Name_lang, Description_lang FROM currency_types_locale WHERE locale = ?", CONNECTION_SYNCH); // Curve.db2 @@ -264,20 +269,20 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_CURVE_POINT, "SELECT ID, PosX, PosY, CurveID, OrderIndex FROM curve_point ORDER BY ID DESC", CONNECTION_SYNCH); // DestructibleModelData.db2 - PrepareStatement(HOTFIX_SEL_DESTRUCTIBLE_MODEL_DATA, "SELECT ID, State0Wmo, State1Wmo, State2Wmo, State3Wmo, HealEffectSpeed, " - "State0ImpactEffectDoodadSet, State0AmbientDoodadSet, State0NameSet, State1DestructionDoodadSet, State1ImpactEffectDoodadSet, " - "State1AmbientDoodadSet, State1NameSet, State2DestructionDoodadSet, State2ImpactEffectDoodadSet, State2AmbientDoodadSet, State2NameSet, " - "State3InitDoodadSet, State3AmbientDoodadSet, State3NameSet, EjectDirection, DoNotHighlight, HealEffect FROM destructible_model_data" + PrepareStatement(HOTFIX_SEL_DESTRUCTIBLE_MODEL_DATA, "SELECT ID, State0ImpactEffectDoodadSet, State0AmbientDoodadSet, State1Wmo, " + "State1DestructionDoodadSet, State1ImpactEffectDoodadSet, State1AmbientDoodadSet, State2Wmo, State2DestructionDoodadSet, " + "State2ImpactEffectDoodadSet, State2AmbientDoodadSet, State3Wmo, State3InitDoodadSet, State3AmbientDoodadSet, EjectDirection, DoNotHighlight, " + "State0Wmo, HealEffect, HealEffectSpeed, State0NameSet, State1NameSet, State2NameSet, State3NameSet FROM destructible_model_data" " ORDER BY ID DESC", CONNECTION_SYNCH); // Difficulty.db2 - PrepareStatement(HOTFIX_SEL_DIFFICULTY, "SELECT ID, Name, GroupSizeHealthCurveID, GroupSizeDmgCurveID, GroupSizeSpellPointsCurveID, " - "FallbackDifficultyID, InstanceType, MinPlayers, MaxPlayers, OldEnumValue, Flags, ToggleDifficultyID, ItemContext, OrderIndex FROM difficulty" + PrepareStatement(HOTFIX_SEL_DIFFICULTY, "SELECT ID, Name, InstanceType, OrderIndex, OldEnumValue, FallbackDifficultyID, MinPlayers, MaxPlayers, " + "Flags, ItemContext, ToggleDifficultyID, GroupSizeHealthCurveID, GroupSizeDmgCurveID, GroupSizeSpellPointsCurveID FROM difficulty" " ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_DIFFICULTY, "SELECT ID, Name_lang FROM difficulty_locale WHERE locale = ?", CONNECTION_SYNCH); // DungeonEncounter.db2 - PrepareStatement(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT Name, CreatureDisplayID, MapID, DifficultyID, Bit, Flags, ID, OrderIndex, SpellIconFileID" + PrepareStatement(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT Name, ID, MapID, DifficultyID, OrderIndex, Bit, CreatureDisplayID, Flags, SpellIconFileID" " FROM dungeon_encounter ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT ID, Name_lang FROM dungeon_encounter_locale WHERE locale = ?", CONNECTION_SYNCH); @@ -293,78 +298,85 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_DURABILITY_QUALITY, "SELECT ID, Data FROM durability_quality ORDER BY ID DESC", CONNECTION_SYNCH); // Emotes.db2 - PrepareStatement(HOTFIX_SEL_EMOTES, "SELECT ID, RaceMask, EmoteSlashCommand, EmoteFlags, SpellVisualKitID, AnimID, EmoteSpecProc, ClassMask, " - "EmoteSpecProcParam, EventSoundID FROM emotes ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_EMOTES, "SELECT ID, RaceMask, EmoteSlashCommand, AnimID, EmoteFlags, EmoteSpecProc, EmoteSpecProcParam, EventSoundID, " + "SpellVisualKitID, ClassMask FROM emotes ORDER BY ID DESC", CONNECTION_SYNCH); // EmotesText.db2 PrepareStatement(HOTFIX_SEL_EMOTES_TEXT, "SELECT ID, Name, EmoteID FROM emotes_text ORDER BY ID DESC", CONNECTION_SYNCH); // EmotesTextSound.db2 - PrepareStatement(HOTFIX_SEL_EMOTES_TEXT_SOUND, "SELECT ID, RaceID, SexID, ClassID, SoundID, EmotesTextID FROM emotes_text_sound ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_EMOTES_TEXT_SOUND, "SELECT ID, RaceID, ClassID, SexID, SoundID, EmotesTextID FROM emotes_text_sound ORDER BY ID DESC", CONNECTION_SYNCH); + + // ExpectedStat.db2 + PrepareStatement(HOTFIX_SEL_EXPECTED_STAT, "SELECT ID, ExpansionID, CreatureHealth, PlayerHealth, CreatureAutoAttackDps, CreatureArmor, " + "PlayerMana, PlayerPrimaryStat, PlayerSecondaryStat, ArmorConstant, CreatureSpellDamage, Lvl FROM expected_stat ORDER BY ID DESC", CONNECTION_SYNCH); + + // ExpectedStatMod.db2 + PrepareStatement(HOTFIX_SEL_EXPECTED_STAT_MOD, "SELECT ID, CreatureHealthMod, PlayerHealthMod, CreatureAutoAttackDPSMod, CreatureArmorMod, " + "PlayerManaMod, PlayerPrimaryStatMod, PlayerSecondaryStatMod, ArmorConstantMod, CreatureSpellDamageMod FROM expected_stat_mod ORDER BY ID DESC", CONNECTION_SYNCH); // Faction.db2 PrepareStatement(HOTFIX_SEL_FACTION, "SELECT ReputationRaceMask1, ReputationRaceMask2, ReputationRaceMask3, ReputationRaceMask4, Name, " - "Description, ID, ReputationBase1, ReputationBase2, ReputationBase3, ReputationBase4, ParentFactionMod1, ParentFactionMod2, ReputationMax1, " - "ReputationMax2, ReputationMax3, ReputationMax4, ReputationIndex, ReputationClassMask1, ReputationClassMask2, ReputationClassMask3, " - "ReputationClassMask4, ReputationFlags1, ReputationFlags2, ReputationFlags3, ReputationFlags4, ParentFactionID, ParagonFactionID, " - "ParentFactionCap1, ParentFactionCap2, Expansion, Flags, FriendshipRepID FROM faction ORDER BY ID DESC", CONNECTION_SYNCH); + "Description, ID, ReputationIndex, ParentFactionID, Expansion, FriendshipRepID, Flags, ParagonFactionID, ReputationClassMask1, " + "ReputationClassMask2, ReputationClassMask3, ReputationClassMask4, ReputationFlags1, ReputationFlags2, ReputationFlags3, ReputationFlags4, " + "ReputationBase1, ReputationBase2, ReputationBase3, ReputationBase4, ReputationMax1, ReputationMax2, ReputationMax3, ReputationMax4, " + "ParentFactionMod1, ParentFactionMod2, ParentFactionCap1, ParentFactionCap2 FROM faction ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_FACTION, "SELECT ID, Name_lang, Description_lang FROM faction_locale WHERE locale = ?", CONNECTION_SYNCH); // FactionTemplate.db2 - PrepareStatement(HOTFIX_SEL_FACTION_TEMPLATE, "SELECT ID, Faction, Flags, Enemies1, Enemies2, Enemies3, Enemies4, Friend1, Friend2, Friend3, " - "Friend4, FactionGroup, FriendGroup, EnemyGroup FROM faction_template ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_FACTION_TEMPLATE, "SELECT ID, Faction, Flags, FactionGroup, FriendGroup, EnemyGroup, Enemies1, Enemies2, Enemies3, " + "Enemies4, Friend1, Friend2, Friend3, Friend4 FROM faction_template ORDER BY ID DESC", CONNECTION_SYNCH); // GameobjectDisplayInfo.db2 - PrepareStatement(HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT ID, FileDataID, GeoBoxMinX, GeoBoxMinY, GeoBoxMinZ, GeoBoxMaxX, GeoBoxMaxY, " - "GeoBoxMaxZ, OverrideLootEffectScale, OverrideNameScale, ObjectEffectPackageID FROM gameobject_display_info ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT ID, GeoBoxMinX, GeoBoxMinY, GeoBoxMinZ, GeoBoxMaxX, GeoBoxMaxY, GeoBoxMaxZ, " + "FileDataID, ObjectEffectPackageID, OverrideLootEffectScale, OverrideNameScale FROM gameobject_display_info ORDER BY ID DESC", CONNECTION_SYNCH); // Gameobjects.db2 - PrepareStatement(HOTFIX_SEL_GAMEOBJECTS, "SELECT Name, PosX, PosY, PosZ, Rot1, Rot2, Rot3, Rot4, Scale, PropValue1, PropValue2, PropValue3, " - "PropValue4, PropValue5, PropValue6, PropValue7, PropValue8, OwnerID, DisplayID, PhaseID, PhaseGroupID, PhaseUseFlags, TypeID, ID" + PrepareStatement(HOTFIX_SEL_GAMEOBJECTS, "SELECT Name, PosX, PosY, PosZ, Rot1, Rot2, Rot3, Rot4, ID, OwnerID, DisplayID, Scale, TypeID, " + "PhaseUseFlags, PhaseID, PhaseGroupID, PropValue1, PropValue2, PropValue3, PropValue4, PropValue5, PropValue6, PropValue7, PropValue8" " FROM gameobjects ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_GAMEOBJECTS, "SELECT ID, Name_lang FROM gameobjects_locale WHERE locale = ?", CONNECTION_SYNCH); // GarrAbility.db2 - PrepareStatement(HOTFIX_SEL_GARR_ABILITY, "SELECT Name, Description, IconFileDataID, Flags, FactionChangeGarrAbilityID, GarrAbilityCategoryID, " - "GarrFollowerTypeID, ID FROM garr_ability ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GARR_ABILITY, "SELECT Name, Description, ID, GarrAbilityCategoryID, GarrFollowerTypeID, IconFileDataID, " + "FactionChangeGarrAbilityID, Flags FROM garr_ability ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_ABILITY, "SELECT ID, Name_lang, Description_lang FROM garr_ability_locale WHERE locale = ?", CONNECTION_SYNCH); // GarrBuilding.db2 - PrepareStatement(HOTFIX_SEL_GARR_BUILDING, "SELECT ID, AllianceName, HordeName, Description, Tooltip, HordeGameObjectID, AllianceGameObjectID, " - "IconFileDataID, CurrencyTypeID, HordeUiTextureKitID, AllianceUiTextureKitID, AllianceSceneScriptPackageID, HordeSceneScriptPackageID, " - "GarrAbilityID, BonusGarrAbilityID, GoldCost, GarrSiteID, BuildingType, UpgradeLevel, Flags, ShipmentCapacity, GarrTypeID, BuildSeconds, " - "CurrencyQty, MaxAssignments FROM garr_building ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_BUILDING, "SELECT ID, AllianceName_lang, HordeName_lang, Description_lang, Tooltip_lang" + PrepareStatement(HOTFIX_SEL_GARR_BUILDING, "SELECT ID, HordeName, AllianceName, Description, Tooltip, GarrTypeID, BuildingType, " + "HordeGameObjectID, AllianceGameObjectID, GarrSiteID, UpgradeLevel, BuildSeconds, CurrencyTypeID, CurrencyQty, HordeUiTextureKitID, " + "AllianceUiTextureKitID, IconFileDataID, AllianceSceneScriptPackageID, HordeSceneScriptPackageID, MaxAssignments, ShipmentCapacity, " + "GarrAbilityID, BonusGarrAbilityID, GoldCost, Flags FROM garr_building ORDER BY ID DESC", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_BUILDING, "SELECT ID, HordeName_lang, AllianceName_lang, Description_lang, Tooltip_lang" " FROM garr_building_locale WHERE locale = ?", CONNECTION_SYNCH); // GarrBuildingPlotInst.db2 - PrepareStatement(HOTFIX_SEL_GARR_BUILDING_PLOT_INST, "SELECT MapOffsetX, MapOffsetY, UiTextureAtlasMemberID, GarrSiteLevelPlotInstID, " - "GarrBuildingID, ID FROM garr_building_plot_inst ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GARR_BUILDING_PLOT_INST, "SELECT MapOffsetX, MapOffsetY, ID, GarrBuildingID, GarrSiteLevelPlotInstID, " + "UiTextureAtlasMemberID FROM garr_building_plot_inst ORDER BY ID DESC", CONNECTION_SYNCH); // GarrClassSpec.db2 - PrepareStatement(HOTFIX_SEL_GARR_CLASS_SPEC, "SELECT ClassSpec, ClassSpecMale, ClassSpecFemale, UiTextureAtlasMemberID, GarrFollItemSetID, " - "FollowerClassLimit, Flags, ID FROM garr_class_spec ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GARR_CLASS_SPEC, "SELECT ClassSpec, ClassSpecMale, ClassSpecFemale, ID, UiTextureAtlasMemberID, GarrFollItemSetID, " + "FollowerClassLimit, Flags FROM garr_class_spec ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_CLASS_SPEC, "SELECT ID, ClassSpec_lang, ClassSpecMale_lang, ClassSpecFemale_lang FROM garr_class_spec_locale" " WHERE locale = ?", CONNECTION_SYNCH); // GarrFollower.db2 - PrepareStatement(HOTFIX_SEL_GARR_FOLLOWER, "SELECT HordeSourceText, AllianceSourceText, TitleName, HordeCreatureID, AllianceCreatureID, " - "HordeIconFileDataID, AllianceIconFileDataID, HordeSlottingBroadcastTextID, AllySlottingBroadcastTextID, HordeGarrFollItemSetID, " - "AllianceGarrFollItemSetID, ItemLevelWeapon, ItemLevelArmor, HordeUITextureKitID, AllianceUITextureKitID, GarrFollowerTypeID, " - "HordeGarrFollRaceID, AllianceGarrFollRaceID, Quality, HordeGarrClassSpecID, AllianceGarrClassSpecID, FollowerLevel, Gender, Flags, " - "HordeSourceTypeEnum, AllianceSourceTypeEnum, GarrTypeID, Vitality, ChrClassID, HordeFlavorGarrStringID, AllianceFlavorGarrStringID, ID" - " FROM garr_follower ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GARR_FOLLOWER, "SELECT HordeSourceText, AllianceSourceText, TitleName, ID, GarrTypeID, GarrFollowerTypeID, " + "HordeCreatureID, AllianceCreatureID, HordeGarrFollRaceID, AllianceGarrFollRaceID, HordeGarrClassSpecID, AllianceGarrClassSpecID, Quality, " + "FollowerLevel, ItemLevelWeapon, ItemLevelArmor, HordeSourceTypeEnum, AllianceSourceTypeEnum, HordeIconFileDataID, AllianceIconFileDataID, " + "HordeGarrFollItemSetID, AllianceGarrFollItemSetID, HordeUITextureKitID, AllianceUITextureKitID, Vitality, HordeFlavorGarrStringID, " + "AllianceFlavorGarrStringID, HordeSlottingBroadcastTextID, AllySlottingBroadcastTextID, ChrClassID, Flags, Gender FROM garr_follower" + " ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_FOLLOWER, "SELECT ID, HordeSourceText_lang, AllianceSourceText_lang, TitleName_lang FROM garr_follower_locale" " WHERE locale = ?", CONNECTION_SYNCH); // GarrFollowerXAbility.db2 - PrepareStatement(HOTFIX_SEL_GARR_FOLLOWER_X_ABILITY, "SELECT ID, GarrAbilityID, FactionIndex, GarrFollowerID FROM garr_follower_x_ability" - " ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GARR_FOLLOWER_X_ABILITY, "SELECT ID, OrderIndex, FactionIndex, GarrAbilityID, GarrFollowerID" + " FROM garr_follower_x_ability ORDER BY ID DESC", CONNECTION_SYNCH); // GarrPlot.db2 - PrepareStatement(HOTFIX_SEL_GARR_PLOT, "SELECT ID, Name, AllianceConstructObjID, HordeConstructObjID, UiCategoryID, PlotType, Flags, " + PrepareStatement(HOTFIX_SEL_GARR_PLOT, "SELECT ID, Name, PlotType, HordeConstructObjID, AllianceConstructObjID, Flags, UiCategoryID, " "UpgradeRequirement1, UpgradeRequirement2 FROM garr_plot ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_PLOT, "SELECT ID, Name_lang FROM garr_plot_locale WHERE locale = ?", CONNECTION_SYNCH); // GarrPlotBuilding.db2 PrepareStatement(HOTFIX_SEL_GARR_PLOT_BUILDING, "SELECT ID, GarrPlotID, GarrBuildingID FROM garr_plot_building ORDER BY ID DESC", CONNECTION_SYNCH); @@ -373,15 +385,15 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_GARR_PLOT_INSTANCE, "SELECT ID, Name, GarrPlotID FROM garr_plot_instance ORDER BY ID DESC", CONNECTION_SYNCH); // GarrSiteLevel.db2 - PrepareStatement(HOTFIX_SEL_GARR_SITE_LEVEL, "SELECT ID, TownHallUiPosX, TownHallUiPosY, MapID, UiTextureKitID, UpgradeMovieID, UpgradeCost, " - "UpgradeGoldCost, GarrLevel, GarrSiteID, MaxBuildingLevel FROM garr_site_level ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GARR_SITE_LEVEL, "SELECT ID, TownHallUiPosX, TownHallUiPosY, GarrSiteID, GarrLevel, MapID, UpgradeMovieID, " + "UiTextureKitID, MaxBuildingLevel, UpgradeCost, UpgradeGoldCost FROM garr_site_level ORDER BY ID DESC", CONNECTION_SYNCH); // GarrSiteLevelPlotInst.db2 PrepareStatement(HOTFIX_SEL_GARR_SITE_LEVEL_PLOT_INST, "SELECT ID, UiMarkerPosX, UiMarkerPosY, GarrSiteLevelID, GarrPlotInstanceID, UiMarkerSize" " FROM garr_site_level_plot_inst ORDER BY ID DESC", CONNECTION_SYNCH); // GemProperties.db2 - PrepareStatement(HOTFIX_SEL_GEM_PROPERTIES, "SELECT ID, Type, EnchantId, MinItemLevel FROM gem_properties ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GEM_PROPERTIES, "SELECT ID, EnchantId, Type, MinItemLevel FROM gem_properties ORDER BY ID DESC", CONNECTION_SYNCH); // GlyphBindableSpell.db2 PrepareStatement(HOTFIX_SEL_GLYPH_BINDABLE_SPELL, "SELECT ID, SpellID, GlyphPropertiesID FROM glyph_bindable_spell ORDER BY ID DESC", CONNECTION_SYNCH); @@ -394,29 +406,29 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_GLYPH_REQUIRED_SPEC, "SELECT ID, ChrSpecializationID, GlyphPropertiesID FROM glyph_required_spec ORDER BY ID DESC", CONNECTION_SYNCH); // GuildColorBackground.db2 - PrepareStatement(HOTFIX_SEL_GUILD_COLOR_BACKGROUND, "SELECT ID, Red, Green, Blue FROM guild_color_background ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GUILD_COLOR_BACKGROUND, "SELECT ID, Red, Blue, Green FROM guild_color_background ORDER BY ID DESC", CONNECTION_SYNCH); // GuildColorBorder.db2 - PrepareStatement(HOTFIX_SEL_GUILD_COLOR_BORDER, "SELECT ID, Red, Green, Blue FROM guild_color_border ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GUILD_COLOR_BORDER, "SELECT ID, Red, Blue, Green FROM guild_color_border ORDER BY ID DESC", CONNECTION_SYNCH); // GuildColorEmblem.db2 - PrepareStatement(HOTFIX_SEL_GUILD_COLOR_EMBLEM, "SELECT ID, Red, Green, Blue FROM guild_color_emblem ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GUILD_COLOR_EMBLEM, "SELECT ID, Red, Blue, Green FROM guild_color_emblem ORDER BY ID DESC", CONNECTION_SYNCH); // GuildPerkSpells.db2 PrepareStatement(HOTFIX_SEL_GUILD_PERK_SPELLS, "SELECT ID, SpellID FROM guild_perk_spells ORDER BY ID DESC", CONNECTION_SYNCH); // Heirloom.db2 - PrepareStatement(HOTFIX_SEL_HEIRLOOM, "SELECT SourceText, ItemID, LegacyItemID, LegacyUpgradedItemID, StaticUpgradedItemID, UpgradeItemID1, " - "UpgradeItemID2, UpgradeItemID3, UpgradeItemBonusListID1, UpgradeItemBonusListID2, UpgradeItemBonusListID3, Flags, SourceTypeEnum, ID" + PrepareStatement(HOTFIX_SEL_HEIRLOOM, "SELECT SourceText, ID, ItemID, LegacyUpgradedItemID, StaticUpgradedItemID, SourceTypeEnum, Flags, " + "LegacyItemID, UpgradeItemID1, UpgradeItemID2, UpgradeItemID3, UpgradeItemBonusListID1, UpgradeItemBonusListID2, UpgradeItemBonusListID3" " FROM heirloom ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_HEIRLOOM, "SELECT ID, SourceText_lang FROM heirloom_locale WHERE locale = ?", CONNECTION_SYNCH); // Holidays.db2 - PrepareStatement(HOTFIX_SEL_HOLIDAYS, "SELECT ID, Date1, Date2, Date3, Date4, Date5, Date6, Date7, Date8, Date9, Date10, Date11, Date12, Date13, " - "Date14, Date15, Date16, Duration1, Duration2, Duration3, Duration4, Duration5, Duration6, Duration7, Duration8, Duration9, Duration10, " - "Region, Looping, CalendarFlags1, CalendarFlags2, CalendarFlags3, CalendarFlags4, CalendarFlags5, CalendarFlags6, CalendarFlags7, " - "CalendarFlags8, CalendarFlags9, CalendarFlags10, Priority, CalendarFilterType, Flags, HolidayNameID, HolidayDescriptionID, " - "TextureFileDataID1, TextureFileDataID2, TextureFileDataID3 FROM holidays ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_HOLIDAYS, "SELECT ID, Region, Looping, HolidayNameID, HolidayDescriptionID, Priority, CalendarFilterType, Flags, " + "Duration1, Duration2, Duration3, Duration4, Duration5, Duration6, Duration7, Duration8, Duration9, Duration10, Date1, Date2, Date3, Date4, " + "Date5, Date6, Date7, Date8, Date9, Date10, Date11, Date12, Date13, Date14, Date15, Date16, CalendarFlags1, CalendarFlags2, CalendarFlags3, " + "CalendarFlags4, CalendarFlags5, CalendarFlags6, CalendarFlags7, CalendarFlags8, CalendarFlags9, CalendarFlags10, TextureFileDataID1, " + "TextureFileDataID2, TextureFileDataID3 FROM holidays ORDER BY ID DESC", CONNECTION_SYNCH); // ImportPriceArmor.db2 PrepareStatement(HOTFIX_SEL_IMPORT_PRICE_ARMOR, "SELECT ID, ClothModifier, LeatherModifier, ChainModifier, PlateModifier FROM import_price_armor" @@ -432,23 +444,23 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_IMPORT_PRICE_WEAPON, "SELECT ID, Data FROM import_price_weapon ORDER BY ID DESC", CONNECTION_SYNCH); // Item.db2 - PrepareStatement(HOTFIX_SEL_ITEM, "SELECT ID, IconFileDataID, ClassID, SubclassID, SoundOverrideSubclassID, Material, InventoryType, SheatheType, " + PrepareStatement(HOTFIX_SEL_ITEM, "SELECT ID, ClassID, SubclassID, Material, InventoryType, SheatheType, SoundOverrideSubclassID, IconFileDataID, " "ItemGroupSoundsID FROM item ORDER BY ID DESC", CONNECTION_SYNCH); // ItemAppearance.db2 - PrepareStatement(HOTFIX_SEL_ITEM_APPEARANCE, "SELECT ID, ItemDisplayInfoID, DefaultIconFileDataID, UiOrder, DisplayType FROM item_appearance" + PrepareStatement(HOTFIX_SEL_ITEM_APPEARANCE, "SELECT ID, DisplayType, ItemDisplayInfoID, DefaultIconFileDataID, UiOrder FROM item_appearance" " ORDER BY ID DESC", CONNECTION_SYNCH); // ItemArmorQuality.db2 PrepareStatement(HOTFIX_SEL_ITEM_ARMOR_QUALITY, "SELECT ID, Qualitymod1, Qualitymod2, Qualitymod3, Qualitymod4, Qualitymod5, Qualitymod6, " - "Qualitymod7, ItemLevel FROM item_armor_quality ORDER BY ID DESC", CONNECTION_SYNCH); + "Qualitymod7 FROM item_armor_quality ORDER BY ID DESC", CONNECTION_SYNCH); // ItemArmorShield.db2 PrepareStatement(HOTFIX_SEL_ITEM_ARMOR_SHIELD, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, ItemLevel" " FROM item_armor_shield ORDER BY ID DESC", CONNECTION_SYNCH); // ItemArmorTotal.db2 - PrepareStatement(HOTFIX_SEL_ITEM_ARMOR_TOTAL, "SELECT ID, Cloth, Leather, Mail, Plate, ItemLevel FROM item_armor_total ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ITEM_ARMOR_TOTAL, "SELECT ID, ItemLevel, Cloth, Leather, Mail, Plate FROM item_armor_total ORDER BY ID DESC", CONNECTION_SYNCH); // ItemBagFamily.db2 PrepareStatement(HOTFIX_SEL_ITEM_BAG_FAMILY, "SELECT ID, Name FROM item_bag_family ORDER BY ID DESC", CONNECTION_SYNCH); @@ -462,7 +474,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_ITEM_BONUS_LIST_LEVEL_DELTA, "SELECT ItemLevelDelta, ID FROM item_bonus_list_level_delta ORDER BY ID DESC", CONNECTION_SYNCH); // ItemBonusTreeNode.db2 - PrepareStatement(HOTFIX_SEL_ITEM_BONUS_TREE_NODE, "SELECT ID, ChildItemBonusTreeID, ChildItemBonusListID, ChildItemLevelSelectorID, ItemContext, " + PrepareStatement(HOTFIX_SEL_ITEM_BONUS_TREE_NODE, "SELECT ID, ItemContext, ChildItemBonusTreeID, ChildItemBonusListID, ChildItemLevelSelectorID, " "ParentItemBonusTreeID FROM item_bonus_tree_node ORDER BY ID DESC", CONNECTION_SYNCH); // ItemChildEquipment.db2 @@ -470,44 +482,44 @@ void HotfixDatabaseConnection::DoPrepareStatements() " ORDER BY ID DESC", CONNECTION_SYNCH); // ItemClass.db2 - PrepareStatement(HOTFIX_SEL_ITEM_CLASS, "SELECT ID, ClassName, PriceModifier, ClassID, Flags FROM item_class ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ITEM_CLASS, "SELECT ID, ClassName, ClassID, PriceModifier, Flags FROM item_class ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_CLASS, "SELECT ID, ClassName_lang FROM item_class_locale WHERE locale = ?", CONNECTION_SYNCH); // ItemCurrencyCost.db2 PrepareStatement(HOTFIX_SEL_ITEM_CURRENCY_COST, "SELECT ID, ItemID FROM item_currency_cost ORDER BY ID DESC", CONNECTION_SYNCH); // ItemDamageAmmo.db2 - PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_AMMO, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, ItemLevel" + PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_AMMO, "SELECT ID, ItemLevel, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7" " FROM item_damage_ammo ORDER BY ID DESC", CONNECTION_SYNCH); // ItemDamageOneHand.db2 - PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, ItemLevel" + PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND, "SELECT ID, ItemLevel, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7" " FROM item_damage_one_hand ORDER BY ID DESC", CONNECTION_SYNCH); // ItemDamageOneHandCaster.db2 - PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND_CASTER, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, " - "ItemLevel FROM item_damage_one_hand_caster ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND_CASTER, "SELECT ID, ItemLevel, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, " + "Quality7 FROM item_damage_one_hand_caster ORDER BY ID DESC", CONNECTION_SYNCH); // ItemDamageTwoHand.db2 - PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, ItemLevel" + PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND, "SELECT ID, ItemLevel, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7" " FROM item_damage_two_hand ORDER BY ID DESC", CONNECTION_SYNCH); // ItemDamageTwoHandCaster.db2 - PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND_CASTER, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, " - "ItemLevel FROM item_damage_two_hand_caster ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND_CASTER, "SELECT ID, ItemLevel, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, " + "Quality7 FROM item_damage_two_hand_caster ORDER BY ID DESC", CONNECTION_SYNCH); // ItemDisenchantLoot.db2 - PrepareStatement(HOTFIX_SEL_ITEM_DISENCHANT_LOOT, "SELECT ID, MinLevel, MaxLevel, SkillRequired, Subclass, Quality, ExpansionID, Class" + PrepareStatement(HOTFIX_SEL_ITEM_DISENCHANT_LOOT, "SELECT ID, Subclass, Quality, MinLevel, MaxLevel, SkillRequired, ExpansionID, Class" " FROM item_disenchant_loot ORDER BY ID DESC", CONNECTION_SYNCH); // ItemEffect.db2 - PrepareStatement(HOTFIX_SEL_ITEM_EFFECT, "SELECT ID, SpellID, CoolDownMSec, CategoryCoolDownMSec, Charges, SpellCategoryID, ChrSpecializationID, " - "LegacySlotIndex, TriggerType, ParentItemID FROM item_effect ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ITEM_EFFECT, "SELECT ID, LegacySlotIndex, TriggerType, Charges, CoolDownMSec, CategoryCoolDownMSec, SpellCategoryID, " + "SpellID, ChrSpecializationID, ParentItemID FROM item_effect ORDER BY ID DESC", CONNECTION_SYNCH); // ItemExtendedCost.db2 - PrepareStatement(HOTFIX_SEL_ITEM_EXTENDED_COST, "SELECT ID, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, CurrencyCount1, CurrencyCount2, " - "CurrencyCount3, CurrencyCount4, CurrencyCount5, ItemCount1, ItemCount2, ItemCount3, ItemCount4, ItemCount5, RequiredArenaRating, " - "CurrencyID1, CurrencyID2, CurrencyID3, CurrencyID4, CurrencyID5, ArenaBracket, MinFactionID, MinReputation, Flags, RequiredAchievement" + PrepareStatement(HOTFIX_SEL_ITEM_EXTENDED_COST, "SELECT ID, RequiredArenaRating, ArenaBracket, Flags, MinFactionID, MinReputation, " + "RequiredAchievement, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, ItemCount1, ItemCount2, ItemCount3, ItemCount4, ItemCount5, CurrencyID1, " + "CurrencyID2, CurrencyID3, CurrencyID4, CurrencyID5, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, CurrencyCount5" " FROM item_extended_cost ORDER BY ID DESC", CONNECTION_SYNCH); // ItemLevelSelector.db2 @@ -529,11 +541,11 @@ void HotfixDatabaseConnection::DoPrepareStatements() " FROM item_limit_category_condition ORDER BY ID DESC", CONNECTION_SYNCH); // ItemModifiedAppearance.db2 - PrepareStatement(HOTFIX_SEL_ITEM_MODIFIED_APPEARANCE, "SELECT ItemID, ID, ItemAppearanceModifierID, ItemAppearanceID, OrderIndex, " + PrepareStatement(HOTFIX_SEL_ITEM_MODIFIED_APPEARANCE, "SELECT ID, ItemID, ItemAppearanceModifierID, ItemAppearanceID, OrderIndex, " "TransmogSourceTypeEnum FROM item_modified_appearance ORDER BY ID DESC", CONNECTION_SYNCH); // ItemPriceBase.db2 - PrepareStatement(HOTFIX_SEL_ITEM_PRICE_BASE, "SELECT ID, Armor, Weapon, ItemLevel FROM item_price_base ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ITEM_PRICE_BASE, "SELECT ID, ItemLevel, Armor, Weapon FROM item_price_base ORDER BY ID DESC", CONNECTION_SYNCH); // ItemRandomProperties.db2 PrepareStatement(HOTFIX_SEL_ITEM_RANDOM_PROPERTIES, "SELECT ID, Name, Enchantment1, Enchantment2, Enchantment3, Enchantment4, Enchantment5" @@ -546,47 +558,46 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_RANDOM_SUFFIX, "SELECT ID, Name_lang FROM item_random_suffix_locale WHERE locale = ?", CONNECTION_SYNCH); // ItemSearchName.db2 - PrepareStatement(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT AllowableRace, Display, ID, Flags1, Flags2, Flags3, ItemLevel, OverallQualityID, " - "ExpansionID, RequiredLevel, MinFactionID, MinReputation, AllowableClass, RequiredSkill, RequiredSkillRank, RequiredAbility" + PrepareStatement(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT AllowableRace, Display, ID, OverallQualityID, ExpansionID, MinFactionID, MinReputation, " + "AllowableClass, RequiredLevel, RequiredSkill, RequiredSkillRank, RequiredAbility, ItemLevel, Flags1, Flags2, Flags3, Flags4" " FROM item_search_name ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT ID, Display_lang FROM item_search_name_locale WHERE locale = ?", CONNECTION_SYNCH); // ItemSet.db2 - PrepareStatement(HOTFIX_SEL_ITEM_SET, "SELECT ID, Name, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, ItemID6, ItemID7, ItemID8, ItemID9, " - "ItemID10, ItemID11, ItemID12, ItemID13, ItemID14, ItemID15, ItemID16, ItemID17, RequiredSkillRank, RequiredSkill, SetFlags FROM item_set" + PrepareStatement(HOTFIX_SEL_ITEM_SET, "SELECT ID, Name, SetFlags, RequiredSkill, RequiredSkillRank, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, " + "ItemID6, ItemID7, ItemID8, ItemID9, ItemID10, ItemID11, ItemID12, ItemID13, ItemID14, ItemID15, ItemID16, ItemID17 FROM item_set" " ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SET, "SELECT ID, Name_lang FROM item_set_locale WHERE locale = ?", CONNECTION_SYNCH); // ItemSetSpell.db2 - PrepareStatement(HOTFIX_SEL_ITEM_SET_SPELL, "SELECT ID, SpellID, ChrSpecID, Threshold, ItemSetID FROM item_set_spell ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ITEM_SET_SPELL, "SELECT ID, ChrSpecID, SpellID, Threshold, ItemSetID FROM item_set_spell ORDER BY ID DESC", CONNECTION_SYNCH); // ItemSparse.db2 - PrepareStatement(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, AllowableRace, Display, Display1, Display2, Display3, Description, Flags1, Flags2, Flags3, " - "Flags4, PriceRandomValue, PriceVariance, VendorStackCount, BuyPrice, SellPrice, RequiredAbility, MaxCount, Stackable, StatPercentEditor1, " - "StatPercentEditor2, StatPercentEditor3, StatPercentEditor4, StatPercentEditor5, StatPercentEditor6, StatPercentEditor7, StatPercentEditor8, " - "StatPercentEditor9, StatPercentEditor10, StatPercentageOfSocket1, StatPercentageOfSocket2, StatPercentageOfSocket3, StatPercentageOfSocket4, " - "StatPercentageOfSocket5, StatPercentageOfSocket6, StatPercentageOfSocket7, StatPercentageOfSocket8, StatPercentageOfSocket9, " - "StatPercentageOfSocket10, ItemRange, BagFamily, QualityModifier, DurationInInventory, DmgVariance, AllowableClass, ItemLevel, RequiredSkill, " - "RequiredSkillRank, MinFactionID, ItemStatValue1, ItemStatValue2, ItemStatValue3, ItemStatValue4, ItemStatValue5, ItemStatValue6, " - "ItemStatValue7, ItemStatValue8, ItemStatValue9, ItemStatValue10, ScalingStatDistributionID, ItemDelay, PageID, StartQuestID, LockID, " - "RandomSelect, ItemRandomSuffixGroupID, ItemSet, ZoneBound, InstanceBound, TotemCategoryID, SocketMatchEnchantmentId, GemProperties, " - "LimitCategory, RequiredHoliday, RequiredTransmogHoliday, ItemNameDescriptionID, OverallQualityID, InventoryType, RequiredLevel, " - "RequiredPVPRank, RequiredPVPMedal, MinReputation, ContainerSlots, StatModifierBonusStat1, StatModifierBonusStat2, StatModifierBonusStat3, " - "StatModifierBonusStat4, StatModifierBonusStat5, StatModifierBonusStat6, StatModifierBonusStat7, StatModifierBonusStat8, " - "StatModifierBonusStat9, StatModifierBonusStat10, DamageDamageType, Bonding, LanguageID, PageMaterialID, Material, SheatheType, SocketType1, " - "SocketType2, SocketType3, SpellWeightCategory, SpellWeight, ArtifactID, ExpansionID FROM item_sparse ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, Display_lang, Display1_lang, Display2_lang, Display3_lang, Description_lang" + PrepareStatement(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, AllowableRace, Description, Display3, Display2, Display1, Display, DmgVariance, " + "DurationInInventory, QualityModifier, BagFamily, ItemRange, StatPercentageOfSocket1, StatPercentageOfSocket2, StatPercentageOfSocket3, " + "StatPercentageOfSocket4, StatPercentageOfSocket5, StatPercentageOfSocket6, StatPercentageOfSocket7, StatPercentageOfSocket8, " + "StatPercentageOfSocket9, StatPercentageOfSocket10, StatPercentEditor1, StatPercentEditor2, StatPercentEditor3, StatPercentEditor4, " + "StatPercentEditor5, StatPercentEditor6, StatPercentEditor7, StatPercentEditor8, StatPercentEditor9, StatPercentEditor10, Stackable, " + "MaxCount, RequiredAbility, SellPrice, BuyPrice, VendorStackCount, PriceVariance, PriceRandomValue, Flags1, Flags2, Flags3, Flags4, " + "FactionRelated, ItemNameDescriptionID, RequiredTransmogHoliday, RequiredHoliday, LimitCategory, GemProperties, SocketMatchEnchantmentId, " + "TotemCategoryID, InstanceBound, ZoneBound, ItemSet, ItemRandomSuffixGroupID, RandomSelect, LockID, StartQuestID, PageID, ItemDelay, " + "ScalingStatDistributionID, MinFactionID, RequiredSkillRank, RequiredSkill, ItemLevel, AllowableClass, ExpansionID, ArtifactID, SpellWeight, " + "SpellWeightCategory, SocketType1, SocketType2, SocketType3, SheatheType, Material, PageMaterialID, LanguageID, Bonding, DamageDamageType, " + "StatModifierBonusStat1, StatModifierBonusStat2, StatModifierBonusStat3, StatModifierBonusStat4, StatModifierBonusStat5, " + "StatModifierBonusStat6, StatModifierBonusStat7, StatModifierBonusStat8, StatModifierBonusStat9, StatModifierBonusStat10, ContainerSlots, " + "MinReputation, RequiredPVPMedal, RequiredPVPRank, RequiredLevel, InventoryType, OverallQualityID FROM item_sparse ORDER BY ID DESC", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, Description_lang, Display3_lang, Display2_lang, Display1_lang, Display_lang" " FROM item_sparse_locale WHERE locale = ?", CONNECTION_SYNCH); // ItemSpec.db2 - PrepareStatement(HOTFIX_SEL_ITEM_SPEC, "SELECT ID, SpecializationID, MinLevel, MaxLevel, ItemType, PrimaryStat, SecondaryStat FROM item_spec" + PrepareStatement(HOTFIX_SEL_ITEM_SPEC, "SELECT ID, MinLevel, MaxLevel, ItemType, PrimaryStat, SecondaryStat, SpecializationID FROM item_spec" " ORDER BY ID DESC", CONNECTION_SYNCH); // ItemSpecOverride.db2 PrepareStatement(HOTFIX_SEL_ITEM_SPEC_OVERRIDE, "SELECT ID, SpecID, ItemID FROM item_spec_override ORDER BY ID DESC", CONNECTION_SYNCH); // ItemUpgrade.db2 - PrepareStatement(HOTFIX_SEL_ITEM_UPGRADE, "SELECT ID, CurrencyAmount, PrerequisiteID, CurrencyType, ItemUpgradePathID, ItemLevelIncrement" + PrepareStatement(HOTFIX_SEL_ITEM_UPGRADE, "SELECT ID, ItemUpgradePathID, ItemLevelIncrement, PrerequisiteID, CurrencyType, CurrencyAmount" " FROM item_upgrade ORDER BY ID DESC", CONNECTION_SYNCH); // ItemXBonusTree.db2 @@ -598,10 +609,10 @@ void HotfixDatabaseConnection::DoPrepareStatements() " ORDER BY ID DESC", CONNECTION_SYNCH); // LfgDungeons.db2 - PrepareStatement(HOTFIX_SEL_LFG_DUNGEONS, "SELECT ID, Name, Description, Flags, MinGear, MaxLevel, TargetLevelMax, MapID, RandomID, ScenarioID, " - "FinalEncounterID, BonusReputationAmount, MentorItemLevel, RequiredPlayerConditionId, MinLevel, TargetLevel, TargetLevelMin, DifficultyID, " - "TypeID, Faction, ExpansionLevel, OrderIndex, GroupID, CountTank, CountHealer, CountDamage, MinCountTank, MinCountHealer, MinCountDamage, " - "Subtype, MentorCharLevel, IconTextureFileID, RewardsBgTextureFileID, PopupBgTextureFileID FROM lfg_dungeons ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_LFG_DUNGEONS, "SELECT ID, Name, Description, MinLevel, MaxLevel, TypeID, Subtype, Faction, IconTextureFileID, " + "RewardsBgTextureFileID, PopupBgTextureFileID, ExpansionLevel, MapID, DifficultyID, MinGear, GroupID, OrderIndex, RequiredPlayerConditionId, " + "TargetLevel, TargetLevelMin, TargetLevelMax, RandomID, ScenarioID, FinalEncounterID, CountTank, CountHealer, CountDamage, MinCountTank, " + "MinCountHealer, MinCountDamage, BonusReputationAmount, MentorItemLevel, MentorCharLevel, Flags1, Flags2 FROM lfg_dungeons ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_LFG_DUNGEONS, "SELECT ID, Name_lang, Description_lang FROM lfg_dungeons_locale WHERE locale = ?", CONNECTION_SYNCH); // Light.db2 @@ -610,11 +621,12 @@ void HotfixDatabaseConnection::DoPrepareStatements() " ORDER BY ID DESC", CONNECTION_SYNCH); // LiquidType.db2 - PrepareStatement(HOTFIX_SEL_LIQUID_TYPE, "SELECT ID, Name, Texture1, Texture2, Texture3, Texture4, Texture5, Texture6, SpellID, MaxDarkenDepth, " - "FogDarkenIntensity, AmbDarkenIntensity, DirDarkenIntensity, ParticleScale, Color1, Color2, Float1, Float2, Float3, `Float4`, Float5, Float6, " - "Float7, `Float8`, Float9, Float10, Float11, Float12, Float13, Float14, Float15, Float16, Float17, Float18, `Int1`, `Int2`, `Int3`, `Int4`, " - "Flags, LightID, SoundBank, ParticleMovement, ParticleTexSlots, MaterialID, FrameCountTexture1, FrameCountTexture2, FrameCountTexture3, " - "FrameCountTexture4, FrameCountTexture5, FrameCountTexture6, SoundID FROM liquid_type ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_LIQUID_TYPE, "SELECT ID, Name, Texture1, Texture2, Texture3, Texture4, Texture5, Texture6, Flags, SoundBank, SoundID, " + "SpellID, MaxDarkenDepth, FogDarkenIntensity, AmbDarkenIntensity, DirDarkenIntensity, LightID, ParticleScale, ParticleMovement, " + "ParticleTexSlots, MaterialID, MinimapStaticCol, FrameCountTexture1, FrameCountTexture2, FrameCountTexture3, FrameCountTexture4, " + "FrameCountTexture5, FrameCountTexture6, Color1, Color2, Float1, Float2, Float3, `Float4`, Float5, Float6, Float7, `Float8`, Float9, Float10, " + "Float11, Float12, Float13, Float14, Float15, Float16, Float17, Float18, `Int1`, `Int2`, `Int3`, `Int4`, Coefficient1, Coefficient2, " + "Coefficient3, Coefficient4 FROM liquid_type ORDER BY ID DESC", CONNECTION_SYNCH); // Lock.db2 PrepareStatement(HOTFIX_SEL_LOCK, "SELECT ID, Index1, Index2, Index3, Index4, Index5, Index6, Index7, Index8, Skill1, Skill2, Skill3, Skill4, " @@ -627,28 +639,28 @@ void HotfixDatabaseConnection::DoPrepareStatements() // Map.db2 PrepareStatement(HOTFIX_SEL_MAP, "SELECT ID, Directory, MapName, MapDescription0, MapDescription1, PvpShortDescription, PvpLongDescription, " - "Flags1, Flags2, MinimapIconScale, CorpseX, CorpseY, AreaTableID, LoadingScreenID, CorpseMapID, TimeOfDayOverride, ParentMapID, " - "CosmeticParentMapID, WindSettingsID, InstanceType, MapType, ExpansionID, MaxPlayers, TimeOffset FROM map ORDER BY ID DESC", CONNECTION_SYNCH); + "CorpseX, CorpseY, MapType, InstanceType, ExpansionID, AreaTableID, LoadingScreenID, TimeOfDayOverride, ParentMapID, CosmeticParentMapID, " + "TimeOffset, MinimapIconScale, CorpseMapID, MaxPlayers, WindSettingsID, ZmpFileDataID, Flags1, Flags2 FROM map ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_MAP, "SELECT ID, MapName_lang, MapDescription0_lang, MapDescription1_lang, PvpShortDescription_lang, " "PvpLongDescription_lang FROM map_locale WHERE locale = ?", CONNECTION_SYNCH); // MapDifficulty.db2 - PrepareStatement(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message, DifficultyID, ResetInterval, MaxPlayers, LockID, Flags, ItemContext, " - "ItemContextPickerID, MapID FROM map_difficulty ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message, ItemContextPickerID, ContentTuningID, DifficultyID, LockID, ResetInterval, " + "MaxPlayers, ItemContext, Flags, MapID FROM map_difficulty ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message_lang FROM map_difficulty_locale WHERE locale = ?", CONNECTION_SYNCH); // ModifierTree.db2 - PrepareStatement(HOTFIX_SEL_MODIFIER_TREE, "SELECT ID, Asset, SecondaryAsset, Parent, Type, TertiaryAsset, Operator, Amount FROM modifier_tree" + PrepareStatement(HOTFIX_SEL_MODIFIER_TREE, "SELECT ID, Parent, Operator, Amount, Type, Asset, SecondaryAsset, TertiaryAsset FROM modifier_tree" " ORDER BY ID DESC", CONNECTION_SYNCH); // Mount.db2 - PrepareStatement(HOTFIX_SEL_MOUNT, "SELECT Name, Description, SourceText, SourceSpellID, MountFlyRideHeight, MountTypeID, Flags, SourceTypeEnum, " - "ID, PlayerConditionID, UiModelSceneID FROM mount ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_MOUNT, "SELECT ID, Name_lang, Description_lang, SourceText_lang FROM mount_locale WHERE locale = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_MOUNT, "SELECT Name, SourceText, Description, ID, MountTypeID, Flags, SourceTypeEnum, SourceSpellID, " + "PlayerConditionID, MountFlyRideHeight, UiModelSceneID FROM mount ORDER BY ID DESC", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_MOUNT, "SELECT ID, Name_lang, SourceText_lang, Description_lang FROM mount_locale WHERE locale = ?", CONNECTION_SYNCH); // MountCapability.db2 - PrepareStatement(HOTFIX_SEL_MOUNT_CAPABILITY, "SELECT ReqSpellKnownID, ModSpellAuraID, ReqRidingSkill, ReqAreaID, ReqMapID, Flags, ID, " - "ReqSpellAuraID FROM mount_capability ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_MOUNT_CAPABILITY, "SELECT ID, Flags, ReqRidingSkill, ReqAreaID, ReqSpellAuraID, ReqSpellKnownID, ModSpellAuraID, " + "ReqMapID FROM mount_capability ORDER BY ID DESC", CONNECTION_SYNCH); // MountTypeXCapability.db2 PrepareStatement(HOTFIX_SEL_MOUNT_TYPE_X_CAPABILITY, "SELECT ID, MountTypeID, MountCapabilityID, OrderIndex FROM mount_type_x_capability" @@ -658,7 +670,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_MOUNT_X_DISPLAY, "SELECT ID, CreatureDisplayInfoID, PlayerConditionID, MountID FROM mount_x_display ORDER BY ID DESC", CONNECTION_SYNCH); // Movie.db2 - PrepareStatement(HOTFIX_SEL_MOVIE, "SELECT ID, AudioFileDataID, SubtitleFileDataID, Volume, KeyID FROM movie ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_MOVIE, "SELECT ID, Volume, KeyID, AudioFileDataID, SubtitleFileDataID FROM movie ORDER BY ID DESC", CONNECTION_SYNCH); // NameGen.db2 PrepareStatement(HOTFIX_SEL_NAME_GEN, "SELECT ID, Name, RaceID, Sex FROM name_gen ORDER BY ID DESC", CONNECTION_SYNCH); @@ -683,35 +695,35 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_PHASE_X_PHASE_GROUP, "SELECT ID, PhaseID, PhaseGroupID FROM phase_x_phase_group ORDER BY ID DESC", CONNECTION_SYNCH); // PlayerCondition.db2 - PrepareStatement(HOTFIX_SEL_PLAYER_CONDITION, "SELECT RaceMask, FailureDescription, ID, Flags, MinLevel, MaxLevel, ClassMask, Gender, " - "NativeGender, SkillLogic, LanguageID, MinLanguage, MaxLanguage, MaxFactionID, MaxReputation, ReputationLogic, CurrentPvpFaction, MinPVPRank, " - "MaxPVPRank, PvpMedal, PrevQuestLogic, CurrQuestLogic, CurrentCompletedQuestLogic, SpellLogic, ItemLogic, ItemFlags, AuraSpellLogic, " - "WorldStateExpressionID, WeatherID, PartyStatus, LifetimeMaxPVPRank, AchievementLogic, LfgLogic, AreaLogic, CurrencyLogic, QuestKillID, " - "QuestKillLogic, MinExpansionLevel, MaxExpansionLevel, MinExpansionTier, MaxExpansionTier, MinGuildLevel, MaxGuildLevel, PhaseUseFlags, " - "PhaseID, PhaseGroupID, MinAvgItemLevel, MaxAvgItemLevel, MinAvgEquippedItemLevel, MaxAvgEquippedItemLevel, ChrSpecializationIndex, " - "ChrSpecializationRole, PowerType, PowerTypeComp, PowerTypeValue, ModifierTreeID, WeaponSubclassMask, SkillID1, SkillID2, SkillID3, SkillID4, " - "MinSkill1, MinSkill2, MinSkill3, MinSkill4, MaxSkill1, MaxSkill2, MaxSkill3, MaxSkill4, MinFactionID1, MinFactionID2, MinFactionID3, " - "MinReputation1, MinReputation2, MinReputation3, PrevQuestID1, PrevQuestID2, PrevQuestID3, PrevQuestID4, CurrQuestID1, CurrQuestID2, " - "CurrQuestID3, CurrQuestID4, CurrentCompletedQuestID1, CurrentCompletedQuestID2, CurrentCompletedQuestID3, CurrentCompletedQuestID4, " - "SpellID1, SpellID2, SpellID3, SpellID4, ItemID1, ItemID2, ItemID3, ItemID4, ItemCount1, ItemCount2, ItemCount3, ItemCount4, Explored1, " - "Explored2, Time1, Time2, AuraSpellID1, AuraSpellID2, AuraSpellID3, AuraSpellID4, AuraStacks1, AuraStacks2, AuraStacks3, AuraStacks4, " - "Achievement1, Achievement2, Achievement3, Achievement4, LfgStatus1, LfgStatus2, LfgStatus3, LfgStatus4, LfgCompare1, LfgCompare2, " - "LfgCompare3, LfgCompare4, LfgValue1, LfgValue2, LfgValue3, LfgValue4, AreaID1, AreaID2, AreaID3, AreaID4, CurrencyID1, CurrencyID2, " - "CurrencyID3, CurrencyID4, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, QuestKillMonster1, QuestKillMonster2, " - "QuestKillMonster3, QuestKillMonster4, QuestKillMonster5, QuestKillMonster6, MovementFlags1, MovementFlags2 FROM player_condition" - " ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_PLAYER_CONDITION, "SELECT RaceMask, FailureDescription, ID, MinLevel, MaxLevel, ClassMask, SkillLogic, LanguageID, " + "MinLanguage, MaxLanguage, MaxFactionID, MaxReputation, ReputationLogic, CurrentPvpFaction, PvpMedal, PrevQuestLogic, CurrQuestLogic, " + "CurrentCompletedQuestLogic, SpellLogic, ItemLogic, ItemFlags, AuraSpellLogic, WorldStateExpressionID, WeatherID, PartyStatus, " + "LifetimeMaxPVPRank, AchievementLogic, Gender, NativeGender, AreaLogic, LfgLogic, CurrencyLogic, QuestKillID, QuestKillLogic, " + "MinExpansionLevel, MaxExpansionLevel, MinAvgItemLevel, MaxAvgItemLevel, MinAvgEquippedItemLevel, MaxAvgEquippedItemLevel, PhaseUseFlags, " + "PhaseID, PhaseGroupID, Flags, ChrSpecializationIndex, ChrSpecializationRole, ModifierTreeID, PowerType, PowerTypeComp, PowerTypeValue, " + "WeaponSubclassMask, MaxGuildLevel, MinGuildLevel, MaxExpansionTier, MinExpansionTier, MinPVPRank, MaxPVPRank, SkillID1, SkillID2, SkillID3, " + "SkillID4, MinSkill1, MinSkill2, MinSkill3, MinSkill4, MaxSkill1, MaxSkill2, MaxSkill3, MaxSkill4, MinFactionID1, MinFactionID2, " + "MinFactionID3, MinReputation1, MinReputation2, MinReputation3, PrevQuestID1, PrevQuestID2, PrevQuestID3, PrevQuestID4, CurrQuestID1, " + "CurrQuestID2, CurrQuestID3, CurrQuestID4, CurrentCompletedQuestID1, CurrentCompletedQuestID2, CurrentCompletedQuestID3, " + "CurrentCompletedQuestID4, SpellID1, SpellID2, SpellID3, SpellID4, ItemID1, ItemID2, ItemID3, ItemID4, ItemCount1, ItemCount2, ItemCount3, " + "ItemCount4, Explored1, Explored2, Time1, Time2, AuraSpellID1, AuraSpellID2, AuraSpellID3, AuraSpellID4, AuraStacks1, AuraStacks2, " + "AuraStacks3, AuraStacks4, Achievement1, Achievement2, Achievement3, Achievement4, AreaID1, AreaID2, AreaID3, AreaID4, LfgStatus1, " + "LfgStatus2, LfgStatus3, LfgStatus4, LfgCompare1, LfgCompare2, LfgCompare3, LfgCompare4, LfgValue1, LfgValue2, LfgValue3, LfgValue4, " + "CurrencyID1, CurrencyID2, CurrencyID3, CurrencyID4, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, QuestKillMonster1, " + "QuestKillMonster2, QuestKillMonster3, QuestKillMonster4, QuestKillMonster5, QuestKillMonster6, MovementFlags1, MovementFlags2" + " FROM player_condition ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_PLAYER_CONDITION, "SELECT ID, FailureDescription_lang FROM player_condition_locale WHERE locale = ?", CONNECTION_SYNCH); // PowerDisplay.db2 PrepareStatement(HOTFIX_SEL_POWER_DISPLAY, "SELECT ID, GlobalStringBaseTag, ActualType, Red, Green, Blue FROM power_display ORDER BY ID DESC", CONNECTION_SYNCH); // PowerType.db2 - PrepareStatement(HOTFIX_SEL_POWER_TYPE, "SELECT ID, NameGlobalStringTag, CostGlobalStringTag, RegenPeace, RegenCombat, MaxBasePower, " - "RegenInterruptTimeMS, Flags, PowerTypeEnum, MinPower, CenterPower, DefaultPower, DisplayModifier FROM power_type ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_POWER_TYPE, "SELECT ID, NameGlobalStringTag, CostGlobalStringTag, PowerTypeEnum, MinPower, MaxBasePower, CenterPower, " + "DefaultPower, DisplayModifier, RegenInterruptTimeMS, RegenPeace, RegenCombat, Flags FROM power_type ORDER BY ID DESC", CONNECTION_SYNCH); // PrestigeLevelInfo.db2 - PrepareStatement(HOTFIX_SEL_PRESTIGE_LEVEL_INFO, "SELECT ID, Name, BadgeTextureFileDataID, PrestigeLevel, Flags FROM prestige_level_info" - " ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_PRESTIGE_LEVEL_INFO, "SELECT ID, Name, PrestigeLevel, BadgeTextureFileDataID, Flags, AwardedAchievementID" + " FROM prestige_level_info ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_PRESTIGE_LEVEL_INFO, "SELECT ID, Name_lang FROM prestige_level_info_locale WHERE locale = ?", CONNECTION_SYNCH); // PvpDifficulty.db2 @@ -720,16 +732,17 @@ void HotfixDatabaseConnection::DoPrepareStatements() // PvpItem.db2 PrepareStatement(HOTFIX_SEL_PVP_ITEM, "SELECT ID, ItemID, ItemLevelDelta FROM pvp_item ORDER BY ID DESC", CONNECTION_SYNCH); - // PvpReward.db2 - PrepareStatement(HOTFIX_SEL_PVP_REWARD, "SELECT ID, HonorLevel, PrestigeLevel, RewardPackID FROM pvp_reward ORDER BY ID DESC", CONNECTION_SYNCH); - // PvpTalent.db2 - PrepareStatement(HOTFIX_SEL_PVP_TALENT, "SELECT ID, Description, SpellID, OverridesSpellID, ActionBarSpellID, TierID, ColumnIndex, Flags, " - "ClassID, SpecID, Role FROM pvp_talent ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_PVP_TALENT, "SELECT Description, ID, SpecID, SpellID, OverridesSpellID, Flags, ActionBarSpellID, PvpTalentCategoryID, " + "LevelRequired FROM pvp_talent ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_PVP_TALENT, "SELECT ID, Description_lang FROM pvp_talent_locale WHERE locale = ?", CONNECTION_SYNCH); - // PvpTalentUnlock.db2 - PrepareStatement(HOTFIX_SEL_PVP_TALENT_UNLOCK, "SELECT ID, TierID, ColumnIndex, HonorLevel FROM pvp_talent_unlock ORDER BY ID DESC", CONNECTION_SYNCH); + // PvpTalentCategory.db2 + PrepareStatement(HOTFIX_SEL_PVP_TALENT_CATEGORY, "SELECT ID, TalentSlotMask FROM pvp_talent_category ORDER BY ID DESC", CONNECTION_SYNCH); + + // PvpTalentSlotUnlock.db2 + PrepareStatement(HOTFIX_SEL_PVP_TALENT_SLOT_UNLOCK, "SELECT ID, Slot, LevelRequired, DeathKnightLevelRequired, DemonHunterLevelRequired" + " FROM pvp_talent_slot_unlock ORDER BY ID DESC", CONNECTION_SYNCH); // QuestFactionReward.db2 PrepareStatement(HOTFIX_SEL_QUEST_FACTION_REWARD, "SELECT ID, Difficulty1, Difficulty2, Difficulty3, Difficulty4, Difficulty5, Difficulty6, " @@ -740,7 +753,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() "Difficulty7, Difficulty8, Difficulty9, Difficulty10 FROM quest_money_reward ORDER BY ID DESC", CONNECTION_SYNCH); // QuestPackageItem.db2 - PrepareStatement(HOTFIX_SEL_QUEST_PACKAGE_ITEM, "SELECT ID, ItemID, PackageID, DisplayType, ItemQuantity FROM quest_package_item ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_QUEST_PACKAGE_ITEM, "SELECT ID, PackageID, ItemID, ItemQuantity, DisplayType FROM quest_package_item ORDER BY ID DESC", CONNECTION_SYNCH); // QuestSort.db2 PrepareStatement(HOTFIX_SEL_QUEST_SORT, "SELECT ID, SortName, UiOrderIndex FROM quest_sort ORDER BY ID DESC", CONNECTION_SYNCH); @@ -754,11 +767,11 @@ void HotfixDatabaseConnection::DoPrepareStatements() "Difficulty8, Difficulty9, Difficulty10 FROM quest_xp ORDER BY ID DESC", CONNECTION_SYNCH); // RandPropPoints.db2 - PrepareStatement(HOTFIX_SEL_RAND_PROP_POINTS, "SELECT ID, Epic1, Epic2, Epic3, Epic4, Epic5, Superior1, Superior2, Superior3, Superior4, " - "Superior5, Good1, Good2, Good3, Good4, Good5 FROM rand_prop_points ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_RAND_PROP_POINTS, "SELECT ID, DamageReplaceStat, Epic1, Epic2, Epic3, Epic4, Epic5, Superior1, Superior2, Superior3, " + "Superior4, Superior5, Good1, Good2, Good3, Good4, Good5 FROM rand_prop_points ORDER BY ID DESC", CONNECTION_SYNCH); // RewardPack.db2 - PrepareStatement(HOTFIX_SEL_REWARD_PACK, "SELECT ID, Money, ArtifactXPMultiplier, ArtifactXPDifficulty, ArtifactXPCategoryID, CharTitleID, " + PrepareStatement(HOTFIX_SEL_REWARD_PACK, "SELECT ID, CharTitleID, Money, ArtifactXPDifficulty, ArtifactXPMultiplier, ArtifactXPCategoryID, " "TreasurePickerID FROM reward_pack ORDER BY ID DESC", CONNECTION_SYNCH); // RewardPackXCurrencyType.db2 @@ -771,20 +784,17 @@ void HotfixDatabaseConnection::DoPrepareStatements() // RulesetItemUpgrade.db2 PrepareStatement(HOTFIX_SEL_RULESET_ITEM_UPGRADE, "SELECT ID, ItemID, ItemUpgradeID FROM ruleset_item_upgrade ORDER BY ID DESC", CONNECTION_SYNCH); - // SandboxScaling.db2 - PrepareStatement(HOTFIX_SEL_SANDBOX_SCALING, "SELECT ID, MinLevel, MaxLevel, Flags FROM sandbox_scaling ORDER BY ID DESC", CONNECTION_SYNCH); - // ScalingStatDistribution.db2 PrepareStatement(HOTFIX_SEL_SCALING_STAT_DISTRIBUTION, "SELECT ID, PlayerLevelToItemLevelCurveID, MinLevel, MaxLevel" " FROM scaling_stat_distribution ORDER BY ID DESC", CONNECTION_SYNCH); // Scenario.db2 - PrepareStatement(HOTFIX_SEL_SCENARIO, "SELECT ID, Name, AreaTableID, Flags, Type FROM scenario ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SCENARIO, "SELECT ID, Name, AreaTableID, Type, Flags, UiTextureKitID FROM scenario ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_SCENARIO, "SELECT ID, Name_lang FROM scenario_locale WHERE locale = ?", CONNECTION_SYNCH); // ScenarioStep.db2 - PrepareStatement(HOTFIX_SEL_SCENARIO_STEP, "SELECT ID, Description, Title, ScenarioID, Supersedes, RewardQuestID, OrderIndex, Flags, " - "Criteriatreeid, RelatedStep FROM scenario_step ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SCENARIO_STEP, "SELECT ID, Description, Title, ScenarioID, Criteriatreeid, RewardQuestID, RelatedStep, Supersedes, " + "OrderIndex, Flags, VisibilityPlayerConditionID, WidgetSetID FROM scenario_step ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_SCENARIO_STEP, "SELECT ID, Description_lang, Title_lang FROM scenario_step_locale WHERE locale = ?", CONNECTION_SYNCH); // SceneScript.db2 @@ -800,81 +810,76 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_SCENE_SCRIPT_TEXT, "SELECT ID, Name, Script FROM scene_script_text ORDER BY ID DESC", CONNECTION_SYNCH); // SkillLine.db2 - PrepareStatement(HOTFIX_SEL_SKILL_LINE, "SELECT ID, DisplayName, Description, AlternateVerb, Flags, CategoryID, CanLink, SpellIconFileID, " - "ParentSkillLineID FROM skill_line ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_SKILL_LINE, "SELECT ID, DisplayName_lang, Description_lang, AlternateVerb_lang FROM skill_line_locale" - " WHERE locale = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SKILL_LINE, "SELECT DisplayName, AlternateVerb, Description, HordeDisplayName, OverrideSourceInfoDisplayName, ID, " + "CategoryID, SpellIconFileID, CanLink, ParentSkillLineID, ParentTierIndex, Flags, SpellBookSpellID FROM skill_line ORDER BY ID DESC", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_SKILL_LINE, "SELECT ID, DisplayName_lang, AlternateVerb_lang, Description_lang, HordeDisplayName_lang" + " FROM skill_line_locale WHERE locale = ?", CONNECTION_SYNCH); // SkillLineAbility.db2 - PrepareStatement(HOTFIX_SEL_SKILL_LINE_ABILITY, "SELECT RaceMask, ID, Spell, SupercedesSpell, SkillLine, TrivialSkillLineRankHigh, " - "TrivialSkillLineRankLow, UniqueBit, TradeSkillCategoryID, NumSkillUps, ClassMask, MinSkillLineRank, AcquireMethod, Flags" + PrepareStatement(HOTFIX_SEL_SKILL_LINE_ABILITY, "SELECT RaceMask, ID, SkillLine, Spell, MinSkillLineRank, ClassMask, SupercedesSpell, " + "AcquireMethod, TrivialSkillLineRankHigh, TrivialSkillLineRankLow, Flags, NumSkillUps, UniqueBit, TradeSkillCategoryID, SkillupSkillLineID" " FROM skill_line_ability ORDER BY ID DESC", CONNECTION_SYNCH); // SkillRaceClassInfo.db2 - PrepareStatement(HOTFIX_SEL_SKILL_RACE_CLASS_INFO, "SELECT ID, RaceMask, SkillID, Flags, SkillTierID, Availability, MinLevel, ClassMask" + PrepareStatement(HOTFIX_SEL_SKILL_RACE_CLASS_INFO, "SELECT ID, RaceMask, SkillID, ClassMask, Flags, Availability, MinLevel, SkillTierID" " FROM skill_race_class_info ORDER BY ID DESC", CONNECTION_SYNCH); // SoundKit.db2 - PrepareStatement(HOTFIX_SEL_SOUND_KIT, "SELECT ID, VolumeFloat, MinDistance, DistanceCutoff, Flags, SoundEntriesAdvancedID, SoundType, " - "DialogType, EAXDef, VolumeVariationPlus, VolumeVariationMinus, PitchVariationPlus, PitchVariationMinus, PitchAdjust, BusOverwriteID, " - "MaxInstances FROM sound_kit ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SOUND_KIT, "SELECT ID, SoundType, VolumeFloat, Flags, MinDistance, DistanceCutoff, EAXDef, SoundKitAdvancedID, " + "VolumeVariationPlus, VolumeVariationMinus, PitchVariationPlus, PitchVariationMinus, DialogType, PitchAdjust, BusOverwriteID, MaxInstances" + " FROM sound_kit ORDER BY ID DESC", CONNECTION_SYNCH); // SpecializationSpells.db2 - PrepareStatement(HOTFIX_SEL_SPECIALIZATION_SPELLS, "SELECT Description, SpellID, OverridesSpellID, SpecID, DisplayOrder, ID" + PrepareStatement(HOTFIX_SEL_SPECIALIZATION_SPELLS, "SELECT Description, ID, SpecID, SpellID, OverridesSpellID, DisplayOrder" " FROM specialization_spells ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_SPECIALIZATION_SPELLS, "SELECT ID, Description_lang FROM specialization_spells_locale WHERE locale = ?", CONNECTION_SYNCH); - // Spell.db2 - PrepareStatement(HOTFIX_SEL_SPELL, "SELECT ID, Name, NameSubtext, Description, AuraDescription FROM spell ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL, "SELECT ID, Name_lang, NameSubtext_lang, Description_lang, AuraDescription_lang FROM spell_locale" - " WHERE locale = ?", CONNECTION_SYNCH); - // SpellAuraOptions.db2 - PrepareStatement(HOTFIX_SEL_SPELL_AURA_OPTIONS, "SELECT ID, ProcCharges, ProcTypeMask, ProcCategoryRecovery, CumulativeAura, " - "SpellProcsPerMinuteID, DifficultyID, ProcChance, SpellID FROM spell_aura_options ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_AURA_OPTIONS, "SELECT ID, DifficultyID, CumulativeAura, ProcCategoryRecovery, ProcChance, ProcCharges, " + "SpellProcsPerMinuteID, ProcTypeMask1, ProcTypeMask2, SpellID FROM spell_aura_options ORDER BY ID DESC", CONNECTION_SYNCH); // SpellAuraRestrictions.db2 - PrepareStatement(HOTFIX_SEL_SPELL_AURA_RESTRICTIONS, "SELECT ID, CasterAuraSpell, TargetAuraSpell, ExcludeCasterAuraSpell, " - "ExcludeTargetAuraSpell, DifficultyID, CasterAuraState, TargetAuraState, ExcludeCasterAuraState, ExcludeTargetAuraState, SpellID" + PrepareStatement(HOTFIX_SEL_SPELL_AURA_RESTRICTIONS, "SELECT ID, DifficultyID, CasterAuraState, TargetAuraState, ExcludeCasterAuraState, " + "ExcludeTargetAuraState, CasterAuraSpell, TargetAuraSpell, ExcludeCasterAuraSpell, ExcludeTargetAuraSpell, SpellID" " FROM spell_aura_restrictions ORDER BY ID DESC", CONNECTION_SYNCH); // SpellCastTimes.db2 - PrepareStatement(HOTFIX_SEL_SPELL_CAST_TIMES, "SELECT ID, Base, Minimum, PerLevel FROM spell_cast_times ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_CAST_TIMES, "SELECT ID, Base, PerLevel, Minimum FROM spell_cast_times ORDER BY ID DESC", CONNECTION_SYNCH); // SpellCastingRequirements.db2 - PrepareStatement(HOTFIX_SEL_SPELL_CASTING_REQUIREMENTS, "SELECT ID, SpellID, MinFactionID, RequiredAreasID, RequiresSpellFocus, " - "FacingCasterFlags, MinReputation, RequiredAuraVision FROM spell_casting_requirements ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_CASTING_REQUIREMENTS, "SELECT ID, SpellID, FacingCasterFlags, MinFactionID, MinReputation, RequiredAreasID, " + "RequiredAuraVision, RequiresSpellFocus FROM spell_casting_requirements ORDER BY ID DESC", CONNECTION_SYNCH); // SpellCategories.db2 - PrepareStatement(HOTFIX_SEL_SPELL_CATEGORIES, "SELECT ID, Category, StartRecoveryCategory, ChargeCategory, DifficultyID, DefenseType, DispelType, " - "Mechanic, PreventionType, SpellID FROM spell_categories ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_CATEGORIES, "SELECT ID, DifficultyID, Category, DefenseType, DispelType, Mechanic, PreventionType, " + "StartRecoveryCategory, ChargeCategory, SpellID FROM spell_categories ORDER BY ID DESC", CONNECTION_SYNCH); // SpellCategory.db2 - PrepareStatement(HOTFIX_SEL_SPELL_CATEGORY, "SELECT ID, Name, ChargeRecoveryTime, Flags, UsesPerWeek, MaxCharges, TypeMask FROM spell_category" + PrepareStatement(HOTFIX_SEL_SPELL_CATEGORY, "SELECT ID, Name, Flags, UsesPerWeek, MaxCharges, ChargeRecoveryTime, TypeMask FROM spell_category" " ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_CATEGORY, "SELECT ID, Name_lang FROM spell_category_locale WHERE locale = ?", CONNECTION_SYNCH); // SpellClassOptions.db2 - PrepareStatement(HOTFIX_SEL_SPELL_CLASS_OPTIONS, "SELECT ID, SpellID, SpellClassMask1, SpellClassMask2, SpellClassMask3, SpellClassMask4, " - "SpellClassSet, ModalNextSpell FROM spell_class_options ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_CLASS_OPTIONS, "SELECT ID, SpellID, ModalNextSpell, SpellClassSet, SpellClassMask1, SpellClassMask2, " + "SpellClassMask3, SpellClassMask4 FROM spell_class_options ORDER BY ID DESC", CONNECTION_SYNCH); // SpellCooldowns.db2 - PrepareStatement(HOTFIX_SEL_SPELL_COOLDOWNS, "SELECT ID, CategoryRecoveryTime, RecoveryTime, StartRecoveryTime, DifficultyID, SpellID" + PrepareStatement(HOTFIX_SEL_SPELL_COOLDOWNS, "SELECT ID, DifficultyID, CategoryRecoveryTime, RecoveryTime, StartRecoveryTime, SpellID" " FROM spell_cooldowns ORDER BY ID DESC", CONNECTION_SYNCH); // SpellDuration.db2 - PrepareStatement(HOTFIX_SEL_SPELL_DURATION, "SELECT ID, Duration, MaxDuration, DurationPerLevel FROM spell_duration ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_DURATION, "SELECT ID, Duration, DurationPerLevel, MaxDuration FROM spell_duration ORDER BY ID DESC", CONNECTION_SYNCH); // SpellEffect.db2 - PrepareStatement(HOTFIX_SEL_SPELL_EFFECT, "SELECT ID, Effect, EffectBasePoints, EffectIndex, EffectAura, DifficultyID, EffectAmplitude, " - "EffectAuraPeriod, EffectBonusCoefficient, EffectChainAmplitude, EffectChainTargets, EffectDieSides, EffectItemType, EffectMechanic, " - "EffectPointsPerResource, EffectRealPointsPerLevel, EffectTriggerSpell, EffectPosFacing, EffectAttributes, BonusCoefficientFromAP, " - "PvpMultiplier, Coefficient, Variance, ResourceCoefficient, GroupSizeBasePointsCoefficient, EffectSpellClassMask1, EffectSpellClassMask2, " - "EffectSpellClassMask3, EffectSpellClassMask4, EffectMiscValue1, EffectMiscValue2, EffectRadiusIndex1, EffectRadiusIndex2, ImplicitTarget1, " + PrepareStatement(HOTFIX_SEL_SPELL_EFFECT, "SELECT ID, DifficultyID, EffectIndex, Effect, EffectAmplitude, EffectAttributes, EffectAura, " + "EffectAuraPeriod, EffectBonusCoefficient, EffectChainAmplitude, EffectChainTargets, EffectItemType, EffectMechanic, EffectPointsPerResource, " + "EffectPosFacing, EffectRealPointsPerLevel, EffectTriggerSpell, BonusCoefficientFromAP, PvpMultiplier, Coefficient, Variance, " + "ResourceCoefficient, GroupSizeBasePointsCoefficient, EffectBasePoints, EffectMiscValue1, EffectMiscValue2, EffectRadiusIndex1, " + "EffectRadiusIndex2, EffectSpellClassMask1, EffectSpellClassMask2, EffectSpellClassMask3, EffectSpellClassMask4, ImplicitTarget1, " "ImplicitTarget2, SpellID FROM spell_effect ORDER BY ID DESC", CONNECTION_SYNCH); // SpellEquippedItems.db2 - PrepareStatement(HOTFIX_SEL_SPELL_EQUIPPED_ITEMS, "SELECT ID, SpellID, EquippedItemInvTypes, EquippedItemSubclass, EquippedItemClass" + PrepareStatement(HOTFIX_SEL_SPELL_EQUIPPED_ITEMS, "SELECT ID, SpellID, EquippedItemClass, EquippedItemInvTypes, EquippedItemSubclass" " FROM spell_equipped_items ORDER BY ID DESC", CONNECTION_SYNCH); // SpellFocusObject.db2 @@ -886,15 +891,15 @@ void HotfixDatabaseConnection::DoPrepareStatements() "ChannelInterruptFlags1, ChannelInterruptFlags2, SpellID FROM spell_interrupts ORDER BY ID DESC", CONNECTION_SYNCH); // SpellItemEnchantment.db2 - PrepareStatement(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name, EffectArg1, EffectArg2, EffectArg3, EffectScalingPoints1, " - "EffectScalingPoints2, EffectScalingPoints3, TransmogCost, IconFileDataID, EffectPointsMin1, EffectPointsMin2, EffectPointsMin3, ItemVisual, " - "Flags, RequiredSkillID, RequiredSkillRank, ItemLevel, Charges, Effect1, Effect2, Effect3, ConditionID, MinLevel, MaxLevel, ScalingClass, " - "ScalingClassRestricted, TransmogPlayerConditionID FROM spell_item_enchantment ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name_lang FROM spell_item_enchantment_locale WHERE locale = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name, HordeName, EffectArg1, EffectArg2, EffectArg3, EffectScalingPoints1, " + "EffectScalingPoints2, EffectScalingPoints3, TransmogCost, IconFileDataID, TransmogPlayerConditionID, EffectPointsMin1, EffectPointsMin2, " + "EffectPointsMin3, ItemVisual, Flags, RequiredSkillID, RequiredSkillRank, ItemLevel, Charges, Effect1, Effect2, Effect3, ScalingClass, " + "ScalingClassRestricted, ConditionID, MinLevel, MaxLevel FROM spell_item_enchantment ORDER BY ID DESC", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name_lang, HordeName_lang FROM spell_item_enchantment_locale WHERE locale = ?", CONNECTION_SYNCH); // SpellItemEnchantmentCondition.db2 - PrepareStatement(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT_CONDITION, "SELECT ID, LtOperand1, LtOperand2, LtOperand3, LtOperand4, LtOperand5, " - "LtOperandType1, LtOperandType2, LtOperandType3, LtOperandType4, LtOperandType5, Operator1, Operator2, Operator3, Operator4, Operator5, " + PrepareStatement(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT_CONDITION, "SELECT ID, LtOperandType1, LtOperandType2, LtOperandType3, LtOperandType4, " + "LtOperandType5, LtOperand1, LtOperand2, LtOperand3, LtOperand4, LtOperand5, Operator1, Operator2, Operator3, Operator4, Operator5, " "RtOperandType1, RtOperandType2, RtOperandType3, RtOperandType4, RtOperandType5, RtOperand1, RtOperand2, RtOperand3, RtOperand4, RtOperand5, " "Logic1, Logic2, Logic3, Logic4, Logic5 FROM spell_item_enchantment_condition ORDER BY ID DESC", CONNECTION_SYNCH); @@ -902,33 +907,38 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_SPELL_LEARN_SPELL, "SELECT ID, SpellID, LearnSpellID, OverridesSpellID FROM spell_learn_spell ORDER BY ID DESC", CONNECTION_SYNCH); // SpellLevels.db2 - PrepareStatement(HOTFIX_SEL_SPELL_LEVELS, "SELECT ID, BaseLevel, MaxLevel, SpellLevel, DifficultyID, MaxPassiveAuraLevel, SpellID" + PrepareStatement(HOTFIX_SEL_SPELL_LEVELS, "SELECT ID, DifficultyID, BaseLevel, MaxLevel, SpellLevel, MaxPassiveAuraLevel, SpellID" " FROM spell_levels ORDER BY ID DESC", CONNECTION_SYNCH); // SpellMisc.db2 - PrepareStatement(HOTFIX_SEL_SPELL_MISC, "SELECT ID, CastingTimeIndex, DurationIndex, RangeIndex, SchoolMask, SpellIconFileDataID, Speed, " - "ActiveIconFileDataID, LaunchDelay, DifficultyID, Attributes1, Attributes2, Attributes3, Attributes4, Attributes5, Attributes6, Attributes7, " - "Attributes8, Attributes9, Attributes10, Attributes11, Attributes12, Attributes13, Attributes14, SpellID FROM spell_misc ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_MISC, "SELECT ID, DifficultyID, CastingTimeIndex, DurationIndex, RangeIndex, SchoolMask, Speed, LaunchDelay, " + "MinDuration, SpellIconFileDataID, ActiveIconFileDataID, Attributes1, Attributes2, Attributes3, Attributes4, Attributes5, Attributes6, " + "Attributes7, Attributes8, Attributes9, Attributes10, Attributes11, Attributes12, Attributes13, Attributes14, SpellID FROM spell_misc" + " ORDER BY ID DESC", CONNECTION_SYNCH); + + // SpellName.db2 + PrepareStatement(HOTFIX_SEL_SPELL_NAME, "SELECT ID, Name FROM spell_name ORDER BY ID DESC", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_NAME, "SELECT ID, Name_lang FROM spell_name_locale WHERE locale = ?", CONNECTION_SYNCH); // SpellPower.db2 - PrepareStatement(HOTFIX_SEL_SPELL_POWER, "SELECT ManaCost, PowerCostPct, PowerPctPerSecond, RequiredAuraSpellID, PowerCostMaxPct, OrderIndex, " - "PowerType, ID, ManaCostPerLevel, ManaPerSecond, OptionalCost, PowerDisplayID, AltPowerBarID, SpellID FROM spell_power ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_POWER, "SELECT ID, OrderIndex, ManaCost, ManaCostPerLevel, ManaPerSecond, PowerDisplayID, AltPowerBarID, " + "PowerCostPct, PowerCostMaxPct, PowerPctPerSecond, PowerType, RequiredAuraSpellID, OptionalCost, SpellID FROM spell_power ORDER BY ID DESC", CONNECTION_SYNCH); // SpellPowerDifficulty.db2 - PrepareStatement(HOTFIX_SEL_SPELL_POWER_DIFFICULTY, "SELECT DifficultyID, OrderIndex, ID FROM spell_power_difficulty ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_POWER_DIFFICULTY, "SELECT ID, DifficultyID, OrderIndex FROM spell_power_difficulty ORDER BY ID DESC", CONNECTION_SYNCH); // SpellProcsPerMinute.db2 PrepareStatement(HOTFIX_SEL_SPELL_PROCS_PER_MINUTE, "SELECT ID, BaseProcRate, Flags FROM spell_procs_per_minute ORDER BY ID DESC", CONNECTION_SYNCH); // SpellProcsPerMinuteMod.db2 - PrepareStatement(HOTFIX_SEL_SPELL_PROCS_PER_MINUTE_MOD, "SELECT ID, Coeff, Param, Type, SpellProcsPerMinuteID FROM spell_procs_per_minute_mod" + PrepareStatement(HOTFIX_SEL_SPELL_PROCS_PER_MINUTE_MOD, "SELECT ID, Type, Param, Coeff, SpellProcsPerMinuteID FROM spell_procs_per_minute_mod" " ORDER BY ID DESC", CONNECTION_SYNCH); // SpellRadius.db2 PrepareStatement(HOTFIX_SEL_SPELL_RADIUS, "SELECT ID, Radius, RadiusPerLevel, RadiusMin, RadiusMax FROM spell_radius ORDER BY ID DESC", CONNECTION_SYNCH); // SpellRange.db2 - PrepareStatement(HOTFIX_SEL_SPELL_RANGE, "SELECT ID, DisplayName, DisplayNameShort, RangeMin1, RangeMin2, RangeMax1, RangeMax2, Flags" + PrepareStatement(HOTFIX_SEL_SPELL_RANGE, "SELECT ID, DisplayName, DisplayNameShort, Flags, RangeMin1, RangeMin2, RangeMax1, RangeMax2" " FROM spell_range ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_RANGE, "SELECT ID, DisplayName_lang, DisplayNameShort_lang FROM spell_range_locale WHERE locale = ?", CONNECTION_SYNCH); @@ -938,72 +948,71 @@ void HotfixDatabaseConnection::DoPrepareStatements() " ORDER BY ID DESC", CONNECTION_SYNCH); // SpellScaling.db2 - PrepareStatement(HOTFIX_SEL_SPELL_SCALING, "SELECT ID, SpellID, ScalesFromItemLevel, Class, MinScalingLevel, MaxScalingLevel FROM spell_scaling" + PrepareStatement(HOTFIX_SEL_SPELL_SCALING, "SELECT ID, SpellID, Class, MinScalingLevel, MaxScalingLevel, ScalesFromItemLevel FROM spell_scaling" " ORDER BY ID DESC", CONNECTION_SYNCH); // SpellShapeshift.db2 - PrepareStatement(HOTFIX_SEL_SPELL_SHAPESHIFT, "SELECT ID, SpellID, ShapeshiftExclude1, ShapeshiftExclude2, ShapeshiftMask1, ShapeshiftMask2, " - "StanceBarOrder FROM spell_shapeshift ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_SHAPESHIFT, "SELECT ID, SpellID, StanceBarOrder, ShapeshiftExclude1, ShapeshiftExclude2, ShapeshiftMask1, " + "ShapeshiftMask2 FROM spell_shapeshift ORDER BY ID DESC", CONNECTION_SYNCH); // SpellShapeshiftForm.db2 - PrepareStatement(HOTFIX_SEL_SPELL_SHAPESHIFT_FORM, "SELECT ID, Name, DamageVariance, Flags, CombatRoundTime, MountTypeID, CreatureType, " - "BonusActionBar, AttackIconFileID, CreatureDisplayID1, CreatureDisplayID2, CreatureDisplayID3, CreatureDisplayID4, PresetSpellID1, " - "PresetSpellID2, PresetSpellID3, PresetSpellID4, PresetSpellID5, PresetSpellID6, PresetSpellID7, PresetSpellID8 FROM spell_shapeshift_form" - " ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_SHAPESHIFT_FORM, "SELECT ID, Name, CreatureType, Flags, AttackIconFileID, BonusActionBar, CombatRoundTime, " + "DamageVariance, MountTypeID, CreatureDisplayID1, CreatureDisplayID2, CreatureDisplayID3, CreatureDisplayID4, PresetSpellID1, PresetSpellID2, " + "PresetSpellID3, PresetSpellID4, PresetSpellID5, PresetSpellID6, PresetSpellID7, PresetSpellID8 FROM spell_shapeshift_form ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_SHAPESHIFT_FORM, "SELECT ID, Name_lang FROM spell_shapeshift_form_locale WHERE locale = ?", CONNECTION_SYNCH); // SpellTargetRestrictions.db2 - PrepareStatement(HOTFIX_SEL_SPELL_TARGET_RESTRICTIONS, "SELECT ID, ConeDegrees, Width, Targets, TargetCreatureType, DifficultyID, MaxTargets, " - "MaxTargetLevel, SpellID FROM spell_target_restrictions ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_TARGET_RESTRICTIONS, "SELECT ID, DifficultyID, ConeDegrees, MaxTargets, MaxTargetLevel, TargetCreatureType, " + "Targets, Width, SpellID FROM spell_target_restrictions ORDER BY ID DESC", CONNECTION_SYNCH); // SpellTotems.db2 - PrepareStatement(HOTFIX_SEL_SPELL_TOTEMS, "SELECT ID, SpellID, Totem1, Totem2, RequiredTotemCategoryID1, RequiredTotemCategoryID2" + PrepareStatement(HOTFIX_SEL_SPELL_TOTEMS, "SELECT ID, SpellID, RequiredTotemCategoryID1, RequiredTotemCategoryID2, Totem1, Totem2" " FROM spell_totems ORDER BY ID DESC", CONNECTION_SYNCH); // SpellXSpellVisual.db2 - PrepareStatement(HOTFIX_SEL_SPELL_X_SPELL_VISUAL, "SELECT SpellVisualID, ID, Probability, CasterPlayerConditionID, CasterUnitConditionID, " - "ViewerPlayerConditionID, ViewerUnitConditionID, SpellIconFileID, ActiveIconFileID, Flags, DifficultyID, Priority, SpellID" + PrepareStatement(HOTFIX_SEL_SPELL_X_SPELL_VISUAL, "SELECT ID, DifficultyID, SpellVisualID, Probability, Flags, Priority, SpellIconFileID, " + "ActiveIconFileID, ViewerUnitConditionID, ViewerPlayerConditionID, CasterUnitConditionID, CasterPlayerConditionID, SpellID" " FROM spell_x_spell_visual ORDER BY ID DESC", CONNECTION_SYNCH); // SummonProperties.db2 - PrepareStatement(HOTFIX_SEL_SUMMON_PROPERTIES, "SELECT ID, Flags, Control, Faction, Title, Slot FROM summon_properties ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SUMMON_PROPERTIES, "SELECT ID, Control, Faction, Title, Slot, Flags FROM summon_properties ORDER BY ID DESC", CONNECTION_SYNCH); // TactKey.db2 PrepareStatement(HOTFIX_SEL_TACT_KEY, "SELECT ID, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8, Key9, Key10, Key11, Key12, Key13, Key14, Key15, " "Key16 FROM tact_key ORDER BY ID DESC", CONNECTION_SYNCH); // Talent.db2 - PrepareStatement(HOTFIX_SEL_TALENT, "SELECT ID, Description, SpellID, OverridesSpellID, SpecID, TierID, ColumnIndex, Flags, CategoryMask1, " - "CategoryMask2, ClassID FROM talent ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_TALENT, "SELECT ID, Description, TierID, Flags, ColumnIndex, ClassID, SpecID, SpellID, OverridesSpellID, " + "CategoryMask1, CategoryMask2 FROM talent ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TALENT, "SELECT ID, Description_lang FROM talent_locale WHERE locale = ?", CONNECTION_SYNCH); // TaxiNodes.db2 - PrepareStatement(HOTFIX_SEL_TAXI_NODES, "SELECT ID, Name, PosX, PosY, PosZ, MountCreatureID1, MountCreatureID2, MapOffsetX, MapOffsetY, Facing, " - "FlightMapOffsetX, FlightMapOffsetY, ContinentID, ConditionID, CharacterBitNumber, Flags, UiTextureKitID, SpecialIconConditionID" - " FROM taxi_nodes ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_TAXI_NODES, "SELECT Name, PosX, PosY, PosZ, MapOffsetX, MapOffsetY, FlightMapOffsetX, FlightMapOffsetY, ID, " + "ContinentID, ConditionID, CharacterBitNumber, Flags, UiTextureKitID, Facing, SpecialIconConditionID, VisibilityConditionID, " + "MountCreatureID1, MountCreatureID2 FROM taxi_nodes ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TAXI_NODES, "SELECT ID, Name_lang FROM taxi_nodes_locale WHERE locale = ?", CONNECTION_SYNCH); // TaxiPath.db2 - PrepareStatement(HOTFIX_SEL_TAXI_PATH, "SELECT FromTaxiNode, ToTaxiNode, ID, Cost FROM taxi_path ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_TAXI_PATH, "SELECT ID, FromTaxiNode, ToTaxiNode, Cost FROM taxi_path ORDER BY ID DESC", CONNECTION_SYNCH); // TaxiPathNode.db2 - PrepareStatement(HOTFIX_SEL_TAXI_PATH_NODE, "SELECT LocX, LocY, LocZ, PathID, ContinentID, NodeIndex, ID, Flags, Delay, ArrivalEventID, " + PrepareStatement(HOTFIX_SEL_TAXI_PATH_NODE, "SELECT LocX, LocY, LocZ, ID, PathID, NodeIndex, ContinentID, Flags, Delay, ArrivalEventID, " "DepartureEventID FROM taxi_path_node ORDER BY ID DESC", CONNECTION_SYNCH); // TotemCategory.db2 - PrepareStatement(HOTFIX_SEL_TOTEM_CATEGORY, "SELECT ID, Name, TotemCategoryMask, TotemCategoryType FROM totem_category ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_TOTEM_CATEGORY, "SELECT ID, Name, TotemCategoryType, TotemCategoryMask FROM totem_category ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TOTEM_CATEGORY, "SELECT ID, Name_lang FROM totem_category_locale WHERE locale = ?", CONNECTION_SYNCH); // Toy.db2 - PrepareStatement(HOTFIX_SEL_TOY, "SELECT SourceText, ItemID, Flags, SourceTypeEnum, ID FROM toy ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_TOY, "SELECT SourceText, ID, ItemID, Flags, SourceTypeEnum FROM toy ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TOY, "SELECT ID, SourceText_lang FROM toy_locale WHERE locale = ?", CONNECTION_SYNCH); // TransmogHoliday.db2 PrepareStatement(HOTFIX_SEL_TRANSMOG_HOLIDAY, "SELECT ID, RequiredTransmogHoliday FROM transmog_holiday ORDER BY ID DESC", CONNECTION_SYNCH); // TransmogSet.db2 - PrepareStatement(HOTFIX_SEL_TRANSMOG_SET, "SELECT Name, ParentTransmogSetID, UiOrder, ExpansionID, ID, Flags, TrackingQuestID, ClassMask, " - "ItemNameDescriptionID, TransmogSetGroupID FROM transmog_set ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_TRANSMOG_SET, "SELECT Name, ID, ClassMask, TrackingQuestID, Flags, TransmogSetGroupID, ItemNameDescriptionID, " + "ParentTransmogSetID, ExpansionID, UiOrder FROM transmog_set ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TRANSMOG_SET, "SELECT ID, Name_lang FROM transmog_set_locale WHERE locale = ?", CONNECTION_SYNCH); // TransmogSetGroup.db2 @@ -1014,64 +1023,68 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_TRANSMOG_SET_ITEM, "SELECT ID, TransmogSetID, ItemModifiedAppearanceID, Flags FROM transmog_set_item ORDER BY ID DESC", CONNECTION_SYNCH); // TransportAnimation.db2 - PrepareStatement(HOTFIX_SEL_TRANSPORT_ANIMATION, "SELECT ID, TimeIndex, PosX, PosY, PosZ, SequenceID, TransportID FROM transport_animation" + PrepareStatement(HOTFIX_SEL_TRANSPORT_ANIMATION, "SELECT ID, PosX, PosY, PosZ, SequenceID, TimeIndex, TransportID FROM transport_animation" " ORDER BY ID DESC", CONNECTION_SYNCH); // TransportRotation.db2 - PrepareStatement(HOTFIX_SEL_TRANSPORT_ROTATION, "SELECT ID, TimeIndex, Rot1, Rot2, Rot3, Rot4, GameObjectsID FROM transport_rotation" + PrepareStatement(HOTFIX_SEL_TRANSPORT_ROTATION, "SELECT ID, Rot1, Rot2, Rot3, Rot4, TimeIndex, GameObjectsID FROM transport_rotation" + " ORDER BY ID DESC", CONNECTION_SYNCH); + + // UiMap.db2 + PrepareStatement(HOTFIX_SEL_UI_MAP, "SELECT Name, ID, ParentUiMapID, Flags, System, Type, LevelRangeMin, LevelRangeMax, BountySetID, " + "BountyDisplayLocation, VisibilityPlayerConditionID, HelpTextPosition, BkgAtlasID FROM ui_map ORDER BY ID DESC", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_UI_MAP, "SELECT ID, Name_lang FROM ui_map_locale WHERE locale = ?", CONNECTION_SYNCH); + + // UiMapAssignment.db2 + PrepareStatement(HOTFIX_SEL_UI_MAP_ASSIGNMENT, "SELECT UiMinX, UiMinY, UiMaxX, UiMaxY, Region1X, Region1Y, Region1Z, Region2X, Region2Y, " + "Region2Z, ID, UiMapID, OrderIndex, MapID, AreaID, WmoDoodadPlacementID, WmoGroupID FROM ui_map_assignment ORDER BY ID DESC", CONNECTION_SYNCH); + + // UiMapLink.db2 + PrepareStatement(HOTFIX_SEL_UI_MAP_LINK, "SELECT UiMinX, UiMinY, UiMaxX, UiMaxY, ID, ParentUiMapID, OrderIndex, ChildUiMapID FROM ui_map_link" " ORDER BY ID DESC", CONNECTION_SYNCH); + // UiMapXMapArt.db2 + PrepareStatement(HOTFIX_SEL_UI_MAP_X_MAP_ART, "SELECT ID, PhaseID, UiMapArtID, UiMapID FROM ui_map_x_map_art ORDER BY ID DESC", CONNECTION_SYNCH); + // UnitPowerBar.db2 - PrepareStatement(HOTFIX_SEL_UNIT_POWER_BAR, "SELECT ID, Name, Cost, OutOfError, ToolTip, RegenerationPeace, RegenerationCombat, FileDataID1, " - "FileDataID2, FileDataID3, FileDataID4, FileDataID5, FileDataID6, Color1, Color2, Color3, Color4, Color5, Color6, StartInset, EndInset, " - "StartPower, Flags, CenterPower, BarType, MinPower, MaxPower FROM unit_power_bar ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_UNIT_POWER_BAR, "SELECT ID, Name, Cost, OutOfError, ToolTip, MinPower, MaxPower, StartPower, CenterPower, " + "RegenerationPeace, RegenerationCombat, BarType, Flags, StartInset, EndInset, FileDataID1, FileDataID2, FileDataID3, FileDataID4, " + "FileDataID5, FileDataID6, Color1, Color2, Color3, Color4, Color5, Color6 FROM unit_power_bar ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_UNIT_POWER_BAR, "SELECT ID, Name_lang, Cost_lang, OutOfError_lang, ToolTip_lang FROM unit_power_bar_locale" " WHERE locale = ?", CONNECTION_SYNCH); // Vehicle.db2 - PrepareStatement(HOTFIX_SEL_VEHICLE, "SELECT ID, Flags, TurnSpeed, PitchSpeed, PitchMin, PitchMax, MouseLookOffsetPitch, CameraFadeDistScalarMin, " - "CameraFadeDistScalarMax, CameraPitchOffset, FacingLimitRight, FacingLimitLeft, CameraYawOffset, SeatID1, SeatID2, SeatID3, SeatID4, SeatID5, " - "SeatID6, SeatID7, SeatID8, VehicleUIIndicatorID, PowerDisplayID1, PowerDisplayID2, PowerDisplayID3, FlagsB, UiLocomotionType, " - "MissileTargetingID FROM vehicle ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_VEHICLE, "SELECT ID, Flags, FlagsB, TurnSpeed, PitchSpeed, PitchMin, PitchMax, MouseLookOffsetPitch, " + "CameraFadeDistScalarMin, CameraFadeDistScalarMax, CameraPitchOffset, FacingLimitRight, FacingLimitLeft, CameraYawOffset, UiLocomotionType, " + "VehicleUIIndicatorID, MissileTargetingID, SeatID1, SeatID2, SeatID3, SeatID4, SeatID5, SeatID6, SeatID7, SeatID8, PowerDisplayID1, " + "PowerDisplayID2, PowerDisplayID3 FROM vehicle ORDER BY ID DESC", CONNECTION_SYNCH); // VehicleSeat.db2 - PrepareStatement(HOTFIX_SEL_VEHICLE_SEAT, "SELECT ID, Flags, FlagsB, FlagsC, AttachmentOffsetX, AttachmentOffsetY, AttachmentOffsetZ, " - "EnterPreDelay, EnterSpeed, EnterGravity, EnterMinDuration, EnterMaxDuration, EnterMinArcHeight, EnterMaxArcHeight, ExitPreDelay, ExitSpeed, " - "ExitGravity, ExitMinDuration, ExitMaxDuration, ExitMinArcHeight, ExitMaxArcHeight, PassengerYaw, PassengerPitch, PassengerRoll, " - "VehicleEnterAnimDelay, VehicleExitAnimDelay, CameraEnteringDelay, CameraEnteringDuration, CameraExitingDelay, CameraExitingDuration, " - "CameraOffsetX, CameraOffsetY, CameraOffsetZ, CameraPosChaseRate, CameraFacingChaseRate, CameraEnteringZoom, CameraSeatZoomMin, " - "CameraSeatZoomMax, UiSkinFileDataID, EnterAnimStart, EnterAnimLoop, RideAnimStart, RideAnimLoop, RideUpperAnimStart, RideUpperAnimLoop, " - "ExitAnimStart, ExitAnimLoop, ExitAnimEnd, VehicleEnterAnim, VehicleExitAnim, VehicleRideAnimLoop, EnterAnimKitID, RideAnimKitID, " - "ExitAnimKitID, VehicleEnterAnimKitID, VehicleRideAnimKitID, VehicleExitAnimKitID, CameraModeID, AttachmentID, PassengerAttachmentID, " - "VehicleEnterAnimBone, VehicleExitAnimBone, VehicleRideAnimLoopBone, VehicleAbilityDisplay, EnterUISoundID, ExitUISoundID FROM vehicle_seat" - " ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_VEHICLE_SEAT, "SELECT ID, AttachmentOffsetX, AttachmentOffsetY, AttachmentOffsetZ, CameraOffsetX, CameraOffsetY, " + "CameraOffsetZ, Flags, FlagsB, FlagsC, AttachmentID, EnterPreDelay, EnterSpeed, EnterGravity, EnterMinDuration, EnterMaxDuration, " + "EnterMinArcHeight, EnterMaxArcHeight, EnterAnimStart, EnterAnimLoop, RideAnimStart, RideAnimLoop, RideUpperAnimStart, RideUpperAnimLoop, " + "ExitPreDelay, ExitSpeed, ExitGravity, ExitMinDuration, ExitMaxDuration, ExitMinArcHeight, ExitMaxArcHeight, ExitAnimStart, ExitAnimLoop, " + "ExitAnimEnd, VehicleEnterAnim, VehicleEnterAnimBone, VehicleExitAnim, VehicleExitAnimBone, VehicleRideAnimLoop, VehicleRideAnimLoopBone, " + "PassengerAttachmentID, PassengerYaw, PassengerPitch, PassengerRoll, VehicleEnterAnimDelay, VehicleExitAnimDelay, VehicleAbilityDisplay, " + "EnterUISoundID, ExitUISoundID, UiSkinFileDataID, CameraEnteringDelay, CameraEnteringDuration, CameraExitingDelay, CameraExitingDuration, " + "CameraPosChaseRate, CameraFacingChaseRate, CameraEnteringZoom, CameraSeatZoomMin, CameraSeatZoomMax, EnterAnimKitID, RideAnimKitID, " + "ExitAnimKitID, VehicleEnterAnimKitID, VehicleRideAnimKitID, VehicleExitAnimKitID, CameraModeID FROM vehicle_seat ORDER BY ID DESC", CONNECTION_SYNCH); // WmoAreaTable.db2 - PrepareStatement(HOTFIX_SEL_WMO_AREA_TABLE, "SELECT AreaName, WmoGroupID, AmbienceID, ZoneMusic, IntroSound, AreaTableID, UwIntroSound, " - "UwAmbience, NameSetID, SoundProviderPref, SoundProviderPrefUnderwater, Flags, ID, UwZoneMusic, WmoID FROM wmo_area_table ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_WMO_AREA_TABLE, "SELECT AreaName, ID, WmoID, NameSetID, WmoGroupID, SoundProviderPref, SoundProviderPrefUnderwater, " + "AmbienceID, UwAmbience, ZoneMusic, UwZoneMusic, IntroSound, UwIntroSound, AreaTableID, Flags FROM wmo_area_table ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_WMO_AREA_TABLE, "SELECT ID, AreaName_lang FROM wmo_area_table_locale WHERE locale = ?", CONNECTION_SYNCH); // WorldEffect.db2 - PrepareStatement(HOTFIX_SEL_WORLD_EFFECT, "SELECT ID, TargetAsset, CombatConditionID, TargetType, WhenToDisplay, QuestFeedbackEffectID, " - "PlayerConditionID FROM world_effect ORDER BY ID DESC", CONNECTION_SYNCH); - - // WorldMapArea.db2 - PrepareStatement(HOTFIX_SEL_WORLD_MAP_AREA, "SELECT AreaName, LocLeft, LocRight, LocTop, LocBottom, Flags, MapID, AreaID, DisplayMapID, " - "DefaultDungeonFloor, ParentWorldMapID, LevelRangeMin, LevelRangeMax, BountySetID, BountyDisplayLocation, ID, VisibilityPlayerConditionID" - " FROM world_map_area ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_WORLD_EFFECT, "SELECT ID, QuestFeedbackEffectID, WhenToDisplay, TargetType, TargetAsset, PlayerConditionID, " + "CombatConditionID FROM world_effect ORDER BY ID DESC", CONNECTION_SYNCH); // WorldMapOverlay.db2 - PrepareStatement(HOTFIX_SEL_WORLD_MAP_OVERLAY, "SELECT TextureName, ID, TextureWidth, TextureHeight, MapAreaID, OffsetX, OffsetY, HitRectTop, " - "HitRectLeft, HitRectBottom, HitRectRight, PlayerConditionID, Flags, AreaID1, AreaID2, AreaID3, AreaID4 FROM world_map_overlay" - " ORDER BY ID DESC", CONNECTION_SYNCH); - - // WorldMapTransforms.db2 - PrepareStatement(HOTFIX_SEL_WORLD_MAP_TRANSFORMS, "SELECT ID, RegionMinX, RegionMinY, RegionMinZ, RegionMaxX, RegionMaxY, RegionMaxZ, " - "RegionOffsetX, RegionOffsetY, RegionScale, MapID, AreaID, NewMapID, NewDungeonMapID, NewAreaID, Flags, Priority FROM world_map_transforms" - " ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_WORLD_MAP_OVERLAY, "SELECT ID, UiMapArtID, TextureWidth, TextureHeight, OffsetX, OffsetY, HitRectTop, HitRectBottom, " + "HitRectLeft, HitRectRight, PlayerConditionID, Flags, AreaID1, AreaID2, AreaID3, AreaID4 FROM world_map_overlay ORDER BY ID DESC", CONNECTION_SYNCH); // WorldSafeLocs.db2 - PrepareStatement(HOTFIX_SEL_WORLD_SAFE_LOCS, "SELECT ID, AreaName, LocX, LocY, LocZ, Facing, MapID FROM world_safe_locs ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_WORLD_SAFE_LOCS, "SELECT ID, AreaName, LocX, LocY, LocZ, MapID, Facing FROM world_safe_locs ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_WORLD_SAFE_LOCS, "SELECT ID, AreaName_lang FROM world_safe_locs_locale WHERE locale = ?", CONNECTION_SYNCH); } diff --git a/src/server/database/Database/Implementation/HotfixDatabase.h b/src/server/database/Database/Implementation/HotfixDatabase.h index 77f3600ff39..655cdc376a6 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.h +++ b/src/server/database/Database/Implementation/HotfixDatabase.h @@ -126,6 +126,8 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_CINEMATIC_SEQUENCES, + HOTFIX_SEL_CONTENT_TUNING, + HOTFIX_SEL_CONVERSATION_LINE, HOTFIX_SEL_CREATURE_DISPLAY_INFO, @@ -170,6 +172,10 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_EMOTES_TEXT_SOUND, + HOTFIX_SEL_EXPECTED_STAT, + + HOTFIX_SEL_EXPECTED_STAT_MOD, + HOTFIX_SEL_FACTION, HOTFIX_SEL_FACTION_LOCALE, @@ -197,7 +203,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_GARR_FOLLOWER_X_ABILITY, HOTFIX_SEL_GARR_PLOT, - HOTFIX_SEL_GARR_PLOT_LOCALE, HOTFIX_SEL_GARR_PLOT_BUILDING, @@ -379,12 +384,12 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_PVP_ITEM, - HOTFIX_SEL_PVP_REWARD, - HOTFIX_SEL_PVP_TALENT, HOTFIX_SEL_PVP_TALENT_LOCALE, - HOTFIX_SEL_PVP_TALENT_UNLOCK, + HOTFIX_SEL_PVP_TALENT_CATEGORY, + + HOTFIX_SEL_PVP_TALENT_SLOT_UNLOCK, HOTFIX_SEL_QUEST_FACTION_REWARD, @@ -409,8 +414,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_RULESET_ITEM_UPGRADE, - HOTFIX_SEL_SANDBOX_SCALING, - HOTFIX_SEL_SCALING_STAT_DISTRIBUTION, HOTFIX_SEL_SCENARIO, @@ -439,9 +442,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_SPECIALIZATION_SPELLS, HOTFIX_SEL_SPECIALIZATION_SPELLS_LOCALE, - HOTFIX_SEL_SPELL, - HOTFIX_SEL_SPELL_LOCALE, - HOTFIX_SEL_SPELL_AURA_OPTIONS, HOTFIX_SEL_SPELL_AURA_RESTRICTIONS, @@ -481,6 +481,9 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_SPELL_MISC, + HOTFIX_SEL_SPELL_NAME, + HOTFIX_SEL_SPELL_NAME_LOCALE, + HOTFIX_SEL_SPELL_POWER, HOTFIX_SEL_SPELL_POWER_DIFFICULTY, @@ -543,6 +546,15 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_TRANSPORT_ROTATION, + HOTFIX_SEL_UI_MAP, + HOTFIX_SEL_UI_MAP_LOCALE, + + HOTFIX_SEL_UI_MAP_ASSIGNMENT, + + HOTFIX_SEL_UI_MAP_LINK, + + HOTFIX_SEL_UI_MAP_X_MAP_ART, + HOTFIX_SEL_UNIT_POWER_BAR, HOTFIX_SEL_UNIT_POWER_BAR_LOCALE, @@ -555,12 +567,8 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_WORLD_EFFECT, - HOTFIX_SEL_WORLD_MAP_AREA, - HOTFIX_SEL_WORLD_MAP_OVERLAY, - HOTFIX_SEL_WORLD_MAP_TRANSFORMS, - HOTFIX_SEL_WORLD_SAFE_LOCS, HOTFIX_SEL_WORLD_SAFE_LOCS_LOCALE, diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index a6b4c1c0426..bf831521cba 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -30,21 +30,21 @@ struct AchievementLoadInfo { static DB2FieldMeta const fields[] = { - { false, FT_STRING, "Title" }, { false, FT_STRING, "Description" }, + { false, FT_STRING, "Title" }, { false, FT_STRING, "Reward" }, - { true, FT_INT, "Flags" }, + { false, FT_INT, "ID" }, { true, FT_SHORT, "InstanceID" }, + { true, FT_BYTE, "Faction" }, { true, FT_SHORT, "Supercedes" }, { true, FT_SHORT, "Category" }, - { true, FT_SHORT, "UiOrder" }, - { true, FT_SHORT, "SharesCriteria" }, - { true, FT_BYTE, "Faction" }, - { true, FT_BYTE, "Points" }, { true, FT_BYTE, "MinimumCriteria" }, - { false, FT_INT, "ID" }, + { true, FT_BYTE, "Points" }, + { true, FT_INT, "Flags" }, + { true, FT_SHORT, "UiOrder" }, { true, FT_INT, "IconFileID" }, { false, FT_INT, "CriteriaTree" }, + { true, FT_SHORT, "SharesCriteria" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, AchievementMeta::Instance(), HOTFIX_SEL_ACHIEVEMENT); return &loadInfo; @@ -91,31 +91,31 @@ struct AreaTableLoadInfo { false, FT_INT, "ID" }, { false, FT_STRING_NOT_LOCALIZED, "ZoneName" }, { false, FT_STRING, "AreaName" }, - { true, FT_INT, "Flags1" }, - { true, FT_INT, "Flags2" }, - { false, FT_FLOAT, "AmbientMultiplier" }, { false, FT_SHORT, "ContinentID" }, { false, FT_SHORT, "ParentAreaID" }, { true, FT_SHORT, "AreaBit" }, + { false, FT_BYTE, "SoundProviderPref" }, + { false, FT_BYTE, "SoundProviderPrefUnderwater" }, { false, FT_SHORT, "AmbienceID" }, + { false, FT_SHORT, "UwAmbience" }, { false, FT_SHORT, "ZoneMusic" }, - { false, FT_SHORT, "IntroSound" }, - { false, FT_SHORT, "LiquidTypeID1" }, - { false, FT_SHORT, "LiquidTypeID2" }, - { false, FT_SHORT, "LiquidTypeID3" }, - { false, FT_SHORT, "LiquidTypeID4" }, { false, FT_SHORT, "UwZoneMusic" }, - { false, FT_SHORT, "UwAmbience" }, - { true, FT_SHORT, "PvpCombatWorldStateID" }, - { false, FT_BYTE, "SoundProviderPref" }, - { false, FT_BYTE, "SoundProviderPrefUnderwater" }, { true, FT_BYTE, "ExplorationLevel" }, + { false, FT_SHORT, "IntroSound" }, + { false, FT_INT, "UwIntroSound" }, { false, FT_BYTE, "FactionGroupMask" }, + { false, FT_FLOAT, "AmbientMultiplier" }, { false, FT_BYTE, "MountFlags" }, + { true, FT_SHORT, "PvpCombatWorldStateID" }, { false, FT_BYTE, "WildBattlePetLevelMin" }, { false, FT_BYTE, "WildBattlePetLevelMax" }, { false, FT_BYTE, "WindSettingsID" }, - { false, FT_INT, "UwIntroSound" }, + { true, FT_INT, "Flags1" }, + { true, FT_INT, "Flags2" }, + { false, FT_SHORT, "LiquidTypeID1" }, + { false, FT_SHORT, "LiquidTypeID2" }, + { false, FT_SHORT, "LiquidTypeID3" }, + { false, FT_SHORT, "LiquidTypeID4" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, AreaTableMeta::Instance(), HOTFIX_SEL_AREA_TABLE); return &loadInfo; @@ -131,20 +131,20 @@ struct AreaTriggerLoadInfo { false, FT_FLOAT, "PosX" }, { false, FT_FLOAT, "PosY" }, { false, FT_FLOAT, "PosZ" }, + { false, FT_INT, "ID" }, + { true, FT_SHORT, "ContinentID" }, + { true, FT_BYTE, "PhaseUseFlags" }, + { true, FT_SHORT, "PhaseID" }, + { true, FT_SHORT, "PhaseGroupID" }, { false, FT_FLOAT, "Radius" }, { false, FT_FLOAT, "BoxLength" }, { false, FT_FLOAT, "BoxWidth" }, { false, FT_FLOAT, "BoxHeight" }, { false, FT_FLOAT, "BoxYaw" }, - { true, FT_SHORT, "ContinentID" }, - { true, FT_SHORT, "PhaseID" }, - { true, FT_SHORT, "PhaseGroupID" }, + { true, FT_BYTE, "ShapeType" }, { true, FT_SHORT, "ShapeID" }, { true, FT_SHORT, "AreaTriggerActionSetID" }, - { true, FT_BYTE, "PhaseUseFlags" }, - { true, FT_BYTE, "ShapeType" }, { true, FT_BYTE, "Flags" }, - { false, FT_INT, "ID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, AreaTriggerMeta::Instance(), HOTFIX_SEL_AREA_TRIGGER); return &loadInfo; @@ -175,15 +175,15 @@ struct ArtifactLoadInfo { static DB2FieldMeta const fields[] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, + { false, FT_INT, "ID" }, + { false, FT_SHORT, "UiTextureKitID" }, + { true, FT_INT, "UiNameColor" }, { true, FT_INT, "UiBarOverlayColor" }, { true, FT_INT, "UiBarBackgroundColor" }, - { true, FT_INT, "UiNameColor" }, - { false, FT_SHORT, "UiTextureKitID" }, { false, FT_SHORT, "ChrSpecializationID" }, - { false, FT_BYTE, "ArtifactCategoryID" }, { false, FT_BYTE, "Flags" }, + { false, FT_BYTE, "ArtifactCategoryID" }, { false, FT_INT, "UiModelSceneID" }, { false, FT_INT, "SpellVisualKitID" }, }; @@ -199,20 +199,20 @@ struct ArtifactAppearanceLoadInfo static DB2FieldMeta const fields[] = { { false, FT_STRING, "Name" }, - { true, FT_INT, "UiSwatchColor" }, - { false, FT_FLOAT, "UiModelSaturation" }, - { false, FT_FLOAT, "UiModelOpacity" }, - { false, FT_INT, "OverrideShapeshiftDisplayID" }, + { false, FT_INT, "ID" }, { false, FT_SHORT, "ArtifactAppearanceSetID" }, - { false, FT_SHORT, "UiCameraID" }, { false, FT_BYTE, "DisplayIndex" }, + { false, FT_INT, "UnlockPlayerConditionID" }, { false, FT_BYTE, "ItemAppearanceModifierID" }, - { false, FT_BYTE, "Flags" }, + { true, FT_INT, "UiSwatchColor" }, + { false, FT_FLOAT, "UiModelSaturation" }, + { false, FT_FLOAT, "UiModelOpacity" }, { false, FT_BYTE, "OverrideShapeshiftFormID" }, - { false, FT_INT, "ID" }, - { false, FT_INT, "UnlockPlayerConditionID" }, + { false, FT_INT, "OverrideShapeshiftDisplayID" }, { false, FT_INT, "UiItemAppearanceID" }, { false, FT_INT, "UiAltItemAppearanceID" }, + { false, FT_BYTE, "Flags" }, + { false, FT_SHORT, "UiCameraID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ArtifactAppearanceMeta::Instance(), HOTFIX_SEL_ARTIFACT_APPEARANCE); return &loadInfo; @@ -227,12 +227,12 @@ struct ArtifactAppearanceSetLoadInfo { { false, FT_STRING, "Name" }, { false, FT_STRING, "Description" }, + { false, FT_INT, "ID" }, + { false, FT_BYTE, "DisplayIndex" }, { false, FT_SHORT, "UiCameraID" }, { false, FT_SHORT, "AltHandUICameraID" }, - { false, FT_BYTE, "DisplayIndex" }, { true, FT_BYTE, "ForgeAttachmentOverride" }, { false, FT_BYTE, "Flags" }, - { false, FT_INT, "ID" }, { false, FT_BYTE, "ArtifactID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ArtifactAppearanceSetMeta::Instance(), HOTFIX_SEL_ARTIFACT_APPEARANCE_SET); @@ -261,14 +261,14 @@ struct ArtifactPowerLoadInfo { static DB2FieldMeta const fields[] = { - { false, FT_FLOAT, "PosX" }, - { false, FT_FLOAT, "PosY" }, + { false, FT_FLOAT, "DisplayPosX" }, + { false, FT_FLOAT, "DisplayPosY" }, + { false, FT_INT, "ID" }, { false, FT_BYTE, "ArtifactID" }, - { false, FT_BYTE, "Flags" }, { false, FT_BYTE, "MaxPurchasableRank" }, - { false, FT_BYTE, "Tier" }, - { false, FT_INT, "ID" }, { true, FT_INT, "Label" }, + { false, FT_BYTE, "Flags" }, + { false, FT_BYTE, "Tier" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ArtifactPowerMeta::Instance(), HOTFIX_SEL_ARTIFACT_POWER); return &loadInfo; @@ -311,10 +311,10 @@ struct ArtifactPowerRankLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_BYTE, "RankIndex" }, { true, FT_INT, "SpellID" }, - { false, FT_FLOAT, "AuraPointsOverride" }, { false, FT_SHORT, "ItemBonusListID" }, - { false, FT_BYTE, "RankIndex" }, + { false, FT_FLOAT, "AuraPointsOverride" }, { false, FT_SHORT, "ArtifactPowerID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ArtifactPowerRankMeta::Instance(), HOTFIX_SEL_ARTIFACT_POWER_RANK); @@ -370,9 +370,9 @@ struct ArtifactUnlockLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_SHORT, "ItemBonusListID" }, - { false, FT_BYTE, "PowerRank" }, { false, FT_INT, "PowerID" }, + { false, FT_BYTE, "PowerRank" }, + { false, FT_SHORT, "ItemBonusListID" }, { false, FT_INT, "PlayerConditionID" }, { false, FT_BYTE, "ArtifactID" }, }; @@ -436,12 +436,12 @@ struct BarberShopStyleLoadInfo { { false, FT_STRING, "DisplayName" }, { false, FT_STRING, "Description" }, - { false, FT_FLOAT, "CostModifier" }, + { false, FT_INT, "ID" }, { false, FT_BYTE, "Type" }, + { false, FT_FLOAT, "CostModifier" }, { false, FT_BYTE, "Race" }, { false, FT_BYTE, "Sex" }, { false, FT_BYTE, "Data" }, - { false, FT_INT, "ID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, BarberShopStyleMeta::Instance(), HOTFIX_SEL_BARBER_SHOP_STYLE); return &loadInfo; @@ -470,8 +470,8 @@ struct BattlePetBreedStateLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_SHORT, "Value" }, { false, FT_BYTE, "BattlePetStateID" }, + { false, FT_SHORT, "Value" }, { false, FT_BYTE, "BattlePetBreedID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, BattlePetBreedStateMeta::Instance(), HOTFIX_SEL_BATTLE_PET_BREED_STATE); @@ -485,15 +485,15 @@ struct BattlePetSpeciesLoadInfo { static DB2FieldMeta const fields[] = { - { false, FT_STRING, "SourceText" }, { false, FT_STRING, "Description" }, + { false, FT_STRING, "SourceText" }, + { false, FT_INT, "ID" }, { true, FT_INT, "CreatureID" }, - { true, FT_INT, "IconFileDataID" }, { true, FT_INT, "SummonSpellID" }, - { false, FT_SHORT, "Flags" }, + { true, FT_INT, "IconFileDataID" }, { false, FT_BYTE, "PetTypeEnum" }, + { false, FT_SHORT, "Flags" }, { true, FT_BYTE, "SourceTypeEnum" }, - { false, FT_INT, "ID" }, { true, FT_INT, "CardUIModelSceneID" }, { true, FT_INT, "LoadoutUIModelSceneID" }, }; @@ -509,8 +509,8 @@ struct BattlePetSpeciesStateLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "Value" }, { false, FT_BYTE, "BattlePetStateID" }, + { true, FT_INT, "Value" }, { false, FT_SHORT, "BattlePetSpeciesID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, BattlePetSpeciesStateMeta::Instance(), HOTFIX_SEL_BATTLE_PET_SPECIES_STATE); @@ -529,7 +529,18 @@ struct BattlemasterListLoadInfo { false, FT_STRING, "GameType" }, { false, FT_STRING, "ShortDescription" }, { false, FT_STRING, "LongDescription" }, + { true, FT_BYTE, "InstanceType" }, + { true, FT_BYTE, "MinLevel" }, + { true, FT_BYTE, "MaxLevel" }, + { true, FT_BYTE, "RatedPlayers" }, + { true, FT_BYTE, "MinPlayers" }, + { true, FT_BYTE, "MaxPlayers" }, + { true, FT_BYTE, "GroupsAllowed" }, + { true, FT_BYTE, "MaxGroupSize" }, + { true, FT_SHORT, "HolidayWorldState" }, + { true, FT_BYTE, "Flags" }, { true, FT_INT, "IconFileDataID" }, + { true, FT_SHORT, "RequiredPlayerConditionID" }, { true, FT_SHORT, "MapID1" }, { true, FT_SHORT, "MapID2" }, { true, FT_SHORT, "MapID3" }, @@ -546,17 +557,6 @@ struct BattlemasterListLoadInfo { true, FT_SHORT, "MapID14" }, { true, FT_SHORT, "MapID15" }, { true, FT_SHORT, "MapID16" }, - { true, FT_SHORT, "HolidayWorldState" }, - { true, FT_SHORT, "RequiredPlayerConditionID" }, - { true, FT_BYTE, "InstanceType" }, - { true, FT_BYTE, "GroupsAllowed" }, - { true, FT_BYTE, "MaxGroupSize" }, - { true, FT_BYTE, "MinLevel" }, - { true, FT_BYTE, "MaxLevel" }, - { true, FT_BYTE, "RatedPlayers" }, - { true, FT_BYTE, "MinPlayers" }, - { true, FT_BYTE, "MaxPlayers" }, - { true, FT_BYTE, "Flags" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, BattlemasterListMeta::Instance(), HOTFIX_SEL_BATTLEMASTER_LIST); return &loadInfo; @@ -569,21 +569,22 @@ struct BroadcastTextLoadInfo { static DB2FieldMeta const fields[] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "Text" }, { false, FT_STRING, "Text1" }, + { false, FT_INT, "ID" }, + { false, FT_BYTE, "LanguageID" }, + { true, FT_INT, "ConditionID" }, + { false, FT_SHORT, "EmotesID" }, + { false, FT_BYTE, "Flags" }, + { false, FT_INT, "ChatBubbleDurationMs" }, + { false, FT_INT, "SoundEntriesID1" }, + { false, FT_INT, "SoundEntriesID2" }, { false, FT_SHORT, "EmoteID1" }, { false, FT_SHORT, "EmoteID2" }, { false, FT_SHORT, "EmoteID3" }, { false, FT_SHORT, "EmoteDelay1" }, { false, FT_SHORT, "EmoteDelay2" }, { false, FT_SHORT, "EmoteDelay3" }, - { false, FT_SHORT, "EmotesID" }, - { false, FT_BYTE, "LanguageID" }, - { false, FT_BYTE, "Flags" }, - { true, FT_INT, "ConditionID" }, - { false, FT_INT, "SoundEntriesID1" }, - { false, FT_INT, "SoundEntriesID2" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, BroadcastTextMeta::Instance(), HOTFIX_SEL_BROADCAST_TEXT); return &loadInfo; @@ -598,10 +599,10 @@ struct CfgRegionsLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING_NOT_LOCALIZED, "Tag" }, - { false, FT_INT, "Raidorigin" }, - { false, FT_INT, "ChallengeOrigin" }, { false, FT_SHORT, "RegionID" }, + { false, FT_INT, "Raidorigin" }, { false, FT_BYTE, "RegionGroupMask" }, + { false, FT_INT, "ChallengeOrigin" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, Cfg_RegionsMeta::Instance(), HOTFIX_SEL_CFG_REGIONS); return &loadInfo; @@ -636,9 +637,9 @@ struct CharBaseSectionLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_BYTE, "LayoutResType" }, { false, FT_BYTE, "VariationEnum" }, { false, FT_BYTE, "ResolutionVariationEnum" }, - { false, FT_BYTE, "LayoutResType" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, CharBaseSectionMeta::Instance(), HOTFIX_SEL_CHAR_BASE_SECTION); return &loadInfo; @@ -652,15 +653,15 @@ struct CharSectionsLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "MaterialResourcesID1" }, - { true, FT_INT, "MaterialResourcesID2" }, - { true, FT_INT, "MaterialResourcesID3" }, - { true, FT_SHORT, "Flags" }, { true, FT_BYTE, "RaceID" }, { true, FT_BYTE, "SexID" }, { true, FT_BYTE, "BaseSection" }, { true, FT_BYTE, "VariationIndex" }, { true, FT_BYTE, "ColorIndex" }, + { true, FT_SHORT, "Flags" }, + { true, FT_INT, "MaterialResourcesID1" }, + { true, FT_INT, "MaterialResourcesID2" }, + { true, FT_INT, "MaterialResourcesID3" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, CharSectionsMeta::Instance(), HOTFIX_SEL_CHAR_SECTIONS); return &loadInfo; @@ -674,6 +675,11 @@ struct CharStartOutfitLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_BYTE, "ClassID" }, + { false, FT_BYTE, "SexID" }, + { false, FT_BYTE, "OutfitID" }, + { false, FT_INT, "PetDisplayID" }, + { false, FT_BYTE, "PetFamilyID" }, { true, FT_INT, "ItemID1" }, { true, FT_INT, "ItemID2" }, { true, FT_INT, "ItemID3" }, @@ -698,11 +704,6 @@ struct CharStartOutfitLoadInfo { true, FT_INT, "ItemID22" }, { true, FT_INT, "ItemID23" }, { true, FT_INT, "ItemID24" }, - { false, FT_INT, "PetDisplayID" }, - { false, FT_BYTE, "ClassID" }, - { false, FT_BYTE, "SexID" }, - { false, FT_BYTE, "OutfitID" }, - { false, FT_BYTE, "PetFamilyID" }, { false, FT_BYTE, "RaceID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, CharStartOutfitMeta::Instance(), HOTFIX_SEL_CHAR_START_OUTFIT); @@ -750,26 +751,26 @@ struct ChrClassesLoadInfo { static DB2FieldMeta const fields[] = { - { false, FT_STRING_NOT_LOCALIZED, "PetNameToken" }, { false, FT_STRING, "Name" }, - { false, FT_STRING, "NameFemale" }, - { false, FT_STRING, "NameMale" }, { false, FT_STRING_NOT_LOCALIZED, "Filename" }, + { false, FT_STRING, "NameMale" }, + { false, FT_STRING, "NameFemale" }, + { false, FT_STRING_NOT_LOCALIZED, "PetNameToken" }, + { false, FT_INT, "ID" }, { false, FT_INT, "CreateScreenFileDataID" }, { false, FT_INT, "SelectScreenFileDataID" }, - { false, FT_INT, "LowResScreenFileDataID" }, { false, FT_INT, "IconFileDataID" }, + { false, FT_INT, "LowResScreenFileDataID" }, { true, FT_INT, "StartingLevel" }, { false, FT_SHORT, "Flags" }, { false, FT_SHORT, "CinematicSequenceID" }, { false, FT_SHORT, "DefaultSpec" }, + { false, FT_BYTE, "PrimaryStatPriority" }, { false, FT_BYTE, "DisplayPower" }, - { false, FT_BYTE, "SpellClassSet" }, - { false, FT_BYTE, "AttackPowerPerStrength" }, - { false, FT_BYTE, "AttackPowerPerAgility" }, { false, FT_BYTE, "RangedAttackPowerPerAgility" }, - { false, FT_BYTE, "PrimaryStatPriority" }, - { false, FT_INT, "ID" }, + { false, FT_BYTE, "AttackPowerPerAgility" }, + { false, FT_BYTE, "AttackPowerPerStrength" }, + { false, FT_BYTE, "SpellClassSet" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ChrClassesMeta::Instance(), HOTFIX_SEL_CHR_CLASSES); return &loadInfo; @@ -783,7 +784,7 @@ struct ChrClassesXPowerTypesLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_BYTE, "PowerType" }, + { true, FT_BYTE, "PowerType" }, { false, FT_BYTE, "ClassID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ChrClassesXPowerTypesMeta::Instance(), HOTFIX_SEL_CHR_CLASSES_X_POWER_TYPES); @@ -803,9 +804,12 @@ struct ChrRacesLoadInfo { false, FT_STRING, "NameFemale" }, { false, FT_STRING, "NameLowercase" }, { false, FT_STRING, "NameFemaleLowercase" }, + { false, FT_INT, "ID" }, { true, FT_INT, "Flags" }, { false, FT_INT, "MaleDisplayId" }, { false, FT_INT, "FemaleDisplayId" }, + { false, FT_INT, "HighResMaleDisplayId" }, + { false, FT_INT, "HighResFemaleDisplayId" }, { true, FT_INT, "CreateScreenFileDataID" }, { true, FT_INT, "SelectScreenFileDataID" }, { false, FT_FLOAT, "MaleCustomizeOffset1" }, @@ -815,34 +819,39 @@ struct ChrRacesLoadInfo { false, FT_FLOAT, "FemaleCustomizeOffset2" }, { false, FT_FLOAT, "FemaleCustomizeOffset3" }, { true, FT_INT, "LowResScreenFileDataID" }, + { false, FT_INT, "AlteredFormStartVisualKitID1" }, + { false, FT_INT, "AlteredFormStartVisualKitID2" }, + { false, FT_INT, "AlteredFormStartVisualKitID3" }, + { false, FT_INT, "AlteredFormFinishVisualKitID1" }, + { false, FT_INT, "AlteredFormFinishVisualKitID2" }, + { false, FT_INT, "AlteredFormFinishVisualKitID3" }, + { true, FT_INT, "HeritageArmorAchievementID" }, { true, FT_INT, "StartingLevel" }, { true, FT_INT, "UiDisplayOrder" }, + { true, FT_INT, "FemaleSkeletonFileDataID" }, + { true, FT_INT, "MaleSkeletonFileDataID" }, + { true, FT_INT, "HelmVisFallbackRaceID" }, { true, FT_SHORT, "FactionID" }, + { true, FT_SHORT, "CinematicSequenceID" }, { true, FT_SHORT, "ResSicknessSpellID" }, { true, FT_SHORT, "SplashSoundID" }, - { true, FT_SHORT, "CinematicSequenceID" }, { true, FT_BYTE, "BaseLanguage" }, { true, FT_BYTE, "CreatureType" }, { true, FT_BYTE, "Alliance" }, { true, FT_BYTE, "RaceRelated" }, { true, FT_BYTE, "UnalteredVisualRaceID" }, { true, FT_BYTE, "CharComponentTextureLayoutID" }, + { true, FT_BYTE, "CharComponentTexLayoutHiResID" }, { true, FT_BYTE, "DefaultClassID" }, { true, FT_BYTE, "NeutralRaceID" }, - { true, FT_BYTE, "DisplayRaceID" }, - { true, FT_BYTE, "CharComponentTexLayoutHiResID" }, - { false, FT_INT, "ID" }, - { false, FT_INT, "HighResMaleDisplayId" }, - { false, FT_INT, "HighResFemaleDisplayId" }, - { true, FT_INT, "HeritageArmorAchievementID" }, - { true, FT_INT, "MaleSkeletonFileDataID" }, - { true, FT_INT, "FemaleSkeletonFileDataID" }, - { false, FT_INT, "AlteredFormStartVisualKitID1" }, - { false, FT_INT, "AlteredFormStartVisualKitID2" }, - { false, FT_INT, "AlteredFormStartVisualKitID3" }, - { false, FT_INT, "AlteredFormFinishVisualKitID1" }, - { false, FT_INT, "AlteredFormFinishVisualKitID2" }, - { false, FT_INT, "AlteredFormFinishVisualKitID3" }, + { true, FT_BYTE, "MaleModelFallbackRaceID" }, + { true, FT_BYTE, "MaleModelFallbackSex" }, + { true, FT_BYTE, "FemaleModelFallbackRaceID" }, + { true, FT_BYTE, "FemaleModelFallbackSex" }, + { true, FT_BYTE, "MaleTextureFallbackRaceID" }, + { true, FT_BYTE, "MaleTextureFallbackSex" }, + { true, FT_BYTE, "FemaleTextureFallbackRaceID" }, + { true, FT_BYTE, "FemaleTextureFallbackSex" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ChrRacesMeta::Instance(), HOTFIX_SEL_CHR_RACES); return &loadInfo; @@ -858,17 +867,17 @@ struct ChrSpecializationLoadInfo { false, FT_STRING, "Name" }, { false, FT_STRING, "FemaleName" }, { false, FT_STRING, "Description" }, - { true, FT_INT, "MasterySpellID1" }, - { true, FT_INT, "MasterySpellID2" }, + { false, FT_INT, "ID" }, { true, FT_BYTE, "ClassID" }, { true, FT_BYTE, "OrderIndex" }, { true, FT_BYTE, "PetTalentType" }, { true, FT_BYTE, "Role" }, - { true, FT_BYTE, "PrimaryStatPriority" }, - { false, FT_INT, "ID" }, - { true, FT_INT, "SpellIconFileID" }, { false, FT_INT, "Flags" }, + { true, FT_INT, "SpellIconFileID" }, + { true, FT_BYTE, "PrimaryStatPriority" }, { true, FT_INT, "AnimReplacements" }, + { true, FT_INT, "MasterySpellID1" }, + { true, FT_INT, "MasterySpellID2" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ChrSpecializationMeta::Instance(), HOTFIX_SEL_CHR_SPECIALIZATION); return &loadInfo; @@ -882,10 +891,10 @@ struct CinematicCameraLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_INT, "SoundID" }, { false, FT_FLOAT, "OriginX" }, { false, FT_FLOAT, "OriginY" }, { false, FT_FLOAT, "OriginZ" }, + { false, FT_INT, "SoundID" }, { false, FT_FLOAT, "OriginFacing" }, { false, FT_INT, "FileDataID" }, }; @@ -916,6 +925,24 @@ struct CinematicSequencesLoadInfo } }; +struct ContentTuningLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_INT, "ID" }, + { true, FT_INT, "MinLevel" }, + { true, FT_INT, "MaxLevel" }, + { true, FT_INT, "Flags" }, + { true, FT_INT, "ExpectedStatModID" }, + { true, FT_INT, "DifficultyESMID" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ContentTuningMeta::Instance(), HOTFIX_SEL_CONTENT_TUNING); + return &loadInfo; + } +}; + struct ConversationLineLoadInfo { static DB2LoadInfo const* Instance() @@ -944,27 +971,29 @@ struct CreatureDisplayInfoLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_FLOAT, "CreatureModelScale" }, { false, FT_SHORT, "ModelID" }, - { false, FT_SHORT, "NPCSoundID" }, + { false, FT_SHORT, "SoundID" }, { true, FT_BYTE, "SizeClass" }, - { false, FT_BYTE, "Flags" }, - { true, FT_BYTE, "Gender" }, - { true, FT_INT, "ExtendedDisplayInfoID" }, - { true, FT_INT, "PortraitTextureFileDataID" }, + { false, FT_FLOAT, "CreatureModelScale" }, { false, FT_BYTE, "CreatureModelAlpha" }, - { false, FT_SHORT, "SoundID" }, - { false, FT_FLOAT, "PlayerOverrideScale" }, - { true, FT_INT, "PortraitCreatureDisplayInfoID" }, { false, FT_BYTE, "BloodID" }, + { true, FT_INT, "ExtendedDisplayInfoID" }, + { false, FT_SHORT, "NPCSoundID" }, { false, FT_SHORT, "ParticleColorID" }, - { false, FT_INT, "CreatureGeosetData" }, + { true, FT_INT, "PortraitCreatureDisplayInfoID" }, + { true, FT_INT, "PortraitTextureFileDataID" }, { false, FT_SHORT, "ObjectEffectPackageID" }, { false, FT_SHORT, "AnimReplacementSetID" }, - { true, FT_BYTE, "UnarmedWeaponType" }, + { false, FT_BYTE, "Flags" }, { true, FT_INT, "StateSpellVisualKitID" }, + { false, FT_FLOAT, "PlayerOverrideScale" }, { false, FT_FLOAT, "PetInstanceScale" }, + { true, FT_BYTE, "UnarmedWeaponType" }, { true, FT_INT, "MountPoofSpellVisualKitID" }, + { true, FT_INT, "DissolveEffectID" }, + { true, FT_BYTE, "Gender" }, + { true, FT_INT, "DissolveOutEffectID" }, + { true, FT_BYTE, "CreatureModelMinLod" }, { true, FT_INT, "TextureVariationFileDataID1" }, { true, FT_INT, "TextureVariationFileDataID2" }, { true, FT_INT, "TextureVariationFileDataID3" }, @@ -981,8 +1010,6 @@ struct CreatureDisplayInfoExtraLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "BakeMaterialResourcesID" }, - { true, FT_INT, "HDBakeMaterialResourcesID" }, { true, FT_BYTE, "DisplayRaceID" }, { true, FT_BYTE, "DisplaySexID" }, { true, FT_BYTE, "DisplayClassID" }, @@ -991,10 +1018,12 @@ struct CreatureDisplayInfoExtraLoadInfo { true, FT_BYTE, "HairStyleID" }, { true, FT_BYTE, "HairColorID" }, { true, FT_BYTE, "FacialHairID" }, + { true, FT_BYTE, "Flags" }, + { true, FT_INT, "BakeMaterialResourcesID" }, + { true, FT_INT, "HDBakeMaterialResourcesID" }, { false, FT_BYTE, "CustomDisplayOption1" }, { false, FT_BYTE, "CustomDisplayOption2" }, { false, FT_BYTE, "CustomDisplayOption3" }, - { true, FT_BYTE, "Flags" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, CreatureDisplayInfoExtraMeta::Instance(), HOTFIX_SEL_CREATURE_DISPLAY_INFO_EXTRA); return &loadInfo; @@ -1010,14 +1039,14 @@ struct CreatureFamilyLoadInfo { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_FLOAT, "MinScale" }, + { true, FT_BYTE, "MinScaleLevel" }, { false, FT_FLOAT, "MaxScale" }, + { true, FT_BYTE, "MaxScaleLevel" }, + { true, FT_SHORT, "PetFoodMask" }, + { true, FT_BYTE, "PetTalentType" }, { true, FT_INT, "IconFileID" }, { true, FT_SHORT, "SkillLine1" }, { true, FT_SHORT, "SkillLine2" }, - { true, FT_SHORT, "PetFoodMask" }, - { true, FT_BYTE, "MinScaleLevel" }, - { true, FT_BYTE, "MaxScaleLevel" }, - { true, FT_BYTE, "PetTalentType" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, CreatureFamilyMeta::Instance(), HOTFIX_SEL_CREATURE_FAMILY); return &loadInfo; @@ -1031,39 +1060,39 @@ struct CreatureModelDataLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_FLOAT, "ModelScale" }, - { false, FT_FLOAT, "FootprintTextureLength" }, - { false, FT_FLOAT, "FootprintTextureWidth" }, - { false, FT_FLOAT, "FootprintParticleScale" }, - { false, FT_FLOAT, "CollisionWidth" }, - { false, FT_FLOAT, "CollisionHeight" }, - { false, FT_FLOAT, "MountHeight" }, { false, FT_FLOAT, "GeoBox1" }, { false, FT_FLOAT, "GeoBox2" }, { false, FT_FLOAT, "GeoBox3" }, { false, FT_FLOAT, "GeoBox4" }, { false, FT_FLOAT, "GeoBox5" }, { false, FT_FLOAT, "GeoBox6" }, - { false, FT_FLOAT, "WorldEffectScale" }, - { false, FT_FLOAT, "AttachedEffectScale" }, - { false, FT_FLOAT, "MissileCollisionRadius" }, - { false, FT_FLOAT, "MissileCollisionPush" }, - { false, FT_FLOAT, "MissileCollisionRaise" }, - { false, FT_FLOAT, "OverrideLootEffectScale" }, - { false, FT_FLOAT, "OverrideNameScale" }, - { false, FT_FLOAT, "OverrideSelectionRadius" }, - { false, FT_FLOAT, "TamedPetBaseScale" }, - { false, FT_FLOAT, "HoverHeight" }, { false, FT_INT, "Flags" }, { false, FT_INT, "FileDataID" }, - { false, FT_INT, "SizeClass" }, { false, FT_INT, "BloodID" }, { false, FT_INT, "FootprintTextureID" }, + { false, FT_FLOAT, "FootprintTextureLength" }, + { false, FT_FLOAT, "FootprintTextureWidth" }, + { false, FT_FLOAT, "FootprintParticleScale" }, { false, FT_INT, "FoleyMaterialID" }, { false, FT_INT, "FootstepCameraEffectID" }, { false, FT_INT, "DeathThudCameraEffectID" }, { false, FT_INT, "SoundID" }, + { false, FT_INT, "SizeClass" }, + { false, FT_FLOAT, "CollisionWidth" }, + { false, FT_FLOAT, "CollisionHeight" }, + { false, FT_FLOAT, "WorldEffectScale" }, { false, FT_INT, "CreatureGeosetDataID" }, + { false, FT_FLOAT, "HoverHeight" }, + { false, FT_FLOAT, "AttachedEffectScale" }, + { false, FT_FLOAT, "ModelScale" }, + { false, FT_FLOAT, "MissileCollisionRadius" }, + { false, FT_FLOAT, "MissileCollisionPush" }, + { false, FT_FLOAT, "MissileCollisionRaise" }, + { false, FT_FLOAT, "MountHeight" }, + { false, FT_FLOAT, "OverrideLootEffectScale" }, + { false, FT_FLOAT, "OverrideNameScale" }, + { false, FT_FLOAT, "OverrideSelectionRadius" }, + { false, FT_FLOAT, "TamedPetBaseScale" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, CreatureModelDataMeta::Instance(), HOTFIX_SEL_CREATURE_MODEL_DATA); return &loadInfo; @@ -1092,16 +1121,16 @@ struct CriteriaLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_INT, "Asset" }, - { true, FT_INT, "StartAsset" }, - { true, FT_INT, "FailAsset" }, + { true, FT_SHORT, "Type" }, + { true, FT_INT, "Asset" }, { false, FT_INT, "ModifierTreeId" }, - { false, FT_SHORT, "StartTimer" }, - { true, FT_SHORT, "EligibilityWorldStateID" }, - { false, FT_BYTE, "Type" }, { false, FT_BYTE, "StartEvent" }, + { true, FT_INT, "StartAsset" }, + { false, FT_SHORT, "StartTimer" }, { false, FT_BYTE, "FailEvent" }, + { true, FT_INT, "FailAsset" }, { false, FT_BYTE, "Flags" }, + { true, FT_SHORT, "EligibilityWorldStateID" }, { true, FT_BYTE, "EligibilityWorldStateValue" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, CriteriaMeta::Instance(), HOTFIX_SEL_CRITERIA); @@ -1117,12 +1146,12 @@ struct CriteriaTreeLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Description" }, - { true, FT_INT, "Amount" }, - { true, FT_SHORT, "Flags" }, + { false, FT_INT, "Parent" }, + { false, FT_INT, "Amount" }, { true, FT_BYTE, "Operator" }, { false, FT_INT, "CriteriaID" }, - { false, FT_INT, "Parent" }, { true, FT_INT, "OrderIndex" }, + { true, FT_SHORT, "Flags" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, CriteriaTreeMeta::Instance(), HOTFIX_SEL_CRITERIA_TREE); return &loadInfo; @@ -1138,14 +1167,15 @@ struct CurrencyTypesLoadInfo { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_STRING, "Description" }, - { false, FT_INT, "MaxQty" }, - { false, FT_INT, "MaxEarnablePerWeek" }, - { false, FT_INT, "Flags" }, { false, FT_BYTE, "CategoryID" }, - { false, FT_BYTE, "SpellCategory" }, - { false, FT_BYTE, "Quality" }, { true, FT_INT, "InventoryIconFileID" }, { false, FT_INT, "SpellWeight" }, + { false, FT_BYTE, "SpellCategory" }, + { false, FT_INT, "MaxQty" }, + { false, FT_INT, "MaxEarnablePerWeek" }, + { false, FT_INT, "Flags" }, + { true, FT_BYTE, "Quality" }, + { true, FT_INT, "FactionID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, CurrencyTypesMeta::Instance(), HOTFIX_SEL_CURRENCY_TYPES); return &loadInfo; @@ -1191,28 +1221,28 @@ struct DestructibleModelDataLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_SHORT, "State0Wmo" }, - { false, FT_SHORT, "State1Wmo" }, - { false, FT_SHORT, "State2Wmo" }, - { false, FT_SHORT, "State3Wmo" }, - { false, FT_SHORT, "HealEffectSpeed" }, { true, FT_BYTE, "State0ImpactEffectDoodadSet" }, { false, FT_BYTE, "State0AmbientDoodadSet" }, - { true, FT_BYTE, "State0NameSet" }, + { false, FT_SHORT, "State1Wmo" }, { true, FT_BYTE, "State1DestructionDoodadSet" }, { true, FT_BYTE, "State1ImpactEffectDoodadSet" }, { false, FT_BYTE, "State1AmbientDoodadSet" }, - { true, FT_BYTE, "State1NameSet" }, + { false, FT_SHORT, "State2Wmo" }, { true, FT_BYTE, "State2DestructionDoodadSet" }, { true, FT_BYTE, "State2ImpactEffectDoodadSet" }, { false, FT_BYTE, "State2AmbientDoodadSet" }, - { true, FT_BYTE, "State2NameSet" }, + { false, FT_SHORT, "State3Wmo" }, { false, FT_BYTE, "State3InitDoodadSet" }, { false, FT_BYTE, "State3AmbientDoodadSet" }, - { true, FT_BYTE, "State3NameSet" }, { false, FT_BYTE, "EjectDirection" }, { false, FT_BYTE, "DoNotHighlight" }, + { false, FT_SHORT, "State0Wmo" }, { false, FT_BYTE, "HealEffect" }, + { false, FT_SHORT, "HealEffectSpeed" }, + { true, FT_BYTE, "State0NameSet" }, + { true, FT_BYTE, "State1NameSet" }, + { true, FT_BYTE, "State2NameSet" }, + { true, FT_BYTE, "State3NameSet" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, DestructibleModelDataMeta::Instance(), HOTFIX_SEL_DESTRUCTIBLE_MODEL_DATA); return &loadInfo; @@ -1227,18 +1257,18 @@ struct DifficultyLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, - { false, FT_SHORT, "GroupSizeHealthCurveID" }, - { false, FT_SHORT, "GroupSizeDmgCurveID" }, - { false, FT_SHORT, "GroupSizeSpellPointsCurveID" }, - { false, FT_BYTE, "FallbackDifficultyID" }, { false, FT_BYTE, "InstanceType" }, + { false, FT_BYTE, "OrderIndex" }, + { true, FT_BYTE, "OldEnumValue" }, + { false, FT_BYTE, "FallbackDifficultyID" }, { false, FT_BYTE, "MinPlayers" }, { false, FT_BYTE, "MaxPlayers" }, - { true, FT_BYTE, "OldEnumValue" }, { false, FT_BYTE, "Flags" }, - { false, FT_BYTE, "ToggleDifficultyID" }, { false, FT_BYTE, "ItemContext" }, - { false, FT_BYTE, "OrderIndex" }, + { false, FT_BYTE, "ToggleDifficultyID" }, + { false, FT_SHORT, "GroupSizeHealthCurveID" }, + { false, FT_SHORT, "GroupSizeDmgCurveID" }, + { false, FT_SHORT, "GroupSizeSpellPointsCurveID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, DifficultyMeta::Instance(), HOTFIX_SEL_DIFFICULTY); return &loadInfo; @@ -1252,13 +1282,13 @@ struct DungeonEncounterLoadInfo static DB2FieldMeta const fields[] = { { false, FT_STRING, "Name" }, - { true, FT_INT, "CreatureDisplayID" }, + { false, FT_INT, "ID" }, { true, FT_SHORT, "MapID" }, { true, FT_BYTE, "DifficultyID" }, + { true, FT_INT, "OrderIndex" }, { true, FT_BYTE, "Bit" }, + { true, FT_INT, "CreatureDisplayID" }, { false, FT_BYTE, "Flags" }, - { false, FT_INT, "ID" }, - { true, FT_INT, "OrderIndex" }, { true, FT_INT, "SpellIconFileID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, DungeonEncounterMeta::Instance(), HOTFIX_SEL_DUNGEON_ENCOUNTER); @@ -1331,13 +1361,13 @@ struct EmotesLoadInfo { false, FT_INT, "ID" }, { true, FT_LONG, "RaceMask" }, { false, FT_STRING_NOT_LOCALIZED, "EmoteSlashCommand" }, + { true, FT_INT, "AnimID" }, { false, FT_INT, "EmoteFlags" }, - { false, FT_INT, "SpellVisualKitID" }, - { true, FT_SHORT, "AnimID" }, { false, FT_BYTE, "EmoteSpecProc" }, - { true, FT_INT, "ClassMask" }, { false, FT_INT, "EmoteSpecProcParam" }, { false, FT_INT, "EventSoundID" }, + { false, FT_INT, "SpellVisualKitID" }, + { true, FT_INT, "ClassMask" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, EmotesMeta::Instance(), HOTFIX_SEL_EMOTES); return &loadInfo; @@ -1367,8 +1397,8 @@ struct EmotesTextSoundLoadInfo { { false, FT_INT, "ID" }, { false, FT_BYTE, "RaceID" }, - { false, FT_BYTE, "SexID" }, { false, FT_BYTE, "ClassID" }, + { false, FT_BYTE, "SexID" }, { false, FT_INT, "SoundID" }, { false, FT_SHORT, "EmotesTextID" }, }; @@ -1377,6 +1407,52 @@ struct EmotesTextSoundLoadInfo } }; +struct ExpectedStatLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_INT, "ID" }, + { true, FT_INT, "ExpansionID" }, + { false, FT_FLOAT, "CreatureHealth" }, + { false, FT_FLOAT, "PlayerHealth" }, + { false, FT_FLOAT, "CreatureAutoAttackDps" }, + { false, FT_FLOAT, "CreatureArmor" }, + { false, FT_FLOAT, "PlayerMana" }, + { false, FT_FLOAT, "PlayerPrimaryStat" }, + { false, FT_FLOAT, "PlayerSecondaryStat" }, + { false, FT_FLOAT, "ArmorConstant" }, + { false, FT_FLOAT, "CreatureSpellDamage" }, + { true, FT_INT, "Lvl" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ExpectedStatMeta::Instance(), HOTFIX_SEL_EXPECTED_STAT); + return &loadInfo; + } +}; + +struct ExpectedStatModLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_INT, "ID" }, + { false, FT_FLOAT, "CreatureHealthMod" }, + { false, FT_FLOAT, "PlayerHealthMod" }, + { false, FT_FLOAT, "CreatureAutoAttackDPSMod" }, + { false, FT_FLOAT, "CreatureArmorMod" }, + { false, FT_FLOAT, "PlayerManaMod" }, + { false, FT_FLOAT, "PlayerPrimaryStatMod" }, + { false, FT_FLOAT, "PlayerSecondaryStatMod" }, + { false, FT_FLOAT, "ArmorConstantMod" }, + { false, FT_FLOAT, "CreatureSpellDamageMod" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ExpectedStatModMeta::Instance(), HOTFIX_SEL_EXPECTED_STAT_MOD); + return &loadInfo; + } +}; + struct FactionLoadInfo { static DB2LoadInfo const* Instance() @@ -1390,17 +1466,12 @@ struct FactionLoadInfo { false, FT_STRING, "Name" }, { false, FT_STRING, "Description" }, { false, FT_INT, "ID" }, - { true, FT_INT, "ReputationBase1" }, - { true, FT_INT, "ReputationBase2" }, - { true, FT_INT, "ReputationBase3" }, - { true, FT_INT, "ReputationBase4" }, - { false, FT_FLOAT, "ParentFactionMod1" }, - { false, FT_FLOAT, "ParentFactionMod2" }, - { true, FT_INT, "ReputationMax1" }, - { true, FT_INT, "ReputationMax2" }, - { true, FT_INT, "ReputationMax3" }, - { true, FT_INT, "ReputationMax4" }, { true, FT_SHORT, "ReputationIndex" }, + { false, FT_SHORT, "ParentFactionID" }, + { false, FT_BYTE, "Expansion" }, + { false, FT_BYTE, "FriendshipRepID" }, + { false, FT_BYTE, "Flags" }, + { false, FT_SHORT, "ParagonFactionID" }, { true, FT_SHORT, "ReputationClassMask1" }, { true, FT_SHORT, "ReputationClassMask2" }, { true, FT_SHORT, "ReputationClassMask3" }, @@ -1409,13 +1480,18 @@ struct FactionLoadInfo { false, FT_SHORT, "ReputationFlags2" }, { false, FT_SHORT, "ReputationFlags3" }, { false, FT_SHORT, "ReputationFlags4" }, - { false, FT_SHORT, "ParentFactionID" }, - { false, FT_SHORT, "ParagonFactionID" }, + { true, FT_INT, "ReputationBase1" }, + { true, FT_INT, "ReputationBase2" }, + { true, FT_INT, "ReputationBase3" }, + { true, FT_INT, "ReputationBase4" }, + { true, FT_INT, "ReputationMax1" }, + { true, FT_INT, "ReputationMax2" }, + { true, FT_INT, "ReputationMax3" }, + { true, FT_INT, "ReputationMax4" }, + { false, FT_FLOAT, "ParentFactionMod1" }, + { false, FT_FLOAT, "ParentFactionMod2" }, { false, FT_BYTE, "ParentFactionCap1" }, { false, FT_BYTE, "ParentFactionCap2" }, - { false, FT_BYTE, "Expansion" }, - { false, FT_BYTE, "Flags" }, - { false, FT_BYTE, "FriendshipRepID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, FactionMeta::Instance(), HOTFIX_SEL_FACTION); return &loadInfo; @@ -1431,6 +1507,9 @@ struct FactionTemplateLoadInfo { false, FT_INT, "ID" }, { false, FT_SHORT, "Faction" }, { false, FT_SHORT, "Flags" }, + { false, FT_BYTE, "FactionGroup" }, + { false, FT_BYTE, "FriendGroup" }, + { false, FT_BYTE, "EnemyGroup" }, { false, FT_SHORT, "Enemies1" }, { false, FT_SHORT, "Enemies2" }, { false, FT_SHORT, "Enemies3" }, @@ -1439,9 +1518,6 @@ struct FactionTemplateLoadInfo { false, FT_SHORT, "Friend2" }, { false, FT_SHORT, "Friend3" }, { false, FT_SHORT, "Friend4" }, - { false, FT_BYTE, "FactionGroup" }, - { false, FT_BYTE, "FriendGroup" }, - { false, FT_BYTE, "EnemyGroup" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, FactionTemplateMeta::Instance(), HOTFIX_SEL_FACTION_TEMPLATE); return &loadInfo; @@ -1455,16 +1531,16 @@ struct GameobjectDisplayInfoLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "FileDataID" }, { false, FT_FLOAT, "GeoBoxMinX" }, { false, FT_FLOAT, "GeoBoxMinY" }, { false, FT_FLOAT, "GeoBoxMinZ" }, { false, FT_FLOAT, "GeoBoxMaxX" }, { false, FT_FLOAT, "GeoBoxMaxY" }, { false, FT_FLOAT, "GeoBoxMaxZ" }, + { true, FT_INT, "FileDataID" }, + { true, FT_SHORT, "ObjectEffectPackageID" }, { false, FT_FLOAT, "OverrideLootEffectScale" }, { false, FT_FLOAT, "OverrideNameScale" }, - { true, FT_SHORT, "ObjectEffectPackageID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GameObjectDisplayInfoMeta::Instance(), HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO); return &loadInfo; @@ -1485,7 +1561,14 @@ struct GameobjectsLoadInfo { false, FT_FLOAT, "Rot2" }, { false, FT_FLOAT, "Rot3" }, { false, FT_FLOAT, "Rot4" }, + { false, FT_INT, "ID" }, + { false, FT_SHORT, "OwnerID" }, + { false, FT_SHORT, "DisplayID" }, { false, FT_FLOAT, "Scale" }, + { false, FT_BYTE, "TypeID" }, + { false, FT_BYTE, "PhaseUseFlags" }, + { false, FT_SHORT, "PhaseID" }, + { false, FT_SHORT, "PhaseGroupID" }, { true, FT_INT, "PropValue1" }, { true, FT_INT, "PropValue2" }, { true, FT_INT, "PropValue3" }, @@ -1494,13 +1577,6 @@ struct GameobjectsLoadInfo { true, FT_INT, "PropValue6" }, { true, FT_INT, "PropValue7" }, { true, FT_INT, "PropValue8" }, - { false, FT_SHORT, "OwnerID" }, - { false, FT_SHORT, "DisplayID" }, - { false, FT_SHORT, "PhaseID" }, - { false, FT_SHORT, "PhaseGroupID" }, - { false, FT_BYTE, "PhaseUseFlags" }, - { false, FT_BYTE, "TypeID" }, - { false, FT_INT, "ID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GameObjectsMeta::Instance(), HOTFIX_SEL_GAMEOBJECTS); return &loadInfo; @@ -1515,12 +1591,12 @@ struct GarrAbilityLoadInfo { { false, FT_STRING, "Name" }, { false, FT_STRING, "Description" }, - { true, FT_INT, "IconFileDataID" }, - { false, FT_SHORT, "Flags" }, - { false, FT_SHORT, "FactionChangeGarrAbilityID" }, + { false, FT_INT, "ID" }, { false, FT_BYTE, "GarrAbilityCategoryID" }, { false, FT_BYTE, "GarrFollowerTypeID" }, - { false, FT_INT, "ID" }, + { true, FT_INT, "IconFileDataID" }, + { false, FT_SHORT, "FactionChangeGarrAbilityID" }, + { false, FT_SHORT, "Flags" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GarrAbilityMeta::Instance(), HOTFIX_SEL_GARR_ABILITY); return &loadInfo; @@ -1534,30 +1610,30 @@ struct GarrBuildingLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_STRING, "AllianceName" }, { false, FT_STRING, "HordeName" }, + { false, FT_STRING, "AllianceName" }, { false, FT_STRING, "Description" }, { false, FT_STRING, "Tooltip" }, + { false, FT_BYTE, "GarrTypeID" }, + { false, FT_BYTE, "BuildingType" }, { true, FT_INT, "HordeGameObjectID" }, { true, FT_INT, "AllianceGameObjectID" }, - { true, FT_INT, "IconFileDataID" }, + { false, FT_BYTE, "GarrSiteID" }, + { false, FT_BYTE, "UpgradeLevel" }, + { true, FT_INT, "BuildSeconds" }, { false, FT_SHORT, "CurrencyTypeID" }, + { true, FT_INT, "CurrencyQty" }, { false, FT_SHORT, "HordeUiTextureKitID" }, { false, FT_SHORT, "AllianceUiTextureKitID" }, + { true, FT_INT, "IconFileDataID" }, { false, FT_SHORT, "AllianceSceneScriptPackageID" }, { false, FT_SHORT, "HordeSceneScriptPackageID" }, + { true, FT_INT, "MaxAssignments" }, + { false, FT_BYTE, "ShipmentCapacity" }, { false, FT_SHORT, "GarrAbilityID" }, { false, FT_SHORT, "BonusGarrAbilityID" }, { false, FT_SHORT, "GoldCost" }, - { false, FT_BYTE, "GarrSiteID" }, - { false, FT_BYTE, "BuildingType" }, - { false, FT_BYTE, "UpgradeLevel" }, { false, FT_BYTE, "Flags" }, - { false, FT_BYTE, "ShipmentCapacity" }, - { false, FT_BYTE, "GarrTypeID" }, - { true, FT_INT, "BuildSeconds" }, - { true, FT_INT, "CurrencyQty" }, - { true, FT_INT, "MaxAssignments" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GarrBuildingMeta::Instance(), HOTFIX_SEL_GARR_BUILDING); return &loadInfo; @@ -1572,10 +1648,10 @@ struct GarrBuildingPlotInstLoadInfo { { false, FT_FLOAT, "MapOffsetX" }, { false, FT_FLOAT, "MapOffsetY" }, - { false, FT_SHORT, "UiTextureAtlasMemberID" }, - { false, FT_SHORT, "GarrSiteLevelPlotInstID" }, - { false, FT_BYTE, "GarrBuildingID" }, { false, FT_INT, "ID" }, + { false, FT_BYTE, "GarrBuildingID" }, + { false, FT_SHORT, "GarrSiteLevelPlotInstID" }, + { false, FT_SHORT, "UiTextureAtlasMemberID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GarrBuildingPlotInstMeta::Instance(), HOTFIX_SEL_GARR_BUILDING_PLOT_INST); return &loadInfo; @@ -1591,11 +1667,11 @@ struct GarrClassSpecLoadInfo { false, FT_STRING, "ClassSpec" }, { false, FT_STRING, "ClassSpecMale" }, { false, FT_STRING, "ClassSpecFemale" }, + { false, FT_INT, "ID" }, { false, FT_SHORT, "UiTextureAtlasMemberID" }, { false, FT_SHORT, "GarrFollItemSetID" }, { false, FT_BYTE, "FollowerClassLimit" }, { false, FT_BYTE, "Flags" }, - { false, FT_INT, "ID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GarrClassSpecMeta::Instance(), HOTFIX_SEL_GARR_CLASS_SPEC); return &loadInfo; @@ -1611,35 +1687,35 @@ struct GarrFollowerLoadInfo { false, FT_STRING, "HordeSourceText" }, { false, FT_STRING, "AllianceSourceText" }, { false, FT_STRING, "TitleName" }, + { false, FT_INT, "ID" }, + { false, FT_BYTE, "GarrTypeID" }, + { false, FT_BYTE, "GarrFollowerTypeID" }, { true, FT_INT, "HordeCreatureID" }, { true, FT_INT, "AllianceCreatureID" }, - { true, FT_INT, "HordeIconFileDataID" }, - { true, FT_INT, "AllianceIconFileDataID" }, - { false, FT_INT, "HordeSlottingBroadcastTextID" }, - { false, FT_INT, "AllySlottingBroadcastTextID" }, - { false, FT_SHORT, "HordeGarrFollItemSetID" }, - { false, FT_SHORT, "AllianceGarrFollItemSetID" }, - { false, FT_SHORT, "ItemLevelWeapon" }, - { false, FT_SHORT, "ItemLevelArmor" }, - { false, FT_SHORT, "HordeUITextureKitID" }, - { false, FT_SHORT, "AllianceUITextureKitID" }, - { false, FT_BYTE, "GarrFollowerTypeID" }, { false, FT_BYTE, "HordeGarrFollRaceID" }, { false, FT_BYTE, "AllianceGarrFollRaceID" }, - { false, FT_BYTE, "Quality" }, { false, FT_BYTE, "HordeGarrClassSpecID" }, { false, FT_BYTE, "AllianceGarrClassSpecID" }, + { false, FT_BYTE, "Quality" }, { false, FT_BYTE, "FollowerLevel" }, - { false, FT_BYTE, "Gender" }, - { false, FT_BYTE, "Flags" }, + { false, FT_SHORT, "ItemLevelWeapon" }, + { false, FT_SHORT, "ItemLevelArmor" }, { true, FT_BYTE, "HordeSourceTypeEnum" }, { true, FT_BYTE, "AllianceSourceTypeEnum" }, - { false, FT_BYTE, "GarrTypeID" }, + { true, FT_INT, "HordeIconFileDataID" }, + { true, FT_INT, "AllianceIconFileDataID" }, + { false, FT_SHORT, "HordeGarrFollItemSetID" }, + { false, FT_SHORT, "AllianceGarrFollItemSetID" }, + { false, FT_SHORT, "HordeUITextureKitID" }, + { false, FT_SHORT, "AllianceUITextureKitID" }, { false, FT_BYTE, "Vitality" }, - { false, FT_BYTE, "ChrClassID" }, { false, FT_BYTE, "HordeFlavorGarrStringID" }, { false, FT_BYTE, "AllianceFlavorGarrStringID" }, - { false, FT_INT, "ID" }, + { false, FT_INT, "HordeSlottingBroadcastTextID" }, + { false, FT_INT, "AllySlottingBroadcastTextID" }, + { false, FT_BYTE, "ChrClassID" }, + { false, FT_BYTE, "Flags" }, + { false, FT_BYTE, "Gender" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GarrFollowerMeta::Instance(), HOTFIX_SEL_GARR_FOLLOWER); return &loadInfo; @@ -1653,8 +1729,9 @@ struct GarrFollowerXAbilityLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_SHORT, "GarrAbilityID" }, + { false, FT_BYTE, "OrderIndex" }, { false, FT_BYTE, "FactionIndex" }, + { false, FT_SHORT, "GarrAbilityID" }, { false, FT_SHORT, "GarrFollowerID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GarrFollowerXAbilityMeta::Instance(), HOTFIX_SEL_GARR_FOLLOWER_X_ABILITY); @@ -1669,12 +1746,12 @@ struct GarrPlotLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_STRING, "Name" }, - { true, FT_INT, "AllianceConstructObjID" }, - { true, FT_INT, "HordeConstructObjID" }, - { false, FT_BYTE, "UiCategoryID" }, + { false, FT_STRING_NOT_LOCALIZED, "Name" }, { false, FT_BYTE, "PlotType" }, + { true, FT_INT, "HordeConstructObjID" }, + { true, FT_INT, "AllianceConstructObjID" }, { false, FT_BYTE, "Flags" }, + { false, FT_BYTE, "UiCategoryID" }, { false, FT_INT, "UpgradeRequirement1" }, { false, FT_INT, "UpgradeRequirement2" }, }; @@ -1722,14 +1799,14 @@ struct GarrSiteLevelLoadInfo { false, FT_INT, "ID" }, { false, FT_FLOAT, "TownHallUiPosX" }, { false, FT_FLOAT, "TownHallUiPosY" }, + { false, FT_INT, "GarrSiteID" }, + { false, FT_BYTE, "GarrLevel" }, { false, FT_SHORT, "MapID" }, - { false, FT_SHORT, "UiTextureKitID" }, { false, FT_SHORT, "UpgradeMovieID" }, + { false, FT_SHORT, "UiTextureKitID" }, + { false, FT_BYTE, "MaxBuildingLevel" }, { false, FT_SHORT, "UpgradeCost" }, { false, FT_SHORT, "UpgradeGoldCost" }, - { false, FT_BYTE, "GarrLevel" }, - { false, FT_BYTE, "GarrSiteID" }, - { false, FT_BYTE, "MaxBuildingLevel" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GarrSiteLevelMeta::Instance(), HOTFIX_SEL_GARR_SITE_LEVEL); return &loadInfo; @@ -1761,8 +1838,8 @@ struct GemPropertiesLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_INT, "Type" }, { false, FT_SHORT, "EnchantId" }, + { true, FT_INT, "Type" }, { false, FT_SHORT, "MinItemLevel" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GemPropertiesMeta::Instance(), HOTFIX_SEL_GEM_PROPERTIES); @@ -1825,8 +1902,8 @@ struct GuildColorBackgroundLoadInfo { { false, FT_INT, "ID" }, { false, FT_BYTE, "Red" }, - { false, FT_BYTE, "Green" }, { false, FT_BYTE, "Blue" }, + { false, FT_BYTE, "Green" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GuildColorBackgroundMeta::Instance(), HOTFIX_SEL_GUILD_COLOR_BACKGROUND); return &loadInfo; @@ -1841,8 +1918,8 @@ struct GuildColorBorderLoadInfo { { false, FT_INT, "ID" }, { false, FT_BYTE, "Red" }, - { false, FT_BYTE, "Green" }, { false, FT_BYTE, "Blue" }, + { false, FT_BYTE, "Green" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GuildColorBorderMeta::Instance(), HOTFIX_SEL_GUILD_COLOR_BORDER); return &loadInfo; @@ -1857,8 +1934,8 @@ struct GuildColorEmblemLoadInfo { { false, FT_INT, "ID" }, { false, FT_BYTE, "Red" }, - { false, FT_BYTE, "Green" }, { false, FT_BYTE, "Blue" }, + { false, FT_BYTE, "Green" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, GuildColorEmblemMeta::Instance(), HOTFIX_SEL_GUILD_COLOR_EMBLEM); return &loadInfo; @@ -1886,19 +1963,19 @@ struct HeirloomLoadInfo static DB2FieldMeta const fields[] = { { false, FT_STRING, "SourceText" }, + { false, FT_INT, "ID" }, { true, FT_INT, "ItemID" }, - { true, FT_INT, "LegacyItemID" }, { true, FT_INT, "LegacyUpgradedItemID" }, { true, FT_INT, "StaticUpgradedItemID" }, + { true, FT_BYTE, "SourceTypeEnum" }, + { false, FT_BYTE, "Flags" }, + { true, FT_INT, "LegacyItemID" }, { true, FT_INT, "UpgradeItemID1" }, { true, FT_INT, "UpgradeItemID2" }, { true, FT_INT, "UpgradeItemID3" }, { false, FT_SHORT, "UpgradeItemBonusListID1" }, { false, FT_SHORT, "UpgradeItemBonusListID2" }, { false, FT_SHORT, "UpgradeItemBonusListID3" }, - { false, FT_BYTE, "Flags" }, - { true, FT_BYTE, "SourceTypeEnum" }, - { false, FT_INT, "ID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, HeirloomMeta::Instance(), HOTFIX_SEL_HEIRLOOM); return &loadInfo; @@ -1912,6 +1989,23 @@ struct HolidaysLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_SHORT, "Region" }, + { false, FT_BYTE, "Looping" }, + { false, FT_INT, "HolidayNameID" }, + { false, FT_INT, "HolidayDescriptionID" }, + { false, FT_BYTE, "Priority" }, + { true, FT_BYTE, "CalendarFilterType" }, + { false, FT_BYTE, "Flags" }, + { false, FT_SHORT, "Duration1" }, + { false, FT_SHORT, "Duration2" }, + { false, FT_SHORT, "Duration3" }, + { false, FT_SHORT, "Duration4" }, + { false, FT_SHORT, "Duration5" }, + { false, FT_SHORT, "Duration6" }, + { false, FT_SHORT, "Duration7" }, + { false, FT_SHORT, "Duration8" }, + { false, FT_SHORT, "Duration9" }, + { false, FT_SHORT, "Duration10" }, { false, FT_INT, "Date1" }, { false, FT_INT, "Date2" }, { false, FT_INT, "Date3" }, @@ -1928,18 +2022,6 @@ struct HolidaysLoadInfo { false, FT_INT, "Date14" }, { false, FT_INT, "Date15" }, { false, FT_INT, "Date16" }, - { false, FT_SHORT, "Duration1" }, - { false, FT_SHORT, "Duration2" }, - { false, FT_SHORT, "Duration3" }, - { false, FT_SHORT, "Duration4" }, - { false, FT_SHORT, "Duration5" }, - { false, FT_SHORT, "Duration6" }, - { false, FT_SHORT, "Duration7" }, - { false, FT_SHORT, "Duration8" }, - { false, FT_SHORT, "Duration9" }, - { false, FT_SHORT, "Duration10" }, - { false, FT_SHORT, "Region" }, - { false, FT_BYTE, "Looping" }, { false, FT_BYTE, "CalendarFlags1" }, { false, FT_BYTE, "CalendarFlags2" }, { false, FT_BYTE, "CalendarFlags3" }, @@ -1950,11 +2032,6 @@ struct HolidaysLoadInfo { false, FT_BYTE, "CalendarFlags8" }, { false, FT_BYTE, "CalendarFlags9" }, { false, FT_BYTE, "CalendarFlags10" }, - { false, FT_BYTE, "Priority" }, - { true, FT_BYTE, "CalendarFilterType" }, - { false, FT_BYTE, "Flags" }, - { false, FT_INT, "HolidayNameID" }, - { false, FT_INT, "HolidayDescriptionID" }, { true, FT_INT, "TextureFileDataID1" }, { true, FT_INT, "TextureFileDataID2" }, { true, FT_INT, "TextureFileDataID3" }, @@ -2030,13 +2107,13 @@ struct ItemLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "IconFileDataID" }, { false, FT_BYTE, "ClassID" }, { false, FT_BYTE, "SubclassID" }, - { true, FT_BYTE, "SoundOverrideSubclassID" }, { false, FT_BYTE, "Material" }, - { false, FT_BYTE, "InventoryType" }, + { true, FT_BYTE, "InventoryType" }, { false, FT_BYTE, "SheatheType" }, + { true, FT_BYTE, "SoundOverrideSubclassID" }, + { true, FT_INT, "IconFileDataID" }, { false, FT_BYTE, "ItemGroupSoundsID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemMeta::Instance(), HOTFIX_SEL_ITEM); @@ -2051,10 +2128,10 @@ struct ItemAppearanceLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_BYTE, "DisplayType" }, { true, FT_INT, "ItemDisplayInfoID" }, { true, FT_INT, "DefaultIconFileDataID" }, { true, FT_INT, "UiOrder" }, - { false, FT_BYTE, "DisplayType" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemAppearanceMeta::Instance(), HOTFIX_SEL_ITEM_APPEARANCE); return &loadInfo; @@ -2075,7 +2152,6 @@ struct ItemArmorQualityLoadInfo { false, FT_FLOAT, "Qualitymod5" }, { false, FT_FLOAT, "Qualitymod6" }, { false, FT_FLOAT, "Qualitymod7" }, - { true, FT_SHORT, "ItemLevel" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemArmorQualityMeta::Instance(), HOTFIX_SEL_ITEM_ARMOR_QUALITY); return &loadInfo; @@ -2110,11 +2186,11 @@ struct ItemArmorTotalLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { true, FT_SHORT, "ItemLevel" }, { false, FT_FLOAT, "Cloth" }, { false, FT_FLOAT, "Leather" }, { false, FT_FLOAT, "Mail" }, { false, FT_FLOAT, "Plate" }, - { true, FT_SHORT, "ItemLevel" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemArmorTotalMeta::Instance(), HOTFIX_SEL_ITEM_ARMOR_TOTAL); return &loadInfo; @@ -2175,10 +2251,10 @@ struct ItemBonusTreeNodeLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_BYTE, "ItemContext" }, { false, FT_SHORT, "ChildItemBonusTreeID" }, { false, FT_SHORT, "ChildItemBonusListID" }, { false, FT_SHORT, "ChildItemLevelSelectorID" }, - { false, FT_BYTE, "ItemContext" }, { false, FT_SHORT, "ParentItemBonusTreeID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemBonusTreeNodeMeta::Instance(), HOTFIX_SEL_ITEM_BONUS_TREE_NODE); @@ -2210,8 +2286,8 @@ struct ItemClassLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "ClassName" }, - { false, FT_FLOAT, "PriceModifier" }, { true, FT_BYTE, "ClassID" }, + { false, FT_FLOAT, "PriceModifier" }, { false, FT_BYTE, "Flags" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemClassMeta::Instance(), HOTFIX_SEL_ITEM_CLASS); @@ -2240,6 +2316,7 @@ struct ItemDamageAmmoLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_SHORT, "ItemLevel" }, { false, FT_FLOAT, "Quality1" }, { false, FT_FLOAT, "Quality2" }, { false, FT_FLOAT, "Quality3" }, @@ -2247,7 +2324,6 @@ struct ItemDamageAmmoLoadInfo { false, FT_FLOAT, "Quality5" }, { false, FT_FLOAT, "Quality6" }, { false, FT_FLOAT, "Quality7" }, - { false, FT_SHORT, "ItemLevel" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemDamageAmmoMeta::Instance(), HOTFIX_SEL_ITEM_DAMAGE_AMMO); return &loadInfo; @@ -2261,6 +2337,7 @@ struct ItemDamageOneHandLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_SHORT, "ItemLevel" }, { false, FT_FLOAT, "Quality1" }, { false, FT_FLOAT, "Quality2" }, { false, FT_FLOAT, "Quality3" }, @@ -2268,7 +2345,6 @@ struct ItemDamageOneHandLoadInfo { false, FT_FLOAT, "Quality5" }, { false, FT_FLOAT, "Quality6" }, { false, FT_FLOAT, "Quality7" }, - { false, FT_SHORT, "ItemLevel" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemDamageOneHandMeta::Instance(), HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND); return &loadInfo; @@ -2282,6 +2358,7 @@ struct ItemDamageOneHandCasterLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_SHORT, "ItemLevel" }, { false, FT_FLOAT, "Quality1" }, { false, FT_FLOAT, "Quality2" }, { false, FT_FLOAT, "Quality3" }, @@ -2289,7 +2366,6 @@ struct ItemDamageOneHandCasterLoadInfo { false, FT_FLOAT, "Quality5" }, { false, FT_FLOAT, "Quality6" }, { false, FT_FLOAT, "Quality7" }, - { false, FT_SHORT, "ItemLevel" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemDamageOneHandCasterMeta::Instance(), HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND_CASTER); return &loadInfo; @@ -2303,6 +2379,7 @@ struct ItemDamageTwoHandLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_SHORT, "ItemLevel" }, { false, FT_FLOAT, "Quality1" }, { false, FT_FLOAT, "Quality2" }, { false, FT_FLOAT, "Quality3" }, @@ -2310,7 +2387,6 @@ struct ItemDamageTwoHandLoadInfo { false, FT_FLOAT, "Quality5" }, { false, FT_FLOAT, "Quality6" }, { false, FT_FLOAT, "Quality7" }, - { false, FT_SHORT, "ItemLevel" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemDamageTwoHandMeta::Instance(), HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND); return &loadInfo; @@ -2324,6 +2400,7 @@ struct ItemDamageTwoHandCasterLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_SHORT, "ItemLevel" }, { false, FT_FLOAT, "Quality1" }, { false, FT_FLOAT, "Quality2" }, { false, FT_FLOAT, "Quality3" }, @@ -2331,7 +2408,6 @@ struct ItemDamageTwoHandCasterLoadInfo { false, FT_FLOAT, "Quality5" }, { false, FT_FLOAT, "Quality6" }, { false, FT_FLOAT, "Quality7" }, - { false, FT_SHORT, "ItemLevel" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemDamageTwoHandCasterMeta::Instance(), HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND_CASTER); return &loadInfo; @@ -2345,11 +2421,11 @@ struct ItemDisenchantLootLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { true, FT_BYTE, "Subclass" }, + { false, FT_BYTE, "Quality" }, { false, FT_SHORT, "MinLevel" }, { false, FT_SHORT, "MaxLevel" }, { false, FT_SHORT, "SkillRequired" }, - { true, FT_BYTE, "Subclass" }, - { false, FT_BYTE, "Quality" }, { true, FT_BYTE, "ExpansionID" }, { false, FT_BYTE, "Class" }, }; @@ -2365,14 +2441,14 @@ struct ItemEffectLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "SpellID" }, + { false, FT_BYTE, "LegacySlotIndex" }, + { true, FT_BYTE, "TriggerType" }, + { true, FT_SHORT, "Charges" }, { true, FT_INT, "CoolDownMSec" }, { true, FT_INT, "CategoryCoolDownMSec" }, - { true, FT_SHORT, "Charges" }, { false, FT_SHORT, "SpellCategoryID" }, + { true, FT_INT, "SpellID" }, { false, FT_SHORT, "ChrSpecializationID" }, - { false, FT_BYTE, "LegacySlotIndex" }, - { true, FT_BYTE, "TriggerType" }, { true, FT_INT, "ParentItemID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemEffectMeta::Instance(), HOTFIX_SEL_ITEM_EFFECT); @@ -2387,32 +2463,32 @@ struct ItemExtendedCostLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_SHORT, "RequiredArenaRating" }, + { true, FT_BYTE, "ArenaBracket" }, + { false, FT_BYTE, "Flags" }, + { false, FT_BYTE, "MinFactionID" }, + { false, FT_BYTE, "MinReputation" }, + { false, FT_BYTE, "RequiredAchievement" }, { true, FT_INT, "ItemID1" }, { true, FT_INT, "ItemID2" }, { true, FT_INT, "ItemID3" }, { true, FT_INT, "ItemID4" }, { true, FT_INT, "ItemID5" }, - { false, FT_INT, "CurrencyCount1" }, - { false, FT_INT, "CurrencyCount2" }, - { false, FT_INT, "CurrencyCount3" }, - { false, FT_INT, "CurrencyCount4" }, - { false, FT_INT, "CurrencyCount5" }, { false, FT_SHORT, "ItemCount1" }, { false, FT_SHORT, "ItemCount2" }, { false, FT_SHORT, "ItemCount3" }, { false, FT_SHORT, "ItemCount4" }, { false, FT_SHORT, "ItemCount5" }, - { false, FT_SHORT, "RequiredArenaRating" }, { false, FT_SHORT, "CurrencyID1" }, { false, FT_SHORT, "CurrencyID2" }, { false, FT_SHORT, "CurrencyID3" }, { false, FT_SHORT, "CurrencyID4" }, { false, FT_SHORT, "CurrencyID5" }, - { false, FT_BYTE, "ArenaBracket" }, - { false, FT_BYTE, "MinFactionID" }, - { false, FT_BYTE, "MinReputation" }, - { false, FT_BYTE, "Flags" }, - { false, FT_BYTE, "RequiredAchievement" }, + { false, FT_INT, "CurrencyCount1" }, + { false, FT_INT, "CurrencyCount2" }, + { false, FT_INT, "CurrencyCount3" }, + { false, FT_INT, "CurrencyCount4" }, + { false, FT_INT, "CurrencyCount5" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemExtendedCostMeta::Instance(), HOTFIX_SEL_ITEM_EXTENDED_COST); return &loadInfo; @@ -2503,8 +2579,8 @@ struct ItemModifiedAppearanceLoadInfo { static DB2FieldMeta const fields[] = { - { true, FT_INT, "ItemID" }, { false, FT_INT, "ID" }, + { true, FT_INT, "ItemID" }, { false, FT_BYTE, "ItemAppearanceModifierID" }, { false, FT_SHORT, "ItemAppearanceID" }, { false, FT_BYTE, "OrderIndex" }, @@ -2522,9 +2598,9 @@ struct ItemPriceBaseLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_SHORT, "ItemLevel" }, { false, FT_FLOAT, "Armor" }, { false, FT_FLOAT, "Weapon" }, - { false, FT_SHORT, "ItemLevel" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemPriceBaseMeta::Instance(), HOTFIX_SEL_ITEM_PRICE_BASE); return &loadInfo; @@ -2583,19 +2659,20 @@ struct ItemSearchNameLoadInfo { true, FT_LONG, "AllowableRace" }, { false, FT_STRING, "Display" }, { false, FT_INT, "ID" }, - { true, FT_INT, "Flags1" }, - { true, FT_INT, "Flags2" }, - { true, FT_INT, "Flags3" }, - { false, FT_SHORT, "ItemLevel" }, { false, FT_BYTE, "OverallQualityID" }, { false, FT_BYTE, "ExpansionID" }, - { true, FT_BYTE, "RequiredLevel" }, { false, FT_SHORT, "MinFactionID" }, { false, FT_BYTE, "MinReputation" }, { true, FT_INT, "AllowableClass" }, + { true, FT_BYTE, "RequiredLevel" }, { false, FT_SHORT, "RequiredSkill" }, { false, FT_SHORT, "RequiredSkillRank" }, { false, FT_INT, "RequiredAbility" }, + { false, FT_SHORT, "ItemLevel" }, + { true, FT_INT, "Flags1" }, + { true, FT_INT, "Flags2" }, + { true, FT_INT, "Flags3" }, + { true, FT_INT, "Flags4" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemSearchNameMeta::Instance(), HOTFIX_SEL_ITEM_SEARCH_NAME); return &loadInfo; @@ -2610,6 +2687,9 @@ struct ItemSetLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, + { false, FT_INT, "SetFlags" }, + { false, FT_INT, "RequiredSkill" }, + { false, FT_SHORT, "RequiredSkillRank" }, { false, FT_INT, "ItemID1" }, { false, FT_INT, "ItemID2" }, { false, FT_INT, "ItemID3" }, @@ -2627,9 +2707,6 @@ struct ItemSetLoadInfo { false, FT_INT, "ItemID15" }, { false, FT_INT, "ItemID16" }, { false, FT_INT, "ItemID17" }, - { false, FT_SHORT, "RequiredSkillRank" }, - { false, FT_INT, "RequiredSkill" }, - { false, FT_INT, "SetFlags" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemSetMeta::Instance(), HOTFIX_SEL_ITEM_SET); return &loadInfo; @@ -2643,8 +2720,8 @@ struct ItemSetSpellLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_INT, "SpellID" }, { false, FT_SHORT, "ChrSpecID" }, + { false, FT_INT, "SpellID" }, { false, FT_BYTE, "Threshold" }, { false, FT_SHORT, "ItemSetID" }, }; @@ -2661,33 +2738,16 @@ struct ItemSparseLoadInfo { { false, FT_INT, "ID" }, { true, FT_LONG, "AllowableRace" }, - { false, FT_STRING, "Display" }, - { false, FT_STRING, "Display1" }, - { false, FT_STRING, "Display2" }, - { false, FT_STRING, "Display3" }, { false, FT_STRING, "Description" }, - { true, FT_INT, "Flags1" }, - { true, FT_INT, "Flags2" }, - { true, FT_INT, "Flags3" }, - { true, FT_INT, "Flags4" }, - { false, FT_FLOAT, "PriceRandomValue" }, - { false, FT_FLOAT, "PriceVariance" }, - { false, FT_INT, "VendorStackCount" }, - { false, FT_INT, "BuyPrice" }, - { false, FT_INT, "SellPrice" }, - { false, FT_INT, "RequiredAbility" }, - { true, FT_INT, "MaxCount" }, - { true, FT_INT, "Stackable" }, - { true, FT_INT, "StatPercentEditor1" }, - { true, FT_INT, "StatPercentEditor2" }, - { true, FT_INT, "StatPercentEditor3" }, - { true, FT_INT, "StatPercentEditor4" }, - { true, FT_INT, "StatPercentEditor5" }, - { true, FT_INT, "StatPercentEditor6" }, - { true, FT_INT, "StatPercentEditor7" }, - { true, FT_INT, "StatPercentEditor8" }, - { true, FT_INT, "StatPercentEditor9" }, - { true, FT_INT, "StatPercentEditor10" }, + { false, FT_STRING, "Display3" }, + { false, FT_STRING, "Display2" }, + { false, FT_STRING, "Display1" }, + { false, FT_STRING, "Display" }, + { false, FT_FLOAT, "DmgVariance" }, + { false, FT_INT, "DurationInInventory" }, + { false, FT_FLOAT, "QualityModifier" }, + { false, FT_INT, "BagFamily" }, + { false, FT_FLOAT, "ItemRange" }, { false, FT_FLOAT, "StatPercentageOfSocket1" }, { false, FT_FLOAT, "StatPercentageOfSocket2" }, { false, FT_FLOAT, "StatPercentageOfSocket3" }, @@ -2698,50 +2758,64 @@ struct ItemSparseLoadInfo { false, FT_FLOAT, "StatPercentageOfSocket8" }, { false, FT_FLOAT, "StatPercentageOfSocket9" }, { false, FT_FLOAT, "StatPercentageOfSocket10" }, - { false, FT_FLOAT, "ItemRange" }, - { false, FT_INT, "BagFamily" }, - { false, FT_FLOAT, "QualityModifier" }, - { false, FT_INT, "DurationInInventory" }, - { false, FT_FLOAT, "DmgVariance" }, - { true, FT_SHORT, "AllowableClass" }, - { false, FT_SHORT, "ItemLevel" }, - { false, FT_SHORT, "RequiredSkill" }, - { false, FT_SHORT, "RequiredSkillRank" }, - { false, FT_SHORT, "MinFactionID" }, - { true, FT_SHORT, "ItemStatValue1" }, - { true, FT_SHORT, "ItemStatValue2" }, - { true, FT_SHORT, "ItemStatValue3" }, - { true, FT_SHORT, "ItemStatValue4" }, - { true, FT_SHORT, "ItemStatValue5" }, - { true, FT_SHORT, "ItemStatValue6" }, - { true, FT_SHORT, "ItemStatValue7" }, - { true, FT_SHORT, "ItemStatValue8" }, - { true, FT_SHORT, "ItemStatValue9" }, - { true, FT_SHORT, "ItemStatValue10" }, - { false, FT_SHORT, "ScalingStatDistributionID" }, - { false, FT_SHORT, "ItemDelay" }, - { false, FT_SHORT, "PageID" }, - { false, FT_SHORT, "StartQuestID" }, - { false, FT_SHORT, "LockID" }, - { false, FT_SHORT, "RandomSelect" }, - { false, FT_SHORT, "ItemRandomSuffixGroupID" }, - { false, FT_SHORT, "ItemSet" }, - { false, FT_SHORT, "ZoneBound" }, - { false, FT_SHORT, "InstanceBound" }, - { false, FT_SHORT, "TotemCategoryID" }, - { false, FT_SHORT, "SocketMatchEnchantmentId" }, - { false, FT_SHORT, "GemProperties" }, - { false, FT_SHORT, "LimitCategory" }, - { false, FT_SHORT, "RequiredHoliday" }, - { false, FT_SHORT, "RequiredTransmogHoliday" }, + { true, FT_INT, "StatPercentEditor1" }, + { true, FT_INT, "StatPercentEditor2" }, + { true, FT_INT, "StatPercentEditor3" }, + { true, FT_INT, "StatPercentEditor4" }, + { true, FT_INT, "StatPercentEditor5" }, + { true, FT_INT, "StatPercentEditor6" }, + { true, FT_INT, "StatPercentEditor7" }, + { true, FT_INT, "StatPercentEditor8" }, + { true, FT_INT, "StatPercentEditor9" }, + { true, FT_INT, "StatPercentEditor10" }, + { true, FT_INT, "Stackable" }, + { true, FT_INT, "MaxCount" }, + { false, FT_INT, "RequiredAbility" }, + { false, FT_INT, "SellPrice" }, + { false, FT_INT, "BuyPrice" }, + { false, FT_INT, "VendorStackCount" }, + { false, FT_FLOAT, "PriceVariance" }, + { false, FT_FLOAT, "PriceRandomValue" }, + { true, FT_INT, "Flags1" }, + { true, FT_INT, "Flags2" }, + { true, FT_INT, "Flags3" }, + { true, FT_INT, "Flags4" }, + { true, FT_INT, "FactionRelated" }, { false, FT_SHORT, "ItemNameDescriptionID" }, - { false, FT_BYTE, "OverallQualityID" }, - { false, FT_BYTE, "InventoryType" }, - { true, FT_BYTE, "RequiredLevel" }, - { false, FT_BYTE, "RequiredPVPRank" }, - { false, FT_BYTE, "RequiredPVPMedal" }, - { false, FT_BYTE, "MinReputation" }, - { false, FT_BYTE, "ContainerSlots" }, + { false, FT_SHORT, "RequiredTransmogHoliday" }, + { false, FT_SHORT, "RequiredHoliday" }, + { false, FT_SHORT, "LimitCategory" }, + { false, FT_SHORT, "GemProperties" }, + { false, FT_SHORT, "SocketMatchEnchantmentId" }, + { false, FT_SHORT, "TotemCategoryID" }, + { false, FT_SHORT, "InstanceBound" }, + { false, FT_SHORT, "ZoneBound" }, + { false, FT_SHORT, "ItemSet" }, + { false, FT_SHORT, "ItemRandomSuffixGroupID" }, + { false, FT_SHORT, "RandomSelect" }, + { false, FT_SHORT, "LockID" }, + { false, FT_SHORT, "StartQuestID" }, + { false, FT_SHORT, "PageID" }, + { false, FT_SHORT, "ItemDelay" }, + { false, FT_SHORT, "ScalingStatDistributionID" }, + { false, FT_SHORT, "MinFactionID" }, + { false, FT_SHORT, "RequiredSkillRank" }, + { false, FT_SHORT, "RequiredSkill" }, + { false, FT_SHORT, "ItemLevel" }, + { true, FT_SHORT, "AllowableClass" }, + { false, FT_BYTE, "ExpansionID" }, + { false, FT_BYTE, "ArtifactID" }, + { false, FT_BYTE, "SpellWeight" }, + { false, FT_BYTE, "SpellWeightCategory" }, + { false, FT_BYTE, "SocketType1" }, + { false, FT_BYTE, "SocketType2" }, + { false, FT_BYTE, "SocketType3" }, + { false, FT_BYTE, "SheatheType" }, + { false, FT_BYTE, "Material" }, + { false, FT_BYTE, "PageMaterialID" }, + { false, FT_BYTE, "LanguageID" }, + { false, FT_BYTE, "Bonding" }, + { false, FT_BYTE, "DamageDamageType" }, { true, FT_BYTE, "StatModifierBonusStat1" }, { true, FT_BYTE, "StatModifierBonusStat2" }, { true, FT_BYTE, "StatModifierBonusStat3" }, @@ -2752,19 +2826,13 @@ struct ItemSparseLoadInfo { true, FT_BYTE, "StatModifierBonusStat8" }, { true, FT_BYTE, "StatModifierBonusStat9" }, { true, FT_BYTE, "StatModifierBonusStat10" }, - { false, FT_BYTE, "DamageDamageType" }, - { false, FT_BYTE, "Bonding" }, - { false, FT_BYTE, "LanguageID" }, - { false, FT_BYTE, "PageMaterialID" }, - { false, FT_BYTE, "Material" }, - { false, FT_BYTE, "SheatheType" }, - { false, FT_BYTE, "SocketType1" }, - { false, FT_BYTE, "SocketType2" }, - { false, FT_BYTE, "SocketType3" }, - { false, FT_BYTE, "SpellWeightCategory" }, - { false, FT_BYTE, "SpellWeight" }, - { false, FT_BYTE, "ArtifactID" }, - { false, FT_BYTE, "ExpansionID" }, + { false, FT_BYTE, "ContainerSlots" }, + { false, FT_BYTE, "MinReputation" }, + { false, FT_BYTE, "RequiredPVPMedal" }, + { false, FT_BYTE, "RequiredPVPRank" }, + { true, FT_BYTE, "RequiredLevel" }, + { false, FT_BYTE, "InventoryType" }, + { false, FT_BYTE, "OverallQualityID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemSparseMeta::Instance(), HOTFIX_SEL_ITEM_SPARSE); return &loadInfo; @@ -2778,12 +2846,12 @@ struct ItemSpecLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_SHORT, "SpecializationID" }, { false, FT_BYTE, "MinLevel" }, { false, FT_BYTE, "MaxLevel" }, { false, FT_BYTE, "ItemType" }, { false, FT_BYTE, "PrimaryStat" }, { false, FT_BYTE, "SecondaryStat" }, + { false, FT_SHORT, "SpecializationID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemSpecMeta::Instance(), HOTFIX_SEL_ITEM_SPEC); return &loadInfo; @@ -2812,11 +2880,11 @@ struct ItemUpgradeLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_INT, "CurrencyAmount" }, - { false, FT_SHORT, "PrerequisiteID" }, - { false, FT_SHORT, "CurrencyType" }, { false, FT_BYTE, "ItemUpgradePathID" }, { false, FT_BYTE, "ItemLevelIncrement" }, + { false, FT_SHORT, "PrerequisiteID" }, + { false, FT_SHORT, "CurrencyType" }, + { false, FT_INT, "CurrencyAmount" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ItemUpgradeMeta::Instance(), HOTFIX_SEL_ITEM_UPGRADE); return &loadInfo; @@ -2892,37 +2960,38 @@ struct LfgDungeonsLoadInfo { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_STRING, "Description" }, - { true, FT_INT, "Flags" }, - { false, FT_FLOAT, "MinGear" }, - { false, FT_SHORT, "MaxLevel" }, - { false, FT_SHORT, "TargetLevelMax" }, - { true, FT_SHORT, "MapID" }, - { false, FT_SHORT, "RandomID" }, - { false, FT_SHORT, "ScenarioID" }, - { false, FT_SHORT, "FinalEncounterID" }, - { false, FT_SHORT, "BonusReputationAmount" }, - { false, FT_SHORT, "MentorItemLevel" }, - { false, FT_SHORT, "RequiredPlayerConditionId" }, { false, FT_BYTE, "MinLevel" }, - { false, FT_BYTE, "TargetLevel" }, - { false, FT_BYTE, "TargetLevelMin" }, - { false, FT_BYTE, "DifficultyID" }, + { false, FT_SHORT, "MaxLevel" }, { false, FT_BYTE, "TypeID" }, + { false, FT_BYTE, "Subtype" }, { true, FT_BYTE, "Faction" }, + { true, FT_INT, "IconTextureFileID" }, + { true, FT_INT, "RewardsBgTextureFileID" }, + { true, FT_INT, "PopupBgTextureFileID" }, { false, FT_BYTE, "ExpansionLevel" }, - { false, FT_BYTE, "OrderIndex" }, + { true, FT_SHORT, "MapID" }, + { false, FT_BYTE, "DifficultyID" }, + { false, FT_FLOAT, "MinGear" }, { false, FT_BYTE, "GroupID" }, + { false, FT_BYTE, "OrderIndex" }, + { false, FT_INT, "RequiredPlayerConditionId" }, + { false, FT_BYTE, "TargetLevel" }, + { false, FT_BYTE, "TargetLevelMin" }, + { false, FT_SHORT, "TargetLevelMax" }, + { false, FT_SHORT, "RandomID" }, + { false, FT_SHORT, "ScenarioID" }, + { false, FT_SHORT, "FinalEncounterID" }, { false, FT_BYTE, "CountTank" }, { false, FT_BYTE, "CountHealer" }, { false, FT_BYTE, "CountDamage" }, { false, FT_BYTE, "MinCountTank" }, { false, FT_BYTE, "MinCountHealer" }, { false, FT_BYTE, "MinCountDamage" }, - { false, FT_BYTE, "Subtype" }, + { false, FT_SHORT, "BonusReputationAmount" }, + { false, FT_SHORT, "MentorItemLevel" }, { false, FT_BYTE, "MentorCharLevel" }, - { true, FT_INT, "IconTextureFileID" }, - { true, FT_INT, "RewardsBgTextureFileID" }, - { true, FT_INT, "PopupBgTextureFileID" }, + { true, FT_INT, "Flags1" }, + { true, FT_INT, "Flags2" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, LFGDungeonsMeta::Instance(), HOTFIX_SEL_LFG_DUNGEONS); return &loadInfo; @@ -2970,12 +3039,26 @@ struct LiquidTypeLoadInfo { false, FT_STRING_NOT_LOCALIZED, "Texture4" }, { false, FT_STRING_NOT_LOCALIZED, "Texture5" }, { false, FT_STRING_NOT_LOCALIZED, "Texture6" }, + { false, FT_SHORT, "Flags" }, + { false, FT_BYTE, "SoundBank" }, + { false, FT_INT, "SoundID" }, { false, FT_INT, "SpellID" }, { false, FT_FLOAT, "MaxDarkenDepth" }, { false, FT_FLOAT, "FogDarkenIntensity" }, { false, FT_FLOAT, "AmbDarkenIntensity" }, { false, FT_FLOAT, "DirDarkenIntensity" }, + { false, FT_SHORT, "LightID" }, { false, FT_FLOAT, "ParticleScale" }, + { false, FT_BYTE, "ParticleMovement" }, + { false, FT_BYTE, "ParticleTexSlots" }, + { false, FT_BYTE, "MaterialID" }, + { true, FT_INT, "MinimapStaticCol" }, + { false, FT_BYTE, "FrameCountTexture1" }, + { false, FT_BYTE, "FrameCountTexture2" }, + { false, FT_BYTE, "FrameCountTexture3" }, + { false, FT_BYTE, "FrameCountTexture4" }, + { false, FT_BYTE, "FrameCountTexture5" }, + { false, FT_BYTE, "FrameCountTexture6" }, { true, FT_INT, "Color1" }, { true, FT_INT, "Color2" }, { false, FT_FLOAT, "Float1" }, @@ -3000,19 +3083,10 @@ struct LiquidTypeLoadInfo { false, FT_INT, "Int2" }, { false, FT_INT, "Int3" }, { false, FT_INT, "Int4" }, - { false, FT_SHORT, "Flags" }, - { false, FT_SHORT, "LightID" }, - { false, FT_BYTE, "SoundBank" }, - { false, FT_BYTE, "ParticleMovement" }, - { false, FT_BYTE, "ParticleTexSlots" }, - { false, FT_BYTE, "MaterialID" }, - { false, FT_BYTE, "FrameCountTexture1" }, - { false, FT_BYTE, "FrameCountTexture2" }, - { false, FT_BYTE, "FrameCountTexture3" }, - { false, FT_BYTE, "FrameCountTexture4" }, - { false, FT_BYTE, "FrameCountTexture5" }, - { false, FT_BYTE, "FrameCountTexture6" }, - { false, FT_INT, "SoundID" }, + { false, FT_FLOAT, "Coefficient1" }, + { false, FT_FLOAT, "Coefficient2" }, + { false, FT_FLOAT, "Coefficient3" }, + { false, FT_FLOAT, "Coefficient4" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, LiquidTypeMeta::Instance(), HOTFIX_SEL_LIQUID_TYPE); return &loadInfo; @@ -3091,23 +3165,24 @@ struct MapLoadInfo { false, FT_STRING, "MapDescription1" }, { false, FT_STRING, "PvpShortDescription" }, { false, FT_STRING, "PvpLongDescription" }, - { true, FT_INT, "Flags1" }, - { true, FT_INT, "Flags2" }, - { false, FT_FLOAT, "MinimapIconScale" }, { false, FT_FLOAT, "CorpseX" }, { false, FT_FLOAT, "CorpseY" }, + { false, FT_BYTE, "MapType" }, + { true, FT_BYTE, "InstanceType" }, + { false, FT_BYTE, "ExpansionID" }, { false, FT_SHORT, "AreaTableID" }, { true, FT_SHORT, "LoadingScreenID" }, - { true, FT_SHORT, "CorpseMapID" }, { true, FT_SHORT, "TimeOfDayOverride" }, { true, FT_SHORT, "ParentMapID" }, { true, FT_SHORT, "CosmeticParentMapID" }, - { true, FT_SHORT, "WindSettingsID" }, - { false, FT_BYTE, "InstanceType" }, - { false, FT_BYTE, "MapType" }, - { false, FT_BYTE, "ExpansionID" }, - { false, FT_BYTE, "MaxPlayers" }, { false, FT_BYTE, "TimeOffset" }, + { false, FT_FLOAT, "MinimapIconScale" }, + { true, FT_SHORT, "CorpseMapID" }, + { false, FT_BYTE, "MaxPlayers" }, + { true, FT_SHORT, "WindSettingsID" }, + { true, FT_INT, "ZmpFileDataID" }, + { true, FT_INT, "Flags1" }, + { true, FT_INT, "Flags2" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, MapMeta::Instance(), HOTFIX_SEL_MAP); return &loadInfo; @@ -3122,13 +3197,14 @@ struct MapDifficultyLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Message" }, + { false, FT_INT, "ItemContextPickerID" }, + { true, FT_INT, "ContentTuningID" }, { false, FT_BYTE, "DifficultyID" }, + { false, FT_BYTE, "LockID" }, { false, FT_BYTE, "ResetInterval" }, { false, FT_BYTE, "MaxPlayers" }, - { false, FT_BYTE, "LockID" }, - { false, FT_BYTE, "Flags" }, { false, FT_BYTE, "ItemContext" }, - { false, FT_INT, "ItemContextPickerID" }, + { false, FT_BYTE, "Flags" }, { false, FT_SHORT, "MapID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, MapDifficultyMeta::Instance(), HOTFIX_SEL_MAP_DIFFICULTY); @@ -3143,13 +3219,13 @@ struct ModifierTreeLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "Asset" }, - { true, FT_INT, "SecondaryAsset" }, { false, FT_INT, "Parent" }, - { false, FT_BYTE, "Type" }, - { true, FT_BYTE, "TertiaryAsset" }, { true, FT_BYTE, "Operator" }, { true, FT_BYTE, "Amount" }, + { false, FT_BYTE, "Type" }, + { true, FT_INT, "Asset" }, + { true, FT_INT, "SecondaryAsset" }, + { true, FT_BYTE, "TertiaryAsset" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ModifierTreeMeta::Instance(), HOTFIX_SEL_MODIFIER_TREE); return &loadInfo; @@ -3163,15 +3239,15 @@ struct MountLoadInfo static DB2FieldMeta const fields[] = { { false, FT_STRING, "Name" }, - { false, FT_STRING, "Description" }, { false, FT_STRING, "SourceText" }, - { true, FT_INT, "SourceSpellID" }, - { false, FT_FLOAT, "MountFlyRideHeight" }, + { false, FT_STRING, "Description" }, + { false, FT_INT, "ID" }, { false, FT_SHORT, "MountTypeID" }, { false, FT_SHORT, "Flags" }, { true, FT_BYTE, "SourceTypeEnum" }, - { false, FT_INT, "ID" }, + { true, FT_INT, "SourceSpellID" }, { false, FT_INT, "PlayerConditionID" }, + { false, FT_FLOAT, "MountFlyRideHeight" }, { true, FT_INT, "UiModelSceneID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, MountMeta::Instance(), HOTFIX_SEL_MOUNT); @@ -3185,14 +3261,14 @@ struct MountCapabilityLoadInfo { static DB2FieldMeta const fields[] = { - { true, FT_INT, "ReqSpellKnownID" }, - { true, FT_INT, "ModSpellAuraID" }, + { false, FT_INT, "ID" }, + { false, FT_BYTE, "Flags" }, { false, FT_SHORT, "ReqRidingSkill" }, { false, FT_SHORT, "ReqAreaID" }, - { true, FT_SHORT, "ReqMapID" }, - { false, FT_BYTE, "Flags" }, - { false, FT_INT, "ID" }, { false, FT_INT, "ReqSpellAuraID" }, + { true, FT_INT, "ReqSpellKnownID" }, + { true, FT_INT, "ModSpellAuraID" }, + { true, FT_SHORT, "ReqMapID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, MountCapabilityMeta::Instance(), HOTFIX_SEL_MOUNT_CAPABILITY); return &loadInfo; @@ -3238,10 +3314,10 @@ struct MovieLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_INT, "AudioFileDataID" }, - { false, FT_INT, "SubtitleFileDataID" }, { false, FT_BYTE, "Volume" }, { false, FT_BYTE, "KeyID" }, + { false, FT_INT, "AudioFileDataID" }, + { false, FT_INT, "SubtitleFileDataID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, MovieMeta::Instance(), HOTFIX_SEL_MOVIE); return &loadInfo; @@ -3371,12 +3447,9 @@ struct PlayerConditionLoadInfo { true, FT_LONG, "RaceMask" }, { false, FT_STRING, "FailureDescription" }, { false, FT_INT, "ID" }, - { false, FT_BYTE, "Flags" }, { false, FT_SHORT, "MinLevel" }, { false, FT_SHORT, "MaxLevel" }, { true, FT_INT, "ClassMask" }, - { true, FT_BYTE, "Gender" }, - { true, FT_BYTE, "NativeGender" }, { false, FT_INT, "SkillLogic" }, { false, FT_BYTE, "LanguageID" }, { false, FT_BYTE, "MinLanguage" }, @@ -3385,8 +3458,6 @@ struct PlayerConditionLoadInfo { false, FT_BYTE, "MaxReputation" }, { false, FT_INT, "ReputationLogic" }, { true, FT_BYTE, "CurrentPvpFaction" }, - { false, FT_BYTE, "MinPVPRank" }, - { false, FT_BYTE, "MaxPVPRank" }, { false, FT_BYTE, "PvpMedal" }, { false, FT_INT, "PrevQuestLogic" }, { false, FT_INT, "CurrQuestLogic" }, @@ -3400,31 +3471,36 @@ struct PlayerConditionLoadInfo { false, FT_BYTE, "PartyStatus" }, { false, FT_BYTE, "LifetimeMaxPVPRank" }, { false, FT_INT, "AchievementLogic" }, - { false, FT_INT, "LfgLogic" }, + { true, FT_BYTE, "Gender" }, + { true, FT_BYTE, "NativeGender" }, { false, FT_INT, "AreaLogic" }, + { false, FT_INT, "LfgLogic" }, { false, FT_INT, "CurrencyLogic" }, { false, FT_SHORT, "QuestKillID" }, { false, FT_INT, "QuestKillLogic" }, { true, FT_BYTE, "MinExpansionLevel" }, { true, FT_BYTE, "MaxExpansionLevel" }, - { true, FT_BYTE, "MinExpansionTier" }, - { true, FT_BYTE, "MaxExpansionTier" }, - { false, FT_BYTE, "MinGuildLevel" }, - { false, FT_BYTE, "MaxGuildLevel" }, - { false, FT_BYTE, "PhaseUseFlags" }, - { false, FT_SHORT, "PhaseID" }, - { false, FT_INT, "PhaseGroupID" }, { true, FT_INT, "MinAvgItemLevel" }, { true, FT_INT, "MaxAvgItemLevel" }, { false, FT_SHORT, "MinAvgEquippedItemLevel" }, { false, FT_SHORT, "MaxAvgEquippedItemLevel" }, + { false, FT_BYTE, "PhaseUseFlags" }, + { false, FT_SHORT, "PhaseID" }, + { false, FT_INT, "PhaseGroupID" }, + { false, FT_BYTE, "Flags" }, { true, FT_BYTE, "ChrSpecializationIndex" }, { true, FT_BYTE, "ChrSpecializationRole" }, + { false, FT_INT, "ModifierTreeID" }, { true, FT_BYTE, "PowerType" }, { false, FT_BYTE, "PowerTypeComp" }, { false, FT_BYTE, "PowerTypeValue" }, - { false, FT_INT, "ModifierTreeID" }, { true, FT_INT, "WeaponSubclassMask" }, + { false, FT_BYTE, "MaxGuildLevel" }, + { false, FT_BYTE, "MinGuildLevel" }, + { true, FT_BYTE, "MaxExpansionTier" }, + { true, FT_BYTE, "MinExpansionTier" }, + { false, FT_BYTE, "MinPVPRank" }, + { false, FT_BYTE, "MaxPVPRank" }, { false, FT_SHORT, "SkillID1" }, { false, FT_SHORT, "SkillID2" }, { false, FT_SHORT, "SkillID3" }, @@ -3483,6 +3559,10 @@ struct PlayerConditionLoadInfo { false, FT_SHORT, "Achievement2" }, { false, FT_SHORT, "Achievement3" }, { false, FT_SHORT, "Achievement4" }, + { false, FT_SHORT, "AreaID1" }, + { false, FT_SHORT, "AreaID2" }, + { false, FT_SHORT, "AreaID3" }, + { false, FT_SHORT, "AreaID4" }, { false, FT_BYTE, "LfgStatus1" }, { false, FT_BYTE, "LfgStatus2" }, { false, FT_BYTE, "LfgStatus3" }, @@ -3495,10 +3575,6 @@ struct PlayerConditionLoadInfo { false, FT_INT, "LfgValue2" }, { false, FT_INT, "LfgValue3" }, { false, FT_INT, "LfgValue4" }, - { false, FT_SHORT, "AreaID1" }, - { false, FT_SHORT, "AreaID2" }, - { false, FT_SHORT, "AreaID3" }, - { false, FT_SHORT, "AreaID4" }, { false, FT_INT, "CurrencyID1" }, { false, FT_INT, "CurrencyID2" }, { false, FT_INT, "CurrencyID3" }, @@ -3548,16 +3624,16 @@ struct PowerTypeLoadInfo { false, FT_INT, "ID" }, { false, FT_STRING_NOT_LOCALIZED, "NameGlobalStringTag" }, { false, FT_STRING_NOT_LOCALIZED, "CostGlobalStringTag" }, - { false, FT_FLOAT, "RegenPeace" }, - { false, FT_FLOAT, "RegenCombat" }, - { true, FT_SHORT, "MaxBasePower" }, - { true, FT_SHORT, "RegenInterruptTimeMS" }, - { true, FT_SHORT, "Flags" }, { true, FT_BYTE, "PowerTypeEnum" }, { true, FT_BYTE, "MinPower" }, + { true, FT_SHORT, "MaxBasePower" }, { true, FT_BYTE, "CenterPower" }, { true, FT_BYTE, "DefaultPower" }, { true, FT_BYTE, "DisplayModifier" }, + { true, FT_SHORT, "RegenInterruptTimeMS" }, + { false, FT_FLOAT, "RegenPeace" }, + { false, FT_FLOAT, "RegenCombat" }, + { true, FT_SHORT, "Flags" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, PowerTypeMeta::Instance(), HOTFIX_SEL_POWER_TYPE); return &loadInfo; @@ -3572,9 +3648,10 @@ struct PrestigeLevelInfoLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, + { true, FT_INT, "PrestigeLevel" }, { true, FT_INT, "BadgeTextureFileDataID" }, - { false, FT_BYTE, "PrestigeLevel" }, { false, FT_BYTE, "Flags" }, + { true, FT_INT, "AwardedAchievementID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, PrestigeLevelInfoMeta::Instance(), HOTFIX_SEL_PRESTIGE_LEVEL_INFO); return &loadInfo; @@ -3613,57 +3690,54 @@ struct PvpItemLoadInfo } }; -struct PvpRewardLoadInfo +struct PvpTalentLoadInfo { static DB2LoadInfo const* Instance() { static DB2FieldMeta const fields[] = { + { false, FT_STRING, "Description" }, { false, FT_INT, "ID" }, - { true, FT_INT, "HonorLevel" }, - { true, FT_INT, "PrestigeLevel" }, - { true, FT_INT, "RewardPackID" }, + { true, FT_INT, "SpecID" }, + { true, FT_INT, "SpellID" }, + { true, FT_INT, "OverridesSpellID" }, + { true, FT_INT, "Flags" }, + { true, FT_INT, "ActionBarSpellID" }, + { true, FT_INT, "PvpTalentCategoryID" }, + { true, FT_INT, "LevelRequired" }, }; - static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, PvpRewardMeta::Instance(), HOTFIX_SEL_PVP_REWARD); + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, PvpTalentMeta::Instance(), HOTFIX_SEL_PVP_TALENT); return &loadInfo; } }; -struct PvpTalentLoadInfo +struct PvpTalentCategoryLoadInfo { static DB2LoadInfo const* Instance() { static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_STRING, "Description" }, - { true, FT_INT, "SpellID" }, - { true, FT_INT, "OverridesSpellID" }, - { true, FT_INT, "ActionBarSpellID" }, - { true, FT_INT, "TierID" }, - { true, FT_INT, "ColumnIndex" }, - { true, FT_INT, "Flags" }, - { true, FT_INT, "ClassID" }, - { true, FT_INT, "SpecID" }, - { true, FT_INT, "Role" }, + { false, FT_BYTE, "TalentSlotMask" }, }; - static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, PvpTalentMeta::Instance(), HOTFIX_SEL_PVP_TALENT); + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, PvpTalentCategoryMeta::Instance(), HOTFIX_SEL_PVP_TALENT_CATEGORY); return &loadInfo; } }; -struct PvpTalentUnlockLoadInfo +struct PvpTalentSlotUnlockLoadInfo { static DB2LoadInfo const* Instance() { static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "TierID" }, - { true, FT_INT, "ColumnIndex" }, - { true, FT_INT, "HonorLevel" }, + { true, FT_BYTE, "Slot" }, + { true, FT_INT, "LevelRequired" }, + { true, FT_INT, "DeathKnightLevelRequired" }, + { true, FT_INT, "DemonHunterLevelRequired" }, }; - static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, PvpTalentUnlockMeta::Instance(), HOTFIX_SEL_PVP_TALENT_UNLOCK); + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, PvpTalentSlotUnlockMeta::Instance(), HOTFIX_SEL_PVP_TALENT_SLOT_UNLOCK); return &loadInfo; } }; @@ -3721,10 +3795,10 @@ struct QuestPackageItemLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "ItemID" }, { false, FT_SHORT, "PackageID" }, - { false, FT_BYTE, "DisplayType" }, + { true, FT_INT, "ItemID" }, { false, FT_INT, "ItemQuantity" }, + { false, FT_BYTE, "DisplayType" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, QuestPackageItemMeta::Instance(), HOTFIX_SEL_QUEST_PACKAGE_ITEM); return &loadInfo; @@ -3790,6 +3864,7 @@ struct RandPropPointsLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { true, FT_INT, "DamageReplaceStat" }, { false, FT_INT, "Epic1" }, { false, FT_INT, "Epic2" }, { false, FT_INT, "Epic3" }, @@ -3818,11 +3893,11 @@ struct RewardPackLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { true, FT_INT, "CharTitleID" }, { false, FT_INT, "Money" }, - { false, FT_FLOAT, "ArtifactXPMultiplier" }, { true, FT_BYTE, "ArtifactXPDifficulty" }, + { false, FT_FLOAT, "ArtifactXPMultiplier" }, { false, FT_BYTE, "ArtifactXPCategoryID" }, - { true, FT_INT, "CharTitleID" }, { false, FT_INT, "TreasurePickerID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, RewardPackMeta::Instance(), HOTFIX_SEL_REWARD_PACK); @@ -3877,22 +3952,6 @@ struct RulesetItemUpgradeLoadInfo } }; -struct SandboxScalingLoadInfo -{ - static DB2LoadInfo const* Instance() - { - static DB2FieldMeta const fields[] = - { - { false, FT_INT, "ID" }, - { true, FT_INT, "MinLevel" }, - { true, FT_INT, "MaxLevel" }, - { true, FT_INT, "Flags" }, - }; - static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SandboxScalingMeta::Instance(), HOTFIX_SEL_SANDBOX_SCALING); - return &loadInfo; - } -}; - struct ScalingStatDistributionLoadInfo { static DB2LoadInfo const* Instance() @@ -3918,8 +3977,9 @@ struct ScenarioLoadInfo { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_SHORT, "AreaTableID" }, - { false, FT_BYTE, "Flags" }, { false, FT_BYTE, "Type" }, + { false, FT_BYTE, "Flags" }, + { false, FT_INT, "UiTextureKitID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ScenarioMeta::Instance(), HOTFIX_SEL_SCENARIO); return &loadInfo; @@ -3936,12 +3996,14 @@ struct ScenarioStepLoadInfo { false, FT_STRING, "Description" }, { false, FT_STRING, "Title" }, { false, FT_SHORT, "ScenarioID" }, - { false, FT_SHORT, "Supersedes" }, + { false, FT_INT, "Criteriatreeid" }, { false, FT_SHORT, "RewardQuestID" }, + { true, FT_INT, "RelatedStep" }, + { false, FT_SHORT, "Supersedes" }, { false, FT_BYTE, "OrderIndex" }, { false, FT_BYTE, "Flags" }, - { false, FT_INT, "Criteriatreeid" }, - { true, FT_INT, "RelatedStep" }, + { false, FT_INT, "VisibilityPlayerConditionID" }, + { false, FT_SHORT, "WidgetSetID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ScenarioStepMeta::Instance(), HOTFIX_SEL_SCENARIO_STEP); return &loadInfo; @@ -4013,15 +4075,19 @@ struct SkillLineLoadInfo { static DB2FieldMeta const fields[] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "DisplayName" }, - { false, FT_STRING, "Description" }, { false, FT_STRING, "AlternateVerb" }, - { false, FT_SHORT, "Flags" }, + { false, FT_STRING, "Description" }, + { false, FT_STRING, "HordeDisplayName" }, + { false, FT_STRING_NOT_LOCALIZED, "OverrideSourceInfoDisplayName" }, + { false, FT_INT, "ID" }, { true, FT_BYTE, "CategoryID" }, - { true, FT_BYTE, "CanLink" }, { true, FT_INT, "SpellIconFileID" }, + { true, FT_BYTE, "CanLink" }, { false, FT_INT, "ParentSkillLineID" }, + { true, FT_INT, "ParentTierIndex" }, + { false, FT_SHORT, "Flags" }, + { true, FT_INT, "SpellBookSpellID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SkillLineMeta::Instance(), HOTFIX_SEL_SKILL_LINE); return &loadInfo; @@ -4036,18 +4102,19 @@ struct SkillLineAbilityLoadInfo { { true, FT_LONG, "RaceMask" }, { false, FT_INT, "ID" }, + { true, FT_SHORT, "SkillLine" }, { true, FT_INT, "Spell" }, + { true, FT_SHORT, "MinSkillLineRank" }, + { true, FT_INT, "ClassMask" }, { true, FT_INT, "SupercedesSpell" }, - { true, FT_SHORT, "SkillLine" }, + { true, FT_BYTE, "AcquireMethod" }, { true, FT_SHORT, "TrivialSkillLineRankHigh" }, { true, FT_SHORT, "TrivialSkillLineRankLow" }, + { true, FT_BYTE, "Flags" }, + { true, FT_BYTE, "NumSkillUps" }, { true, FT_SHORT, "UniqueBit" }, { true, FT_SHORT, "TradeSkillCategoryID" }, - { true, FT_BYTE, "NumSkillUps" }, - { true, FT_INT, "ClassMask" }, - { true, FT_SHORT, "MinSkillLineRank" }, - { true, FT_BYTE, "AcquireMethod" }, - { true, FT_BYTE, "Flags" }, + { true, FT_SHORT, "SkillupSkillLineID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SkillLineAbilityMeta::Instance(), HOTFIX_SEL_SKILL_LINE_ABILITY); return &loadInfo; @@ -4063,11 +4130,11 @@ struct SkillRaceClassInfoLoadInfo { false, FT_INT, "ID" }, { true, FT_LONG, "RaceMask" }, { true, FT_SHORT, "SkillID" }, + { true, FT_INT, "ClassMask" }, { false, FT_SHORT, "Flags" }, - { true, FT_SHORT, "SkillTierID" }, { true, FT_BYTE, "Availability" }, { true, FT_BYTE, "MinLevel" }, - { true, FT_INT, "ClassMask" }, + { true, FT_SHORT, "SkillTierID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SkillRaceClassInfoMeta::Instance(), HOTFIX_SEL_SKILL_RACE_CLASS_INFO); return &loadInfo; @@ -4081,18 +4148,18 @@ struct SoundKitLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_BYTE, "SoundType" }, { false, FT_FLOAT, "VolumeFloat" }, + { false, FT_SHORT, "Flags" }, { false, FT_FLOAT, "MinDistance" }, { false, FT_FLOAT, "DistanceCutoff" }, - { false, FT_SHORT, "Flags" }, - { false, FT_SHORT, "SoundEntriesAdvancedID" }, - { false, FT_BYTE, "SoundType" }, - { false, FT_BYTE, "DialogType" }, { false, FT_BYTE, "EAXDef" }, + { false, FT_INT, "SoundKitAdvancedID" }, { false, FT_FLOAT, "VolumeVariationPlus" }, { false, FT_FLOAT, "VolumeVariationMinus" }, { false, FT_FLOAT, "PitchVariationPlus" }, { false, FT_FLOAT, "PitchVariationMinus" }, + { true, FT_BYTE, "DialogType" }, { false, FT_FLOAT, "PitchAdjust" }, { false, FT_SHORT, "BusOverwriteID" }, { false, FT_BYTE, "MaxInstances" }, @@ -4109,34 +4176,17 @@ struct SpecializationSpellsLoadInfo static DB2FieldMeta const fields[] = { { false, FT_STRING, "Description" }, + { false, FT_INT, "ID" }, + { false, FT_SHORT, "SpecID" }, { true, FT_INT, "SpellID" }, { true, FT_INT, "OverridesSpellID" }, - { false, FT_SHORT, "SpecID" }, { false, FT_BYTE, "DisplayOrder" }, - { false, FT_INT, "ID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpecializationSpellsMeta::Instance(), HOTFIX_SEL_SPECIALIZATION_SPELLS); return &loadInfo; } }; -struct SpellLoadInfo -{ - static DB2LoadInfo const* Instance() - { - static DB2FieldMeta const fields[] = - { - { false, FT_INT, "ID" }, - { false, FT_STRING, "Name" }, - { false, FT_STRING, "NameSubtext" }, - { false, FT_STRING, "Description" }, - { false, FT_STRING, "AuraDescription" }, - }; - static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellMeta::Instance(), HOTFIX_SEL_SPELL); - return &loadInfo; - } -}; - struct SpellAuraOptionsLoadInfo { static DB2LoadInfo const* Instance() @@ -4144,13 +4194,14 @@ struct SpellAuraOptionsLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "ProcCharges" }, - { true, FT_INT, "ProcTypeMask" }, - { true, FT_INT, "ProcCategoryRecovery" }, - { false, FT_SHORT, "CumulativeAura" }, - { false, FT_SHORT, "SpellProcsPerMinuteID" }, { false, FT_BYTE, "DifficultyID" }, + { false, FT_SHORT, "CumulativeAura" }, + { true, FT_INT, "ProcCategoryRecovery" }, { false, FT_BYTE, "ProcChance" }, + { true, FT_INT, "ProcCharges" }, + { false, FT_SHORT, "SpellProcsPerMinuteID" }, + { true, FT_INT, "ProcTypeMask1" }, + { true, FT_INT, "ProcTypeMask2" }, { true, FT_INT, "SpellID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellAuraOptionsMeta::Instance(), HOTFIX_SEL_SPELL_AURA_OPTIONS); @@ -4165,15 +4216,15 @@ struct SpellAuraRestrictionsLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "CasterAuraSpell" }, - { true, FT_INT, "TargetAuraSpell" }, - { true, FT_INT, "ExcludeCasterAuraSpell" }, - { true, FT_INT, "ExcludeTargetAuraSpell" }, { false, FT_BYTE, "DifficultyID" }, { false, FT_BYTE, "CasterAuraState" }, { false, FT_BYTE, "TargetAuraState" }, { false, FT_BYTE, "ExcludeCasterAuraState" }, { false, FT_BYTE, "ExcludeTargetAuraState" }, + { true, FT_INT, "CasterAuraSpell" }, + { true, FT_INT, "TargetAuraSpell" }, + { true, FT_INT, "ExcludeCasterAuraSpell" }, + { true, FT_INT, "ExcludeTargetAuraSpell" }, { true, FT_INT, "SpellID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellAuraRestrictionsMeta::Instance(), HOTFIX_SEL_SPELL_AURA_RESTRICTIONS); @@ -4189,8 +4240,8 @@ struct SpellCastTimesLoadInfo { { false, FT_INT, "ID" }, { true, FT_INT, "Base" }, - { true, FT_INT, "Minimum" }, { true, FT_SHORT, "PerLevel" }, + { true, FT_INT, "Minimum" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellCastTimesMeta::Instance(), HOTFIX_SEL_SPELL_CAST_TIMES); return &loadInfo; @@ -4205,12 +4256,12 @@ struct SpellCastingRequirementsLoadInfo { { false, FT_INT, "ID" }, { true, FT_INT, "SpellID" }, - { false, FT_SHORT, "MinFactionID" }, - { false, FT_SHORT, "RequiredAreasID" }, - { false, FT_SHORT, "RequiresSpellFocus" }, { false, FT_BYTE, "FacingCasterFlags" }, + { false, FT_SHORT, "MinFactionID" }, { true, FT_BYTE, "MinReputation" }, + { false, FT_SHORT, "RequiredAreasID" }, { false, FT_BYTE, "RequiredAuraVision" }, + { false, FT_SHORT, "RequiresSpellFocus" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellCastingRequirementsMeta::Instance(), HOTFIX_SEL_SPELL_CASTING_REQUIREMENTS); return &loadInfo; @@ -4224,14 +4275,14 @@ struct SpellCategoriesLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_SHORT, "Category" }, - { true, FT_SHORT, "StartRecoveryCategory" }, - { true, FT_SHORT, "ChargeCategory" }, { false, FT_BYTE, "DifficultyID" }, + { true, FT_SHORT, "Category" }, { true, FT_BYTE, "DefenseType" }, { true, FT_BYTE, "DispelType" }, { true, FT_BYTE, "Mechanic" }, { true, FT_BYTE, "PreventionType" }, + { true, FT_SHORT, "StartRecoveryCategory" }, + { true, FT_SHORT, "ChargeCategory" }, { true, FT_INT, "SpellID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellCategoriesMeta::Instance(), HOTFIX_SEL_SPELL_CATEGORIES); @@ -4247,10 +4298,10 @@ struct SpellCategoryLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, - { true, FT_INT, "ChargeRecoveryTime" }, { true, FT_BYTE, "Flags" }, { false, FT_BYTE, "UsesPerWeek" }, { true, FT_BYTE, "MaxCharges" }, + { true, FT_INT, "ChargeRecoveryTime" }, { true, FT_INT, "TypeMask" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellCategoryMeta::Instance(), HOTFIX_SEL_SPELL_CATEGORY); @@ -4266,12 +4317,12 @@ struct SpellClassOptionsLoadInfo { { false, FT_INT, "ID" }, { true, FT_INT, "SpellID" }, - { false, FT_INT, "SpellClassMask1" }, - { false, FT_INT, "SpellClassMask2" }, - { false, FT_INT, "SpellClassMask3" }, - { false, FT_INT, "SpellClassMask4" }, - { false, FT_BYTE, "SpellClassSet" }, { false, FT_INT, "ModalNextSpell" }, + { false, FT_BYTE, "SpellClassSet" }, + { true, FT_INT, "SpellClassMask1" }, + { true, FT_INT, "SpellClassMask2" }, + { true, FT_INT, "SpellClassMask3" }, + { true, FT_INT, "SpellClassMask4" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellClassOptionsMeta::Instance(), HOTFIX_SEL_SPELL_CLASS_OPTIONS); return &loadInfo; @@ -4285,10 +4336,10 @@ struct SpellCooldownsLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_BYTE, "DifficultyID" }, { true, FT_INT, "CategoryRecoveryTime" }, { true, FT_INT, "RecoveryTime" }, { true, FT_INT, "StartRecoveryTime" }, - { false, FT_BYTE, "DifficultyID" }, { true, FT_INT, "SpellID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellCooldownsMeta::Instance(), HOTFIX_SEL_SPELL_COOLDOWNS); @@ -4304,8 +4355,8 @@ struct SpellDurationLoadInfo { { false, FT_INT, "ID" }, { true, FT_INT, "Duration" }, - { true, FT_INT, "MaxDuration" }, { false, FT_INT, "DurationPerLevel" }, + { true, FT_INT, "MaxDuration" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellDurationMeta::Instance(), HOTFIX_SEL_SPELL_DURATION); return &loadInfo; @@ -4319,40 +4370,39 @@ struct SpellEffectLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_INT, "Effect" }, - { true, FT_INT, "EffectBasePoints" }, - { true, FT_INT, "EffectIndex" }, - { true, FT_INT, "EffectAura" }, { true, FT_INT, "DifficultyID" }, + { true, FT_INT, "EffectIndex" }, + { false, FT_INT, "Effect" }, { false, FT_FLOAT, "EffectAmplitude" }, + { true, FT_INT, "EffectAttributes" }, + { true, FT_SHORT, "EffectAura" }, { true, FT_INT, "EffectAuraPeriod" }, { false, FT_FLOAT, "EffectBonusCoefficient" }, { false, FT_FLOAT, "EffectChainAmplitude" }, { true, FT_INT, "EffectChainTargets" }, - { true, FT_INT, "EffectDieSides" }, { true, FT_INT, "EffectItemType" }, { true, FT_INT, "EffectMechanic" }, { false, FT_FLOAT, "EffectPointsPerResource" }, + { false, FT_FLOAT, "EffectPosFacing" }, { false, FT_FLOAT, "EffectRealPointsPerLevel" }, { true, FT_INT, "EffectTriggerSpell" }, - { false, FT_FLOAT, "EffectPosFacing" }, - { true, FT_INT, "EffectAttributes" }, { false, FT_FLOAT, "BonusCoefficientFromAP" }, { false, FT_FLOAT, "PvpMultiplier" }, { false, FT_FLOAT, "Coefficient" }, { false, FT_FLOAT, "Variance" }, { false, FT_FLOAT, "ResourceCoefficient" }, { false, FT_FLOAT, "GroupSizeBasePointsCoefficient" }, - { false, FT_INT, "EffectSpellClassMask1" }, - { false, FT_INT, "EffectSpellClassMask2" }, - { false, FT_INT, "EffectSpellClassMask3" }, - { false, FT_INT, "EffectSpellClassMask4" }, + { false, FT_FLOAT, "EffectBasePoints" }, { true, FT_INT, "EffectMiscValue1" }, { true, FT_INT, "EffectMiscValue2" }, { false, FT_INT, "EffectRadiusIndex1" }, { false, FT_INT, "EffectRadiusIndex2" }, - { false, FT_INT, "ImplicitTarget1" }, - { false, FT_INT, "ImplicitTarget2" }, + { true, FT_INT, "EffectSpellClassMask1" }, + { true, FT_INT, "EffectSpellClassMask2" }, + { true, FT_INT, "EffectSpellClassMask3" }, + { true, FT_INT, "EffectSpellClassMask4" }, + { true, FT_SHORT, "ImplicitTarget1" }, + { true, FT_SHORT, "ImplicitTarget2" }, { true, FT_INT, "SpellID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellEffectMeta::Instance(), HOTFIX_SEL_SPELL_EFFECT); @@ -4368,9 +4418,9 @@ struct SpellEquippedItemsLoadInfo { { false, FT_INT, "ID" }, { true, FT_INT, "SpellID" }, + { true, FT_BYTE, "EquippedItemClass" }, { true, FT_INT, "EquippedItemInvTypes" }, { true, FT_INT, "EquippedItemSubclass" }, - { true, FT_BYTE, "EquippedItemClass" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellEquippedItemsMeta::Instance(), HOTFIX_SEL_SPELL_EQUIPPED_ITEMS); return &loadInfo; @@ -4419,6 +4469,7 @@ struct SpellItemEnchantmentLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, + { false, FT_STRING, "HordeName" }, { false, FT_INT, "EffectArg1" }, { false, FT_INT, "EffectArg2" }, { false, FT_INT, "EffectArg3" }, @@ -4427,6 +4478,7 @@ struct SpellItemEnchantmentLoadInfo { false, FT_FLOAT, "EffectScalingPoints3" }, { false, FT_INT, "TransmogCost" }, { false, FT_INT, "IconFileDataID" }, + { false, FT_INT, "TransmogPlayerConditionID" }, { true, FT_SHORT, "EffectPointsMin1" }, { true, FT_SHORT, "EffectPointsMin2" }, { true, FT_SHORT, "EffectPointsMin3" }, @@ -4439,12 +4491,11 @@ struct SpellItemEnchantmentLoadInfo { false, FT_BYTE, "Effect1" }, { false, FT_BYTE, "Effect2" }, { false, FT_BYTE, "Effect3" }, + { true, FT_BYTE, "ScalingClass" }, + { true, FT_BYTE, "ScalingClassRestricted" }, { false, FT_BYTE, "ConditionID" }, { false, FT_BYTE, "MinLevel" }, { false, FT_BYTE, "MaxLevel" }, - { true, FT_BYTE, "ScalingClass" }, - { true, FT_BYTE, "ScalingClassRestricted" }, - { false, FT_INT, "TransmogPlayerConditionID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellItemEnchantmentMeta::Instance(), HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT); return &loadInfo; @@ -4458,16 +4509,16 @@ struct SpellItemEnchantmentConditionLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_INT, "LtOperand1" }, - { false, FT_INT, "LtOperand2" }, - { false, FT_INT, "LtOperand3" }, - { false, FT_INT, "LtOperand4" }, - { false, FT_INT, "LtOperand5" }, { false, FT_BYTE, "LtOperandType1" }, { false, FT_BYTE, "LtOperandType2" }, { false, FT_BYTE, "LtOperandType3" }, { false, FT_BYTE, "LtOperandType4" }, { false, FT_BYTE, "LtOperandType5" }, + { false, FT_INT, "LtOperand1" }, + { false, FT_INT, "LtOperand2" }, + { false, FT_INT, "LtOperand3" }, + { false, FT_INT, "LtOperand4" }, + { false, FT_INT, "LtOperand5" }, { false, FT_BYTE, "Operator1" }, { false, FT_BYTE, "Operator2" }, { false, FT_BYTE, "Operator3" }, @@ -4517,10 +4568,10 @@ struct SpellLevelsLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_BYTE, "DifficultyID" }, { true, FT_SHORT, "BaseLevel" }, { true, FT_SHORT, "MaxLevel" }, { true, FT_SHORT, "SpellLevel" }, - { false, FT_BYTE, "DifficultyID" }, { false, FT_BYTE, "MaxPassiveAuraLevel" }, { true, FT_INT, "SpellID" }, }; @@ -4536,15 +4587,16 @@ struct SpellMiscLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { false, FT_BYTE, "DifficultyID" }, { false, FT_SHORT, "CastingTimeIndex" }, { false, FT_SHORT, "DurationIndex" }, { false, FT_SHORT, "RangeIndex" }, { false, FT_BYTE, "SchoolMask" }, - { true, FT_INT, "SpellIconFileDataID" }, { false, FT_FLOAT, "Speed" }, - { true, FT_INT, "ActiveIconFileDataID" }, { false, FT_FLOAT, "LaunchDelay" }, - { false, FT_BYTE, "DifficultyID" }, + { false, FT_FLOAT, "MinDuration" }, + { true, FT_INT, "SpellIconFileDataID" }, + { true, FT_INT, "ActiveIconFileDataID" }, { true, FT_INT, "Attributes1" }, { true, FT_INT, "Attributes2" }, { true, FT_INT, "Attributes3" }, @@ -4566,25 +4618,39 @@ struct SpellMiscLoadInfo } }; +struct SpellNameLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_INT, "ID" }, + { false, FT_STRING, "Name" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellNameMeta::Instance(), HOTFIX_SEL_SPELL_NAME); + return &loadInfo; + } +}; + struct SpellPowerLoadInfo { static DB2LoadInfo const* Instance() { static DB2FieldMeta const fields[] = { + { false, FT_INT, "ID" }, + { false, FT_BYTE, "OrderIndex" }, { true, FT_INT, "ManaCost" }, + { true, FT_INT, "ManaCostPerLevel" }, + { true, FT_INT, "ManaPerSecond" }, + { false, FT_INT, "PowerDisplayID" }, + { true, FT_INT, "AltPowerBarID" }, { false, FT_FLOAT, "PowerCostPct" }, - { false, FT_FLOAT, "PowerPctPerSecond" }, - { true, FT_INT, "RequiredAuraSpellID" }, { false, FT_FLOAT, "PowerCostMaxPct" }, - { false, FT_BYTE, "OrderIndex" }, + { false, FT_FLOAT, "PowerPctPerSecond" }, { true, FT_BYTE, "PowerType" }, - { false, FT_INT, "ID" }, - { true, FT_INT, "ManaCostPerLevel" }, - { true, FT_INT, "ManaPerSecond" }, + { true, FT_INT, "RequiredAuraSpellID" }, { false, FT_INT, "OptionalCost" }, - { false, FT_INT, "PowerDisplayID" }, - { true, FT_INT, "AltPowerBarID" }, { true, FT_INT, "SpellID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellPowerMeta::Instance(), HOTFIX_SEL_SPELL_POWER); @@ -4598,9 +4664,9 @@ struct SpellPowerDifficultyLoadInfo { static DB2FieldMeta const fields[] = { + { false, FT_INT, "ID" }, { false, FT_BYTE, "DifficultyID" }, { false, FT_BYTE, "OrderIndex" }, - { false, FT_INT, "ID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellPowerDifficultyMeta::Instance(), HOTFIX_SEL_SPELL_POWER_DIFFICULTY); return &loadInfo; @@ -4629,9 +4695,9 @@ struct SpellProcsPerMinuteModLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_FLOAT, "Coeff" }, - { true, FT_SHORT, "Param" }, { false, FT_BYTE, "Type" }, + { true, FT_SHORT, "Param" }, + { false, FT_FLOAT, "Coeff" }, { false, FT_SHORT, "SpellProcsPerMinuteID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellProcsPerMinuteModMeta::Instance(), HOTFIX_SEL_SPELL_PROCS_PER_MINUTE_MOD); @@ -4665,11 +4731,11 @@ struct SpellRangeLoadInfo { false, FT_INT, "ID" }, { false, FT_STRING, "DisplayName" }, { false, FT_STRING, "DisplayNameShort" }, + { false, FT_BYTE, "Flags" }, { false, FT_FLOAT, "RangeMin1" }, { false, FT_FLOAT, "RangeMin2" }, { false, FT_FLOAT, "RangeMax1" }, { false, FT_FLOAT, "RangeMax2" }, - { false, FT_BYTE, "Flags" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellRangeMeta::Instance(), HOTFIX_SEL_SPELL_RANGE); return &loadInfo; @@ -4714,10 +4780,10 @@ struct SpellScalingLoadInfo { { false, FT_INT, "ID" }, { true, FT_INT, "SpellID" }, - { true, FT_SHORT, "ScalesFromItemLevel" }, { true, FT_INT, "Class" }, { false, FT_INT, "MinScalingLevel" }, { false, FT_INT, "MaxScalingLevel" }, + { true, FT_SHORT, "ScalesFromItemLevel" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellScalingMeta::Instance(), HOTFIX_SEL_SPELL_SCALING); return &loadInfo; @@ -4732,11 +4798,11 @@ struct SpellShapeshiftLoadInfo { { false, FT_INT, "ID" }, { true, FT_INT, "SpellID" }, + { true, FT_BYTE, "StanceBarOrder" }, { true, FT_INT, "ShapeshiftExclude1" }, { true, FT_INT, "ShapeshiftExclude2" }, { true, FT_INT, "ShapeshiftMask1" }, { true, FT_INT, "ShapeshiftMask2" }, - { true, FT_BYTE, "StanceBarOrder" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellShapeshiftMeta::Instance(), HOTFIX_SEL_SPELL_SHAPESHIFT); return &loadInfo; @@ -4751,13 +4817,13 @@ struct SpellShapeshiftFormLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, - { false, FT_FLOAT, "DamageVariance" }, + { true, FT_BYTE, "CreatureType" }, { true, FT_INT, "Flags" }, + { true, FT_INT, "AttackIconFileID" }, + { true, FT_BYTE, "BonusActionBar" }, { true, FT_SHORT, "CombatRoundTime" }, + { false, FT_FLOAT, "DamageVariance" }, { false, FT_SHORT, "MountTypeID" }, - { true, FT_BYTE, "CreatureType" }, - { true, FT_BYTE, "BonusActionBar" }, - { true, FT_INT, "AttackIconFileID" }, { false, FT_INT, "CreatureDisplayID1" }, { false, FT_INT, "CreatureDisplayID2" }, { false, FT_INT, "CreatureDisplayID3" }, @@ -4783,13 +4849,13 @@ struct SpellTargetRestrictionsLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_FLOAT, "ConeDegrees" }, - { false, FT_FLOAT, "Width" }, - { true, FT_INT, "Targets" }, - { true, FT_SHORT, "TargetCreatureType" }, { false, FT_BYTE, "DifficultyID" }, + { false, FT_FLOAT, "ConeDegrees" }, { false, FT_BYTE, "MaxTargets" }, { false, FT_INT, "MaxTargetLevel" }, + { true, FT_SHORT, "TargetCreatureType" }, + { true, FT_INT, "Targets" }, + { false, FT_FLOAT, "Width" }, { true, FT_INT, "SpellID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellTargetRestrictionsMeta::Instance(), HOTFIX_SEL_SPELL_TARGET_RESTRICTIONS); @@ -4805,10 +4871,10 @@ struct SpellTotemsLoadInfo { { false, FT_INT, "ID" }, { true, FT_INT, "SpellID" }, - { true, FT_INT, "Totem1" }, - { true, FT_INT, "Totem2" }, { false, FT_SHORT, "RequiredTotemCategoryID1" }, { false, FT_SHORT, "RequiredTotemCategoryID2" }, + { true, FT_INT, "Totem1" }, + { true, FT_INT, "Totem2" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellTotemsMeta::Instance(), HOTFIX_SEL_SPELL_TOTEMS); return &loadInfo; @@ -4821,18 +4887,18 @@ struct SpellXSpellVisualLoadInfo { static DB2FieldMeta const fields[] = { - { false, FT_INT, "SpellVisualID" }, { false, FT_INT, "ID" }, + { false, FT_BYTE, "DifficultyID" }, + { false, FT_INT, "SpellVisualID" }, { false, FT_FLOAT, "Probability" }, - { false, FT_SHORT, "CasterPlayerConditionID" }, - { false, FT_SHORT, "CasterUnitConditionID" }, - { false, FT_SHORT, "ViewerPlayerConditionID" }, - { false, FT_SHORT, "ViewerUnitConditionID" }, - { true, FT_INT, "SpellIconFileID" }, - { true, FT_INT, "ActiveIconFileID" }, { false, FT_BYTE, "Flags" }, - { false, FT_BYTE, "DifficultyID" }, { false, FT_BYTE, "Priority" }, + { true, FT_INT, "SpellIconFileID" }, + { true, FT_INT, "ActiveIconFileID" }, + { false, FT_SHORT, "ViewerUnitConditionID" }, + { false, FT_INT, "ViewerPlayerConditionID" }, + { false, FT_SHORT, "CasterUnitConditionID" }, + { false, FT_INT, "CasterPlayerConditionID" }, { true, FT_INT, "SpellID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SpellXSpellVisualMeta::Instance(), HOTFIX_SEL_SPELL_X_SPELL_VISUAL); @@ -4847,11 +4913,11 @@ struct SummonPropertiesLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "Flags" }, { true, FT_INT, "Control" }, { true, FT_INT, "Faction" }, { true, FT_INT, "Title" }, { true, FT_INT, "Slot" }, + { true, FT_INT, "Flags" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, SummonPropertiesMeta::Instance(), HOTFIX_SEL_SUMMON_PROPERTIES); return &loadInfo; @@ -4895,15 +4961,15 @@ struct TalentLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Description" }, - { false, FT_INT, "SpellID" }, - { false, FT_INT, "OverridesSpellID" }, - { false, FT_SHORT, "SpecID" }, { false, FT_BYTE, "TierID" }, - { false, FT_BYTE, "ColumnIndex" }, { false, FT_BYTE, "Flags" }, + { false, FT_BYTE, "ColumnIndex" }, + { false, FT_BYTE, "ClassID" }, + { false, FT_SHORT, "SpecID" }, + { false, FT_INT, "SpellID" }, + { false, FT_INT, "OverridesSpellID" }, { false, FT_BYTE, "CategoryMask1" }, { false, FT_BYTE, "CategoryMask2" }, - { false, FT_BYTE, "ClassID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, TalentMeta::Instance(), HOTFIX_SEL_TALENT); return &loadInfo; @@ -4916,24 +4982,25 @@ struct TaxiNodesLoadInfo { static DB2FieldMeta const fields[] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_FLOAT, "PosX" }, { false, FT_FLOAT, "PosY" }, { false, FT_FLOAT, "PosZ" }, - { true, FT_INT, "MountCreatureID1" }, - { true, FT_INT, "MountCreatureID2" }, { false, FT_FLOAT, "MapOffsetX" }, { false, FT_FLOAT, "MapOffsetY" }, - { false, FT_FLOAT, "Facing" }, { false, FT_FLOAT, "FlightMapOffsetX" }, { false, FT_FLOAT, "FlightMapOffsetY" }, + { false, FT_INT, "ID" }, { false, FT_SHORT, "ContinentID" }, { false, FT_SHORT, "ConditionID" }, { false, FT_SHORT, "CharacterBitNumber" }, { false, FT_BYTE, "Flags" }, { true, FT_INT, "UiTextureKitID" }, + { false, FT_FLOAT, "Facing" }, { false, FT_INT, "SpecialIconConditionID" }, + { false, FT_INT, "VisibilityConditionID" }, + { true, FT_INT, "MountCreatureID1" }, + { true, FT_INT, "MountCreatureID2" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, TaxiNodesMeta::Instance(), HOTFIX_SEL_TAXI_NODES); return &loadInfo; @@ -4946,9 +5013,9 @@ struct TaxiPathLoadInfo { static DB2FieldMeta const fields[] = { + { false, FT_INT, "ID" }, { false, FT_SHORT, "FromTaxiNode" }, { false, FT_SHORT, "ToTaxiNode" }, - { false, FT_INT, "ID" }, { false, FT_INT, "Cost" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, TaxiPathMeta::Instance(), HOTFIX_SEL_TAXI_PATH); @@ -4965,10 +5032,10 @@ struct TaxiPathNodeLoadInfo { false, FT_FLOAT, "LocX" }, { false, FT_FLOAT, "LocY" }, { false, FT_FLOAT, "LocZ" }, + { false, FT_INT, "ID" }, { false, FT_SHORT, "PathID" }, + { true, FT_INT, "NodeIndex" }, { false, FT_SHORT, "ContinentID" }, - { false, FT_BYTE, "NodeIndex" }, - { false, FT_INT, "ID" }, { false, FT_BYTE, "Flags" }, { false, FT_INT, "Delay" }, { false, FT_SHORT, "ArrivalEventID" }, @@ -4987,8 +5054,8 @@ struct TotemCategoryLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, - { true, FT_INT, "TotemCategoryMask" }, { false, FT_BYTE, "TotemCategoryType" }, + { true, FT_INT, "TotemCategoryMask" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, TotemCategoryMeta::Instance(), HOTFIX_SEL_TOTEM_CATEGORY); return &loadInfo; @@ -5002,10 +5069,10 @@ struct ToyLoadInfo static DB2FieldMeta const fields[] = { { false, FT_STRING, "SourceText" }, + { false, FT_INT, "ID" }, { true, FT_INT, "ItemID" }, { false, FT_BYTE, "Flags" }, { true, FT_BYTE, "SourceTypeEnum" }, - { false, FT_INT, "ID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, ToyMeta::Instance(), HOTFIX_SEL_TOY); return &loadInfo; @@ -5033,15 +5100,15 @@ struct TransmogSetLoadInfo static DB2FieldMeta const fields[] = { { false, FT_STRING, "Name" }, - { false, FT_SHORT, "ParentTransmogSetID" }, - { true, FT_SHORT, "UiOrder" }, - { false, FT_BYTE, "ExpansionID" }, { false, FT_INT, "ID" }, - { true, FT_INT, "Flags" }, - { false, FT_INT, "TrackingQuestID" }, { true, FT_INT, "ClassMask" }, - { true, FT_INT, "ItemNameDescriptionID" }, + { false, FT_INT, "TrackingQuestID" }, + { true, FT_INT, "Flags" }, { false, FT_INT, "TransmogSetGroupID" }, + { true, FT_INT, "ItemNameDescriptionID" }, + { false, FT_SHORT, "ParentTransmogSetID" }, + { false, FT_BYTE, "ExpansionID" }, + { true, FT_SHORT, "UiOrder" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, TransmogSetMeta::Instance(), HOTFIX_SEL_TRANSMOG_SET); return &loadInfo; @@ -5085,11 +5152,11 @@ struct TransportAnimationLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_INT, "TimeIndex" }, { false, FT_FLOAT, "PosX" }, { false, FT_FLOAT, "PosY" }, { false, FT_FLOAT, "PosZ" }, { false, FT_BYTE, "SequenceID" }, + { false, FT_INT, "TimeIndex" }, { true, FT_INT, "TransportID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, TransportAnimationMeta::Instance(), HOTFIX_SEL_TRANSPORT_ANIMATION); @@ -5104,11 +5171,11 @@ struct TransportRotationLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_INT, "TimeIndex" }, { false, FT_FLOAT, "Rot1" }, { false, FT_FLOAT, "Rot2" }, { false, FT_FLOAT, "Rot3" }, { false, FT_FLOAT, "Rot4" }, + { false, FT_INT, "TimeIndex" }, { true, FT_INT, "GameObjectsID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, TransportRotationMeta::Instance(), HOTFIX_SEL_TRANSPORT_ROTATION); @@ -5116,6 +5183,96 @@ struct TransportRotationLoadInfo } }; +struct UiMapLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_STRING, "Name" }, + { false, FT_INT, "ID" }, + { true, FT_INT, "ParentUiMapID" }, + { true, FT_INT, "Flags" }, + { true, FT_INT, "System" }, + { true, FT_INT, "Type" }, + { false, FT_INT, "LevelRangeMin" }, + { false, FT_INT, "LevelRangeMax" }, + { true, FT_INT, "BountySetID" }, + { false, FT_INT, "BountyDisplayLocation" }, + { true, FT_INT, "VisibilityPlayerConditionID" }, + { true, FT_BYTE, "HelpTextPosition" }, + { true, FT_INT, "BkgAtlasID" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, UiMapMeta::Instance(), HOTFIX_SEL_UI_MAP); + return &loadInfo; + } +}; + +struct UiMapAssignmentLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_FLOAT, "UiMinX" }, + { false, FT_FLOAT, "UiMinY" }, + { false, FT_FLOAT, "UiMaxX" }, + { false, FT_FLOAT, "UiMaxY" }, + { false, FT_FLOAT, "Region1X" }, + { false, FT_FLOAT, "Region1Y" }, + { false, FT_FLOAT, "Region1Z" }, + { false, FT_FLOAT, "Region2X" }, + { false, FT_FLOAT, "Region2Y" }, + { false, FT_FLOAT, "Region2Z" }, + { false, FT_INT, "ID" }, + { true, FT_INT, "UiMapID" }, + { true, FT_INT, "OrderIndex" }, + { true, FT_INT, "MapID" }, + { true, FT_INT, "AreaID" }, + { true, FT_INT, "WmoDoodadPlacementID" }, + { true, FT_INT, "WmoGroupID" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, UiMapAssignmentMeta::Instance(), HOTFIX_SEL_UI_MAP_ASSIGNMENT); + return &loadInfo; + } +}; + +struct UiMapLinkLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_FLOAT, "UiMinX" }, + { false, FT_FLOAT, "UiMinY" }, + { false, FT_FLOAT, "UiMaxX" }, + { false, FT_FLOAT, "UiMaxY" }, + { false, FT_INT, "ID" }, + { true, FT_INT, "ParentUiMapID" }, + { true, FT_INT, "OrderIndex" }, + { true, FT_INT, "ChildUiMapID" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, UiMapLinkMeta::Instance(), HOTFIX_SEL_UI_MAP_LINK); + return &loadInfo; + } +}; + +struct UiMapXMapArtLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_INT, "ID" }, + { true, FT_INT, "PhaseID" }, + { true, FT_INT, "UiMapArtID" }, + { true, FT_INT, "UiMapID" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, UiMapXMapArtMeta::Instance(), HOTFIX_SEL_UI_MAP_X_MAP_ART); + return &loadInfo; + } +}; + struct UnitPowerBarLoadInfo { static DB2LoadInfo const* Instance() @@ -5127,8 +5284,16 @@ struct UnitPowerBarLoadInfo { false, FT_STRING, "Cost" }, { false, FT_STRING, "OutOfError" }, { false, FT_STRING, "ToolTip" }, + { false, FT_INT, "MinPower" }, + { false, FT_INT, "MaxPower" }, + { false, FT_SHORT, "StartPower" }, + { false, FT_BYTE, "CenterPower" }, { false, FT_FLOAT, "RegenerationPeace" }, { false, FT_FLOAT, "RegenerationCombat" }, + { false, FT_BYTE, "BarType" }, + { false, FT_SHORT, "Flags" }, + { false, FT_FLOAT, "StartInset" }, + { false, FT_FLOAT, "EndInset" }, { true, FT_INT, "FileDataID1" }, { true, FT_INT, "FileDataID2" }, { true, FT_INT, "FileDataID3" }, @@ -5141,14 +5306,6 @@ struct UnitPowerBarLoadInfo { true, FT_INT, "Color4" }, { true, FT_INT, "Color5" }, { true, FT_INT, "Color6" }, - { false, FT_FLOAT, "StartInset" }, - { false, FT_FLOAT, "EndInset" }, - { false, FT_SHORT, "StartPower" }, - { false, FT_SHORT, "Flags" }, - { false, FT_BYTE, "CenterPower" }, - { false, FT_BYTE, "BarType" }, - { false, FT_INT, "MinPower" }, - { false, FT_INT, "MaxPower" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, UnitPowerBarMeta::Instance(), HOTFIX_SEL_UNIT_POWER_BAR); return &loadInfo; @@ -5163,6 +5320,7 @@ struct VehicleLoadInfo { { false, FT_INT, "ID" }, { true, FT_INT, "Flags" }, + { false, FT_BYTE, "FlagsB" }, { false, FT_FLOAT, "TurnSpeed" }, { false, FT_FLOAT, "PitchSpeed" }, { false, FT_FLOAT, "PitchMin" }, @@ -5174,6 +5332,9 @@ struct VehicleLoadInfo { false, FT_FLOAT, "FacingLimitRight" }, { false, FT_FLOAT, "FacingLimitLeft" }, { false, FT_FLOAT, "CameraYawOffset" }, + { false, FT_BYTE, "UiLocomotionType" }, + { false, FT_SHORT, "VehicleUIIndicatorID" }, + { true, FT_INT, "MissileTargetingID" }, { false, FT_SHORT, "SeatID1" }, { false, FT_SHORT, "SeatID2" }, { false, FT_SHORT, "SeatID3" }, @@ -5182,13 +5343,9 @@ struct VehicleLoadInfo { false, FT_SHORT, "SeatID6" }, { false, FT_SHORT, "SeatID7" }, { false, FT_SHORT, "SeatID8" }, - { false, FT_SHORT, "VehicleUIIndicatorID" }, { false, FT_SHORT, "PowerDisplayID1" }, { false, FT_SHORT, "PowerDisplayID2" }, { false, FT_SHORT, "PowerDisplayID3" }, - { false, FT_BYTE, "FlagsB" }, - { false, FT_BYTE, "UiLocomotionType" }, - { true, FT_INT, "MissileTargetingID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, VehicleMeta::Instance(), HOTFIX_SEL_VEHICLE); return &loadInfo; @@ -5202,12 +5359,16 @@ struct VehicleSeatLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "Flags" }, - { true, FT_INT, "FlagsB" }, - { true, FT_INT, "FlagsC" }, { false, FT_FLOAT, "AttachmentOffsetX" }, { false, FT_FLOAT, "AttachmentOffsetY" }, { false, FT_FLOAT, "AttachmentOffsetZ" }, + { false, FT_FLOAT, "CameraOffsetX" }, + { false, FT_FLOAT, "CameraOffsetY" }, + { false, FT_FLOAT, "CameraOffsetZ" }, + { true, FT_INT, "Flags" }, + { true, FT_INT, "FlagsB" }, + { true, FT_INT, "FlagsC" }, + { true, FT_BYTE, "AttachmentID" }, { false, FT_FLOAT, "EnterPreDelay" }, { false, FT_FLOAT, "EnterSpeed" }, { false, FT_FLOAT, "EnterGravity" }, @@ -5215,6 +5376,12 @@ struct VehicleSeatLoadInfo { false, FT_FLOAT, "EnterMaxDuration" }, { false, FT_FLOAT, "EnterMinArcHeight" }, { false, FT_FLOAT, "EnterMaxArcHeight" }, + { true, FT_INT, "EnterAnimStart" }, + { true, FT_INT, "EnterAnimLoop" }, + { true, FT_INT, "RideAnimStart" }, + { true, FT_INT, "RideAnimLoop" }, + { true, FT_INT, "RideUpperAnimStart" }, + { true, FT_INT, "RideUpperAnimLoop" }, { false, FT_FLOAT, "ExitPreDelay" }, { false, FT_FLOAT, "ExitSpeed" }, { false, FT_FLOAT, "ExitGravity" }, @@ -5222,36 +5389,34 @@ struct VehicleSeatLoadInfo { false, FT_FLOAT, "ExitMaxDuration" }, { false, FT_FLOAT, "ExitMinArcHeight" }, { false, FT_FLOAT, "ExitMaxArcHeight" }, + { true, FT_INT, "ExitAnimStart" }, + { true, FT_INT, "ExitAnimLoop" }, + { true, FT_INT, "ExitAnimEnd" }, + { true, FT_SHORT, "VehicleEnterAnim" }, + { true, FT_BYTE, "VehicleEnterAnimBone" }, + { true, FT_SHORT, "VehicleExitAnim" }, + { true, FT_BYTE, "VehicleExitAnimBone" }, + { true, FT_SHORT, "VehicleRideAnimLoop" }, + { true, FT_BYTE, "VehicleRideAnimLoopBone" }, + { true, FT_BYTE, "PassengerAttachmentID" }, { false, FT_FLOAT, "PassengerYaw" }, { false, FT_FLOAT, "PassengerPitch" }, { false, FT_FLOAT, "PassengerRoll" }, { false, FT_FLOAT, "VehicleEnterAnimDelay" }, { false, FT_FLOAT, "VehicleExitAnimDelay" }, + { true, FT_BYTE, "VehicleAbilityDisplay" }, + { false, FT_INT, "EnterUISoundID" }, + { false, FT_INT, "ExitUISoundID" }, + { true, FT_INT, "UiSkinFileDataID" }, { false, FT_FLOAT, "CameraEnteringDelay" }, { false, FT_FLOAT, "CameraEnteringDuration" }, { false, FT_FLOAT, "CameraExitingDelay" }, { false, FT_FLOAT, "CameraExitingDuration" }, - { false, FT_FLOAT, "CameraOffsetX" }, - { false, FT_FLOAT, "CameraOffsetY" }, - { false, FT_FLOAT, "CameraOffsetZ" }, { false, FT_FLOAT, "CameraPosChaseRate" }, { false, FT_FLOAT, "CameraFacingChaseRate" }, { false, FT_FLOAT, "CameraEnteringZoom" }, { false, FT_FLOAT, "CameraSeatZoomMin" }, { false, FT_FLOAT, "CameraSeatZoomMax" }, - { true, FT_INT, "UiSkinFileDataID" }, - { true, FT_SHORT, "EnterAnimStart" }, - { true, FT_SHORT, "EnterAnimLoop" }, - { true, FT_SHORT, "RideAnimStart" }, - { true, FT_SHORT, "RideAnimLoop" }, - { true, FT_SHORT, "RideUpperAnimStart" }, - { true, FT_SHORT, "RideUpperAnimLoop" }, - { true, FT_SHORT, "ExitAnimStart" }, - { true, FT_SHORT, "ExitAnimLoop" }, - { true, FT_SHORT, "ExitAnimEnd" }, - { true, FT_SHORT, "VehicleEnterAnim" }, - { true, FT_SHORT, "VehicleExitAnim" }, - { true, FT_SHORT, "VehicleRideAnimLoop" }, { true, FT_SHORT, "EnterAnimKitID" }, { true, FT_SHORT, "RideAnimKitID" }, { true, FT_SHORT, "ExitAnimKitID" }, @@ -5259,14 +5424,6 @@ struct VehicleSeatLoadInfo { true, FT_SHORT, "VehicleRideAnimKitID" }, { true, FT_SHORT, "VehicleExitAnimKitID" }, { true, FT_SHORT, "CameraModeID" }, - { true, FT_BYTE, "AttachmentID" }, - { true, FT_BYTE, "PassengerAttachmentID" }, - { true, FT_BYTE, "VehicleEnterAnimBone" }, - { true, FT_BYTE, "VehicleExitAnimBone" }, - { true, FT_BYTE, "VehicleRideAnimLoopBone" }, - { true, FT_BYTE, "VehicleAbilityDisplay" }, - { false, FT_INT, "EnterUISoundID" }, - { false, FT_INT, "ExitUISoundID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, VehicleSeatMeta::Instance(), HOTFIX_SEL_VEHICLE_SEAT); return &loadInfo; @@ -5280,20 +5437,20 @@ struct WmoAreaTableLoadInfo static DB2FieldMeta const fields[] = { { false, FT_STRING, "AreaName" }, + { false, FT_INT, "ID" }, + { false, FT_SHORT, "WmoID" }, + { false, FT_BYTE, "NameSetID" }, { true, FT_INT, "WmoGroupID" }, + { false, FT_BYTE, "SoundProviderPref" }, + { false, FT_BYTE, "SoundProviderPrefUnderwater" }, { false, FT_SHORT, "AmbienceID" }, + { false, FT_SHORT, "UwAmbience" }, { false, FT_SHORT, "ZoneMusic" }, + { false, FT_INT, "UwZoneMusic" }, { false, FT_SHORT, "IntroSound" }, - { false, FT_SHORT, "AreaTableID" }, { false, FT_SHORT, "UwIntroSound" }, - { false, FT_SHORT, "UwAmbience" }, - { false, FT_BYTE, "NameSetID" }, - { false, FT_BYTE, "SoundProviderPref" }, - { false, FT_BYTE, "SoundProviderPrefUnderwater" }, + { false, FT_SHORT, "AreaTableID" }, { false, FT_BYTE, "Flags" }, - { false, FT_INT, "ID" }, - { false, FT_INT, "UwZoneMusic" }, - { false, FT_SHORT, "WmoID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, WMOAreaTableMeta::Instance(), HOTFIX_SEL_WMO_AREA_TABLE); return &loadInfo; @@ -5307,63 +5464,33 @@ struct WorldEffectLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { true, FT_INT, "TargetAsset" }, - { false, FT_SHORT, "CombatConditionID" }, - { false, FT_BYTE, "TargetType" }, - { false, FT_BYTE, "WhenToDisplay" }, { false, FT_INT, "QuestFeedbackEffectID" }, + { false, FT_BYTE, "WhenToDisplay" }, + { false, FT_BYTE, "TargetType" }, + { true, FT_INT, "TargetAsset" }, { false, FT_INT, "PlayerConditionID" }, + { false, FT_SHORT, "CombatConditionID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, WorldEffectMeta::Instance(), HOTFIX_SEL_WORLD_EFFECT); return &loadInfo; } }; -struct WorldMapAreaLoadInfo -{ - static DB2LoadInfo const* Instance() - { - static DB2FieldMeta const fields[] = - { - { false, FT_STRING_NOT_LOCALIZED, "AreaName" }, - { false, FT_FLOAT, "LocLeft" }, - { false, FT_FLOAT, "LocRight" }, - { false, FT_FLOAT, "LocTop" }, - { false, FT_FLOAT, "LocBottom" }, - { false, FT_INT, "Flags" }, - { true, FT_SHORT, "MapID" }, - { false, FT_SHORT, "AreaID" }, - { true, FT_SHORT, "DisplayMapID" }, - { false, FT_SHORT, "DefaultDungeonFloor" }, - { false, FT_SHORT, "ParentWorldMapID" }, - { false, FT_BYTE, "LevelRangeMin" }, - { false, FT_BYTE, "LevelRangeMax" }, - { false, FT_BYTE, "BountySetID" }, - { false, FT_BYTE, "BountyDisplayLocation" }, - { false, FT_INT, "ID" }, - { false, FT_INT, "VisibilityPlayerConditionID" }, - }; - static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, WorldMapAreaMeta::Instance(), HOTFIX_SEL_WORLD_MAP_AREA); - return &loadInfo; - } -}; - struct WorldMapOverlayLoadInfo { static DB2LoadInfo const* Instance() { static DB2FieldMeta const fields[] = { - { false, FT_STRING_NOT_LOCALIZED, "TextureName" }, { false, FT_INT, "ID" }, + { false, FT_INT, "UiMapArtID" }, { false, FT_SHORT, "TextureWidth" }, { false, FT_SHORT, "TextureHeight" }, - { false, FT_INT, "MapAreaID" }, { true, FT_INT, "OffsetX" }, { true, FT_INT, "OffsetY" }, { true, FT_INT, "HitRectTop" }, - { true, FT_INT, "HitRectLeft" }, { true, FT_INT, "HitRectBottom" }, + { true, FT_INT, "HitRectLeft" }, { true, FT_INT, "HitRectRight" }, { false, FT_INT, "PlayerConditionID" }, { false, FT_INT, "Flags" }, @@ -5377,35 +5504,6 @@ struct WorldMapOverlayLoadInfo } }; -struct WorldMapTransformsLoadInfo -{ - static DB2LoadInfo const* Instance() - { - static DB2FieldMeta const fields[] = - { - { false, FT_INT, "ID" }, - { false, FT_FLOAT, "RegionMinX" }, - { false, FT_FLOAT, "RegionMinY" }, - { false, FT_FLOAT, "RegionMinZ" }, - { false, FT_FLOAT, "RegionMaxX" }, - { false, FT_FLOAT, "RegionMaxY" }, - { false, FT_FLOAT, "RegionMaxZ" }, - { false, FT_FLOAT, "RegionOffsetX" }, - { false, FT_FLOAT, "RegionOffsetY" }, - { false, FT_FLOAT, "RegionScale" }, - { false, FT_SHORT, "MapID" }, - { false, FT_SHORT, "AreaID" }, - { false, FT_SHORT, "NewMapID" }, - { false, FT_SHORT, "NewDungeonMapID" }, - { false, FT_SHORT, "NewAreaID" }, - { false, FT_BYTE, "Flags" }, - { true, FT_INT, "Priority" }, - }; - static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, WorldMapTransformsMeta::Instance(), HOTFIX_SEL_WORLD_MAP_TRANSFORMS); - return &loadInfo; - } -}; - struct WorldSafeLocsLoadInfo { static DB2LoadInfo const* Instance() @@ -5417,8 +5515,8 @@ struct WorldSafeLocsLoadInfo { false, FT_FLOAT, "LocX" }, { false, FT_FLOAT, "LocY" }, { false, FT_FLOAT, "LocZ" }, - { false, FT_FLOAT, "Facing" }, { false, FT_SHORT, "MapID" }, + { false, FT_FLOAT, "Facing" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, WorldSafeLocsMeta::Instance(), HOTFIX_SEL_WORLD_SAFE_LOCS); return &loadInfo; diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index b233f53324b..52ae4deaa2f 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -263,14 +263,16 @@ DB2Storage sTransmogSetGroupStore("Transmog DB2Storage sTransmogSetItemStore("TransmogSetItem.db2", TransmogSetItemLoadInfo::Instance()); DB2Storage sTransportAnimationStore("TransportAnimation.db2", TransportAnimationLoadInfo::Instance()); DB2Storage sTransportRotationStore("TransportRotation.db2", TransportRotationLoadInfo::Instance()); +DB2Storage sUiMapStore("UiMap.db2", UiMapLoadInfo::Instance()); +DB2Storage sUiMapAssignmentStore("UiMapAssignment.db2", UiMapAssignmentLoadInfo::Instance()); +DB2Storage sUiMapLinkStore("UiMapLink.db2", UiMapLinkLoadInfo::Instance()); +DB2Storage sUiMapXMapArtStore("UiMapXMapArt.db2", UiMapXMapArtLoadInfo::Instance()); DB2Storage sUnitPowerBarStore("UnitPowerBar.db2", UnitPowerBarLoadInfo::Instance()); DB2Storage sVehicleStore("Vehicle.db2", VehicleLoadInfo::Instance()); DB2Storage sVehicleSeatStore("VehicleSeat.db2", VehicleSeatLoadInfo::Instance()); DB2Storage sWMOAreaTableStore("WMOAreaTable.db2", WmoAreaTableLoadInfo::Instance()); DB2Storage sWorldEffectStore("WorldEffect.db2", WorldEffectLoadInfo::Instance()); -DB2Storage sWorldMapAreaStore("WorldMapArea.db2", WorldMapAreaLoadInfo::Instance()); DB2Storage sWorldMapOverlayStore("WorldMapOverlay.db2", WorldMapOverlayLoadInfo::Instance()); -DB2Storage sWorldMapTransformsStore("WorldMapTransforms.db2", WorldMapTransformsLoadInfo::Instance()); DB2Storage sWorldSafeLocsStore("WorldSafeLocs.db2", WorldSafeLocsLoadInfo::Instance()); TaxiMask sTaxiNodesMask; @@ -331,10 +333,17 @@ typedef std::vector TalentsByPosition[MAX_CLASSES][MAX_TALEN typedef std::unordered_set ToyItemIdsContainer; typedef std::tuple WMOAreaTableKey; typedef std::map WMOAreaTableLookupContainer; -typedef std::unordered_map WorldMapAreaByAreaIDContainer; namespace { + struct UiMapBounds + { + // these coords are mixed when calculated and used... its a mess + float Bounds[4]; + bool IsUiAssignment; + bool IsUiLink; + }; + StorageMap _stores; std::map _hotfixData; @@ -391,8 +400,13 @@ namespace ToyItemIdsContainer _toys; std::unordered_map> _transmogSetsByItemModifiedAppearance; std::unordered_map> _transmogSetItemsByTransmogSet; + std::unordered_map _uiMapBounds; + std::unordered_multimap _uiMapAssignmentByMap[MAX_UI_MAP_SYSTEM]; + std::unordered_multimap _uiMapAssignmentByArea[MAX_UI_MAP_SYSTEM]; + std::unordered_multimap _uiMapAssignmentByWmoDoodadPlacement[MAX_UI_MAP_SYSTEM]; + std::unordered_multimap _uiMapAssignmentByWmoGroup[MAX_UI_MAP_SYSTEM]; + std::unordered_set _uiMapPhases; WMOAreaTableLookupContainer _wmoAreaTableLookup; - WorldMapAreaByAreaIDContainer _worldMapAreaByAreaID; } template class DB2> @@ -421,7 +435,7 @@ inline void LoadDB2(uint32& availableDb2Locales, std::vector& errli if (storage->Load(db2Path + localeNames[defaultLocale] + '/', defaultLocale)) { - storage->LoadFromDB(); + storage->LoadFromDB(); // LoadFromDB() always loads strings into enUS locale, other locales are expected to have data in corresponding _locale tables // so we need to make additional call to load that data in case said locale is set as default by worldserver.conf (and we do not want to load all this data from .db2 file again) if (defaultLocale != LOCALE_enUS) @@ -629,7 +643,6 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) LOAD_DB2(sPrestigeLevelInfoStore); LOAD_DB2(sPVPDifficultyStore); LOAD_DB2(sPVPItemStore); - //LOAD_DB2(sPvpRewardStore); LOAD_DB2(sPvpTalentStore); LOAD_DB2(sPvpTalentCategoryStore); LOAD_DB2(sPvpTalentSlotUnlockStore); @@ -702,14 +715,16 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) LOAD_DB2(sTransmogSetItemStore); LOAD_DB2(sTransportAnimationStore); LOAD_DB2(sTransportRotationStore); + LOAD_DB2(sUiMapStore); + LOAD_DB2(sUiMapAssignmentStore); + LOAD_DB2(sUiMapLinkStore); + LOAD_DB2(sUiMapXMapArtStore); LOAD_DB2(sUnitPowerBarStore); LOAD_DB2(sVehicleStore); LOAD_DB2(sVehicleSeatStore); LOAD_DB2(sWMOAreaTableStore); LOAD_DB2(sWorldEffectStore); - LOAD_DB2(sWorldMapAreaStore); LOAD_DB2(sWorldMapOverlayStore); - LOAD_DB2(sWorldMapTransformsStore); LOAD_DB2(sWorldSafeLocsStore); #undef LOAD_DB2 @@ -1067,6 +1082,118 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) for (TaxiPathNodeEntry const* entry : sTaxiPathNodeStore) sTaxiPathNodesByPath[entry->PathID][entry->NodeIndex] = entry; + for (ToyEntry const* toy : sToyStore) + _toys.insert(toy->ItemID); + + for (TransmogSetItemEntry const* transmogSetItem : sTransmogSetItemStore) + { + TransmogSetEntry const* set = sTransmogSetStore.LookupEntry(transmogSetItem->TransmogSetID); + if (!set) + continue; + + _transmogSetsByItemModifiedAppearance[transmogSetItem->ItemModifiedAppearanceID].push_back(set); + _transmogSetItemsByTransmogSet[transmogSetItem->TransmogSetID].push_back(transmogSetItem); + } + + std::unordered_multimap uiMapAssignmentByUiMap; + for (UiMapAssignmentEntry const* uiMapAssignment : sUiMapAssignmentStore) + { + uiMapAssignmentByUiMap.emplace(uiMapAssignment->UiMapID, uiMapAssignment); + if (UiMapEntry const* uiMap = sUiMapStore.LookupEntry(uiMapAssignment->UiMapID)) + { + ASSERT(uiMap->System < MAX_UI_MAP_SYSTEM, "MAX_TALENT_TIERS must be at least %u", uiMap->System + 1); + if (uiMapAssignment->MapID >= 0) + _uiMapAssignmentByMap[uiMap->System].emplace(uiMapAssignment->MapID, uiMapAssignment); + if (uiMapAssignment->AreaID) + _uiMapAssignmentByArea[uiMap->System].emplace(uiMapAssignment->AreaID, uiMapAssignment); + if (uiMapAssignment->WmoDoodadPlacementID) + _uiMapAssignmentByWmoDoodadPlacement[uiMap->System].emplace(uiMapAssignment->WmoDoodadPlacementID, uiMapAssignment); + if (uiMapAssignment->WmoGroupID) + _uiMapAssignmentByWmoGroup[uiMap->System].emplace(uiMapAssignment->WmoGroupID, uiMapAssignment); + } + } + + std::unordered_map, UiMapLinkEntry const*> uiMapLinks; + for (UiMapLinkEntry const* uiMapLink : sUiMapLinkStore) + uiMapLinks[std::make_pair(uiMapLink->ParentUiMapID, uint32(uiMapLink->ChildUiMapID))] = uiMapLink; + + for (UiMapEntry const* uiMap : sUiMapStore) + { + UiMapBounds& bounds = _uiMapBounds[uiMap->ID]; + memset(&bounds, 0, sizeof(bounds)); + if (UiMapEntry const* parentUiMap = sUiMapStore.LookupEntry(uiMap->ParentUiMapID)) + { + if (parentUiMap->Flags & 0x80) + continue; + + UiMapAssignmentEntry const* uiMapAssignment = nullptr; + UiMapAssignmentEntry const* parentUiMapAssignment = nullptr; + for (auto uiMapAssignmentForMap : Trinity::Containers::MapEqualRange(uiMapAssignmentByUiMap, uiMap->ID)) + { + if (uiMapAssignmentForMap.second->MapID >= 0 && + uiMapAssignmentForMap.second->Region[1].X - uiMapAssignmentForMap.second->Region[0].X > 0 && + uiMapAssignmentForMap.second->Region[1].Y - uiMapAssignmentForMap.second->Region[0].Y > 0) + { + uiMapAssignment = uiMapAssignmentForMap.second; + break; + } + } + + if (!uiMapAssignment) + continue; + + for (auto uiMapAssignmentForMap : Trinity::Containers::MapEqualRange(uiMapAssignmentByUiMap, uiMap->ParentUiMapID)) + { + if (uiMapAssignmentForMap.second->MapID == uiMapAssignment->MapID && + uiMapAssignmentForMap.second->Region[1].X - uiMapAssignmentForMap.second->Region[0].X > 0 && + uiMapAssignmentForMap.second->Region[1].Y - uiMapAssignmentForMap.second->Region[0].Y > 0) + { + parentUiMapAssignment = uiMapAssignmentForMap.second; + break; + } + } + + if (!parentUiMapAssignment) + continue; + + float parentXsize = parentUiMapAssignment->Region[1].X - parentUiMapAssignment->Region[0].X; + float parentYsize = parentUiMapAssignment->Region[1].Y - parentUiMapAssignment->Region[0].Y; + float bound0scale = (uiMapAssignment->Region[1].X - parentUiMapAssignment->Region[0].X) / parentXsize; + float bound0 = ((1.0f - bound0scale) * parentUiMapAssignment->UiMax.Y) + (bound0scale * parentUiMapAssignment->UiMin.Y); + float bound2scale = (uiMapAssignment->Region[0].X - parentUiMapAssignment->Region[0].X) / parentXsize; + float bound2 = ((1.0f - bound2scale) * parentUiMapAssignment->UiMax.Y) + (bound2scale * parentUiMapAssignment->UiMin.Y); + float bound1scale = (uiMapAssignment->Region[1].Y - parentUiMapAssignment->Region[0].Y) / parentYsize; + float bound1 = ((1.0f - bound1scale) * parentUiMapAssignment->UiMax.X) + (bound1scale * parentUiMapAssignment->UiMin.X); + float bound3scale = (uiMapAssignment->Region[0].Y - parentUiMapAssignment->Region[0].Y) / parentYsize; + float bound3 = ((1.0f - bound3scale) * parentUiMapAssignment->UiMax.X) + (bound3scale * parentUiMapAssignment->UiMin.X); + if ((bound3 - bound1) > 0.0f || (bound2 - bound0) > 0.0f) + { + bounds.Bounds[0] = bound0; + bounds.Bounds[1] = bound1; + bounds.Bounds[2] = bound2; + bounds.Bounds[3] = bound3; + bounds.IsUiAssignment = true; + } + } + + if (UiMapLinkEntry const* uiMapLink = Trinity::Containers::MapGetValuePtr(uiMapLinks, std::make_pair(uiMap->ParentUiMapID, uiMap->ID))) + { + bounds.IsUiAssignment = false; + bounds.IsUiLink = true; + bounds.Bounds[0] = uiMapLink->UiMin.Y; + bounds.Bounds[1] = uiMapLink->UiMin.X; + bounds.Bounds[2] = uiMapLink->UiMax.Y; + bounds.Bounds[3] = uiMapLink->UiMax.X; + } + } + + for (UiMapXMapArtEntry const* uiMapArt : sUiMapXMapArtStore) + if (uiMapArt->PhaseID) + _uiMapPhases.insert(uiMapArt->PhaseID); + + for (WMOAreaTableEntry const* entry : sWMOAreaTableStore) + _wmoAreaTableLookup[WMOAreaTableKey(entry->WmoID, entry->NameSetID, entry->WmoGroupID)] = entry; + // Initialize global taxinodes mask // include existed nodes that have at least single not spell base (scripted) path { @@ -1096,32 +1223,20 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) if (node->Flags & TAXI_NODE_FLAG_ALLIANCE) sAllianceTaxiNodesMask[field] |= submask; - uint32 nodeMap; - DeterminaAlternateMapPosition(node->ContinentID, node->Pos.X, node->Pos.Y, node->Pos.Z, &nodeMap); - if (nodeMap < 2) - sOldContinentsNodesMask[field] |= submask; - } - } + int32 uiMapId = -1; + if (!GetUiMapPosition(node->Pos.X, node->Pos.Y, node->Pos.Z, node->ContinentID, 0, 0, 0, UI_MAP_SYSTEM_ADVENTURE, false, &uiMapId)) + GetUiMapPosition(node->Pos.X, node->Pos.Y, node->Pos.Z, node->ContinentID, 0, 0, 0, UI_MAP_SYSTEM_TAXI, false, &uiMapId); - for (ToyEntry const* toy : sToyStore) - _toys.insert(toy->ItemID); - - for (TransmogSetItemEntry const* transmogSetItem : sTransmogSetItemStore) - { - TransmogSetEntry const* set = sTransmogSetStore.LookupEntry(transmogSetItem->TransmogSetID); - if (!set) - continue; + if (uiMapId != -1) + { + TC_LOG_INFO(LOGGER_ROOT, "%s %d %f %f %f %d", node->Name->Str[0], node->ConditionID, node->Pos.X, node->Pos.Y, node->Pos.Z, uiMapId); + } - _transmogSetsByItemModifiedAppearance[transmogSetItem->ItemModifiedAppearanceID].push_back(set); - _transmogSetItemsByTransmogSet[transmogSetItem->TransmogSetID].push_back(transmogSetItem); + if (uiMapId == 985 || uiMapId == 986) + sOldContinentsNodesMask[field] |= submask; + } } - for (WMOAreaTableEntry const* entry : sWMOAreaTableStore) - _wmoAreaTableLookup[WMOAreaTableKey(entry->WmoID, entry->NameSetID, entry->WmoGroupID)] = entry; - - for (WorldMapAreaEntry const* worldMapArea : sWorldMapAreaStore) - _worldMapAreaByAreaID[worldMapArea->AreaID] = worldMapArea; - // error checks if (bad_db2_files.size() == _stores.size()) { @@ -2253,99 +2368,355 @@ std::vector const* DB2Manager::GetTransmogSetItems( return Trinity::Containers::MapGetValuePtr(_transmogSetItemsByTransmogSet, transmogSetId); } -WMOAreaTableEntry const* DB2Manager::GetWMOAreaTable(int32 rootId, int32 adtId, int32 groupId) const +struct UiMapAssignmentStatus { - auto i = _wmoAreaTableLookup.find(WMOAreaTableKey(int16(rootId), int8(adtId), groupId)); - if (i != _wmoAreaTableLookup.end()) - return i->second; + UiMapAssignmentEntry const* UiMapAssignment = nullptr; + // distances if inside + struct + { + float DistanceToRegionCenterSquared = std::numeric_limits::max(); + float DistanceToRegionBottom = std::numeric_limits::max(); + } Inside; - return nullptr; -} + // distances if outside + struct + { + float DistanceToRegionEdgeSquared = std::numeric_limits::max(); + float DistanceToRegionTop = std::numeric_limits::max(); + float DistanceToRegionBottom = std::numeric_limits::max(); + } Outside; -uint32 DB2Manager::GetVirtualMapForMapAndZone(uint32 mapId, uint32 zoneId) const + int8 MapPriority = 3; + int8 AreaPriority = -1; + int8 WmoPriority = 3; + + bool IsInside() const + { + return Outside.DistanceToRegionEdgeSquared < std::numeric_limits::epsilon() && + std::abs(Outside.DistanceToRegionTop) < std::numeric_limits::epsilon() && + std::abs(Outside.DistanceToRegionBottom) < std::numeric_limits::epsilon(); + } +}; + +static bool operator<(UiMapAssignmentStatus const& left, UiMapAssignmentStatus const& right) { - if (mapId != 530 && mapId != 571 && mapId != 732) // speed for most cases - return mapId; + bool leftInside = left.IsInside(); + bool rightInside = right.IsInside(); + if (leftInside != rightInside) + return leftInside; + + if (left.UiMapAssignment && right.UiMapAssignment && + left.UiMapAssignment->UiMapID == right.UiMapAssignment->UiMapID && + left.UiMapAssignment->OrderIndex != right.UiMapAssignment->OrderIndex) + return left.UiMapAssignment->OrderIndex < right.UiMapAssignment->OrderIndex; + + if (left.WmoPriority != right.WmoPriority) + return left.WmoPriority < right.WmoPriority; + + if (left.AreaPriority != right.AreaPriority) + return left.AreaPriority < right.AreaPriority; + + if (left.MapPriority != right.MapPriority) + return left.MapPriority < right.MapPriority; + + if (leftInside) + { + if (left.Inside.DistanceToRegionBottom != right.Inside.DistanceToRegionBottom) + return left.Inside.DistanceToRegionBottom < right.Inside.DistanceToRegionBottom; + + float leftUiSizeX = left.UiMapAssignment ? (left.UiMapAssignment->UiMax.X - left.UiMapAssignment->UiMin.X) : 0.0f; + float rightUiSizeX = right.UiMapAssignment ? (right.UiMapAssignment->UiMax.X - right.UiMapAssignment->UiMin.X) : 0.0f; + + if (leftUiSizeX > std::numeric_limits::epsilon() && rightUiSizeX > std::numeric_limits::epsilon()) + { + float leftScale = (left.UiMapAssignment->Region[1].X - left.UiMapAssignment->Region[0].X) / leftUiSizeX; + float rightScale = (right.UiMapAssignment->Region[1].X - right.UiMapAssignment->Region[0].X) / rightUiSizeX; + if (leftScale != rightScale) + return leftScale < rightScale; + } - auto itr = _worldMapAreaByAreaID.find(zoneId); - if (itr != _worldMapAreaByAreaID.end()) - return itr->second->DisplayMapID >= 0 ? itr->second->DisplayMapID : itr->second->MapID; + if (left.Inside.DistanceToRegionCenterSquared != right.Inside.DistanceToRegionCenterSquared) + return left.Inside.DistanceToRegionCenterSquared < right.Inside.DistanceToRegionCenterSquared; + } + else + { + if (left.Outside.DistanceToRegionTop != right.Outside.DistanceToRegionTop) + return left.Outside.DistanceToRegionTop < right.Outside.DistanceToRegionTop; + + if (left.Outside.DistanceToRegionBottom != right.Outside.DistanceToRegionBottom) + return left.Outside.DistanceToRegionBottom < right.Outside.DistanceToRegionBottom; - return mapId; + if (left.Outside.DistanceToRegionEdgeSquared != right.Outside.DistanceToRegionEdgeSquared) + return left.Outside.DistanceToRegionEdgeSquared < right.Outside.DistanceToRegionEdgeSquared; + } + + return true; } -void DB2Manager::Zone2MapCoordinates(uint32 areaId, float& x, float& y) const +static bool CheckUiMapAssignmentStatus(float x, float y, float z, int32 mapId, int32 areaId, int32 wmoDoodadPlacementId, int32 wmoGroupId, + UiMapAssignmentEntry const* uiMapAssignment, UiMapAssignmentStatus* status) { - auto itr = _worldMapAreaByAreaID.find(areaId); - if (itr == _worldMapAreaByAreaID.end()) - return; + status->UiMapAssignment = uiMapAssignment; + // x,y not in region + if (x < uiMapAssignment->Region[0].X || x > uiMapAssignment->Region[1].X || y < uiMapAssignment->Region[0].Y || y > uiMapAssignment->Region[1].Y) + { + float xDiff, yDiff; + if (x >= uiMapAssignment->Region[0].X) + { + xDiff = 0.0f; + if (x > uiMapAssignment->Region[1].X) + xDiff = x - uiMapAssignment->Region[0].X; + } + else + xDiff = uiMapAssignment->Region[0].X - x; + + if (y >= uiMapAssignment->Region[0].Y) + { + yDiff = 0.0f; + if (y > uiMapAssignment->Region[1].Y) + yDiff = y - uiMapAssignment->Region[0].Y; + } + else + yDiff = uiMapAssignment->Region[0].Y - y; + + status->Outside.DistanceToRegionEdgeSquared = xDiff * xDiff + yDiff * yDiff; + } + else + { + status->Inside.DistanceToRegionCenterSquared = + (x - (uiMapAssignment->Region[0].X + uiMapAssignment->Region[1].X) * 0.5f) * (x - (uiMapAssignment->Region[0].X + uiMapAssignment->Region[1].X) * 0.5f) + + (y - (uiMapAssignment->Region[0].Y + uiMapAssignment->Region[1].Y) * 0.5f) * (y - (uiMapAssignment->Region[0].Y + uiMapAssignment->Region[1].Y) * 0.5f); + status->Outside.DistanceToRegionEdgeSquared = 0.0f; + } - std::swap(x, y); // at client map coords swapped - x = x*((itr->second->LocBottom - itr->second->LocTop) / 100) + itr->second->LocTop; - y = y*((itr->second->LocRight - itr->second->LocLeft) / 100) + itr->second->LocLeft; // client y coord from top to down + // z not in region + if (z < uiMapAssignment->Region[0].Z || z > uiMapAssignment->Region[1].Z) + { + if (z < uiMapAssignment->Region[1].Z) + { + if (z < uiMapAssignment->Region[0].Z) + status->Outside.DistanceToRegionBottom = std::min(uiMapAssignment->Region[0].Z - z, 10000.0f); + } + else + status->Outside.DistanceToRegionTop = std::min(z - uiMapAssignment->Region[1].Z, 10000.0f); + } + else + { + status->Outside.DistanceToRegionTop = 0.0f; + status->Outside.DistanceToRegionBottom = 0.0f; + status->Inside.DistanceToRegionBottom = std::min(uiMapAssignment->Region[0].Z - z, 10000.0f); + } + + if (areaId && uiMapAssignment->AreaID) + { + int8 areaPriority = 0; + if (areaId) + { + while (areaId != uiMapAssignment->AreaID) + { + if (AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(areaId)) + { + areaId = areaEntry->ParentAreaID; + ++areaPriority; + } + else + return false; + } + } + else + return false; + + status->AreaPriority = areaPriority; + } + + if (mapId >= 0 && uiMapAssignment->MapID >= 0) + { + if (mapId != uiMapAssignment->MapID) + { + if (MapEntry const* mapEntry = sMapStore.LookupEntry(mapId)) + { + if (mapEntry->ParentMapID == uiMapAssignment->MapID) + status->MapPriority = 1; + else if (mapEntry->CosmeticParentMapID == uiMapAssignment->MapID) + status->MapPriority = 2; + else + return false; + } + else + return false; + } + else + status->MapPriority = 0; + } + + if (wmoGroupId || wmoDoodadPlacementId) + { + if (uiMapAssignment->WmoGroupID || uiMapAssignment->WmoDoodadPlacementID) + { + bool hasDoodadPlacement = false; + if (wmoDoodadPlacementId && uiMapAssignment->WmoDoodadPlacementID) + { + if (wmoDoodadPlacementId != uiMapAssignment->WmoDoodadPlacementID) + return false; + + hasDoodadPlacement = true; + } + + if (wmoGroupId && uiMapAssignment->WmoGroupID) + { + if (wmoGroupId != uiMapAssignment->WmoGroupID) + return false; + + if (hasDoodadPlacement) + status->WmoPriority = 0; + else + status->WmoPriority = 2; + } + else if (hasDoodadPlacement) + status->WmoPriority = 1; + } + } + + return true; } -void DB2Manager::Map2ZoneCoordinates(uint32 areaId, float& x, float& y) const +static UiMapAssignmentEntry const* FindNearestMapAssignment(float x, float y, float z, int32 mapId, int32 areaId, int32 wmoDoodadPlacementId, int32 wmoGroupId, UiMapSystem system) { - auto itr = _worldMapAreaByAreaID.find(areaId); - if (itr == _worldMapAreaByAreaID.end()) - return; + UiMapAssignmentStatus nearestMapAssignment; + auto iterateUiMapAssignments = [&](std::unordered_multimap const& assignments, int32 id) + { + for (auto assignment : Trinity::Containers::MapEqualRange(assignments, id)) + { + UiMapAssignmentStatus status; + if (CheckUiMapAssignmentStatus(x, y, z, mapId, areaId, wmoDoodadPlacementId, wmoGroupId, assignment.second, &status)) + if (status < nearestMapAssignment) + nearestMapAssignment = status; + } + }; - x = (x - itr->second->LocTop) / ((itr->second->LocBottom - itr->second->LocTop) / 100); - y = (y - itr->second->LocLeft) / ((itr->second->LocRight - itr->second->LocLeft) / 100); // client y coord from top to down - std::swap(x, y); // client have map coords swapped + iterateUiMapAssignments(_uiMapAssignmentByWmoGroup[system], wmoGroupId); + iterateUiMapAssignments(_uiMapAssignmentByWmoDoodadPlacement[system], wmoDoodadPlacementId); + + AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(areaId); + while (areaEntry) + { + iterateUiMapAssignments(_uiMapAssignmentByArea[system], areaEntry->ID); + areaEntry = sAreaTableStore.LookupEntry(areaEntry->ParentAreaID); + } + + if (MapEntry const* mapEntry = sMapStore.LookupEntry(mapId)) + { + iterateUiMapAssignments(_uiMapAssignmentByMap[system], mapEntry->ID); + if (mapEntry->ParentMapID >= 0) + iterateUiMapAssignments(_uiMapAssignmentByMap[system], mapEntry->ParentMapID); + if (mapEntry->CosmeticParentMapID >= 0) + iterateUiMapAssignments(_uiMapAssignmentByMap[system], mapEntry->CosmeticParentMapID); + } + + return nearestMapAssignment.UiMapAssignment; } -void DB2Manager::DeterminaAlternateMapPosition(uint32 mapId, float x, float y, float z, uint32* newMapId /*= nullptr*/, DBCPosition2D* newPos /*= nullptr*/) +static DBCPosition2D CalculateGlobalUiMapPosition(int32 uiMapID, DBCPosition2D uiPosition) { - ASSERT(newMapId || newPos); - WorldMapTransformsEntry const* transformation = nullptr; - for (WorldMapTransformsEntry const* transform : sWorldMapTransformsStore) + UiMapEntry const* uiMap = sUiMapStore.LookupEntry(uiMapID); + while (uiMap) { - if (transform->MapID != mapId) - continue; - if (transform->AreaID) - continue; - if (transform->Flags & WORLD_MAP_TRANSFORMS_FLAG_DUNGEON) - continue; - if (transform->RegionMin.X > x || transform->RegionMax.X < x) - continue; - if (transform->RegionMin.Y > y || transform->RegionMax.Y < y) - continue; - if (transform->RegionMin.Z > z || transform->RegionMax.Z < z) - continue; + if (uiMap->Type <= UI_MAP_TYPE_CONTINENT) + break; - if (!transformation || transformation->Priority < transform->Priority) - transformation = transform; + UiMapBounds const* bounds = Trinity::Containers::MapGetValuePtr(_uiMapBounds, uiMap->ID); + if (!bounds || !bounds->IsUiAssignment) + break; + + uiPosition.X = ((1.0 - uiPosition.X) * bounds->Bounds[1]) + (bounds->Bounds[3] * uiPosition.X); + uiPosition.Y = ((1.0 - uiPosition.Y) * bounds->Bounds[0]) + (bounds->Bounds[2] * uiPosition.Y); + + uiMap = sUiMapStore.LookupEntry(uiMap->ParentUiMapID); } - if (!transformation) - { - if (newMapId) - *newMapId = mapId; + return uiPosition; +} - if (newPos) - { - newPos->X = x; - newPos->Y = y; - } - return; +bool DB2Manager::GetUiMapPosition(float x, float y, float z, int32 mapId, int32 areaId, int32 wmoDoodadPlacementId, int32 wmoGroupId, UiMapSystem system, bool local, + int32* uiMapId /*= nullptr*/, DBCPosition2D* newPos /*= nullptr*/) +{ + if (uiMapId) + *uiMapId = -1; + + if (newPos) + { + newPos->X = 0.0f; + newPos->Y = 0.0f; } - if (newMapId) - *newMapId = transformation->NewMapID; + UiMapAssignmentEntry const* uiMapAssignment = FindNearestMapAssignment(x, y, z, mapId, areaId, wmoDoodadPlacementId, wmoGroupId, system); + if (!uiMapAssignment) + return false; + + if (uiMapId) + *uiMapId = uiMapAssignment->UiMapID; + + DBCPosition2D relativePosition{ 0.5f, 0.5f }; + DBCPosition2D regionSize{ uiMapAssignment->Region[1].X - uiMapAssignment->Region[0].X, uiMapAssignment->Region[1].Y - uiMapAssignment->Region[0].Y }; + if (regionSize.X > 0.0f) + relativePosition.X = (x - uiMapAssignment->Region[0].X) / regionSize.X; + if (regionSize.Y > 0.0f) + relativePosition.Y = (y - uiMapAssignment->Region[0].Y) / regionSize.Y; + + DBCPosition2D uiPosition + { + // x any y are swapped + ((1.0f - (1.0f - relativePosition.Y)) * uiMapAssignment->UiMin.X) + ((1.0f - relativePosition.Y) * uiMapAssignment->UiMax.X), + ((1.0f - (1.0f - relativePosition.X)) * uiMapAssignment->UiMin.Y) + ((1.0f - relativePosition.X) * uiMapAssignment->UiMax.Y) + }; + + if (!local) + uiPosition = CalculateGlobalUiMapPosition(uiMapAssignment->UiMapID, uiPosition); - if (!newPos) + if (newPos) + *newPos = uiPosition; + + return true; +} + +void DB2Manager::Zone2MapCoordinates(uint32 areaId, float& x, float& y) const +{ + AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(areaId); + if (!areaEntry) return; - if (std::abs(transformation->RegionScale - 1.0f) > 0.001f) + int32 uiMapId = -1; + for (auto assignment : Trinity::Containers::MapEqualRange(_uiMapAssignmentByArea[UI_MAP_SYSTEM_WORLD], areaId)) { - x = (x - transformation->RegionMin.X) * transformation->RegionScale + transformation->RegionMin.X; - y = (y - transformation->RegionMin.Y) * transformation->RegionScale + transformation->RegionMin.Y; + if (assignment.second->MapID >= 0 && assignment.second->MapID != areaEntry->ContinentID) + continue; + + float tmpY = 1.0 - ((y - assignment.second->UiMin.Y) / (assignment.second->UiMax.Y - assignment.second->UiMin.Y)); + float tmpX = 1.0 - ((x - assignment.second->UiMin.X) / (assignment.second->UiMax.X - assignment.second->UiMin.X)); + y = ((1.0 - tmpY) * assignment.second->Region[0].X) + (tmpY * assignment.second->Region[1].X); + x = ((1.0 - tmpX) * assignment.second->Region[0].Y) + (tmpX * assignment.second->Region[1].Y); + break; } +} - newPos->X = x + transformation->RegionOffset.X; - newPos->Y = y + transformation->RegionOffset.Y; +void DB2Manager::Map2ZoneCoordinates(uint32 areaId, float& x, float& y) const +{ + DBCPosition2D zoneCoords; + if (!GetUiMapPosition(x, y, 0.0f, -1, areaId, 0, 0, UI_MAP_SYSTEM_WORLD, true, nullptr, &zoneCoords)) + return; + + x = zoneCoords.Y * 100.0f; + y = zoneCoords.X * 100.0f; +} + +bool DB2Manager::IsUiMapPhase(uint32 phaseId) const +{ + return _uiMapPhases.find(phaseId) != _uiMapPhases.end(); +} + +WMOAreaTableEntry const* DB2Manager::GetWMOAreaTable(int32 rootId, int32 adtId, int32 groupId) const +{ + return Trinity::Containers::MapGetValuePtr(_wmoAreaTableLookup, WMOAreaTableKey(int16(rootId), int8(adtId), groupId)); } bool ChrClassesXPowerTypesEntryComparator::Compare(ChrClassesXPowerTypesEntry const* left, ChrClassesXPowerTypesEntry const* right) diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index 2517433b58b..46a0dee2095 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -209,7 +209,6 @@ TC_GAME_API extern DB2Storage sUnitPowerBa TC_GAME_API extern DB2Storage sVehicleStore; TC_GAME_API extern DB2Storage sVehicleSeatStore; TC_GAME_API extern DB2Storage sWorldEffectStore; -TC_GAME_API extern DB2Storage sWorldMapAreaStore; TC_GAME_API extern DB2Storage sWorldMapOverlayStore; TC_GAME_API extern DB2Storage sWorldSafeLocsStore; @@ -331,11 +330,12 @@ public: bool IsToyItem(uint32 toy) const; std::vector const* GetTransmogSetsForItemModifiedAppearance(uint32 itemModifiedAppearanceId) const; std::vector const* GetTransmogSetItems(uint32 transmogSetId) const; - WMOAreaTableEntry const* GetWMOAreaTable(int32 rootId, int32 adtId, int32 groupId) const; - uint32 GetVirtualMapForMapAndZone(uint32 mapId, uint32 zoneId) const; + static bool GetUiMapPosition(float x, float y, float z, int32 mapId, int32 areaId, int32 wmoDoodadPlacementId, int32 wmoGroupId, UiMapSystem system, bool local, + int32* uiMapId = nullptr, DBCPosition2D* newPos = nullptr); void Zone2MapCoordinates(uint32 areaId, float& x, float& y) const; void Map2ZoneCoordinates(uint32 areaId, float& x, float& y) const; - static void DeterminaAlternateMapPosition(uint32 mapId, float x, float y, float z, uint32* newMapId = nullptr, DBCPosition2D* newPos = nullptr); + bool IsUiMapPhase(uint32 phaseId) const; + WMOAreaTableEntry const* GetWMOAreaTable(int32 rootId, int32 adtId, int32 groupId) const; private: friend class DB2HotfixGeneratorBase; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 7fca60b7fbc..f6e1c93f563 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -2992,6 +2992,55 @@ struct TransportRotationEntry int32 GameObjectsID; }; +struct UiMapEntry +{ + LocalizedString* Name; + uint32 ID; + int32 ParentUiMapID; + int32 Flags; + int32 System; + int32 Type; + uint32 LevelRangeMin; + uint32 LevelRangeMax; + int32 BountySetID; + uint32 BountyDisplayLocation; + int32 VisibilityPlayerConditionID; + int8 HelpTextPosition; + int32 BkgAtlasID; +}; + +struct UiMapAssignmentEntry +{ + DBCPosition2D UiMin; + DBCPosition2D UiMax; + DBCPosition3D Region[2]; + uint32 ID; + int32 UiMapID; + int32 OrderIndex; + int32 MapID; + int32 AreaID; + int32 WmoDoodadPlacementID; + int32 WmoGroupID; +}; + +struct UiMapLinkEntry +{ + DBCPosition2D UiMin; + DBCPosition2D UiMax; + uint32 ID; + int32 ParentUiMapID; + int32 OrderIndex; + int32 ChildUiMapID; +}; + +struct UiMapXMapArtEntry +{ + uint32 ID; + int32 PhaseID; + int32 UiMapArtID; + int32 UiMapID; +}; + struct UnitPowerBarEntry { uint32 ID; diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index dfcdc2756af..1eba72590f7 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -58,7 +58,7 @@ enum LevelLimit enum BattlegroundBracketId // bracketId for level ranges { BG_BRACKET_ID_FIRST = 0, - BG_BRACKET_ID_LAST = 11, + BG_BRACKET_ID_LAST = 12, // must be max value in PvPDificulty slot + 1 MAX_BATTLEGROUND_BRACKETS @@ -166,7 +166,7 @@ enum ArtifactPowerFlag : uint8 #define MAX_ARTIFACT_TIER 1 -#define BATTLE_PET_SPECIES_MAX_ID 2164 +#define BATTLE_PET_SPECIES_MAX_ID 2480 enum ChrSpecializationFlag { @@ -608,6 +608,11 @@ enum Difficulty : uint8 DIFFICULTY_WORLD_PVP_SCENARIO_2 = 32, DIFFICULTY_TIMEWALKING_RAID = 33, DIFFICULTY_PVP = 34, + DIFFICULTY_NORMAL_ISLAND = 38, + DIFFICULTY_HEROIC_ISLAND = 39, + DIFFICULTY_MYTHIC_ISLAND = 40, + DIFFICULTY_PVP_ISLAND = 45, + DIFFICULTY_NORMAL_WARFRONT = 147, MAX_DIFFICULTY }; @@ -993,7 +998,7 @@ enum SpellShapeshiftFormFlags SHAPESHIFT_FORM_PREVENT_EMOTE_SOUNDS = 0x1000 }; -#define TaxiMaskSize 258 +#define TaxiMaskSize 286 typedef std::array TaxiMask; enum TotemCategoryType @@ -1080,6 +1085,25 @@ enum TaxiPathNodeFlags TAXI_PATH_NODE_FLAG_STOP = 0x2 }; +enum UiMapSystem : int8 +{ + UI_MAP_SYSTEM_WORLD = 0, + UI_MAP_SYSTEM_TAXI = 1, + UI_MAP_SYSTEM_ADVENTURE = 2, + MAX_UI_MAP_SYSTEM = 3 +}; + +enum UiMapType : int8 +{ + UI_MAP_TYPE_COSMIC = 0, + UI_MAP_TYPE_WORLD = 1, + UI_MAP_TYPE_CONTINENT = 2, + UI_MAP_TYPE_ZONE = 3, + UI_MAP_TYPE_DUNGEON = 4, + UI_MAP_TYPE_MICRO = 5, + UI_MAP_TYPE_ORPHAN = 6, +}; + enum VehicleSeatFlags { VEHICLE_SEAT_FLAG_HAS_LOWER_ANIM_FOR_ENTER = 0x00000001, diff --git a/src/server/game/DataStores/GameTables.cpp b/src/server/game/DataStores/GameTables.cpp index 0dd01aa3930..d6142ccf065 100644 --- a/src/server/game/DataStores/GameTables.cpp +++ b/src/server/game/DataStores/GameTables.cpp @@ -127,6 +127,7 @@ void LoadGameTables(std::string const& dataPath) LOAD_GT(sNpcDamageByClassGameTable[4], "NpcDamageByClassExp4.txt"); LOAD_GT(sNpcDamageByClassGameTable[5], "NpcDamageByClassExp5.txt"); LOAD_GT(sNpcDamageByClassGameTable[6], "NpcDamageByClassExp6.txt"); + LOAD_GT(sNpcDamageByClassGameTable[7], "NpcDamageByClassExp7.txt"); LOAD_GT(sNpcManaCostScalerGameTable, "NPCManaCostScaler.txt"); LOAD_GT(sNpcTotalHpGameTable[0], "NpcTotalHp.txt"); LOAD_GT(sNpcTotalHpGameTable[1], "NpcTotalHpExp1.txt"); @@ -135,6 +136,7 @@ void LoadGameTables(std::string const& dataPath) LOAD_GT(sNpcTotalHpGameTable[4], "NpcTotalHpExp4.txt"); LOAD_GT(sNpcTotalHpGameTable[5], "NpcTotalHpExp5.txt"); LOAD_GT(sNpcTotalHpGameTable[6], "NpcTotalHpExp6.txt"); + LOAD_GT(sNpcTotalHpGameTable[7], "NpcTotalHpExp7.txt"); LOAD_GT(sSpellScalingGameTable, "SpellScaling.txt"); LOAD_GT(sXpGameTable, "xp.txt"); diff --git a/src/server/game/Entities/Taxi/TaxiPathGraph.cpp b/src/server/game/Entities/Taxi/TaxiPathGraph.cpp index 3ec90f577a7..b60c1780fd3 100644 --- a/src/server/game/Entities/Taxi/TaxiPathGraph.cpp +++ b/src/server/game/Entities/Taxi/TaxiPathGraph.cpp @@ -76,6 +76,12 @@ std::size_t TaxiPathGraph::GetVertexCount() return std::max(boost::num_vertices(m_graph), m_vertices.size()); } +void GetTaxiMapPosition(DBCPosition3D const& position, int32 mapId, DBCPosition2D* uiMapPosition, int32* uiMapId) +{ + if (!DB2Manager::GetUiMapPosition(position.X, position.Y, position.Z, mapId, 0, 0, 0, UI_MAP_SYSTEM_ADVENTURE, false, uiMapId, uiMapPosition)) + DB2Manager::GetUiMapPosition(position.X, position.Y, position.Z, mapId, 0, 0, 0, UI_MAP_SYSTEM_TAXI, false, uiMapId, uiMapPosition); +} + void TaxiPathGraph::AddVerticeAndEdgeFromNodeInfo(TaxiNodesEntry const* from, TaxiNodesEntry const* to, uint32 pathId, std::vector>& edges) { if (from != to) @@ -104,22 +110,21 @@ void TaxiPathGraph::AddVerticeAndEdgeFromNodeInfo(TaxiNodesEntry const* from, Ta if (nodes[i - 1]->Flags & TAXI_PATH_NODE_FLAG_TELEPORT) continue; - uint32 map1, map2; + int32 uiMap1, uiMap2; DBCPosition2D pos1, pos2; - DB2Manager::DeterminaAlternateMapPosition(nodes[i - 1]->ContinentID, nodes[i - 1]->Loc.X, nodes[i - 1]->Loc.Y, nodes[i - 1]->Loc.Z, &map1, &pos1); - DB2Manager::DeterminaAlternateMapPosition(nodes[i]->ContinentID, nodes[i]->Loc.X, nodes[i]->Loc.Y, nodes[i]->Loc.Z, &map2, &pos2); + GetTaxiMapPosition(nodes[i - 1]->Loc, nodes[i - 1]->ContinentID, &pos1, &uiMap1); + GetTaxiMapPosition(nodes[i]->Loc, nodes[i]->ContinentID, &pos2, &uiMap2); - if (map1 != map2) + if (uiMap1 != uiMap2) continue; totalDist += std::sqrt( std::pow(pos2.X - pos1.X, 2) + - std::pow(pos2.Y - pos1.Y, 2) + - std::pow(nodes[i]->Loc.Z - nodes[i - 1]->Loc.Z, 2)); + std::pow(pos2.Y - pos1.Y, 2)); } - uint32 dist = uint32(totalDist); + uint32 dist = uint32(totalDist * 32767.0f); if (dist > 0xFFFF) dist = 0xFFFF; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 746782fa1ec..53dbcb38f33 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -9581,7 +9581,7 @@ void ObjectMgr::LoadTerrainWorldMaps() uint32 oldMSTime = getMSTime(); // 0 1 - QueryResult result = WorldDatabase.Query("SELECT TerrainSwapMap, WorldMapArea FROM `terrain_worldmap`"); + QueryResult result = WorldDatabase.Query("SELECT TerrainSwapMap, UiMapPhaseId FROM `terrain_worldmap`"); if (!result) { @@ -9595,7 +9595,7 @@ void ObjectMgr::LoadTerrainWorldMaps() Field* fields = result->Fetch(); uint32 mapId = fields[0].GetUInt32(); - uint32 worldMapArea = fields[1].GetUInt32(); + uint32 uiMapPhaseId = fields[1].GetUInt32(); if (!sMapStore.LookupEntry(mapId)) { @@ -9603,15 +9603,15 @@ void ObjectMgr::LoadTerrainWorldMaps() continue; } - if (!sWorldMapAreaStore.LookupEntry(worldMapArea)) + if (!sDB2Manager.IsUiMapPhase(uiMapPhaseId)) { - TC_LOG_ERROR("sql.sql", "WorldMapArea %u defined in `terrain_worldmap` does not exist, skipped.", worldMapArea); + TC_LOG_ERROR("sql.sql", "Phase %u defined in `terrain_worldmap` is not a valid terrain swap phase, skipped.", uiMapPhaseId); continue; } TerrainSwapInfo* terrainSwapInfo = &_terrainSwapInfoById[mapId]; terrainSwapInfo->Id = mapId; - terrainSwapInfo->UiWorldMapAreaIDSwaps.push_back(worldMapArea); + terrainSwapInfo->UiMapPhaseIDs.push_back(uiMapPhaseId); ++count; } while (result->NextRow()); @@ -9758,11 +9758,6 @@ TerrainSwapInfo const* ObjectMgr::GetTerrainSwapInfo(uint32 terrainSwapId) const return Trinity::Containers::MapGetValuePtr(_terrainSwapInfoById, terrainSwapId); } -std::vector const* ObjectMgr::GetTerrainSwapsForMap(uint32 mapId) const -{ - return Trinity::Containers::MapGetValuePtr(_terrainSwapInfoByMap, mapId); -} - GameObjectTemplate const* ObjectMgr::GetGameObjectTemplate(uint32 entry) const { GameObjectTemplateContainer::const_iterator itr = _gameObjectTemplateStore.find(entry); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index d8a667210c1..51cbe07bcee 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -885,7 +885,7 @@ typedef std::unordered_map DungeonEncounterContain struct TerrainSwapInfo { uint32 Id; - std::vector UiWorldMapAreaIDSwaps; + std::vector UiMapPhaseIDs; }; struct PhaseInfoStruct @@ -1666,7 +1666,7 @@ class TC_GAME_API ObjectMgr PhaseInfoStruct const* GetPhaseInfo(uint32 phaseId) const; std::vector const* GetPhasesForArea(uint32 areaId) const; TerrainSwapInfo const* GetTerrainSwapInfo(uint32 terrainSwapId) const; - std::vector const* GetTerrainSwapsForMap(uint32 mapId) const; + std::unordered_map> const& GetTerrainSwaps() const { return _terrainSwapInfoByMap; } private: std::unordered_map _phaseInfoById; diff --git a/src/server/game/Phasing/PhaseShift.cpp b/src/server/game/Phasing/PhaseShift.cpp index b2885ae15bb..b7df2e5cd13 100644 --- a/src/server/game/Phasing/PhaseShift.cpp +++ b/src/server/game/Phasing/PhaseShift.cpp @@ -60,23 +60,23 @@ PhaseShift::EraseResult PhaseShift::RemoveVis return { VisibleMapIds.end(), false }; } -bool PhaseShift::AddUiWorldMapAreaIdSwap(uint32 uiWorldMapAreaId, int32 references /*= 1*/) +bool PhaseShift::AddUiMapPhaseId(uint32 uiMapPhaseId, int32 references /*= 1*/) { - auto insertResult = UiWorldMapAreaIdSwaps.emplace(uiWorldMapAreaId, UiWorldMapAreaIdSwapRef{ 0 }); + auto insertResult = UiMapPhaseIds.emplace(uiMapPhaseId, UiMapPhaseIdRef{ 0 }); insertResult.first->second.References += references; return insertResult.second; } -PhaseShift::EraseResult PhaseShift::RemoveUiWorldMapAreaIdSwap(uint32 uiWorldMapAreaId) +PhaseShift::EraseResult PhaseShift::RemoveUiMapPhaseId(uint32 uiMapPhaseId) { - auto itr = UiWorldMapAreaIdSwaps.find(uiWorldMapAreaId); - if (itr != UiWorldMapAreaIdSwaps.end()) + auto itr = UiMapPhaseIds.find(uiMapPhaseId); + if (itr != UiMapPhaseIds.end()) { if (!--itr->second.References) - return { UiWorldMapAreaIdSwaps.erase(itr), true }; + return { UiMapPhaseIds.erase(itr), true }; return { itr, false }; } - return { UiWorldMapAreaIdSwaps.end(), false }; + return { UiMapPhaseIds.end(), false }; } void PhaseShift::Clear() @@ -84,7 +84,7 @@ void PhaseShift::Clear() ClearPhases(); PersonalGuid.Clear(); VisibleMapIds.clear(); - UiWorldMapAreaIdSwaps.clear(); + UiMapPhaseIds.clear(); } void PhaseShift::ClearPhases() diff --git a/src/server/game/Phasing/PhaseShift.h b/src/server/game/Phasing/PhaseShift.h index f1929168613..c15bf4100a2 100644 --- a/src/server/game/Phasing/PhaseShift.h +++ b/src/server/game/Phasing/PhaseShift.h @@ -68,7 +68,7 @@ public: int32 References = 0; TerrainSwapInfo const* VisibleMapInfo = nullptr; }; - struct UiWorldMapAreaIdSwapRef + struct UiMapPhaseIdRef { int32 References = 0; }; @@ -80,7 +80,7 @@ public: }; typedef boost::container::flat_set PhaseContainer; typedef std::map VisibleMapIdContainer; - typedef std::map UiWorldMapAreaIdSwapContainer; + typedef std::map UiMapPhaseIdContainer; PhaseShift() : Flags(PhaseShiftFlags::Unphased), NonCosmeticReferences(0), CosmeticReferences(0), DefaultReferences(0), IsDbPhaseShift(false) { } @@ -94,10 +94,10 @@ public: bool HasVisibleMapId(uint32 visibleMapId) const { return VisibleMapIds.find(visibleMapId) != VisibleMapIds.end(); } VisibleMapIdContainer const& GetVisibleMapIds() const { return VisibleMapIds; } - bool AddUiWorldMapAreaIdSwap(uint32 uiWorldMapAreaId, int32 references = 1); - EraseResult RemoveUiWorldMapAreaIdSwap(uint32 uiWorldMapAreaId); - bool HasUiWorldMapAreaIdSwap(uint32 uiWorldMapAreaId) const { return UiWorldMapAreaIdSwaps.find(uiWorldMapAreaId) != UiWorldMapAreaIdSwaps.end(); } - UiWorldMapAreaIdSwapContainer const& GetUiWorldMapAreaIdSwaps() const { return UiWorldMapAreaIdSwaps; } + bool AddUiMapPhaseId(uint32 uiMapPhaseId, int32 references = 1); + EraseResult RemoveUiMapPhaseId(uint32 uiMapPhaseId); + bool HasUiMapPhaseId(uint32 uiMapPhaseId) const { return UiMapPhaseIds.find(uiMapPhaseId) != UiMapPhaseIds.end(); } + UiMapPhaseIdContainer const& GetUiWorldMapAreaIdSwaps() const { return UiMapPhaseIds; } void Clear(); void ClearPhases(); @@ -111,7 +111,7 @@ protected: ObjectGuid PersonalGuid; PhaseContainer Phases; VisibleMapIdContainer VisibleMapIds; - UiWorldMapAreaIdSwapContainer UiWorldMapAreaIdSwaps; + UiMapPhaseIdContainer UiMapPhaseIds; void ModifyPhasesReferences(PhaseContainer::iterator itr, int32 references); void UpdateUnphasedFlag(); diff --git a/src/server/game/Phasing/PhasingHandler.cpp b/src/server/game/Phasing/PhasingHandler.cpp index e60c87b4816..1cce3361654 100644 --- a/src/server/game/Phasing/PhasingHandler.cpp +++ b/src/server/game/Phasing/PhasingHandler.cpp @@ -146,8 +146,8 @@ void PhasingHandler::AddVisibleMapId(WorldObject* object, uint32 visibleMapId) TerrainSwapInfo const* terrainSwapInfo = sObjectMgr->GetTerrainSwapInfo(visibleMapId); bool changed = object->GetPhaseShift().AddVisibleMapId(visibleMapId, terrainSwapInfo); - for (uint32 uiWorldMapAreaIDSwap : terrainSwapInfo->UiWorldMapAreaIDSwaps) - changed = object->GetPhaseShift().AddUiWorldMapAreaIdSwap(uiWorldMapAreaIDSwap) || changed; + for (uint32 uiMapPhaseId : terrainSwapInfo->UiMapPhaseIDs) + changed = object->GetPhaseShift().AddUiMapPhaseId(uiMapPhaseId) || changed; if (Unit* unit = object->ToUnit()) { @@ -165,8 +165,8 @@ void PhasingHandler::RemoveVisibleMapId(WorldObject* object, uint32 visibleMapId TerrainSwapInfo const* terrainSwapInfo = sObjectMgr->GetTerrainSwapInfo(visibleMapId); bool changed = object->GetPhaseShift().RemoveVisibleMapId(visibleMapId).Erased; - for (uint32 uiWorldMapAreaIDSwap : terrainSwapInfo->UiWorldMapAreaIDSwaps) - changed = object->GetPhaseShift().RemoveUiWorldMapAreaIdSwap(uiWorldMapAreaIDSwap).Erased || changed; + for (uint32 uiWorldMapAreaIDSwap : terrainSwapInfo->UiMapPhaseIDs) + changed = object->GetPhaseShift().RemoveUiMapPhaseId(uiWorldMapAreaIDSwap).Erased || changed; if (Unit* unit = object->ToUnit()) { @@ -198,18 +198,21 @@ void PhasingHandler::OnMapChange(WorldObject* object) ConditionSourceInfo srcInfo = ConditionSourceInfo(object); object->GetPhaseShift().VisibleMapIds.clear(); - object->GetPhaseShift().UiWorldMapAreaIdSwaps.clear(); + object->GetPhaseShift().UiMapPhaseIds.clear(); object->GetSuppressedPhaseShift().VisibleMapIds.clear(); - if (std::vector const* visibleMapIds = sObjectMgr->GetTerrainSwapsForMap(object->GetMapId())) + for (auto visibleMapPair : sObjectMgr->GetTerrainSwaps()) { - for (TerrainSwapInfo const* visibleMapInfo : *visibleMapIds) + for (TerrainSwapInfo const* visibleMapInfo : visibleMapPair.second) { if (sConditionMgr->IsObjectMeetingNotGroupedConditions(CONDITION_SOURCE_TYPE_TERRAIN_SWAP, visibleMapInfo->Id, srcInfo)) { - phaseShift.AddVisibleMapId(visibleMapInfo->Id, visibleMapInfo); - for (uint32 uiWorldMapAreaIdSwap : visibleMapInfo->UiWorldMapAreaIDSwaps) - phaseShift.AddUiWorldMapAreaIdSwap(uiWorldMapAreaIdSwap); + if (visibleMapPair.first == object->GetMapId()) + phaseShift.AddVisibleMapId(visibleMapInfo->Id, visibleMapInfo); + + // ui map is visible on all maps + for (uint32 uiMapPhaseId : visibleMapInfo->UiMapPhaseIDs) + phaseShift.AddUiMapPhaseId(uiMapPhaseId); } else suppressedPhaseShift.AddVisibleMapId(visibleMapInfo->Id, visibleMapInfo); @@ -317,8 +320,8 @@ void PhasingHandler::OnConditionChange(WorldObject* object) if (!sConditionMgr->IsObjectMeetingNotGroupedConditions(CONDITION_SOURCE_TYPE_TERRAIN_SWAP, itr->first, srcInfo)) { newSuppressions.AddVisibleMapId(itr->first, itr->second.VisibleMapInfo, itr->second.References); - for (uint32 uiWorldMapAreaIdSwap : itr->second.VisibleMapInfo->UiWorldMapAreaIDSwaps) - changed = phaseShift.RemoveUiWorldMapAreaIdSwap(uiWorldMapAreaIdSwap).Erased || changed; + for (uint32 uiMapPhaseId : itr->second.VisibleMapInfo->UiMapPhaseIDs) + changed = phaseShift.RemoveUiMapPhaseId(uiMapPhaseId).Erased || changed; itr = phaseShift.VisibleMapIds.erase(itr); } @@ -331,8 +334,8 @@ void PhasingHandler::OnConditionChange(WorldObject* object) if (sConditionMgr->IsObjectMeetingNotGroupedConditions(CONDITION_SOURCE_TYPE_TERRAIN_SWAP, itr->first, srcInfo)) { changed = phaseShift.AddVisibleMapId(itr->first, itr->second.VisibleMapInfo, itr->second.References) || changed; - for (uint32 uiWorldMapAreaIdSwap : itr->second.VisibleMapInfo->UiWorldMapAreaIDSwaps) - changed = phaseShift.AddUiWorldMapAreaIdSwap(uiWorldMapAreaIdSwap) || changed; + for (uint32 uiMapPhaseId : itr->second.VisibleMapInfo->UiMapPhaseIDs) + changed = phaseShift.AddUiMapPhaseId(uiMapPhaseId) || changed; itr = suppressedPhaseShift.VisibleMapIds.erase(itr); } @@ -403,9 +406,9 @@ void PhasingHandler::SendToPlayer(Player const* player, PhaseShift const& phaseS phaseShiftChange.VisibleMapIDs.reserve(phaseShift.VisibleMapIds.size()); std::transform(phaseShift.VisibleMapIds.begin(), phaseShift.VisibleMapIds.end(), std::back_inserter(phaseShiftChange.VisibleMapIDs), [](PhaseShift::VisibleMapIdContainer::value_type const& visibleMapId) { return visibleMapId.first; }); - phaseShiftChange.UiWorldMapAreaIDSwaps.reserve(phaseShift.UiWorldMapAreaIdSwaps.size()); - std::transform(phaseShift.UiWorldMapAreaIdSwaps.begin(), phaseShift.UiWorldMapAreaIdSwaps.end(), std::back_inserter(phaseShiftChange.UiWorldMapAreaIDSwaps), - [](PhaseShift::UiWorldMapAreaIdSwapContainer::value_type const& uiWorldMapAreaIdSwap) { return uiWorldMapAreaIdSwap.first; }); + phaseShiftChange.UiMapPhaseIDs.reserve(phaseShift.UiMapPhaseIds.size()); + std::transform(phaseShift.UiMapPhaseIds.begin(), phaseShift.UiMapPhaseIds.end(), std::back_inserter(phaseShiftChange.UiMapPhaseIDs), + [](PhaseShift::UiMapPhaseIdContainer::value_type const& uiWorldMapAreaIdSwap) { return uiWorldMapAreaIdSwap.first; }); player->SendDirectMessage(phaseShiftChange.Write()); } @@ -545,10 +548,10 @@ void PhasingHandler::PrintToChat(ChatHandler* chat, PhaseShift const& phaseShift chat->PSendSysMessage(LANG_PHASESHIFT_VISIBLE_MAP_IDS, visibleMapIds.str().c_str()); } - if (!phaseShift.UiWorldMapAreaIdSwaps.empty()) + if (!phaseShift.UiMapPhaseIds.empty()) { std::ostringstream uiWorldMapAreaIdSwaps; - for (PhaseShift::UiWorldMapAreaIdSwapContainer::value_type const& uiWorldMapAreaIdSwap : phaseShift.UiWorldMapAreaIdSwaps) + for (PhaseShift::UiMapPhaseIdContainer::value_type const& uiWorldMapAreaIdSwap : phaseShift.UiMapPhaseIds) uiWorldMapAreaIdSwaps << uiWorldMapAreaIdSwap.first << ',' << ' '; chat->PSendSysMessage(LANG_PHASESHIFT_UI_WORLD_MAP_AREA_SWAPS, uiWorldMapAreaIdSwaps.str().c_str()); diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index a03f1ff35fc..4399b0d3924 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -404,11 +404,11 @@ WorldPacket const* WorldPackets::Misc::PhaseShiftChange::Write() _worldPacket << uint32(PreloadMapIDs.size() * 2); // size in bytes for (uint16 preloadMapId : PreloadMapIDs) - _worldPacket << uint16(preloadMapId); // Inactive terrain swap map id + _worldPacket << uint16(preloadMapId); // Inactive terrain swap map id - _worldPacket << uint32(UiWorldMapAreaIDSwaps.size() * 2); // size in bytes - for (uint16 uiWorldMapAreaIDSwap : UiWorldMapAreaIDSwaps) - _worldPacket << uint16(uiWorldMapAreaIDSwap); // UI map id, WorldMapArea.db2, controls map display + _worldPacket << uint32(UiMapPhaseIDs.size() * 2); // size in bytes + for (uint16 uiMapPhaseId : UiMapPhaseIDs) + _worldPacket << uint16(uiMapPhaseId); // phase id, controls only map display (visible on all maps) return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 26affbaf934..d6ab86d5e2f 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -551,7 +551,7 @@ namespace WorldPackets ObjectGuid Client; PhaseShiftData Phaseshift; std::vector PreloadMapIDs; - std::vector UiWorldMapAreaIDSwaps; + std::vector UiMapPhaseIDs; std::vector VisibleMapIDs; }; diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 4a8695a60f5..1c935e62bd5 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1879,10 +1879,31 @@ SpellCastResult SpellInfo::CheckLocation(uint32 map_id, uint32 zone_id, uint32 a // continent limitation (virtual continent) if (HasAttribute(SPELL_ATTR4_CAST_ONLY_IN_OUTLAND)) { - uint32 v_map = sDB2Manager.GetVirtualMapForMapAndZone(map_id, zone_id); - MapEntry const* mapEntry = sMapStore.LookupEntry(v_map); - if (!mapEntry || mapEntry->ExpansionID < 1 || !mapEntry->IsContinent()) + uint32 mountFlags = 0; + if (player && player->HasAuraType(SPELL_AURA_MOUNT_RESTRICTIONS)) + { + for (AuraEffect const* auraEffect : player->GetAuraEffectsByType(SPELL_AURA_MOUNT_RESTRICTIONS)) + mountFlags |= auraEffect->GetMiscValue(); + } + else if (AreaTableEntry const* areaTable = sAreaTableStore.LookupEntry(area_id)) + mountFlags = areaTable->MountFlags; + + if (!(mountFlags & AREA_MOUNT_FLAG_FLYING_ALLOWED)) return SPELL_FAILED_INCORRECT_AREA; + + if (player) + { + uint32 mapToCheck = map_id; + if (MapEntry const* mapEntry = sMapStore.LookupEntry(map_id)) + mapToCheck = mapEntry->CosmeticParentMapID; + + if ((mapToCheck == 1116 || mapToCheck == 1464) && !player->HasSpell(191645)) // Draenor Pathfinder + return SPELL_FAILED_INCORRECT_AREA; + else if (mapToCheck == 1220 && !player->HasSpell(233368)) // Broken Isles Pathfinder + return SPELL_FAILED_INCORRECT_AREA; + else if ((mapToCheck == 1642 || mapToCheck == 1643) && !player->HasSpell(278833)) // Battle for Azeroth Pathfinder + return SPELL_FAILED_INCORRECT_AREA; + } } // raid instance limitation diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index f29a12eb029..ef9007bac85 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -985,7 +985,7 @@ public: if (m) if (uint32 um = (uint32)atoi(m)) - phaseShift.AddUiWorldMapAreaIdSwap(um); + phaseShift.AddUiMapPhaseId(um); PhasingHandler::SendToPlayer(handler->GetSession()->GetPlayer(), phaseShift); return true; -- cgit v1.2.3 From 7512ffb0587eccd8fbb2a2841900d572056dbae3 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 10 Oct 2018 22:11:02 +0200 Subject: Core/Entities: Update updatefields to 8.0.1.27980 --- sql/base/characters_database.sql | 4 +- .../characters/master/2018_10_10_00_characters.sql | 32 + .../Database/Implementation/CharacterDatabase.cpp | 4 +- src/server/game/Achievements/CriteriaHandler.cpp | 4 +- src/server/game/BattlePets/BattlePetMgr.cpp | 6 +- src/server/game/Conditions/ConditionMgr.cpp | 8 +- src/server/game/DataStores/GameTables.cpp | 2 - src/server/game/DataStores/GameTables.h | 7 - src/server/game/Entities/Creature/Creature.cpp | 2 +- src/server/game/Entities/Creature/Creature.h | 1 - src/server/game/Entities/Item/ItemTemplate.cpp | 2 +- src/server/game/Entities/Object/Object.cpp | 5 +- .../Entities/Object/Updates/UpdateFieldFlags.cpp | 8640 ++++++++++++-------- .../Entities/Object/Updates/UpdateFieldFlags.h | 8 +- .../game/Entities/Object/Updates/UpdateFields.h | 515 +- src/server/game/Entities/Pet/Pet.cpp | 6 +- src/server/game/Entities/Player/CollectionMgr.cpp | 38 +- src/server/game/Entities/Player/Player.cpp | 498 +- src/server/game/Entities/Player/Player.h | 49 +- src/server/game/Entities/Player/RestMgr.cpp | 20 +- src/server/game/Entities/Unit/StatSystem.cpp | 93 +- src/server/game/Entities/Unit/Unit.cpp | 77 +- src/server/game/Entities/Unit/Unit.h | 22 +- src/server/game/Handlers/BattlePetHandler.cpp | 2 +- src/server/game/Handlers/CharacterHandler.cpp | 4 +- src/server/game/Handlers/InspectHandler.cpp | 6 +- src/server/game/Handlers/ItemHandler.cpp | 2 +- src/server/game/Handlers/MiscHandler.cpp | 6 +- src/server/game/Handlers/SpellHandler.cpp | 4 +- src/server/game/Miscellaneous/SharedDefines.h | 1694 ++-- .../game/Server/Packets/CombatLogPacketsCommon.cpp | 4 +- src/server/game/Server/WorldSession.cpp | 6 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 75 +- src/server/game/Spells/SpellInfo.cpp | 6 +- src/server/scripts/Commands/cs_character.cpp | 2 +- src/server/scripts/Commands/cs_cheat.cpp | 4 +- src/server/scripts/Commands/cs_misc.cpp | 8 +- src/server/scripts/Commands/cs_reset.cpp | 8 +- src/server/scripts/Commands/cs_titles.cpp | 2 +- .../scripts/Northrend/Naxxramas/boss_sapphiron.cpp | 2 +- .../Outland/TempestKeep/Eye/boss_astromancer.cpp | 4 +- src/server/scripts/Spells/spell_pet.cpp | 28 +- 42 files changed, 6680 insertions(+), 5230 deletions(-) create mode 100644 sql/updates/characters/master/2018_10_10_00_characters.sql (limited to 'src/server/database/Database/Implementation') diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 3e07e87a99c..17bf37bc811 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -1734,7 +1734,6 @@ CREATE TABLE `characters` ( `deleteDate` int(10) unsigned DEFAULT NULL, `honor` int(10) unsigned NOT NULL DEFAULT '0', `honorLevel` int(10) unsigned NOT NULL DEFAULT '1', - `prestigeLevel` int(10) unsigned NOT NULL DEFAULT '0', `honorRestState` tinyint(3) unsigned NOT NULL DEFAULT '2', `honorRestBonus` float NOT NULL DEFAULT '0', `lastLoginBuild` int(10) unsigned NOT NULL DEFAULT '0', @@ -3570,7 +3569,8 @@ INSERT INTO `updates` VALUES ('2018_04_28_00_characters.sql','CBD0FDC0F32DE3F456F7CE3D9CAD6933CD6A50F5','RELEASED','2018-04-28 12:44:09',0), ('2018_07_28_00_characters.sql','31F66AE7831251A8915625EC7F10FA138AB8B654','RELEASED','2018-07-28 18:30:19',0), ('2018_07_31_00_characters.sql','7DA8D4A4534520B23E6F5BBD5B8EE205B799C798','RELEASED','2018-07-31 20:54:39',0), -('2018_09_18_00_characters.sql','7FE9641C93ED762597C08F1E9B6649C9EC2F0E47','RELEASED','2018-09-18 23:34:29',0); +('2018_09_18_00_characters.sql','7FE9641C93ED762597C08F1E9B6649C9EC2F0E47','RELEASED','2018-09-18 23:34:29',0), +('2018_10_10_00_characters.sql','C80B936AAD94C58A0F33382CED08CFB4E0B6AC34','RELEASED','2018-10-10 22:05:28',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/characters/master/2018_10_10_00_characters.sql b/sql/updates/characters/master/2018_10_10_00_characters.sql new file mode 100644 index 00000000000..6ccb47f47e3 --- /dev/null +++ b/sql/updates/characters/master/2018_10_10_00_characters.sql @@ -0,0 +1,32 @@ +DROP TABLE IF EXISTS `total_honor_at_honor_level`; +CREATE TABLE `total_honor_at_honor_level` ( + `HonorLevel` int(10) UNSIGNED NOT NULL, + `Prestige0` int(10) UNSIGNED NOT NULL, + `Prestige1` int(10) UNSIGNED NOT NULL, + PRIMARY KEY (`HonorLevel`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +INSERT INTO `total_honor_at_honor_level` VALUES +(0,0,0),(1,350,800),(2,700,1600),(3,1050,2400),(4,1400,3200), +(5,1750,4000),(6,2100,4800),(7,2450,5600),(8,2800,6400),(9,3150,7200), +(10,3500,8000),(11,3900,8850),(12,4300,9700),(13,4700,10550),(14,5100,11400), +(15,5500,12250),(16,5900,13100),(17,6300,13950),(18,6700,14800),(19,7100,15650), +(20,7500,16500),(21,7950,17400),(22,8400,18300),(23,8850,19200),(24,9300,20100), +(25,9750,21000),(26,10200,21900),(27,10650,22800),(28,11100,23700),(29,11550,24600), +(30,12000,25500),(31,12500,26450),(32,13000,27400),(33,13500,28350),(34,14000,29300), +(35,14500,30250),(36,15000,31200),(37,15500,32150),(38,16000,33100),(39,16500,34050), +(40,17000,35000),(41,17550,36000),(42,18100,37000),(43,18650,38000),(44,19200,39000), +(45,19750,40000),(46,20300,41000),(47,20850,42000),(48,21400,43000),(49,21950,44000); + +-- first compensate for prestige levels above first +UPDATE `characters` SET `honor`=`honor`+44000*(`prestigeLevel`-1) WHERE `prestigeLevel`>0; +-- compensate for honor levels in prestige for characters above first prestige +UPDATE `characters` SET `honor`=`honor`+(SELECT th.`Prestige1` FROM `total_honor_at_honor_level` th WHERE th.`HonorLevel`=(`characters`.`honorLevel`-1)) WHERE `prestigeLevel`>0; +-- compensate for honor levels in first prestige level +UPDATE `characters` SET `honor`=`honor`+(SELECT th.`Prestige0` FROM `total_honor_at_honor_level` th WHERE th.`HonorLevel`=(`characters`.`honorLevel`-1)) WHERE `prestigeLevel`=0; + +-- reset honor levels, will be recalculated from refunded honor at first login (and grant achievements) +UPDATE `characters` SET `honorLevel`=1; + +ALTER TABLE `characters` DROP `prestigeLevel`; +DROP TABLE IF EXISTS `total_honor_at_honor_level`; diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index 359a1dd92db..62c64fd6d38 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -84,7 +84,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() "resettalents_time, primarySpecialization, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, dungeonDifficulty, " "totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, " "health, power1, power2, power3, power4, power5, power6, instance_id, activeTalentGroup, lootSpecId, exploredZones, knownTitles, actionBars, grantableLevels, raidDifficulty, legacyRaidDifficulty, fishingSteps, " - "honor, honorLevel, prestigeLevel, honorRestState, honorRestBonus " + "honor, honorLevel, honorRestState, honorRestBonus " "FROM characters c LEFT JOIN character_fishingsteps cfs ON c.guid = cfs.guid WHERE c.guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_GROUP_MEMBER, "SELECT guid FROM group_member WHERE memberGuid = ?", CONNECTION_BOTH); @@ -436,7 +436,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() "logout_time=?,is_logout_resting=?,resettalents_cost=?,resettalents_time=?,primarySpecialization=?,extra_flags=?,stable_slots=?,at_login=?,zone=?,death_expire_time=?,taxi_path=?," "totalKills=?,todayKills=?,yesterdayKills=?,chosenTitle=?," "watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,latency=?,activeTalentGroup=?,lootSpecId=?,exploredZones=?," - "equipmentCache=?,knownTitles=?,actionBars=?,grantableLevels=?,online=?,honor=?,honorLevel=?,prestigeLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=? WHERE guid=?", CONNECTION_ASYNC); + "equipmentCache=?,knownTitles=?,actionBars=?,grantableLevels=?,online=?,honor=?,honorLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=? WHERE guid=?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG, "UPDATE characters SET at_login = at_login | ? WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_REM_AT_LOGIN_FLAG, "UPDATE characters set at_login = at_login & ~ ? WHERE guid = ?", CONNECTION_ASYNC); diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index e8ca4c45a4e..b6e6908faad 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -657,7 +657,7 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0 SetCriteriaProgress(criteria, referencePlayer->GetReputationMgr().GetVisibleFactionCount(), referencePlayer); break; case CRITERIA_TYPE_EARN_HONORABLE_KILL: - SetCriteriaProgress(criteria, referencePlayer->GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS), referencePlayer); + SetCriteriaProgress(criteria, referencePlayer->GetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS), referencePlayer); break; case CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED: SetCriteriaProgress(criteria, referencePlayer->GetMoney(), referencePlayer, PROGRESS_HIGHEST); @@ -1450,7 +1450,7 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis continue; uint32 mask = 1 << (uint32(area->AreaBit) % 32); - if (referencePlayer->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + playerIndexOffset) & mask) + if (referencePlayer->GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + playerIndexOffset) & mask) { matchFound = true; break; diff --git a/src/server/game/BattlePets/BattlePetMgr.cpp b/src/server/game/BattlePets/BattlePetMgr.cpp index 2c96b93e7fe..42be357f802 100644 --- a/src/server/game/BattlePets/BattlePetMgr.cpp +++ b/src/server/game/BattlePets/BattlePetMgr.cpp @@ -444,7 +444,7 @@ void BattlePetMgr::SummonPet(ObjectGuid guid) return; // TODO: set proper CreatureID for spell DEFAULT_SUMMON_BATTLE_PET_SPELL (default EffectMiscValueA is 40721 - Murkimus the Gladiator) - _owner->GetPlayer()->SetGuidValue(PLAYER_FIELD_SUMMONED_BATTLE_PET_ID, guid); + _owner->GetPlayer()->SetGuidValue(ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID, guid); _owner->GetPlayer()->CastSpell(_owner->GetPlayer(), speciesEntry->SummonSpellID ? speciesEntry->SummonSpellID : uint32(DEFAULT_SUMMON_BATTLE_PET_SPELL)); // TODO: set pet level, quality... update fields @@ -454,10 +454,10 @@ void BattlePetMgr::DismissPet() { Player* ownerPlayer = _owner->GetPlayer(); Creature* pet = ObjectAccessor::GetCreatureOrPetOrVehicle(*ownerPlayer, ownerPlayer->GetCritterGUID()); - if (pet && ownerPlayer->GetGuidValue(PLAYER_FIELD_SUMMONED_BATTLE_PET_ID) == pet->GetGuidValue(UNIT_FIELD_BATTLE_PET_COMPANION_GUID)) + if (pet && ownerPlayer->GetGuidValue(ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID) == pet->GetGuidValue(UNIT_FIELD_BATTLE_PET_COMPANION_GUID)) { pet->DespawnOrUnsummon(); - ownerPlayer->SetGuidValue(PLAYER_FIELD_SUMMONED_BATTLE_PET_ID, ObjectGuid::Empty); + ownerPlayer->SetGuidValue(ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID, ObjectGuid::Empty); } } diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 685486fd749..a6e1e2f73b9 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -2590,10 +2590,10 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio } } - if (condition->PvpMedal && !((1 << (condition->PvpMedal - 1)) & player->GetUInt32Value(PLAYER_FIELD_PVP_MEDALS))) + if (condition->PvpMedal && !((1 << (condition->PvpMedal - 1)) & player->GetUInt32Value(ACTIVE_PLAYER_FIELD_PVP_MEDALS))) return false; - if (condition->LifetimeMaxPVPRank && player->GetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_LIFETIME_MAX_PVP_RANK) != condition->LifetimeMaxPVPRank) + if (condition->LifetimeMaxPVPRank && player->GetByteValue(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_LIFETIME_MAX_PVP_RANK) != condition->LifetimeMaxPVPRank) return false; if (condition->MovementFlags[0] && !(player->GetUnitMovementFlags() & condition->MovementFlags[0])) @@ -2647,7 +2647,7 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio results.fill(true); for (std::size_t i = 0; i < PrevQuestCount::value; ++i) if (uint32 questBit = sDB2Manager.GetQuestUniqueBitFlag(condition->PrevQuestID[i])) - results[i] = (player->GetUInt32Value(PLAYER_FIELD_QUEST_COMPLETED + ((questBit - 1) >> 5)) & (1 << ((questBit - 1) & 31))) != 0; + results[i] = (player->GetUInt32Value(ACTIVE_PLAYER_FIELD_QUEST_COMPLETED + ((questBit - 1) >> 5)) & (1 << ((questBit - 1) & 31))) != 0; if (!PlayerConditionLogic(condition->PrevQuestLogic, results)) return false; @@ -2731,7 +2731,7 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio for (std::size_t i = 0; i < ExploredCount::value; ++i) { if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(condition->Explored[i])) - if (area->AreaBit != -1 && !(player->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + area->AreaBit / 32) & (1 << (uint32(area->AreaBit) % 32)))) + if (area->AreaBit != -1 && !(player->GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + area->AreaBit / 32) & (1 << (uint32(area->AreaBit) % 32)))) return false; } } diff --git a/src/server/game/DataStores/GameTables.cpp b/src/server/game/DataStores/GameTables.cpp index d6142ccf065..c4232087a7c 100644 --- a/src/server/game/DataStores/GameTables.cpp +++ b/src/server/game/DataStores/GameTables.cpp @@ -29,7 +29,6 @@ GameTable sBarberShopCostBaseGameTable; GameTable sBaseMPGameTable; GameTable sCombatRatingsGameTable; GameTable sCombatRatingsMultByILvlGameTable; -GameTable sHonorLevelGameTable; GameTable sHpPerStaGameTable; GameTable sItemSocketCostPerLevelGameTable; GameTable sNpcDamageByClassGameTable[MAX_EXPANSIONS]; @@ -118,7 +117,6 @@ void LoadGameTables(std::string const& dataPath) LOAD_GT(sCombatRatingsGameTable, "CombatRatings.txt"); LOAD_GT(sCombatRatingsMultByILvlGameTable, "CombatRatingsMultByILvl.txt"); LOAD_GT(sItemSocketCostPerLevelGameTable, "ItemSocketCostPerLevel.txt"); - LOAD_GT(sHonorLevelGameTable, "HonorLevel.txt"); LOAD_GT(sHpPerStaGameTable, "HpPerSta.txt"); LOAD_GT(sNpcDamageByClassGameTable[0], "NpcDamageByClass.txt"); LOAD_GT(sNpcDamageByClassGameTable[1], "NpcDamageByClassExp1.txt"); diff --git a/src/server/game/DataStores/GameTables.h b/src/server/game/DataStores/GameTables.h index 6e79de31e62..28365a7ff1c 100644 --- a/src/server/game/DataStores/GameTables.h +++ b/src/server/game/DataStores/GameTables.h @@ -103,12 +103,6 @@ struct GtCombatRatingsMultByILvl float JewelryMultiplier = 0.0f; }; -uint8 constexpr PRESTIGE_COLUMN_COUNT = 33; -struct GtHonorLevelEntry -{ - float Prestige[PRESTIGE_COLUMN_COUNT] = { }; -}; - struct GtHpPerStaEntry { float Health = 0.0f; @@ -215,7 +209,6 @@ TC_GAME_API extern GameTable sBarberShopC TC_GAME_API extern GameTable sBaseMPGameTable; TC_GAME_API extern GameTable sCombatRatingsGameTable; TC_GAME_API extern GameTable sCombatRatingsMultByILvlGameTable; -TC_GAME_API extern GameTable sHonorLevelGameTable; TC_GAME_API extern GameTable sHpPerStaGameTable; TC_GAME_API extern GameTable sItemSocketCostPerLevelGameTable; TC_GAME_API extern GameTable sNpcDamageByClassGameTable[MAX_EXPANSIONS]; diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 8f2c6980762..9d4724417fe 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2571,7 +2571,7 @@ uint8 Creature::GetLevelForTarget(WorldObject const* target) const uint8 targetLevelWithDelta = unitTarget->getLevel() + GetInt32Value(UNIT_FIELD_SCALING_LEVEL_DELTA); if (target->IsPlayer()) - targetLevelWithDelta += target->GetUInt32Value(PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); + targetLevelWithDelta += target->GetUInt32Value(ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); return RoundToInterval(targetLevelWithDelta, GetUInt32Value(UNIT_FIELD_SCALING_LEVEL_MIN), GetUInt32Value(UNIT_FIELD_SCALING_LEVEL_MAX)); } diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index d87db9be2ca..90c84fb843a 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -149,7 +149,6 @@ class TC_GAME_API Creature : public Unit, public GridObject, public Ma bool UpdateStats(Stats stat) override; bool UpdateAllStats() override; - void UpdateResistances(uint32 school) override; void UpdateArmor() override; void UpdateMaxHealth() override; void UpdateMaxPower(Powers power) override; diff --git a/src/server/game/Entities/Item/ItemTemplate.cpp b/src/server/game/Entities/Item/ItemTemplate.cpp index 43c817cde35..abb4d47bfe8 100644 --- a/src/server/game/Entities/Item/ItemTemplate.cpp +++ b/src/server/game/Entities/Item/ItemTemplate.cpp @@ -241,7 +241,7 @@ bool ItemTemplate::IsUsableByLootSpecialization(Player const* player, bool alway if (GetFlags() & ITEM_FLAG_IS_BOUND_TO_ACCOUNT && alwaysAllowBoundToAccount) return true; - uint32 spec = player->GetUInt32Value(PLAYER_FIELD_LOOT_SPEC_ID); + uint32 spec = player->GetUInt32Value(ACTIVE_PLAYER_FIELD_LOOT_SPEC_ID); if (!spec) spec = player->GetUInt32Value(PLAYER_FIELD_CURRENT_SPEC_ID); if (!spec) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index cd1d352eda8..201f5c1515c 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -130,7 +130,6 @@ void Object::_Create(ObjectGuid const& guid) if (!m_uint32Values) _InitValues(); SetGuidValue(OBJECT_FIELD_GUID, guid); - SetUInt16Value(OBJECT_FIELD_TYPE, 0, m_objectType); } std::string Object::_ConcatFields(uint16 startIndex, uint16 size) const @@ -928,7 +927,7 @@ uint32 Object::GetUpdateFieldData(Player const* target, uint32*& flags) const { case TYPEID_ITEM: case TYPEID_CONTAINER: - flags = ItemUpdateFieldFlags; + flags = ContainerUpdateFieldFlags; if (((Item const*)this)->GetOwnerGUID() == target->GetGUID()) visibleFlag |= UF_FLAG_OWNER | UF_FLAG_ITEM_OWNER; break; @@ -2975,7 +2974,7 @@ struct WorldObjectChangeAccumulator { //Caster may be NULL if DynObj is in removelist if (Player* caster = ObjectAccessor::FindPlayer(guid)) - if (caster->GetGuidValue(PLAYER_FARSIGHT) == source->GetGUID()) + if (caster->GetGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT) == source->GetGUID()) BuildPacket(caster); } } diff --git a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp index 9a26e2a8c53..350c64d3c7b 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp @@ -17,17 +17,12 @@ #include "UpdateFieldFlags.h" -uint32 ItemUpdateFieldFlags[CONTAINER_END] = +uint32 ContainerUpdateFieldFlags[CONTAINER_END] = { UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -251,26 +246,198 @@ uint32 ItemUpdateFieldFlags[CONTAINER_END] = UF_FLAG_PUBLIC, // CONTAINER_FIELD_NUM_SLOTS }; -uint32 ItemDynamicUpdateFieldFlags[CONTAINER_DYNAMIC_END] = +uint32 AzeriteEmpoweredItemUpdateFieldFlags[AZERITE_EMPOWERED_ITEM_END] = +{ + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 + UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY + UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS + UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR+3 + UF_FLAG_OWNER, // ITEM_FIELD_STACK_COUNT + UF_FLAG_OWNER, // ITEM_FIELD_DURATION + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+1 + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+2 + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+3 + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+4 + UF_FLAG_PUBLIC, // ITEM_FIELD_FLAGS + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+4 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+5 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+6 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+7 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+8 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+9 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+10 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+11 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+12 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+13 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+14 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+15 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+16 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+17 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+18 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+19 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+20 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+21 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+22 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+23 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+24 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+25 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+26 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+27 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+28 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+29 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+30 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+31 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+32 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+33 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+34 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+35 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+36 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+37 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+38 + UF_FLAG_PUBLIC, // ITEM_FIELD_PROPERTY_SEED + UF_FLAG_PUBLIC, // ITEM_FIELD_RANDOM_PROPERTIES_ID + UF_FLAG_OWNER, // ITEM_FIELD_DURABILITY + UF_FLAG_OWNER, // ITEM_FIELD_MAXDURABILITY + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATE_PLAYED_TIME + UF_FLAG_OWNER, // ITEM_FIELD_MODIFIERS_MASK + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTEXT + UF_FLAG_OWNER, // ITEM_FIELD_ARTIFACT_XP + UF_FLAG_OWNER, // ITEM_FIELD_ARTIFACT_XP+1 + UF_FLAG_OWNER, // ITEM_FIELD_APPEARANCE_MOD_ID + UF_FLAG_PUBLIC, // AZERITE_EMPOWERED_ITEM_FIELD_SELECTIONS + UF_FLAG_PUBLIC, // AZERITE_EMPOWERED_ITEM_FIELD_SELECTIONS+1 + UF_FLAG_PUBLIC, // AZERITE_EMPOWERED_ITEM_FIELD_SELECTIONS+2 + UF_FLAG_PUBLIC, // AZERITE_EMPOWERED_ITEM_FIELD_SELECTIONS+3 +}; + +uint32 AzeriteItemUpdateFieldFlags[AZERITE_ITEM_END] = +{ + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 + UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY + UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS + UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR+3 + UF_FLAG_OWNER, // ITEM_FIELD_STACK_COUNT + UF_FLAG_OWNER, // ITEM_FIELD_DURATION + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+1 + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+2 + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+3 + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+4 + UF_FLAG_PUBLIC, // ITEM_FIELD_FLAGS + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+4 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+5 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+6 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+7 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+8 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+9 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+10 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+11 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+12 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+13 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+14 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+15 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+16 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+17 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+18 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+19 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+20 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+21 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+22 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+23 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+24 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+25 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+26 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+27 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+28 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+29 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+30 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+31 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+32 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+33 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+34 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+35 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+36 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+37 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+38 + UF_FLAG_PUBLIC, // ITEM_FIELD_PROPERTY_SEED + UF_FLAG_PUBLIC, // ITEM_FIELD_RANDOM_PROPERTIES_ID + UF_FLAG_OWNER, // ITEM_FIELD_DURABILITY + UF_FLAG_OWNER, // ITEM_FIELD_MAXDURABILITY + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATE_PLAYED_TIME + UF_FLAG_OWNER, // ITEM_FIELD_MODIFIERS_MASK + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTEXT + UF_FLAG_OWNER, // ITEM_FIELD_ARTIFACT_XP + UF_FLAG_OWNER, // ITEM_FIELD_ARTIFACT_XP+1 + UF_FLAG_OWNER, // ITEM_FIELD_APPEARANCE_MOD_ID + UF_FLAG_PUBLIC, // AZERITE_ITEM_FIELD_XP + UF_FLAG_PUBLIC, // AZERITE_ITEM_FIELD_XP+1 + UF_FLAG_PUBLIC, // AZERITE_ITEM_FIELD_LEVEL + UF_FLAG_PUBLIC, // AZERITE_ITEM_FIELD_AURA_LEVEL + UF_FLAG_OWNER, // AZERITE_ITEM_FIELD_KNOWLEDGE_LEVEL + UF_FLAG_OWNER, // AZERITE_ITEM_FIELD_DEBUG_KNOWLEDGE_WEEK +}; + +uint32 ItemDynamicUpdateFieldFlags[ITEM_DYNAMIC_END] = { UF_FLAG_OWNER, // ITEM_DYNAMIC_FIELD_MODIFIERS UF_FLAG_OWNER | UF_FLAG_0x100, // ITEM_DYNAMIC_FIELD_BONUSLIST_IDS UF_FLAG_OWNER, // ITEM_DYNAMIC_FIELD_ARTIFACT_POWERS UF_FLAG_OWNER, // ITEM_DYNAMIC_FIELD_GEMS - UF_FLAG_OWNER, // ITEM_DYNAMIC_FIELD_RELIC_TALENT_DATA }; -uint32 UnitUpdateFieldFlags[PLAYER_END] = +uint32 UnitUpdateFieldFlags[ACTIVE_PLAYER_END] = { UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -302,6 +469,10 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PUBLIC, // UNIT_FIELD_DEMON_CREATOR+1 UF_FLAG_PUBLIC, // UNIT_FIELD_DEMON_CREATOR+2 UF_FLAG_PUBLIC, // UNIT_FIELD_DEMON_CREATOR+3 + UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET + UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET+1 + UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET+2 + UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET+3 UF_FLAG_PUBLIC, // UNIT_FIELD_TARGET UF_FLAG_PUBLIC, // UNIT_FIELD_TARGET+1 UF_FLAG_PUBLIC, // UNIT_FIELD_TARGET+2 @@ -348,10 +519,13 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_UNIT_ALL, // UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER+5 UF_FLAG_PUBLIC, // UNIT_FIELD_LEVEL UF_FLAG_PUBLIC, // UNIT_FIELD_EFFECTIVE_LEVEL - UF_FLAG_PUBLIC, // UNIT_FIELD_SANDBOX_SCALING_ID + UF_FLAG_PUBLIC, // UNIT_FIELD_CONTENT_TUNING_ID UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_LEVEL_MIN UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_LEVEL_MAX UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_LEVEL_DELTA + UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_FACTION_GROUP + UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_HEALTH_ITEM_LEVEL_CURVE_ID + UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_DAMAGE_ITEM_LEVEL_CURVE_ID UF_FLAG_PUBLIC, // UNIT_FIELD_FACTIONTEMPLATE UF_FLAG_PUBLIC, // UNIT_VIRTUAL_ITEM_SLOT_ID UF_FLAG_PUBLIC, // UNIT_VIRTUAL_ITEM_SLOT_ID+1 @@ -369,7 +543,9 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PUBLIC, // UNIT_FIELD_BOUNDINGRADIUS UF_FLAG_PUBLIC, // UNIT_FIELD_COMBATREACH UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // UNIT_FIELD_DISPLAYID + UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // UNIT_FIELD_DISPLAY_SCALE UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_FIELD_NATIVEDISPLAYID + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_FIELD_NATIVE_X_DISPLAY_SCALE UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_FIELD_MOUNTDISPLAYID UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_MINDAMAGE UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_MAXDAMAGE @@ -409,21 +585,13 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_RESISTANCES+4 UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_RESISTANCES+5 UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_RESISTANCES+6 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+1 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+2 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+3 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+4 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+5 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+6 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+1 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+2 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+3 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+4 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+5 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+6 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_MOD_BONUS_ARMOR + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS+1 + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS+2 + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS+3 + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS+4 + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS+5 + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS+6 UF_FLAG_PUBLIC, // UNIT_FIELD_BASE_MANA UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BASE_HEALTH UF_FLAG_PUBLIC, // UNIT_FIELD_BYTES_2 @@ -435,7 +603,11 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RANGED_ATTACK_POWER_MOD_POS UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RANGED_ATTACK_POWER_MOD_NEG UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_MAIN_HAND_WEAPON_ATTACK_POWER + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_OFF_HAND_WEAPON_ATTACK_POWER + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RANGED_HAND_WEAPON_ATTACK_POWER UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_ATTACK_SPEED_AURA + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_LIFESTEAL UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_MINRANGEDDAMAGE UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_MAXRANGEDDAMAGE UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_POWER_COST_MODIFIER @@ -471,10 +643,10 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PUBLIC, // UNIT_FIELD_LOOKS_LIKE_MOUNT_ID UF_FLAG_PUBLIC, // UNIT_FIELD_LOOKS_LIKE_CREATURE_ID UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_ID - UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET - UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET+1 - UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET+2 - UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET+3 + UF_FLAG_PUBLIC, // UNIT_FIELD_GUILD_GUID + UF_FLAG_PUBLIC, // UNIT_FIELD_GUILD_GUID+1 + UF_FLAG_PUBLIC, // UNIT_FIELD_GUILD_GUID+2 + UF_FLAG_PUBLIC, // UNIT_FIELD_GUILD_GUID+3 UF_FLAG_PUBLIC, // PLAYER_DUEL_ARBITER UF_FLAG_PUBLIC, // PLAYER_DUEL_ARBITER+1 UF_FLAG_PUBLIC, // PLAYER_DUEL_ARBITER+2 @@ -1298,6 +1470,806 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+797 UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+798 UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+799 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+800 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+801 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+802 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+803 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+804 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+805 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+806 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+807 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+808 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+809 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+810 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+811 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+812 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+813 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+814 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+815 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+816 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+817 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+818 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+819 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+820 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+821 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+822 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+823 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+824 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+825 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+826 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+827 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+828 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+829 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+830 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+831 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+832 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+833 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+834 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+835 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+836 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+837 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+838 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+839 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+840 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+841 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+842 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+843 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+844 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+845 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+846 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+847 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+848 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+849 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+850 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+851 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+852 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+853 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+854 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+855 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+856 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+857 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+858 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+859 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+860 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+861 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+862 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+863 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+864 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+865 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+866 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+867 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+868 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+869 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+870 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+871 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+872 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+873 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+874 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+875 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+876 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+877 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+878 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+879 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+880 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+881 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+882 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+883 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+884 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+885 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+886 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+887 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+888 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+889 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+890 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+891 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+892 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+893 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+894 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+895 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+896 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+897 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+898 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+899 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+900 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+901 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+902 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+903 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+904 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+905 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+906 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+907 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+908 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+909 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+910 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+911 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+912 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+913 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+914 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+915 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+916 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+917 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+918 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+919 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+920 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+921 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+922 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+923 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+924 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+925 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+926 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+927 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+928 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+929 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+930 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+931 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+932 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+933 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+934 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+935 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+936 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+937 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+938 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+939 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+940 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+941 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+942 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+943 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+944 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+945 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+946 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+947 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+948 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+949 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+950 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+951 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+952 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+953 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+954 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+955 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+956 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+957 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+958 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+959 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+960 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+961 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+962 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+963 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+964 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+965 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+966 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+967 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+968 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+969 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+970 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+971 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+972 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+973 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+974 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+975 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+976 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+977 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+978 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+979 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+980 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+981 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+982 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+983 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+984 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+985 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+986 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+987 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+988 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+989 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+990 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+991 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+992 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+993 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+994 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+995 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+996 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+997 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+998 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+999 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1000 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1001 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1002 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1003 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1004 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1005 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1006 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1007 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1008 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1009 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1010 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1011 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1012 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1013 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1014 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1015 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1016 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1017 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1018 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1019 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1020 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1021 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1022 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1023 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1024 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1025 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1026 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1027 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1028 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1029 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1030 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1031 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1032 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1033 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1034 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1035 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1036 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1037 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1038 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1039 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1040 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1041 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1042 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1043 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1044 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1045 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1046 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1047 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1048 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1049 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1050 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1051 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1052 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1053 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1054 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1055 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1056 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1057 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1058 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1059 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1060 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1061 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1062 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1063 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1064 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1065 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1066 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1067 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1068 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1069 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1070 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1071 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1072 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1073 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1074 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1075 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1076 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1077 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1078 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1079 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1080 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1081 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1082 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1083 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1084 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1085 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1086 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1087 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1088 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1089 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1090 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1091 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1092 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1093 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1094 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1095 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1096 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1097 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1098 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1099 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1100 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1101 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1102 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1103 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1104 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1105 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1106 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1107 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1108 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1109 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1110 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1111 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1112 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1113 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1114 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1115 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1116 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1117 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1118 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1119 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1120 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1121 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1122 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1123 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1124 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1125 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1126 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1127 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1128 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1129 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1130 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1131 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1132 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1133 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1134 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1135 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1136 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1137 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1138 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1139 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1140 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1141 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1142 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1143 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1144 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1145 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1146 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1147 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1148 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1149 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1150 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1151 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1152 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1153 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1154 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1155 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1156 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1157 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1158 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1159 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1160 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1161 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1162 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1163 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1164 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1165 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1166 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1167 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1168 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1169 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1170 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1171 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1172 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1173 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1174 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1175 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1176 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1177 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1178 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1179 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1180 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1181 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1182 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1183 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1184 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1185 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1186 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1187 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1188 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1189 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1190 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1191 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1192 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1193 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1194 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1195 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1196 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1197 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1198 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1199 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1200 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1201 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1202 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1203 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1204 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1205 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1206 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1207 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1208 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1209 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1210 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1211 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1212 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1213 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1214 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1215 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1216 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1217 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1218 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1219 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1220 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1221 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1222 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1223 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1224 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1225 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1226 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1227 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1228 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1229 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1230 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1231 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1232 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1233 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1234 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1235 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1236 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1237 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1238 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1239 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1240 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1241 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1242 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1243 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1244 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1245 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1246 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1247 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1248 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1249 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1250 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1251 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1252 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1253 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1254 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1255 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1256 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1257 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1258 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1259 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1260 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1261 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1262 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1263 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1264 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1265 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1266 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1267 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1268 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1269 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1270 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1271 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1272 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1273 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1274 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1275 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1276 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1277 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1278 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1279 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1280 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1281 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1282 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1283 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1284 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1285 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1286 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1287 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1288 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1289 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1290 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1291 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1292 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1293 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1294 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1295 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1296 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1297 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1298 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1299 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1300 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1301 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1302 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1303 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1304 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1305 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1306 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1307 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1308 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1309 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1310 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1311 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1312 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1313 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1314 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1315 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1316 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1317 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1318 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1319 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1320 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1321 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1322 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1323 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1324 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1325 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1326 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1327 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1328 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1329 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1330 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1331 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1332 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1333 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1334 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1335 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1336 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1337 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1338 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1339 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1340 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1341 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1342 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1343 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1344 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1345 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1346 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1347 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1348 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1349 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1350 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1351 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1352 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1353 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1354 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1355 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1356 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1357 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1358 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1359 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1360 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1361 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1362 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1363 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1364 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1365 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1366 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1367 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1368 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1369 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1370 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1371 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1372 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1373 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1374 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1375 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1376 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1377 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1378 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1379 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1380 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1381 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1382 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1383 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1384 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1385 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1386 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1387 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1388 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1389 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1390 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1391 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1392 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1393 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1394 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1395 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1396 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1397 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1398 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1399 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1400 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1401 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1402 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1403 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1404 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1405 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1406 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1407 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1408 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1409 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1410 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1411 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1412 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1413 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1414 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1415 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1416 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1417 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1418 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1419 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1420 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1421 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1422 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1423 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1424 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1425 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1426 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1427 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1428 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1429 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1430 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1431 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1432 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1433 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1434 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1435 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1436 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1437 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1438 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1439 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1440 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1441 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1442 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1443 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1444 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1445 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1446 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1447 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1448 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1449 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1450 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1451 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1452 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1453 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1454 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1455 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1456 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1457 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1458 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1459 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1460 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1461 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1462 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1463 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1464 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1465 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1466 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1467 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1468 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1469 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1470 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1471 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1472 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1473 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1474 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1475 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1476 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1477 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1478 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1479 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1480 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1481 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1482 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1483 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1484 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1485 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1486 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1487 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1488 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1489 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1490 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1491 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1492 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1493 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1494 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1495 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1496 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1497 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1498 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1499 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1500 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1501 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1502 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1503 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1504 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1505 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1506 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1507 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1508 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1509 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1510 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1511 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1512 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1513 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1514 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1515 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1516 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1517 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1518 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1519 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1520 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1521 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1522 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1523 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1524 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1525 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1526 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1527 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1528 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1529 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1530 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1531 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1532 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1533 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1534 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1535 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1536 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1537 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1538 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1539 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1540 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1541 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1542 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1543 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1544 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1545 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1546 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1547 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1548 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1549 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1550 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1551 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1552 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1553 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1554 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1555 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1556 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1557 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1558 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1559 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1560 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1561 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1562 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1563 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1564 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1565 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1566 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1567 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1568 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1569 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1570 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1571 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1572 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1573 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1574 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1575 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1576 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1577 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1578 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1579 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1580 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1581 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1582 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1583 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1584 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1585 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1586 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1587 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1588 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1589 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1590 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1591 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1592 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1593 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1594 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1595 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1596 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1597 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1598 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1599 UF_FLAG_PUBLIC, // PLAYER_VISIBLE_ITEM UF_FLAG_PUBLIC, // PLAYER_VISIBLE_ITEM+1 UF_FLAG_PUBLIC, // PLAYER_VISIBLE_ITEM+2 @@ -1346,3568 +2318,4021 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PUBLIC, // PLAYER_FIELD_AVG_ITEM_LEVEL+2 UF_FLAG_PUBLIC, // PLAYER_FIELD_AVG_ITEM_LEVEL+3 UF_FLAG_PUBLIC, // PLAYER_FIELD_CURRENT_BATTLE_PET_BREED_QUALITY - UF_FLAG_PUBLIC, // PLAYER_FIELD_PRESTIGE UF_FLAG_PUBLIC, // PLAYER_FIELD_HONOR_LEVEL - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+9 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+10 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+12 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+13 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+14 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+15 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+16 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+17 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+18 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+19 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+20 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+21 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+22 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+23 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+24 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+25 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+26 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+27 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+28 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+29 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+30 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+31 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+32 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+33 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+34 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+35 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+36 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+37 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+38 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+39 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+40 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+41 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+42 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+43 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+44 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+45 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+46 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+47 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+48 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+49 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+50 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+51 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+52 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+53 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+54 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+55 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+56 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+57 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+58 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+59 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+60 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+61 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+62 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+63 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+64 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+65 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+66 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+67 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+68 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+69 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+70 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+71 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+72 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+73 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+74 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+75 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+76 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+77 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+78 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+79 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+80 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+81 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+82 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+83 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+84 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+85 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+86 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+87 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+88 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+89 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+90 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+91 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+92 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+93 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+94 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+95 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+96 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+97 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+98 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+99 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+100 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+101 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+102 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+103 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+104 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+105 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+106 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+107 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+108 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+109 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+110 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+111 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+112 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+113 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+114 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+115 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+116 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+117 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+118 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+119 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+120 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+121 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+122 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+123 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+124 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+125 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+126 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+127 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+128 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+129 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+130 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+131 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+132 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+133 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+134 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+135 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+136 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+137 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+138 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+139 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+140 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+141 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+142 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+143 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+144 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+145 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+146 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+147 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+148 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+149 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+150 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+151 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+152 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+153 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+154 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+155 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+156 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+157 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+158 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+159 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+160 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+161 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+162 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+163 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+164 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+165 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+166 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+167 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+168 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+169 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+170 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+171 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+172 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+173 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+174 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+175 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+176 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+177 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+178 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+179 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+180 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+181 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+182 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+183 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+184 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+185 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+186 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+187 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+188 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+189 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+190 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+191 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+192 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+193 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+194 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+195 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+196 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+197 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+198 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+199 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+200 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+201 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+202 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+203 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+204 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+205 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+206 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+207 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+208 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+209 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+210 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+211 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+212 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+213 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+214 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+215 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+216 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+217 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+218 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+219 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+220 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+221 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+222 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+223 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+224 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+225 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+226 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+227 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+228 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+229 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+230 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+231 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+232 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+233 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+234 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+235 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+236 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+237 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+238 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+239 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+240 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+241 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+242 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+243 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+244 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+245 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+246 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+247 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+248 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+249 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+250 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+251 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+252 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+253 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+254 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+255 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+256 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+257 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+258 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+259 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+260 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+261 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+262 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+263 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+264 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+265 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+266 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+267 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+268 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+269 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+270 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+271 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+272 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+273 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+274 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+275 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+276 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+277 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+278 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+279 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+280 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+281 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+282 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+283 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+284 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+285 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+286 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+287 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+288 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+289 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+290 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+291 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+292 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+293 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+294 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+295 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+296 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+297 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+298 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+299 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+300 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+301 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+302 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+303 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+304 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+305 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+306 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+307 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+308 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+309 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+310 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+311 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+312 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+313 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+314 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+315 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+316 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+317 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+318 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+319 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+320 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+321 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+322 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+323 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+324 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+325 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+326 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+327 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+328 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+329 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+330 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+331 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+332 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+333 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+334 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+335 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+336 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+337 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+338 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+339 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+340 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+341 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+342 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+343 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+344 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+345 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+346 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+347 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+348 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+349 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+350 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+351 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+352 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+353 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+354 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+355 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+356 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+357 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+358 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+359 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+360 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+361 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+362 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+363 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+364 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+365 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+366 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+367 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+368 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+369 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+370 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+371 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+372 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+373 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+374 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+375 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+376 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+377 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+378 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+379 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+380 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+381 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+382 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+383 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+384 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+385 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+386 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+387 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+388 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+389 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+390 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+391 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+392 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+393 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+394 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+395 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+396 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+397 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+398 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+399 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+400 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+401 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+402 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+403 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+404 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+405 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+406 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+407 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+408 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+409 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+410 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+411 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+412 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+413 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+414 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+415 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+416 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+417 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+418 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+419 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+420 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+421 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+422 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+423 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+424 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+425 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+426 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+427 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+428 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+429 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+430 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+431 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+432 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+433 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+434 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+435 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+436 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+437 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+438 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+439 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+440 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+441 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+442 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+443 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+444 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+445 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+446 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+447 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+448 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+449 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+450 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+451 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+452 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+453 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+454 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+455 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+456 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+457 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+458 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+459 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+460 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+461 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+462 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+463 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+464 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+465 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+466 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+467 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+468 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+469 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+470 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+471 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+472 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+473 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+474 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+475 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+476 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+477 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+478 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+479 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+480 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+481 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+482 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+483 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+484 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+485 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+486 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+487 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+488 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+489 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+490 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+491 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+492 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+493 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+494 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+495 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+496 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+497 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+498 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+499 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+500 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+501 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+502 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+503 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+504 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+505 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+506 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+507 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+508 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+509 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+510 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+511 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+512 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+513 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+514 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+515 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+516 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+517 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+518 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+519 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+520 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+521 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+522 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+523 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+524 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+525 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+526 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+527 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+528 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+529 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+530 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+531 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+532 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+533 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+534 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+535 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+536 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+537 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+538 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+539 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+540 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+541 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+542 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+543 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+544 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+545 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+546 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+547 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+548 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+549 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+550 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+551 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+552 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+553 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+554 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+555 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+556 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+557 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+558 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+559 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+560 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+561 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+562 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+563 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+564 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+565 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+566 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+567 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+568 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+569 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+570 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+571 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+572 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+573 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+574 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+575 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+576 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+577 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+578 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+579 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+580 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+581 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+582 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+583 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+584 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+585 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+586 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+587 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+588 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+589 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+590 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+591 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+592 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+593 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+594 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+595 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+596 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+597 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+598 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+599 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+600 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+601 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+602 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+603 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+604 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+605 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+606 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+607 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+608 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+609 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+610 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+611 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+612 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+613 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+614 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+615 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+616 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+617 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+618 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+619 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+620 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+621 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+622 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+623 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+624 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+625 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+626 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+627 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+628 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+629 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+630 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+631 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+632 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+633 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+634 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+635 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+636 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+637 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+638 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+639 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+640 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+641 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+642 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+643 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+644 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+645 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+646 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+647 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+648 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+649 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+650 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+651 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+652 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+653 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+654 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+655 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+656 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+657 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+658 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+659 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+660 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+661 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+662 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+663 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+664 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+665 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+666 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+667 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+668 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+669 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+670 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+671 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+672 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+673 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+674 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+675 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+676 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+677 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+678 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+679 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+680 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+681 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+682 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+683 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+684 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+685 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+686 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+687 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+688 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+689 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+690 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+691 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+692 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+693 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+694 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+695 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+696 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+697 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+698 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+699 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+700 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+701 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+702 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+703 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+704 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+705 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+706 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+707 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+708 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+709 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+710 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+711 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+712 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+713 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+714 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+715 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+716 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+717 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+718 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+719 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+720 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+721 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+722 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+723 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+724 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+725 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+726 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+727 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+728 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+729 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+730 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+731 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+732 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+733 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+734 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+735 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+736 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+737 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+738 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+739 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+740 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+741 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+742 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+743 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+744 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+745 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+746 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+747 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+748 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+749 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+750 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+751 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+752 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+753 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+754 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+755 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+756 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+757 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+758 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+759 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+760 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+761 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+762 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+763 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+764 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+765 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+766 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+767 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+768 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+769 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+770 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+771 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+772 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+773 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+774 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+775 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+776 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+777 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+778 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+779 - UF_FLAG_PRIVATE, // PLAYER_FARSIGHT - UF_FLAG_PRIVATE, // PLAYER_FARSIGHT+1 - UF_FLAG_PRIVATE, // PLAYER_FARSIGHT+2 - UF_FLAG_PRIVATE, // PLAYER_FARSIGHT+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID - UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+3 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+1 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+2 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+3 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+4 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+5 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+6 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+7 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+8 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+9 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+10 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COINAGE - UF_FLAG_PRIVATE, // PLAYER_FIELD_COINAGE+1 - UF_FLAG_PRIVATE, // PLAYER_XP - UF_FLAG_PRIVATE, // PLAYER_NEXT_LEVEL_XP - UF_FLAG_PRIVATE, // PLAYER_TRIAL_XP - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+1 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+2 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+3 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+4 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+5 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+6 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+7 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+8 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+9 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+10 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+11 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+12 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+13 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+14 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+15 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+16 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+17 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+18 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+19 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+20 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+21 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+22 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+23 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+24 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+25 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+26 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+27 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+28 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+29 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+30 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+31 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+32 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+33 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+34 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+35 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+36 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+37 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+38 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+39 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+40 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+41 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+42 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+43 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+44 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+45 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+46 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+47 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+48 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+49 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+50 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+51 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+52 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+53 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+54 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+55 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+56 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+57 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+58 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+59 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+60 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+61 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+62 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+63 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+64 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+65 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+66 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+67 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+68 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+69 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+70 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+71 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+72 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+73 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+74 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+75 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+76 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+77 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+78 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+79 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+80 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+81 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+82 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+83 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+84 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+85 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+86 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+87 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+88 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+89 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+90 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+91 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+92 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+93 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+94 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+95 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+96 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+97 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+98 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+99 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+100 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+101 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+102 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+103 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+104 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+105 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+106 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+107 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+108 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+109 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+110 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+111 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+112 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+113 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+114 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+115 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+116 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+117 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+118 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+119 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+120 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+121 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+122 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+123 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+124 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+125 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+126 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+127 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+128 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+129 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+130 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+131 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+132 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+133 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+134 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+135 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+136 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+137 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+138 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+139 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+140 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+141 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+142 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+143 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+144 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+145 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+146 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+147 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+148 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+149 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+150 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+151 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+152 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+153 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+154 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+155 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+156 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+157 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+158 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+159 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+160 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+161 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+162 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+163 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+164 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+165 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+166 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+167 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+168 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+169 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+170 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+171 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+172 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+173 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+174 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+175 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+176 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+177 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+178 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+179 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+180 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+181 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+182 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+183 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+184 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+185 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+186 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+187 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+188 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+189 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+190 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+191 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+192 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+193 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+194 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+195 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+196 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+197 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+198 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+199 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+200 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+201 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+202 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+203 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+204 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+205 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+206 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+207 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+208 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+209 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+210 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+211 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+212 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+213 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+214 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+215 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+216 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+217 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+218 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+219 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+220 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+221 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+222 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+223 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+224 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+225 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+226 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+227 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+228 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+229 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+230 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+231 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+232 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+233 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+234 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+235 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+236 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+237 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+238 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+239 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+240 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+241 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+242 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+243 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+244 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+245 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+246 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+247 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+248 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+249 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+250 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+251 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+252 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+253 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+254 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+255 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+256 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+257 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+258 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+259 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+260 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+261 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+262 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+263 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+264 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+265 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+266 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+267 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+268 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+269 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+270 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+271 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+272 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+273 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+274 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+275 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+276 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+277 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+278 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+279 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+280 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+281 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+282 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+283 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+284 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+285 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+286 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+287 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+288 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+289 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+290 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+291 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+292 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+293 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+294 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+295 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+296 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+297 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+298 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+299 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+300 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+301 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+302 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+303 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+304 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+305 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+306 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+307 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+308 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+309 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+310 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+311 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+312 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+313 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+314 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+315 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+316 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+317 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+318 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+319 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+320 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+321 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+322 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+323 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+324 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+325 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+326 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+327 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+328 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+329 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+330 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+331 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+332 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+333 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+334 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+335 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+336 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+337 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+338 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+339 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+340 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+341 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+342 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+343 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+344 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+345 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+346 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+347 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+348 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+349 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+350 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+351 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+352 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+353 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+354 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+355 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+356 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+357 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+358 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+359 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+360 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+361 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+362 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+363 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+364 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+365 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+366 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+367 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+368 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+369 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+370 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+371 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+372 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+373 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+374 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+375 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+376 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+377 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+378 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+379 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+380 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+381 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+382 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+383 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+384 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+385 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+386 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+387 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+388 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+389 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+390 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+391 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+392 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+393 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+394 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+395 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+396 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+397 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+398 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+399 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+400 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+401 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+402 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+403 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+404 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+405 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+406 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+407 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+408 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+409 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+410 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+411 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+412 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+413 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+414 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+415 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+416 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+417 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+418 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+419 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+420 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+421 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+422 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+423 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+424 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+425 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+426 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+427 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+428 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+429 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+430 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+431 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+432 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+433 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+434 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+435 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+436 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+437 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+438 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+439 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+440 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+441 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+442 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+443 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+444 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+445 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+446 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+447 - UF_FLAG_PRIVATE, // PLAYER_CHARACTER_POINTS - UF_FLAG_PRIVATE, // PLAYER_FIELD_MAX_TALENT_TIERS - UF_FLAG_PRIVATE, // PLAYER_TRACK_CREATURES - UF_FLAG_PRIVATE, // PLAYER_TRACK_RESOURCES - UF_FLAG_PRIVATE, // PLAYER_EXPERTISE - UF_FLAG_PRIVATE, // PLAYER_OFFHAND_EXPERTISE - UF_FLAG_PRIVATE, // PLAYER_FIELD_RANGED_EXPERTISE - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_EXPERTISE - UF_FLAG_PRIVATE, // PLAYER_BLOCK_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_DODGE_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_DODGE_PERCENTAGE_FROM_ATTRIBUTE - UF_FLAG_PRIVATE, // PLAYER_PARRY_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_PARRY_PERCENTAGE_FROM_ATTRIBUTE - UF_FLAG_PRIVATE, // PLAYER_CRIT_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_RANGED_CRIT_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_OFFHAND_CRIT_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_SPELL_CRIT_PERCENTAGE1 - UF_FLAG_PRIVATE, // PLAYER_SHIELD_BLOCK - UF_FLAG_PRIVATE, // PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_MASTERY - UF_FLAG_PRIVATE, // PLAYER_SPEED - UF_FLAG_PRIVATE, // PLAYER_LIFESTEAL - UF_FLAG_PRIVATE, // PLAYER_AVOIDANCE - UF_FLAG_PRIVATE, // PLAYER_STURDINESS - UF_FLAG_PRIVATE, // PLAYER_VERSATILITY - UF_FLAG_PRIVATE, // PLAYER_VERSATILITY_BONUS - UF_FLAG_PRIVATE, // PLAYER_FIELD_PVP_POWER_DAMAGE - UF_FLAG_PRIVATE, // PLAYER_FIELD_PVP_POWER_HEALING - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+1 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+2 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+3 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+4 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+5 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+6 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+7 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+8 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+9 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+10 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+11 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+12 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+13 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+14 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+15 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+16 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+17 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+18 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+19 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+20 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+21 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+22 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+23 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+24 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+25 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+26 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+27 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+28 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+29 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+30 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+31 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+32 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+33 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+34 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+35 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+36 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+37 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+38 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+39 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+40 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+41 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+42 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+43 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+44 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+45 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+46 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+47 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+48 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+49 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+50 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+51 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+52 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+53 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+54 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+55 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+56 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+57 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+58 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+59 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+60 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+61 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+62 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+63 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+64 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+65 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+66 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+67 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+68 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+69 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+70 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+71 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+72 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+73 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+74 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+75 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+76 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+77 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+78 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+79 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+80 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+81 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+82 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+83 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+84 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+85 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+86 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+87 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+88 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+89 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+90 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+91 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+92 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+93 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+94 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+95 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+96 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+97 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+98 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+99 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+100 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+101 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+102 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+103 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+104 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+105 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+106 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+107 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+108 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+109 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+110 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+111 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+112 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+113 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+114 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+115 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+116 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+117 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+118 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+119 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+120 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+121 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+122 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+123 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+124 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+125 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+126 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+127 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+128 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+129 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+130 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+131 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+132 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+133 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+134 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+135 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+136 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+137 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+138 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+139 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+140 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+141 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+142 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+143 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+144 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+145 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+146 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+147 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+148 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+149 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+150 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+151 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+152 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+153 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+154 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+155 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+156 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+157 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+158 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+159 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+160 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+161 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+162 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+163 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+164 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+165 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+166 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+167 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+168 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+169 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+170 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+171 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+172 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+173 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+174 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+175 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+176 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+177 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+178 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+179 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+180 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+181 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+182 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+183 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+184 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+185 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+186 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+187 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+188 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+189 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+190 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+191 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+192 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+193 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+194 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+195 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+196 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+197 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+198 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+199 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+200 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+201 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+202 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+203 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+204 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+205 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+206 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+207 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+208 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+209 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+210 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+211 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+212 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+213 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+214 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+215 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+216 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+217 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+218 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+219 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+220 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+221 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+222 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+223 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+224 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+225 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+226 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+227 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+228 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+229 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+230 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+231 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+232 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+233 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+234 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+235 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+236 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+237 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+238 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+239 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+240 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+241 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+242 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+243 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+244 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+245 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+246 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+247 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+248 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+249 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+250 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+251 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+252 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+253 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+254 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+255 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+256 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+257 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+258 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+259 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+260 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+261 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+262 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+263 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+264 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+265 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+266 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+267 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+268 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+269 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+270 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+271 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+272 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+273 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+274 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+275 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+276 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+277 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+278 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+279 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+280 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+281 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+282 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+283 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+284 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+285 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+286 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+287 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+288 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+289 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+290 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+291 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+292 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+293 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+294 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+295 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+296 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+297 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+298 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+299 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+300 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+301 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+302 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+303 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+304 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+305 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+306 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+307 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+308 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+309 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+310 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+311 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+312 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+313 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+314 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+315 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+316 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+317 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+318 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+319 - UF_FLAG_PRIVATE, // PLAYER_FIELD_REST_INFO - UF_FLAG_PRIVATE, // PLAYER_FIELD_REST_INFO+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_REST_INFO+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_REST_INFO+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_HEALING_DONE_POS - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_HEALING_PCT - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_HEALING_DONE_PCT - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT - UF_FLAG_PRIVATE, // PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS - UF_FLAG_PRIVATE, // PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS - UF_FLAG_PRIVATE, // PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_SPELL_POWER_PCT - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_RESILIENCE_PERCENT - UF_FLAG_PRIVATE, // PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT - UF_FLAG_PRIVATE, // PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_TARGET_RESISTANCE - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE - UF_FLAG_PRIVATE, // PLAYER_FIELD_LOCAL_FLAGS - UF_FLAG_PRIVATE, // PLAYER_FIELD_BYTES - UF_FLAG_PRIVATE, // PLAYER_FIELD_PVP_MEDALS - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+9 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+10 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+9 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+10 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_KILLS - UF_FLAG_PRIVATE, // PLAYER_FIELD_LIFETIME_HONORABLE_KILLS - UF_FLAG_PRIVATE, // PLAYER_FIELD_WATCHED_FACTION_INDEX - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+9 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+10 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+12 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+13 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+14 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+15 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+16 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+17 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+18 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+19 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+20 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+21 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+22 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+23 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+24 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+25 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+26 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+27 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+28 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+29 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+30 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+31 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+9 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+10 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+12 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+13 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+14 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+15 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+16 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+17 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+18 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+19 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+20 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+21 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+22 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+23 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+24 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+25 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+26 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+27 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+28 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+29 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+30 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+31 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+32 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+33 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+34 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+35 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+36 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+37 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+38 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+39 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+40 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+41 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MAX_LEVEL - UF_FLAG_PRIVATE, // PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA - UF_FLAG_PRIVATE, // PLAYER_FIELD_MAX_CREATURE_SCALING_LEVEL - UF_FLAG_PRIVATE, // PLAYER_NO_REAGENT_COST_1 - UF_FLAG_PRIVATE, // PLAYER_NO_REAGENT_COST_1+1 - UF_FLAG_PRIVATE, // PLAYER_NO_REAGENT_COST_1+2 - UF_FLAG_PRIVATE, // PLAYER_NO_REAGENT_COST_1+3 - UF_FLAG_PRIVATE, // PLAYER_PET_SPELL_POWER - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+9 - UF_FLAG_PRIVATE, // PLAYER_PROFESSION_SKILL_LINE_1 - UF_FLAG_PRIVATE, // PLAYER_PROFESSION_SKILL_LINE_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_UI_HIT_MODIFIER - UF_FLAG_PRIVATE, // PLAYER_FIELD_UI_SPELL_HIT_MODIFIER - UF_FLAG_PRIVATE, // PLAYER_FIELD_HOME_REALM_TIME_OFFSET - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_PET_HASTE - UF_FLAG_PRIVATE, // PLAYER_FIELD_BYTES2 - UF_FLAG_PRIVATE | UF_FLAG_URGENT_SELF_ONLY, // PLAYER_FIELD_BYTES3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_LFG_BONUS_FACTION_ID - UF_FLAG_PRIVATE, // PLAYER_FIELD_LOOT_SPEC_ID - UF_FLAG_PRIVATE | UF_FLAG_URGENT_SELF_ONLY, // PLAYER_FIELD_OVERRIDE_ZONE_PVP_TYPE - UF_FLAG_PRIVATE, // PLAYER_FIELD_BAG_SLOT_FLAGS - UF_FLAG_PRIVATE, // PLAYER_FIELD_BAG_SLOT_FLAGS+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BAG_SLOT_FLAGS+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BAG_SLOT_FLAGS+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INSERT_ITEMS_LEFT_TO_RIGHT - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+9 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+10 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+12 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+13 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+14 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+15 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+16 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+17 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+18 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+19 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+20 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+21 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+22 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+23 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+24 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+25 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+26 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+27 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+28 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+29 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+30 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+31 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+32 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+33 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+34 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+35 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+36 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+37 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+38 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+39 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+40 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+41 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+42 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+43 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+44 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+45 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+46 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+47 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+48 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+49 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+50 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+51 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+52 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+53 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+54 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+55 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+56 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+57 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+58 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+59 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+60 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+61 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+62 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+63 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+64 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+65 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+66 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+67 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+68 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+69 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+70 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+71 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+72 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+73 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+74 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+75 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+76 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+77 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+78 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+79 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+80 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+81 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+82 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+83 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+84 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+85 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+86 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+87 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+88 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+89 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+90 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+91 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+92 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+93 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+94 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+95 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+96 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+97 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+98 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+99 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+100 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+101 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+102 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+103 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+104 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+105 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+106 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+107 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+108 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+109 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+110 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+111 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+112 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+113 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+114 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+115 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+116 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+117 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+118 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+119 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+120 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+121 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+122 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+123 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+124 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+125 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+126 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+127 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+128 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+129 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+130 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+131 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+132 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+133 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+134 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+135 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+136 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+137 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+138 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+139 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+140 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+141 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+142 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+143 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+144 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+145 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+146 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+147 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+148 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+149 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+150 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+151 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+152 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+153 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+154 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+155 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+156 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+157 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+158 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+159 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+160 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+161 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+162 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+163 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+164 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+165 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+166 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+167 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+168 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+169 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+170 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+171 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+172 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+173 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+174 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+175 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+176 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+177 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+178 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+179 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+180 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+181 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+182 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+183 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+184 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+185 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+186 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+187 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+188 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+189 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+190 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+191 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+192 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+193 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+194 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+195 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+196 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+197 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+198 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+199 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+200 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+201 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+202 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+203 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+204 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+205 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+206 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+207 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+208 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+209 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+210 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+211 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+212 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+213 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+214 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+215 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+216 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+217 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+218 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+219 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+220 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+221 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+222 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+223 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+224 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+225 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+226 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+227 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+228 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+229 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+230 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+231 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+232 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+233 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+234 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+235 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+236 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+237 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+238 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+239 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+240 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+241 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+242 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+243 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+244 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+245 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+246 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+247 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+248 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+249 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+250 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+251 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+252 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+253 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+254 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+255 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+256 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+257 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+258 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+259 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+260 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+261 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+262 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+263 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+264 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+265 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+266 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+267 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+268 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+269 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+270 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+271 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+272 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+273 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+274 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+275 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+276 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+277 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+278 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+279 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+280 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+281 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+282 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+283 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+284 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+285 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+286 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+287 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+288 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+289 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+290 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+291 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+292 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+293 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+294 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+295 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+296 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+297 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+298 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+299 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+300 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+301 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+302 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+303 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+304 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+305 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+306 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+307 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+308 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+309 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+310 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+311 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+312 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+313 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+314 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+315 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+316 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+317 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+318 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+319 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+320 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+321 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+322 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+323 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+324 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+325 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+326 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+327 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+328 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+329 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+330 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+331 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+332 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+333 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+334 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+335 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+336 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+337 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+338 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+339 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+340 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+341 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+342 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+343 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+344 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+345 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+346 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+347 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+348 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+349 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+350 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+351 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+352 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+353 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+354 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+355 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+356 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+357 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+358 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+359 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+360 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+361 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+362 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+363 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+364 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+365 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+366 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+367 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+368 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+369 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+370 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+371 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+372 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+373 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+374 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+375 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+376 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+377 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+378 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+379 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+380 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+381 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+382 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+383 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+384 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+385 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+386 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+387 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+388 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+389 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+390 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+391 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+392 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+393 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+394 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+395 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+396 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+397 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+398 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+399 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+400 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+401 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+402 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+403 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+404 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+405 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+406 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+407 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+408 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+409 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+410 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+411 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+412 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+413 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+414 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+415 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+416 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+417 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+418 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+419 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+420 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+421 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+422 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+423 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+424 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+425 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+426 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+427 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+428 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+429 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+430 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+431 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+432 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+433 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+434 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+435 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+436 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+437 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+438 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+439 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+440 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+441 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+442 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+443 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+444 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+445 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+446 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+447 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+448 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+449 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+450 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+451 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+452 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+453 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+454 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+455 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+456 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+457 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+458 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+459 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+460 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+461 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+462 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+463 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+464 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+465 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+466 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+467 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+468 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+469 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+470 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+471 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+472 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+473 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+474 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+475 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+476 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+477 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+478 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+479 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+480 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+481 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+482 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+483 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+484 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+485 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+486 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+487 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+488 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+489 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+490 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+491 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+492 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+493 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+494 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+495 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+496 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+497 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+498 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+499 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+500 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+501 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+502 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+503 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+504 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+505 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+506 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+507 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+508 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+509 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+510 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+511 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+512 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+513 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+514 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+515 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+516 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+517 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+518 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+519 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+520 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+521 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+522 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+523 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+524 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+525 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+526 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+527 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+528 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+529 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+530 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+531 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+532 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+533 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+534 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+535 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+536 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+537 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+538 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+539 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+540 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+541 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+542 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+543 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+544 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+545 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+546 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+547 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+548 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+549 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+550 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+551 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+552 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+553 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+554 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+555 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+556 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+557 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+558 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+559 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+560 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+561 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+562 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+563 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+564 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+565 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+566 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+567 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+568 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+569 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+570 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+571 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+572 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+573 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+574 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+575 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+576 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+577 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+578 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+579 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+580 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+581 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+582 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+583 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+584 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+585 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+586 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+587 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+588 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+589 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+590 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+591 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+592 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+593 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+594 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+595 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+596 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+597 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+598 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+599 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+600 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+601 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+602 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+603 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+604 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+605 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+606 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+607 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+608 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+609 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+610 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+611 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+612 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+613 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+614 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+615 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+616 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+617 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+618 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+619 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+620 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+621 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+622 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+623 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+624 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+625 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+626 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+627 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+628 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+629 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+630 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+631 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+632 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+633 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+634 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+635 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+636 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+637 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+638 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+639 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+640 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+641 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+642 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+643 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+644 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+645 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+646 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+647 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+648 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+649 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+650 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+651 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+652 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+653 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+654 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+655 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+656 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+657 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+658 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+659 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+660 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+661 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+662 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+663 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+664 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+665 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+666 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+667 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+668 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+669 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+670 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+671 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+672 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+673 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+674 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+675 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+676 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+677 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+678 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+679 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+680 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+681 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+682 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+683 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+684 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+685 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+686 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+687 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+688 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+689 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+690 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+691 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+692 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+693 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+694 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+695 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+696 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+697 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+698 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+699 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+700 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+701 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+702 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+703 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+704 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+705 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+706 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+707 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+708 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+709 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+710 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+711 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+712 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+713 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+714 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+715 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+716 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+717 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+718 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+719 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+720 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+721 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+722 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+723 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+724 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+725 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+726 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+727 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+728 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+729 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+730 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+731 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+732 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+733 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+734 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+735 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+736 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+737 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+738 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+739 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+740 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+741 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+742 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+743 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+744 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+745 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+746 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+747 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+748 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+749 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+750 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+751 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+752 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+753 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+754 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+755 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+756 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+757 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+758 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+759 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+760 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+761 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+762 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+763 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+764 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+765 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+766 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+767 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+768 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+769 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+770 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+771 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+772 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+773 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+774 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+775 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+776 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+777 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+778 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+779 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+780 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+781 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+782 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+783 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+784 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+785 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+786 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+787 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+788 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+789 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+790 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+791 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+792 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+793 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+794 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+795 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+796 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+797 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+798 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+799 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+800 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+801 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+802 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+803 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+804 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+805 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+806 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+807 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+808 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+809 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+810 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+811 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+812 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+813 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+814 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+815 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+816 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+817 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+818 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+819 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+820 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+821 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+822 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+823 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+824 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+825 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+826 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+827 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+828 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+829 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+830 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+831 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+832 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+833 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+834 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+835 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+836 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+837 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+838 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+839 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+840 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+841 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+842 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+843 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+844 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+845 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+846 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+847 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+848 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+849 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+850 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+851 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+852 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+853 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+854 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+855 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+856 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+857 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+858 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+859 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+860 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+861 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+862 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+863 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+864 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+865 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+866 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+867 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+868 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+869 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+870 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+871 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+872 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+873 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+874 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+875 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+876 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+877 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+878 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+879 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+880 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+881 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+882 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+883 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+884 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+885 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+886 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+887 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+888 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+889 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+890 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+891 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+892 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+893 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+894 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+895 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+896 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+897 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+898 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+899 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+900 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+901 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+902 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+903 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+904 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+905 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+906 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+907 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+908 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+909 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+910 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+911 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+912 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+913 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+914 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+915 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+916 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+917 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+918 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+919 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+920 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+921 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+922 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+923 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+924 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+925 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+926 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+927 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+928 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+929 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+930 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+931 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+932 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+933 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+934 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+935 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+936 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+937 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+938 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+939 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+940 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+941 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+942 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+943 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+944 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+945 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+946 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+947 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+948 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+949 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+950 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+951 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+952 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+953 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+954 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+955 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+956 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+957 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+958 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+959 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+960 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+961 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+962 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+963 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+964 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+965 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+966 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+967 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+968 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+969 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+970 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+971 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+972 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+973 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+974 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+975 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+976 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+977 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+978 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+979 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+980 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+981 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+982 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+983 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+984 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+985 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+986 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+987 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+988 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+989 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+990 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+991 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+992 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+993 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+994 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+995 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+996 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+997 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+998 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+999 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1000 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1001 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1002 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1003 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1004 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1005 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1006 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1007 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1008 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1009 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1010 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1011 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1012 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1013 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1014 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1015 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1016 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1017 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1018 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1019 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1020 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1021 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1022 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1023 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1024 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1025 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1026 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1027 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1028 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1029 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1030 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1031 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1032 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1033 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1034 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1035 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1036 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1037 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1038 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1039 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1040 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1041 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1042 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1043 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1044 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1045 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1046 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1047 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1048 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1049 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1050 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1051 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1052 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1053 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1054 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1055 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1056 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1057 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1058 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1059 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1060 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1061 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1062 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1063 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1064 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1065 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1066 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1067 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1068 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1069 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1070 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1071 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1072 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1073 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1074 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1075 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1076 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1077 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1078 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1079 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1080 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1081 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1082 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1083 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1084 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1085 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1086 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1087 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1088 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1089 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1090 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1091 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1092 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1093 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1094 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1095 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1096 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1097 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1098 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1099 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1100 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1101 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1102 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1103 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1104 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1105 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1106 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1107 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1108 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1109 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1110 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1111 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1112 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1113 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1114 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1115 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1116 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1117 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1118 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1119 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1120 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1121 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1122 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1123 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1124 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1125 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1126 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1127 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1128 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1129 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1130 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1131 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1132 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1133 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1134 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1135 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1136 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1137 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1138 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1139 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1140 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1141 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1142 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1143 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1144 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1145 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1146 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1147 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1148 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1149 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1150 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1151 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1152 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1153 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1154 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1155 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1156 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1157 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1158 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1159 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1160 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1161 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1162 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1163 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1164 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1165 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1166 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1167 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1168 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1169 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1170 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1171 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1172 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1173 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1174 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1175 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1176 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1177 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1178 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1179 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1180 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1181 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1182 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1183 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1184 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1185 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1186 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1187 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1188 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1189 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1190 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1191 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1192 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1193 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1194 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1195 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1196 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1197 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1198 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1199 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1200 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1201 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1202 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1203 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1204 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1205 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1206 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1207 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1208 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1209 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1210 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1211 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1212 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1213 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1214 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1215 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1216 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1217 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1218 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1219 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1220 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1221 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1222 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1223 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1224 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1225 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1226 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1227 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1228 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1229 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1230 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1231 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1232 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1233 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1234 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1235 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1236 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1237 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1238 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1239 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1240 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1241 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1242 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1243 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1244 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1245 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1246 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1247 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1248 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1249 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1250 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1251 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1252 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1253 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1254 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1255 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1256 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1257 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1258 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1259 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1260 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1261 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1262 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1263 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1264 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1265 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1266 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1267 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1268 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1269 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1270 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1271 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1272 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1273 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1274 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1275 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1276 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1277 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1278 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1279 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1280 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1281 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1282 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1283 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1284 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1285 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1286 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1287 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1288 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1289 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1290 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1291 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1292 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1293 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1294 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1295 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1296 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1297 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1298 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1299 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1300 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1301 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1302 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1303 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1304 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1305 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1306 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1307 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1308 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1309 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1310 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1311 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1312 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1313 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1314 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1315 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1316 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1317 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1318 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1319 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1320 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1321 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1322 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1323 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1324 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1325 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1326 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1327 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1328 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1329 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1330 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1331 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1332 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1333 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1334 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1335 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1336 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1337 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1338 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1339 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1340 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1341 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1342 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1343 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1344 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1345 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1346 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1347 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1348 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1349 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1350 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1351 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1352 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1353 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1354 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1355 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1356 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1357 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1358 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1359 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1360 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1361 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1362 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1363 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1364 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1365 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1366 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1367 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1368 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1369 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1370 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1371 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1372 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1373 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1374 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1375 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1376 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1377 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1378 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1379 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1380 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1381 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1382 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1383 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1384 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1385 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1386 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1387 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1388 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1389 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1390 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1391 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1392 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1393 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1394 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1395 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1396 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1397 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1398 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1399 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1400 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1401 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1402 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1403 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1404 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1405 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1406 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1407 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1408 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1409 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1410 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1411 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1412 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1413 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1414 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1415 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1416 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1417 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1418 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1419 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1420 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1421 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1422 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1423 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1424 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1425 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1426 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1427 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1428 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1429 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1430 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1431 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1432 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1433 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1434 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1435 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1436 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1437 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1438 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1439 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1440 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1441 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1442 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1443 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1444 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1445 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1446 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1447 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1448 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1449 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1450 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1451 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1452 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1453 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1454 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1455 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1456 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1457 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1458 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1459 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1460 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1461 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1462 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1463 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1464 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1465 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1466 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1467 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1468 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1469 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1470 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1471 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1472 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1473 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1474 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1475 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1476 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1477 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1478 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1479 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1480 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1481 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1482 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1483 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1484 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1485 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1486 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1487 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1488 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1489 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1490 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1491 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1492 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1493 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1494 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1495 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1496 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1497 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1498 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1499 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1500 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1501 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1502 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1503 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1504 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1505 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1506 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1507 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1508 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1509 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1510 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1511 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1512 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1513 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1514 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1515 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1516 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1517 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1518 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1519 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1520 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1521 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1522 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1523 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1524 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1525 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1526 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1527 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1528 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1529 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1530 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1531 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1532 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1533 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1534 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1535 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1536 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1537 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1538 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1539 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1540 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1541 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1542 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1543 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1544 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1545 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1546 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1547 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1548 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1549 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1550 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1551 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1552 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1553 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1554 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1555 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1556 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1557 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1558 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1559 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1560 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1561 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1562 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1563 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1564 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1565 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1566 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1567 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1568 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1569 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1570 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1571 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1572 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1573 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1574 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1575 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1576 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1577 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1578 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1579 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1580 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1581 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1582 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1583 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1584 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1585 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1586 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1587 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1588 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1589 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1590 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1591 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1592 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1593 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1594 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1595 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1596 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1597 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1598 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1599 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1600 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1601 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1602 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1603 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1604 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1605 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1606 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1607 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1608 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1609 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1610 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1611 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1612 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1613 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1614 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1615 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1616 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1617 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1618 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1619 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1620 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1621 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1622 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1623 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1624 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1625 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1626 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1627 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1628 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1629 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1630 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1631 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1632 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1633 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1634 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1635 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1636 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1637 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1638 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1639 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1640 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1641 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1642 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1643 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1644 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1645 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1646 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1647 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1648 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1649 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1650 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1651 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1652 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1653 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1654 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1655 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1656 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1657 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1658 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1659 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1660 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1661 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1662 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1663 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1664 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1665 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1666 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1667 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1668 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1669 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1670 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1671 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1672 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1673 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1674 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1675 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1676 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1677 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1678 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1679 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1680 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1681 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1682 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1683 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1684 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1685 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1686 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1687 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1688 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1689 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1690 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1691 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1692 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1693 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1694 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1695 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1696 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1697 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1698 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1699 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1700 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1701 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1702 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1703 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1704 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1705 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1706 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1707 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1708 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1709 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1710 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1711 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1712 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1713 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1714 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1715 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1716 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1717 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1718 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1719 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1720 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1721 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1722 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1723 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1724 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1725 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1726 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1727 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1728 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1729 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1730 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1731 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1732 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1733 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1734 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1735 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1736 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1737 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1738 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1739 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1740 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1741 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1742 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1743 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1744 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1745 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1746 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1747 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1748 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1749 - UF_FLAG_PRIVATE, // PLAYER_FIELD_HONOR - UF_FLAG_PRIVATE, // PLAYER_FIELD_HONOR_NEXT_LEVEL + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+12 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+13 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+14 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+15 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+16 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+17 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+18 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+19 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+20 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+21 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+22 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+23 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+24 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+25 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+26 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+27 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+28 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+29 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+30 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+31 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+32 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+33 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+34 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+35 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+36 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+37 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+38 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+39 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+40 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+41 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+42 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+43 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+44 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+45 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+46 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+47 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+48 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+49 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+50 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+51 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+52 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+53 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+54 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+55 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+56 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+57 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+58 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+59 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+60 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+61 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+62 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+63 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+64 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+65 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+66 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+67 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+68 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+69 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+70 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+71 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+72 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+73 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+74 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+75 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+76 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+77 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+78 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+79 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+80 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+81 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+82 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+83 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+84 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+85 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+86 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+87 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+88 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+89 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+90 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+91 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+92 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+93 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+94 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+95 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+96 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+97 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+98 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+99 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+100 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+101 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+102 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+103 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+104 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+105 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+106 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+107 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+108 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+109 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+110 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+111 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+112 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+113 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+114 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+115 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+116 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+117 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+118 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+119 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+120 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+121 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+122 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+123 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+124 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+125 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+126 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+127 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+128 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+129 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+130 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+131 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+132 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+133 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+134 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+135 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+136 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+137 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+138 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+139 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+140 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+141 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+142 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+143 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+144 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+145 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+146 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+147 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+148 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+149 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+150 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+151 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+152 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+153 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+154 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+155 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+156 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+157 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+158 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+159 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+160 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+161 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+162 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+163 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+164 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+165 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+166 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+167 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+168 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+169 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+170 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+171 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+172 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+173 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+174 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+175 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+176 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+177 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+178 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+179 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+180 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+181 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+182 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+183 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+184 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+185 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+186 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+187 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+188 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+189 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+190 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+191 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+192 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+193 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+194 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+195 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+196 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+197 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+198 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+199 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+200 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+201 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+202 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+203 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+204 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+205 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+206 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+207 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+208 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+209 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+210 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+211 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+212 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+213 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+214 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+215 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+216 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+217 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+218 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+219 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+220 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+221 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+222 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+223 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+224 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+225 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+226 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+227 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+228 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+229 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+230 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+231 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+232 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+233 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+234 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+235 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+236 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+237 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+238 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+239 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+240 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+241 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+242 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+243 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+244 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+245 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+246 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+247 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+248 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+249 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+250 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+251 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+252 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+253 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+254 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+255 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+256 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+257 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+258 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+259 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+260 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+261 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+262 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+263 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+264 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+265 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+266 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+267 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+268 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+269 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+270 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+271 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+272 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+273 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+274 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+275 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+276 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+277 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+278 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+279 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+280 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+281 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+282 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+283 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+284 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+285 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+286 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+287 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+288 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+289 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+290 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+291 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+292 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+293 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+294 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+295 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+296 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+297 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+298 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+299 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+300 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+301 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+302 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+303 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+304 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+305 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+306 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+307 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+308 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+309 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+310 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+311 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+312 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+313 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+314 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+315 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+316 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+317 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+318 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+319 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+320 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+321 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+322 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+323 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+324 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+325 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+326 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+327 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+328 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+329 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+330 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+331 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+332 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+333 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+334 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+335 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+336 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+337 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+338 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+339 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+340 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+341 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+342 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+343 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+344 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+345 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+346 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+347 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+348 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+349 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+350 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+351 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+352 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+353 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+354 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+355 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+356 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+357 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+358 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+359 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+360 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+361 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+362 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+363 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+364 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+365 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+366 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+367 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+368 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+369 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+370 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+371 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+372 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+373 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+374 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+375 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+376 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+377 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+378 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+379 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+380 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+381 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+382 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+383 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+384 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+385 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+386 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+387 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+388 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+389 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+390 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+391 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+392 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+393 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+394 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+395 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+396 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+397 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+398 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+399 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+400 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+401 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+402 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+403 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+404 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+405 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+406 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+407 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+408 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+409 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+410 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+411 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+412 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+413 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+414 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+415 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+416 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+417 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+418 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+419 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+420 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+421 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+422 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+423 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+424 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+425 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+426 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+427 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+428 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+429 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+430 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+431 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+432 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+433 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+434 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+435 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+436 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+437 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+438 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+439 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+440 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+441 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+442 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+443 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+444 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+445 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+446 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+447 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+448 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+449 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+450 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+451 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+452 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+453 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+454 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+455 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+456 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+457 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+458 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+459 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+460 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+461 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+462 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+463 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+464 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+465 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+466 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+467 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+468 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+469 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+470 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+471 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+472 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+473 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+474 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+475 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+476 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+477 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+478 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+479 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+480 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+481 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+482 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+483 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+484 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+485 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+486 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+487 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+488 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+489 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+490 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+491 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+492 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+493 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+494 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+495 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+496 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+497 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+498 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+499 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+500 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+501 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+502 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+503 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+504 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+505 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+506 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+507 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+508 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+509 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+510 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+511 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+512 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+513 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+514 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+515 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+516 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+517 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+518 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+519 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+520 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+521 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+522 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+523 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+524 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+525 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+526 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+527 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+528 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+529 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+530 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+531 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+532 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+533 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+534 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+535 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+536 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+537 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+538 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+539 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+540 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+541 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+542 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+543 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+544 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+545 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+546 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+547 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+548 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+549 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+550 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+551 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+552 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+553 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+554 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+555 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+556 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+557 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+558 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+559 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+560 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+561 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+562 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+563 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+564 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+565 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+566 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+567 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+568 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+569 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+570 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+571 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+572 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+573 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+574 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+575 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+576 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+577 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+578 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+579 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+580 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+581 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+582 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+583 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+584 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+585 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+586 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+587 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+588 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+589 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+590 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+591 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+592 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+593 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+594 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+595 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+596 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+597 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+598 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+599 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+600 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+601 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+602 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+603 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+604 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+605 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+606 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+607 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+608 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+609 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+610 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+611 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+612 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+613 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+614 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+615 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+616 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+617 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+618 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+619 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+620 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+621 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+622 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+623 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+624 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+625 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+626 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+627 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+628 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+629 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+630 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+631 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+632 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+633 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+634 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+635 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+636 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+637 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+638 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+639 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+640 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+641 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+642 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+643 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+644 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+645 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+646 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+647 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+648 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+649 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+650 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+651 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+652 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+653 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+654 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+655 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+656 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+657 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+658 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+659 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+660 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+661 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+662 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+663 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+664 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+665 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+666 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+667 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+668 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+669 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+670 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+671 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+672 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+673 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+674 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+675 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+676 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+677 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+678 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+679 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+680 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+681 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+682 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+683 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+684 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+685 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+686 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+687 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+688 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+689 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+690 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+691 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+692 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+693 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+694 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+695 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+696 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+697 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+698 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+699 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+700 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+701 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+702 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+703 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+704 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+705 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+706 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+707 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+708 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+709 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+710 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+711 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+712 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+713 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+714 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+715 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+716 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+717 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+718 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+719 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+720 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+721 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+722 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+723 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+724 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+725 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+726 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+727 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+728 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+729 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+730 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+731 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+732 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+733 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+734 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+735 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+736 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+737 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+738 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+739 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+740 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+741 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+742 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+743 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+744 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+745 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+746 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+747 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+748 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+749 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+750 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+751 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+752 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+753 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+754 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+755 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+756 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+757 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+758 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+759 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+760 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+761 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+762 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+763 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+764 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+765 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+766 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+767 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+768 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+769 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+770 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+771 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+772 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+773 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+774 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+775 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+776 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+777 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+778 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+779 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_FARSIGHT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_FARSIGHT+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_FARSIGHT+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_FARSIGHT+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COINAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COINAGE+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_XP + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_TRIAL_XP + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+12 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+13 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+14 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+15 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+16 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+17 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+18 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+19 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+20 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+21 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+22 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+23 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+24 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+25 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+26 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+27 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+28 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+29 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+30 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+31 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+32 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+33 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+34 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+35 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+36 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+37 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+38 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+39 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+40 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+41 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+42 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+43 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+44 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+45 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+46 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+47 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+48 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+49 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+50 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+51 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+52 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+53 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+54 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+55 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+56 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+57 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+58 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+59 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+60 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+61 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+62 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+63 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+64 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+65 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+66 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+67 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+68 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+69 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+70 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+71 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+72 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+73 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+74 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+75 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+76 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+77 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+78 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+79 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+80 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+81 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+82 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+83 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+84 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+85 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+86 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+87 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+88 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+89 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+90 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+91 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+92 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+93 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+94 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+95 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+96 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+97 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+98 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+99 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+100 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+101 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+102 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+103 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+104 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+105 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+106 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+107 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+108 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+109 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+110 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+111 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+112 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+113 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+114 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+115 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+116 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+117 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+118 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+119 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+120 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+121 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+122 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+123 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+124 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+125 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+126 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+127 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+128 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+129 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+130 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+131 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+132 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+133 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+134 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+135 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+136 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+137 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+138 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+139 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+140 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+141 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+142 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+143 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+144 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+145 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+146 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+147 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+148 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+149 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+150 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+151 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+152 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+153 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+154 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+155 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+156 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+157 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+158 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+159 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+160 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+161 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+162 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+163 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+164 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+165 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+166 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+167 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+168 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+169 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+170 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+171 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+172 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+173 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+174 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+175 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+176 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+177 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+178 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+179 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+180 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+181 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+182 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+183 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+184 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+185 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+186 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+187 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+188 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+189 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+190 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+191 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+192 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+193 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+194 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+195 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+196 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+197 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+198 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+199 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+200 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+201 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+202 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+203 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+204 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+205 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+206 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+207 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+208 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+209 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+210 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+211 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+212 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+213 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+214 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+215 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+216 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+217 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+218 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+219 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+220 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+221 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+222 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+223 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+224 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+225 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+226 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+227 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+228 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+229 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+230 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+231 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+232 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+233 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+234 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+235 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+236 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+237 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+238 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+239 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+240 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+241 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+242 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+243 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+244 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+245 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+246 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+247 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+248 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+249 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+250 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+251 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+252 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+253 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+254 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+255 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+256 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+257 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+258 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+259 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+260 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+261 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+262 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+263 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+264 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+265 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+266 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+267 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+268 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+269 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+270 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+271 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+272 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+273 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+274 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+275 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+276 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+277 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+278 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+279 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+280 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+281 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+282 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+283 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+284 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+285 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+286 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+287 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+288 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+289 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+290 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+291 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+292 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+293 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+294 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+295 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+296 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+297 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+298 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+299 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+300 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+301 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+302 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+303 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+304 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+305 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+306 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+307 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+308 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+309 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+310 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+311 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+312 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+313 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+314 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+315 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+316 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+317 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+318 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+319 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+320 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+321 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+322 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+323 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+324 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+325 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+326 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+327 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+328 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+329 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+330 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+331 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+332 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+333 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+334 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+335 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+336 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+337 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+338 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+339 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+340 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+341 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+342 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+343 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+344 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+345 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+346 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+347 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+348 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+349 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+350 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+351 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+352 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+353 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+354 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+355 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+356 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+357 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+358 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+359 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+360 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+361 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+362 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+363 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+364 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+365 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+366 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+367 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+368 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+369 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+370 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+371 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+372 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+373 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+374 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+375 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+376 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+377 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+378 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+379 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+380 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+381 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+382 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+383 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+384 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+385 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+386 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+387 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+388 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+389 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+390 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+391 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+392 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+393 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+394 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+395 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+396 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+397 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+398 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+399 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+400 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+401 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+402 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+403 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+404 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+405 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+406 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+407 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+408 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+409 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+410 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+411 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+412 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+413 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+414 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+415 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+416 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+417 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+418 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+419 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+420 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+421 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+422 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+423 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+424 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+425 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+426 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+427 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+428 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+429 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+430 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+431 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+432 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+433 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+434 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+435 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+436 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+437 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+438 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+439 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+440 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+441 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+442 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+443 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+444 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+445 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+446 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+447 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+448 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+449 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+450 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+451 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+452 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+453 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+454 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+455 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+456 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+457 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+458 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+459 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+460 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+461 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+462 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+463 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+464 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+465 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+466 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+467 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+468 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+469 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+470 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+471 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+472 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+473 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+474 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+475 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+476 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+477 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+478 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+479 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+480 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+481 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+482 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+483 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+484 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+485 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+486 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+487 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+488 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+489 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+490 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+491 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+492 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+493 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+494 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+495 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+496 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+497 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+498 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+499 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+500 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+501 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+502 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+503 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+504 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+505 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+506 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+507 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+508 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+509 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+510 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+511 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+512 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+513 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+514 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+515 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+516 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+517 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+518 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+519 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+520 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+521 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+522 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+523 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+524 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+525 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+526 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+527 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+528 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+529 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+530 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+531 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+532 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+533 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+534 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+535 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+536 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+537 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+538 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+539 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+540 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+541 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+542 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+543 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+544 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+545 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+546 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+547 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+548 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+549 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+550 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+551 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+552 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+553 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+554 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+555 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+556 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+557 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+558 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+559 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+560 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+561 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+562 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+563 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+564 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+565 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+566 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+567 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+568 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+569 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+570 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+571 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+572 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+573 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+574 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+575 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+576 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+577 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+578 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+579 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+580 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+581 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+582 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+583 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+584 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+585 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+586 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+587 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+588 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+589 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+590 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+591 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+592 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+593 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+594 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+595 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+596 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+597 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+598 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+599 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+600 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+601 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+602 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+603 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+604 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+605 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+606 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+607 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+608 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+609 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+610 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+611 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+612 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+613 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+614 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+615 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+616 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+617 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+618 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+619 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+620 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+621 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+622 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+623 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+624 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+625 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+626 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+627 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+628 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+629 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+630 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+631 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+632 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+633 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+634 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+635 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+636 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+637 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+638 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+639 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+640 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+641 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+642 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+643 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+644 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+645 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+646 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+647 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+648 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+649 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+650 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+651 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+652 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+653 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+654 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+655 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+656 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+657 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+658 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+659 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+660 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+661 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+662 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+663 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+664 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+665 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+666 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+667 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+668 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+669 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+670 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+671 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+672 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+673 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+674 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+675 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+676 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+677 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+678 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+679 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+680 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+681 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+682 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+683 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+684 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+685 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+686 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+687 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+688 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+689 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+690 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+691 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+692 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+693 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+694 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+695 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+696 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+697 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+698 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+699 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+700 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+701 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+702 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+703 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+704 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+705 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+706 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+707 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+708 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+709 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+710 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+711 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+712 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+713 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+714 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+715 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+716 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+717 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+718 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+719 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+720 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+721 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+722 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+723 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+724 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+725 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+726 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+727 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+728 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+729 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+730 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+731 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+732 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+733 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+734 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+735 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+736 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+737 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+738 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+739 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+740 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+741 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+742 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+743 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+744 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+745 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+746 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+747 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+748 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+749 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+750 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+751 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+752 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+753 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+754 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+755 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+756 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+757 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+758 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+759 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+760 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+761 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+762 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+763 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+764 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+765 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+766 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+767 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+768 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+769 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+770 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+771 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+772 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+773 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+774 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+775 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+776 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+777 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+778 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+779 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+780 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+781 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+782 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+783 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+784 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+785 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+786 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+787 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+788 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+789 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+790 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+791 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+792 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+793 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+794 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+795 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+796 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+797 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+798 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+799 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+800 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+801 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+802 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+803 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+804 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+805 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+806 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+807 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+808 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+809 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+810 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+811 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+812 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+813 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+814 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+815 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+816 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+817 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+818 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+819 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+820 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+821 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+822 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+823 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+824 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+825 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+826 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+827 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+828 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+829 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+830 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+831 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+832 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+833 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+834 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+835 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+836 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+837 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+838 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+839 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+840 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+841 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+842 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+843 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+844 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+845 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+846 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+847 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+848 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+849 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+850 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+851 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+852 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+853 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+854 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+855 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+856 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+857 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+858 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+859 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+860 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+861 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+862 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+863 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+864 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+865 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+866 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+867 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+868 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+869 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+870 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+871 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+872 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+873 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+874 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+875 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+876 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+877 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+878 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+879 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+880 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+881 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+882 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+883 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+884 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+885 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+886 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+887 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+888 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+889 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+890 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+891 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+892 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+893 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+894 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+895 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_CHARACTER_POINTS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MAX_TALENT_TIERS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_TRACK_CREATURES + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_TRACK_RESOURCES + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_TRACK_RESOURCES+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPERTISE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_OFFHAND_EXPERTISE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_RANGED_EXPERTISE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING_EXPERTISE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE_FROM_ATTRIBUTE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE_FROM_ATTRIBUTE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_OFFHAND_CRIT_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SHIELD_BLOCK + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SHIELD_BLOCK_CRIT_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MASTERY + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SPEED + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_AVOIDANCE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_STURDINESS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_VERSATILITY + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_VERSATILITY_BONUS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PVP_POWER_DAMAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PVP_POWER_HEALING + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+12 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+13 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+14 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+15 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+16 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+17 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+18 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+19 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+20 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+21 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+22 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+23 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+24 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+25 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+26 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+27 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+28 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+29 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+30 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+31 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+32 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+33 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+34 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+35 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+36 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+37 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+38 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+39 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+40 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+41 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+42 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+43 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+44 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+45 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+46 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+47 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+48 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+49 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+50 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+51 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+52 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+53 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+54 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+55 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+56 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+57 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+58 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+59 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+60 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+61 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+62 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+63 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+64 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+65 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+66 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+67 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+68 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+69 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+70 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+71 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+72 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+73 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+74 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+75 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+76 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+77 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+78 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+79 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+80 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+81 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+82 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+83 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+84 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+85 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+86 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+87 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+88 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+89 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+90 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+91 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+92 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+93 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+94 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+95 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+96 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+97 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+98 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+99 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+100 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+101 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+102 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+103 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+104 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+105 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+106 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+107 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+108 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+109 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+110 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+111 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+112 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+113 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+114 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+115 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+116 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+117 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+118 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+119 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+120 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+121 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+122 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+123 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+124 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+125 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+126 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+127 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+128 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+129 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+130 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+131 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+132 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+133 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+134 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+135 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+136 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+137 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+138 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+139 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+140 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+141 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+142 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+143 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+144 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+145 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+146 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+147 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+148 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+149 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+150 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+151 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+152 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+153 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+154 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+155 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+156 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+157 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+158 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+159 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+160 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+161 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+162 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+163 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+164 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+165 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+166 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+167 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+168 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+169 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+170 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+171 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+172 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+173 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+174 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+175 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+176 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+177 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+178 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+179 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+180 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+181 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+182 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+183 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+184 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+185 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+186 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+187 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+188 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+189 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+190 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+191 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+192 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+193 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+194 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+195 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+196 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+197 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+198 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+199 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+200 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+201 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+202 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+203 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+204 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+205 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+206 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+207 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+208 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+209 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+210 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+211 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+212 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+213 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+214 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+215 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+216 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+217 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+218 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+219 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+220 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+221 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+222 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+223 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+224 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+225 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+226 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+227 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+228 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+229 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+230 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+231 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+232 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+233 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+234 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+235 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+236 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+237 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+238 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+239 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+240 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+241 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+242 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+243 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+244 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+245 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+246 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+247 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+248 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+249 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+250 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+251 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+252 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+253 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+254 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+255 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+256 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+257 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+258 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+259 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+260 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+261 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+262 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+263 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+264 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+265 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+266 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+267 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+268 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+269 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+270 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+271 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+272 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+273 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+274 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+275 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+276 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+277 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+278 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+279 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+280 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+281 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+282 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+283 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+284 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+285 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+286 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+287 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+288 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+289 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+290 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+291 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+292 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+293 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+294 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+295 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+296 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+297 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+298 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+299 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+300 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+301 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+302 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+303 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+304 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+305 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+306 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+307 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+308 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+309 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+310 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+311 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+312 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+313 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+314 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+315 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+316 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+317 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+318 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+319 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_REST_INFO + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_REST_INFO+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_REST_INFO+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_REST_INFO+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_POS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_HEALING_PCT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_PCT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_SPELL_POWER_PCT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_RESILIENCE_PERCENT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_TARGET_RESISTANCE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_LOCAL_FLAGS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BYTES + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PVP_MEDALS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KILLS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+12 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+13 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+14 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+15 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+16 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+17 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+18 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+19 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+20 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+21 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+22 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+23 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+24 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+25 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+26 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+27 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+28 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+29 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+30 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+31 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+12 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+13 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+14 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+15 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+16 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+17 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+18 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+19 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+20 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+21 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+22 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+23 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+24 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+25 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+26 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+27 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+28 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+29 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+30 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+31 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+32 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+33 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+34 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+35 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+36 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+37 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+38 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+39 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+40 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+41 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+42 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+43 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+44 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+45 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+46 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+47 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+48 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+49 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+50 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+51 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+52 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+53 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MAX_LEVEL + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MAX_CREATURE_SCALING_LEVEL + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_NO_REAGENT_COST + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_NO_REAGENT_COST+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_NO_REAGENT_COST+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_NO_REAGENT_COST+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PET_SPELL_POWER + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_UI_HIT_MODIFIER + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_UI_SPELL_HIT_MODIFIER + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_HOME_REALM_TIME_OFFSET + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_PET_HASTE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BYTES2 + UF_FLAG_PUBLIC | UF_FLAG_URGENT_SELF_ONLY, // ACTIVE_PLAYER_FIELD_BYTES3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_LFG_BONUS_FACTION_ID + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_LOOT_SPEC_ID + UF_FLAG_PUBLIC | UF_FLAG_URGENT_SELF_ONLY, // ACTIVE_PLAYER_FIELD_OVERRIDE_ZONE_PVP_TYPE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BAG_SLOT_FLAGS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BAG_SLOT_FLAGS+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BAG_SLOT_FLAGS+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BAG_SLOT_FLAGS+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INSERT_ITEMS_LEFT_TO_RIGHT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+12 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+13 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+14 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+15 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+16 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+17 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+18 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+19 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+20 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+21 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+22 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+23 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+24 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+25 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+26 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+27 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+28 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+29 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+30 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+31 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+32 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+33 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+34 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+35 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+36 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+37 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+38 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+39 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+40 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+41 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+42 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+43 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+44 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+45 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+46 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+47 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+48 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+49 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+50 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+51 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+52 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+53 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+54 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+55 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+56 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+57 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+58 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+59 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+60 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+61 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+62 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+63 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+64 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+65 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+66 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+67 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+68 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+69 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+70 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+71 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+72 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+73 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+74 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+75 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+76 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+77 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+78 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+79 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+80 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+81 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+82 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+83 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+84 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+85 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+86 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+87 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+88 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+89 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+90 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+91 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+92 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+93 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+94 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+95 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+96 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+97 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+98 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+99 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+100 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+101 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+102 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+103 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+104 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+105 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+106 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+107 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+108 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+109 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+110 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+111 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+112 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+113 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+114 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+115 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+116 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+117 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+118 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+119 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+120 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+121 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+122 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+123 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+124 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+125 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+126 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+127 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+128 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+129 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+130 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+131 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+132 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+133 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+134 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+135 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+136 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+137 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+138 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+139 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+140 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+141 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+142 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+143 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+144 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+145 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+146 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+147 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+148 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+149 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+150 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+151 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+152 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+153 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+154 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+155 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+156 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+157 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+158 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+159 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+160 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+161 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+162 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+163 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+164 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+165 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+166 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+167 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+168 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+169 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+170 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+171 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+172 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+173 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+174 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+175 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+176 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+177 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+178 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+179 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+180 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+181 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+182 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+183 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+184 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+185 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+186 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+187 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+188 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+189 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+190 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+191 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+192 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+193 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+194 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+195 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+196 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+197 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+198 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+199 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+200 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+201 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+202 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+203 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+204 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+205 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+206 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+207 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+208 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+209 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+210 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+211 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+212 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+213 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+214 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+215 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+216 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+217 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+218 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+219 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+220 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+221 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+222 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+223 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+224 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+225 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+226 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+227 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+228 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+229 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+230 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+231 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+232 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+233 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+234 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+235 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+236 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+237 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+238 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+239 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+240 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+241 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+242 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+243 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+244 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+245 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+246 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+247 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+248 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+249 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+250 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+251 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+252 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+253 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+254 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+255 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+256 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+257 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+258 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+259 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+260 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+261 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+262 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+263 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+264 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+265 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+266 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+267 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+268 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+269 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+270 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+271 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+272 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+273 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+274 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+275 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+276 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+277 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+278 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+279 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+280 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+281 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+282 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+283 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+284 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+285 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+286 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+287 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+288 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+289 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+290 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+291 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+292 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+293 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+294 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+295 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+296 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+297 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+298 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+299 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+300 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+301 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+302 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+303 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+304 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+305 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+306 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+307 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+308 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+309 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+310 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+311 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+312 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+313 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+314 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+315 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+316 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+317 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+318 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+319 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+320 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+321 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+322 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+323 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+324 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+325 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+326 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+327 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+328 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+329 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+330 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+331 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+332 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+333 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+334 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+335 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+336 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+337 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+338 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+339 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+340 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+341 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+342 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+343 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+344 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+345 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+346 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+347 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+348 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+349 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+350 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+351 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+352 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+353 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+354 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+355 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+356 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+357 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+358 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+359 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+360 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+361 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+362 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+363 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+364 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+365 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+366 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+367 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+368 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+369 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+370 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+371 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+372 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+373 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+374 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+375 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+376 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+377 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+378 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+379 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+380 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+381 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+382 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+383 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+384 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+385 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+386 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+387 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+388 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+389 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+390 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+391 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+392 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+393 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+394 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+395 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+396 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+397 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+398 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+399 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+400 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+401 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+402 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+403 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+404 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+405 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+406 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+407 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+408 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+409 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+410 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+411 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+412 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+413 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+414 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+415 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+416 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+417 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+418 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+419 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+420 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+421 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+422 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+423 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+424 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+425 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+426 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+427 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+428 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+429 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+430 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+431 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+432 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+433 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+434 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+435 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+436 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+437 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+438 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+439 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+440 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+441 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+442 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+443 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+444 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+445 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+446 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+447 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+448 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+449 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+450 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+451 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+452 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+453 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+454 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+455 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+456 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+457 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+458 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+459 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+460 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+461 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+462 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+463 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+464 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+465 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+466 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+467 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+468 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+469 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+470 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+471 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+472 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+473 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+474 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+475 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+476 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+477 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+478 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+479 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+480 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+481 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+482 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+483 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+484 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+485 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+486 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+487 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+488 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+489 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+490 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+491 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+492 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+493 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+494 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+495 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+496 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+497 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+498 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+499 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+500 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+501 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+502 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+503 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+504 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+505 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+506 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+507 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+508 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+509 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+510 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+511 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+512 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+513 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+514 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+515 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+516 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+517 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+518 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+519 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+520 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+521 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+522 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+523 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+524 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+525 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+526 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+527 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+528 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+529 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+530 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+531 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+532 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+533 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+534 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+535 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+536 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+537 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+538 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+539 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+540 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+541 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+542 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+543 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+544 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+545 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+546 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+547 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+548 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+549 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+550 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+551 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+552 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+553 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+554 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+555 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+556 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+557 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+558 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+559 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+560 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+561 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+562 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+563 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+564 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+565 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+566 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+567 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+568 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+569 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+570 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+571 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+572 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+573 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+574 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+575 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+576 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+577 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+578 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+579 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+580 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+581 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+582 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+583 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+584 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+585 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+586 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+587 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+588 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+589 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+590 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+591 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+592 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+593 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+594 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+595 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+596 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+597 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+598 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+599 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+600 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+601 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+602 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+603 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+604 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+605 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+606 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+607 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+608 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+609 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+610 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+611 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+612 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+613 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+614 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+615 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+616 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+617 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+618 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+619 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+620 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+621 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+622 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+623 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+624 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+625 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+626 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+627 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+628 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+629 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+630 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+631 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+632 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+633 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+634 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+635 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+636 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+637 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+638 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+639 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+640 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+641 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+642 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+643 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+644 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+645 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+646 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+647 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+648 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+649 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+650 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+651 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+652 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+653 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+654 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+655 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+656 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+657 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+658 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+659 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+660 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+661 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+662 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+663 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+664 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+665 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+666 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+667 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+668 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+669 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+670 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+671 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+672 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+673 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+674 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+675 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+676 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+677 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+678 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+679 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+680 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+681 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+682 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+683 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+684 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+685 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+686 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+687 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+688 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+689 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+690 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+691 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+692 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+693 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+694 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+695 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+696 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+697 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+698 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+699 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+700 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+701 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+702 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+703 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+704 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+705 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+706 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+707 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+708 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+709 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+710 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+711 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+712 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+713 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+714 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+715 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+716 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+717 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+718 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+719 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+720 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+721 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+722 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+723 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+724 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+725 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+726 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+727 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+728 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+729 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+730 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+731 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+732 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+733 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+734 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+735 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+736 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+737 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+738 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+739 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+740 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+741 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+742 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+743 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+744 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+745 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+746 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+747 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+748 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+749 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+750 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+751 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+752 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+753 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+754 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+755 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+756 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+757 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+758 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+759 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+760 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+761 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+762 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+763 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+764 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+765 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+766 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+767 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+768 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+769 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+770 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+771 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+772 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+773 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+774 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+775 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+776 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+777 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+778 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+779 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+780 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+781 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+782 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+783 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+784 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+785 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+786 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+787 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+788 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+789 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+790 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+791 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+792 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+793 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+794 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+795 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+796 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+797 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+798 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+799 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+800 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+801 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+802 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+803 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+804 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+805 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+806 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+807 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+808 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+809 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+810 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+811 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+812 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+813 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+814 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+815 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+816 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+817 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+818 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+819 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+820 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+821 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+822 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+823 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+824 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+825 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+826 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+827 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+828 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+829 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+830 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+831 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+832 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+833 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+834 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+835 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+836 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+837 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+838 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+839 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+840 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+841 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+842 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+843 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+844 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+845 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+846 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+847 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+848 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+849 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+850 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+851 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+852 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+853 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+854 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+855 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+856 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+857 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+858 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+859 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+860 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+861 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+862 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+863 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+864 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+865 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+866 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+867 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+868 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+869 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+870 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+871 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+872 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+873 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+874 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+875 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+876 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+877 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+878 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+879 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+880 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+881 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+882 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+883 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+884 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+885 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+886 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+887 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+888 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+889 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+890 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+891 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+892 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+893 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+894 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+895 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+896 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+897 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+898 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+899 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+900 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+901 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+902 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+903 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+904 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+905 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+906 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+907 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+908 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+909 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+910 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+911 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+912 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+913 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+914 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+915 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+916 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+917 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+918 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+919 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+920 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+921 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+922 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+923 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+924 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+925 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+926 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+927 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+928 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+929 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+930 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+931 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+932 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+933 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+934 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+935 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+936 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+937 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+938 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+939 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+940 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+941 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+942 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+943 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+944 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+945 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+946 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+947 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+948 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+949 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+950 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+951 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+952 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+953 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+954 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+955 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+956 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+957 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+958 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+959 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+960 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+961 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+962 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+963 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+964 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+965 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+966 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+967 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+968 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+969 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+970 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+971 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+972 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+973 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+974 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+975 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+976 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+977 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+978 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+979 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+980 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+981 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+982 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+983 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+984 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+985 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+986 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+987 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+988 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+989 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+990 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+991 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+992 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+993 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+994 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+995 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+996 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+997 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+998 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+999 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1000 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1001 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1002 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1003 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1004 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1005 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1006 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1007 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1008 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1009 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1010 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1011 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1012 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1013 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1014 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1015 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1016 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1017 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1018 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1019 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1020 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1021 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1022 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1023 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1024 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1025 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1026 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1027 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1028 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1029 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1030 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1031 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1032 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1033 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1034 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1035 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1036 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1037 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1038 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1039 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1040 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1041 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1042 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1043 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1044 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1045 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1046 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1047 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1048 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1049 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1050 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1051 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1052 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1053 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1054 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1055 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1056 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1057 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1058 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1059 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1060 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1061 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1062 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1063 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1064 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1065 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1066 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1067 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1068 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1069 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1070 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1071 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1072 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1073 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1074 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1075 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1076 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1077 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1078 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1079 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1080 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1081 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1082 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1083 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1084 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1085 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1086 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1087 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1088 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1089 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1090 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1091 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1092 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1093 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1094 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1095 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1096 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1097 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1098 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1099 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1100 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1101 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1102 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1103 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1104 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1105 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1106 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1107 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1108 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1109 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1110 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1111 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1112 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1113 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1114 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1115 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1116 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1117 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1118 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1119 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1120 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1121 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1122 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1123 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1124 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1125 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1126 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1127 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1128 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1129 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1130 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1131 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1132 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1133 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1134 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1135 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1136 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1137 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1138 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1139 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1140 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1141 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1142 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1143 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1144 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1145 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1146 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1147 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1148 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1149 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1150 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1151 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1152 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1153 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1154 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1155 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1156 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1157 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1158 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1159 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1160 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1161 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1162 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1163 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1164 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1165 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1166 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1167 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1168 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1169 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1170 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1171 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1172 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1173 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1174 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1175 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1176 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1177 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1178 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1179 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1180 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1181 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1182 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1183 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1184 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1185 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1186 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1187 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1188 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1189 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1190 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1191 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1192 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1193 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1194 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1195 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1196 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1197 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1198 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1199 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1200 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1201 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1202 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1203 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1204 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1205 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1206 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1207 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1208 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1209 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1210 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1211 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1212 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1213 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1214 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1215 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1216 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1217 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1218 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1219 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1220 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1221 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1222 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1223 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1224 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1225 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1226 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1227 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1228 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1229 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1230 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1231 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1232 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1233 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1234 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1235 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1236 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1237 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1238 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1239 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1240 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1241 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1242 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1243 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1244 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1245 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1246 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1247 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1248 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1249 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1250 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1251 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1252 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1253 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1254 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1255 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1256 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1257 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1258 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1259 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1260 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1261 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1262 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1263 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1264 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1265 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1266 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1267 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1268 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1269 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1270 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1271 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1272 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1273 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1274 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1275 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1276 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1277 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1278 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1279 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1280 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1281 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1282 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1283 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1284 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1285 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1286 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1287 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1288 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1289 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1290 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1291 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1292 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1293 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1294 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1295 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1296 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1297 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1298 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1299 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1300 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1301 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1302 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1303 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1304 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1305 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1306 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1307 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1308 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1309 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1310 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1311 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1312 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1313 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1314 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1315 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1316 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1317 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1318 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1319 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1320 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1321 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1322 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1323 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1324 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1325 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1326 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1327 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1328 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1329 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1330 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1331 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1332 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1333 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1334 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1335 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1336 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1337 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1338 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1339 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1340 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1341 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1342 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1343 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1344 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1345 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1346 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1347 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1348 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1349 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1350 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1351 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1352 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1353 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1354 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1355 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1356 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1357 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1358 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1359 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1360 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1361 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1362 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1363 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1364 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1365 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1366 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1367 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1368 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1369 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1370 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1371 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1372 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1373 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1374 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1375 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1376 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1377 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1378 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1379 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1380 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1381 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1382 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1383 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1384 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1385 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1386 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1387 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1388 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1389 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1390 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1391 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1392 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1393 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1394 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1395 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1396 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1397 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1398 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1399 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1400 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1401 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1402 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1403 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1404 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1405 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1406 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1407 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1408 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1409 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1410 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1411 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1412 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1413 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1414 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1415 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1416 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1417 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1418 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1419 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1420 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1421 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1422 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1423 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1424 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1425 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1426 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1427 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1428 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1429 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1430 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1431 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1432 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1433 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1434 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1435 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1436 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1437 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1438 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1439 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1440 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1441 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1442 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1443 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1444 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1445 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1446 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1447 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1448 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1449 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1450 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1451 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1452 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1453 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1454 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1455 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1456 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1457 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1458 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1459 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1460 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1461 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1462 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1463 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1464 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1465 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1466 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1467 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1468 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1469 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1470 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1471 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1472 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1473 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1474 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1475 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1476 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1477 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1478 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1479 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1480 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1481 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1482 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1483 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1484 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1485 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1486 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1487 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1488 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1489 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1490 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1491 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1492 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1493 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1494 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1495 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1496 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1497 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1498 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1499 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1500 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1501 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1502 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1503 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1504 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1505 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1506 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1507 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1508 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1509 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1510 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1511 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1512 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1513 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1514 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1515 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1516 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1517 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1518 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1519 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1520 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1521 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1522 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1523 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1524 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1525 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1526 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1527 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1528 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1529 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1530 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1531 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1532 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1533 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1534 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1535 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1536 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1537 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1538 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1539 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1540 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1541 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1542 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1543 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1544 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1545 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1546 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1547 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1548 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1549 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1550 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1551 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1552 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1553 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1554 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1555 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1556 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1557 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1558 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1559 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1560 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1561 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1562 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1563 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1564 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1565 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1566 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1567 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1568 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1569 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1570 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1571 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1572 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1573 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1574 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1575 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1576 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1577 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1578 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1579 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1580 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1581 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1582 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1583 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1584 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1585 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1586 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1587 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1588 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1589 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1590 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1591 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1592 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1593 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1594 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1595 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1596 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1597 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1598 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1599 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1600 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1601 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1602 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1603 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1604 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1605 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1606 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1607 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1608 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1609 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1610 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1611 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1612 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1613 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1614 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1615 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1616 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1617 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1618 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1619 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1620 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1621 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1622 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1623 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1624 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1625 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1626 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1627 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1628 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1629 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1630 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1631 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1632 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1633 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1634 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1635 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1636 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1637 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1638 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1639 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1640 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1641 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1642 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1643 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1644 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1645 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1646 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1647 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1648 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1649 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1650 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1651 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1652 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1653 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1654 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1655 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1656 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1657 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1658 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1659 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1660 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1661 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1662 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1663 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1664 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1665 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1666 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1667 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1668 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1669 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1670 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1671 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1672 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1673 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1674 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1675 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1676 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1677 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1678 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1679 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1680 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1681 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1682 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1683 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1684 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1685 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1686 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1687 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1688 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1689 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1690 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1691 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1692 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1693 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1694 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1695 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1696 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1697 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1698 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1699 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1700 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1701 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1702 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1703 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1704 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1705 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1706 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1707 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1708 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1709 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1710 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1711 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1712 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1713 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1714 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1715 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1716 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1717 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1718 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1719 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1720 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1721 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1722 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1723 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1724 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1725 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1726 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1727 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1728 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1729 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1730 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1731 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1732 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1733 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1734 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1735 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1736 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1737 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1738 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1739 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1740 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1741 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1742 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1743 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1744 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1745 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1746 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1747 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1748 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1749 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_HONOR + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PVP_TIER_MAX_FROM_WINS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PVP_LAST_WEEKS_TIER_MAX_FROM_WINS }; -uint32 UnitDynamicUpdateFieldFlags[PLAYER_DYNAMIC_END] = +uint32 UnitDynamicUpdateFieldFlags[ACTIVE_PLAYER_DYNAMIC_END] = { UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_DYNAMIC_FIELD_PASSIVE_SPELLS UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_DYNAMIC_FIELD_WORLD_EFFECTS UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_DYNAMIC_FIELD_CHANNEL_OBJECTS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_RESERACH_SITE - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_DAILY_QUESTS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_AVAILABLE_QUEST_LINE_X_QUEST_ID - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_HEIRLOOMS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_TOYS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_TRANSMOG - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_CHARACTER_RESTRICTIONS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_SPELL_PCT_MOD_BY_LABEL - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_SPELL_FLAT_MOD_BY_LABEL UF_FLAG_PUBLIC, // PLAYER_DYNAMIC_FIELD_ARENA_COOLDOWNS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_RESERACH_SITE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_AVAILABLE_QUEST_LINE_X_QUEST_ID + UF_FLAG_NONE, // + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_TOYS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_TRANSMOG + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_CHARACTER_RESTRICTIONS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_SPELL_PCT_MOD_BY_LABEL + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_SPELL_FLAT_MOD_BY_LABEL + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_RESERACH }; uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END] = @@ -4916,11 +6341,6 @@ uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END] = UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -4928,6 +6348,10 @@ uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END] = UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_CREATED_BY+1 UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_CREATED_BY+2 UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_CREATED_BY+3 + UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_GUILD_GUID + UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_GUILD_GUID+1 + UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_GUILD_GUID+2 + UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_GUILD_GUID+3 UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // GAMEOBJECT_DISPLAYID UF_FLAG_PUBLIC | UF_FLAG_URGENT, // GAMEOBJECT_FLAGS UF_FLAG_PUBLIC, // GAMEOBJECT_PARENTROTATION @@ -4945,6 +6369,7 @@ uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END] = UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // GAMEOBJECT_STATE_WORLD_EFFECT_ID+1 UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // GAMEOBJECT_STATE_WORLD_EFFECT_ID+2 UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // GAMEOBJECT_STATE_WORLD_EFFECT_ID+3 + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // GAMEOBJECT_FIELD_CUSTOM_PARAM }; uint32 GameObjectDynamicUpdateFieldFlags[GAMEOBJECT_DYNAMIC_END] = @@ -4958,11 +6383,6 @@ uint32 DynamicObjectUpdateFieldFlags[DYNAMICOBJECT_END] = UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -4983,11 +6403,6 @@ uint32 CorpseUpdateFieldFlags[CORPSE_END] = UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -4999,6 +6414,10 @@ uint32 CorpseUpdateFieldFlags[CORPSE_END] = UF_FLAG_PUBLIC, // CORPSE_FIELD_PARTY+1 UF_FLAG_PUBLIC, // CORPSE_FIELD_PARTY+2 UF_FLAG_PUBLIC, // CORPSE_FIELD_PARTY+3 + UF_FLAG_PUBLIC, // CORPSE_FIELD_GUILD_GUID + UF_FLAG_PUBLIC, // CORPSE_FIELD_GUILD_GUID+1 + UF_FLAG_PUBLIC, // CORPSE_FIELD_GUILD_GUID+2 + UF_FLAG_PUBLIC, // CORPSE_FIELD_GUILD_GUID+3 UF_FLAG_PUBLIC, // CORPSE_FIELD_DISPLAY_ID UF_FLAG_PUBLIC, // CORPSE_FIELD_ITEM UF_FLAG_PUBLIC, // CORPSE_FIELD_ITEM+1 @@ -5033,11 +6452,6 @@ uint32 AreaTriggerUpdateFieldFlags[AREATRIGGER_END] = UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -5080,11 +6494,6 @@ uint32 SceneObjectUpdateFieldFlags[SCENEOBJECT_END] = UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -5103,11 +6512,6 @@ uint32 ConversationUpdateFieldFlags[CONVERSATION_END] = UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X diff --git a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.h b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.h index d5c151ee4a9..97523f323e3 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.h +++ b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.h @@ -37,10 +37,12 @@ enum UpdatefieldFlags UF_FLAG_URGENT_SELF_ONLY = 0x400 }; -TC_GAME_API extern uint32 ItemUpdateFieldFlags[CONTAINER_END]; +TC_GAME_API extern uint32 ContainerUpdateFieldFlags[CONTAINER_END]; +TC_GAME_API extern uint32 AzeriteEmpoweredItemUpdateFieldFlags[AZERITE_EMPOWERED_ITEM_END]; +TC_GAME_API extern uint32 AzeriteItemUpdateFieldFlags[AZERITE_ITEM_END]; TC_GAME_API extern uint32 ItemDynamicUpdateFieldFlags[CONTAINER_DYNAMIC_END]; -TC_GAME_API extern uint32 UnitUpdateFieldFlags[PLAYER_END]; -TC_GAME_API extern uint32 UnitDynamicUpdateFieldFlags[PLAYER_DYNAMIC_END]; +TC_GAME_API extern uint32 UnitUpdateFieldFlags[ACTIVE_PLAYER_END]; +TC_GAME_API extern uint32 UnitDynamicUpdateFieldFlags[ACTIVE_PLAYER_DYNAMIC_END]; TC_GAME_API extern uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END]; TC_GAME_API extern uint32 GameObjectDynamicUpdateFieldFlags[GAMEOBJECT_DYNAMIC_END]; TC_GAME_API extern uint32 DynamicObjectUpdateFieldFlags[DYNAMICOBJECT_END]; diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 6fb0a5d952c..ca3410f5dfd 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -19,17 +19,15 @@ #ifndef _UPDATEFIELDS_H #define _UPDATEFIELDS_H -// Auto generated for version 7, 3, 5, 25928 +// Auto generated for version 8, 0, 1, 27980 enum ObjectFields { OBJECT_FIELD_GUID = 0x000, // Size: 4, Flags: PUBLIC - OBJECT_FIELD_DATA = 0x004, // Size: 4, Flags: PUBLIC - OBJECT_FIELD_TYPE = 0x008, // Size: 1, Flags: PUBLIC - OBJECT_FIELD_ENTRY = 0x009, // Size: 1, Flags: DYNAMIC - OBJECT_DYNAMIC_FLAGS = 0x00A, // Size: 1, Flags: DYNAMIC, URGENT - OBJECT_FIELD_SCALE_X = 0x00B, // Size: 1, Flags: PUBLIC - OBJECT_END = 0x00C, + OBJECT_FIELD_ENTRY = 0x004, // Size: 1, Flags: DYNAMIC + OBJECT_DYNAMIC_FLAGS = 0x005, // Size: 1, Flags: DYNAMIC, URGENT + OBJECT_FIELD_SCALE_X = 0x006, // Size: 1, Flags: PUBLIC + OBJECT_END = 0x007, }; enum ObjectDynamicFields @@ -66,8 +64,7 @@ enum ItemDynamicFields ITEM_DYNAMIC_FIELD_BONUSLIST_IDS = OBJECT_DYNAMIC_END + 0x001, // Flags: OWNER, 0x100 ITEM_DYNAMIC_FIELD_ARTIFACT_POWERS = OBJECT_DYNAMIC_END + 0x002, // Flags: OWNER ITEM_DYNAMIC_FIELD_GEMS = OBJECT_DYNAMIC_END + 0x003, // Flags: OWNER - ITEM_DYNAMIC_FIELD_RELIC_TALENT_DATA = OBJECT_DYNAMIC_END + 0x004, // Flags: OWNER - ITEM_DYNAMIC_END = OBJECT_DYNAMIC_END + 0x005, + ITEM_DYNAMIC_END = OBJECT_DYNAMIC_END + 0x004, }; enum ContainerFields @@ -82,6 +79,32 @@ enum ContainerDynamicFields CONTAINER_DYNAMIC_END = ITEM_DYNAMIC_END + 0x000, }; +enum AzeriteEmpoweredItemField +{ + AZERITE_EMPOWERED_ITEM_FIELD_SELECTIONS = ITEM_END + 0x000, // Size: 4, Flags: PUBLIC + AZERITE_EMPOWERED_ITEM_END = ITEM_END + 0x004, +}; + +enum AzeriteEmpoweredItemDynamicField +{ + AZERITE_EMPOWERED_ITEM_DYNAMIC_END = ITEM_DYNAMIC_END + 0x000, +}; + +enum AzeriteItemField +{ + AZERITE_ITEM_FIELD_XP = ITEM_END + 0x000, // Size: 2, Flags: PUBLIC + AZERITE_ITEM_FIELD_LEVEL = ITEM_END + 0x002, // Size: 1, Flags: PUBLIC + AZERITE_ITEM_FIELD_AURA_LEVEL = ITEM_END + 0x003, // Size: 1, Flags: PUBLIC + AZERITE_ITEM_FIELD_KNOWLEDGE_LEVEL = ITEM_END + 0x004, // Size: 1, Flags: OWNER + AZERITE_ITEM_FIELD_DEBUG_KNOWLEDGE_WEEK = ITEM_END + 0x005, // Size: 1, Flags: OWNER + AZERITE_ITEM_END = ITEM_END + 0x006, +}; + +enum AzeriteItemDynamicField +{ + AZERITE_ITEM_DYNAMIC_END = ITEM_DYNAMIC_END + 0x000, +}; + enum UnitFields { UNIT_FIELD_CHARM = OBJECT_END + 0x000, // Size: 4, Flags: PUBLIC @@ -91,98 +114,106 @@ enum UnitFields UNIT_FIELD_SUMMONEDBY = OBJECT_END + 0x010, // Size: 4, Flags: PUBLIC UNIT_FIELD_CREATEDBY = OBJECT_END + 0x014, // Size: 4, Flags: PUBLIC UNIT_FIELD_DEMON_CREATOR = OBJECT_END + 0x018, // Size: 4, Flags: PUBLIC - UNIT_FIELD_TARGET = OBJECT_END + 0x01C, // Size: 4, Flags: PUBLIC - UNIT_FIELD_BATTLE_PET_COMPANION_GUID = OBJECT_END + 0x020, // Size: 4, Flags: PUBLIC - UNIT_FIELD_BATTLE_PET_DB_ID = OBJECT_END + 0x024, // Size: 2, Flags: PUBLIC - UNIT_FIELD_CHANNEL_DATA = OBJECT_END + 0x026, // Size: 2, Flags: PUBLIC, URGENT - UNIT_FIELD_SUMMONED_BY_HOME_REALM = OBJECT_END + 0x028, // Size: 1, Flags: PUBLIC - UNIT_FIELD_BYTES_0 = OBJECT_END + 0x029, // Size: 1, Flags: PUBLIC - UNIT_FIELD_DISPLAY_POWER = OBJECT_END + 0x02A, // Size: 1, Flags: PUBLIC - UNIT_FIELD_OVERRIDE_DISPLAY_POWER_ID = OBJECT_END + 0x02B, // Size: 1, Flags: PUBLIC - UNIT_FIELD_HEALTH = OBJECT_END + 0x02C, // Size: 2, Flags: PUBLIC - UNIT_FIELD_POWER = OBJECT_END + 0x02E, // Size: 6, Flags: PUBLIC, URGENT_SELF_ONLY - UNIT_FIELD_MAXHEALTH = OBJECT_END + 0x034, // Size: 2, Flags: PUBLIC - UNIT_FIELD_MAXPOWER = OBJECT_END + 0x036, // Size: 6, Flags: PUBLIC - UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER = OBJECT_END + 0x03C, // Size: 6, Flags: PRIVATE, OWNER, UNIT_ALL - UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER = OBJECT_END + 0x042, // Size: 6, Flags: PRIVATE, OWNER, UNIT_ALL - UNIT_FIELD_LEVEL = OBJECT_END + 0x048, // Size: 1, Flags: PUBLIC - UNIT_FIELD_EFFECTIVE_LEVEL = OBJECT_END + 0x049, // Size: 1, Flags: PUBLIC - UNIT_FIELD_SANDBOX_SCALING_ID = OBJECT_END + 0x04A, // Size: 1, Flags: PUBLIC - UNIT_FIELD_SCALING_LEVEL_MIN = OBJECT_END + 0x04B, // Size: 1, Flags: PUBLIC - UNIT_FIELD_SCALING_LEVEL_MAX = OBJECT_END + 0x04C, // Size: 1, Flags: PUBLIC - UNIT_FIELD_SCALING_LEVEL_DELTA = OBJECT_END + 0x04D, // Size: 1, Flags: PUBLIC - UNIT_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x04E, // Size: 1, Flags: PUBLIC - UNIT_VIRTUAL_ITEM_SLOT_ID = OBJECT_END + 0x04F, // Size: 6, Flags: PUBLIC - UNIT_FIELD_FLAGS = OBJECT_END + 0x055, // Size: 1, Flags: PUBLIC, URGENT - UNIT_FIELD_FLAGS_2 = OBJECT_END + 0x056, // Size: 1, Flags: PUBLIC, URGENT - UNIT_FIELD_FLAGS_3 = OBJECT_END + 0x057, // Size: 1, Flags: PUBLIC, URGENT - UNIT_FIELD_AURASTATE = OBJECT_END + 0x058, // Size: 1, Flags: PUBLIC - UNIT_FIELD_BASEATTACKTIME = OBJECT_END + 0x059, // Size: 2, Flags: PUBLIC - UNIT_FIELD_RANGEDATTACKTIME = OBJECT_END + 0x05B, // Size: 1, Flags: PRIVATE - UNIT_FIELD_BOUNDINGRADIUS = OBJECT_END + 0x05C, // Size: 1, Flags: PUBLIC - UNIT_FIELD_COMBATREACH = OBJECT_END + 0x05D, // Size: 1, Flags: PUBLIC - UNIT_FIELD_DISPLAYID = OBJECT_END + 0x05E, // Size: 1, Flags: DYNAMIC, URGENT - UNIT_FIELD_NATIVEDISPLAYID = OBJECT_END + 0x05F, // Size: 1, Flags: PUBLIC, URGENT - UNIT_FIELD_MOUNTDISPLAYID = OBJECT_END + 0x060, // Size: 1, Flags: PUBLIC, URGENT - UNIT_FIELD_MINDAMAGE = OBJECT_END + 0x061, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_MAXDAMAGE = OBJECT_END + 0x062, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_MINOFFHANDDAMAGE = OBJECT_END + 0x063, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_MAXOFFHANDDAMAGE = OBJECT_END + 0x064, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_BYTES_1 = OBJECT_END + 0x065, // Size: 1, Flags: PUBLIC - UNIT_FIELD_PETNUMBER = OBJECT_END + 0x066, // Size: 1, Flags: PUBLIC - UNIT_FIELD_PET_NAME_TIMESTAMP = OBJECT_END + 0x067, // Size: 1, Flags: PUBLIC - UNIT_FIELD_PETEXPERIENCE = OBJECT_END + 0x068, // Size: 1, Flags: OWNER - UNIT_FIELD_PETNEXTLEVELEXP = OBJECT_END + 0x069, // Size: 1, Flags: OWNER - UNIT_MOD_CAST_SPEED = OBJECT_END + 0x06A, // Size: 1, Flags: PUBLIC - UNIT_MOD_CAST_HASTE = OBJECT_END + 0x06B, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MOD_HASTE = OBJECT_END + 0x06C, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MOD_RANGED_HASTE = OBJECT_END + 0x06D, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MOD_HASTE_REGEN = OBJECT_END + 0x06E, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MOD_TIME_RATE = OBJECT_END + 0x06F, // Size: 1, Flags: PUBLIC - UNIT_CREATED_BY_SPELL = OBJECT_END + 0x070, // Size: 1, Flags: PUBLIC - UNIT_NPC_FLAGS = OBJECT_END + 0x071, // Size: 2, Flags: PUBLIC, DYNAMIC - UNIT_NPC_EMOTESTATE = OBJECT_END + 0x073, // Size: 1, Flags: PUBLIC - UNIT_FIELD_STAT = OBJECT_END + 0x074, // Size: 4, Flags: PRIVATE, OWNER - UNIT_FIELD_POSSTAT = OBJECT_END + 0x078, // Size: 4, Flags: PRIVATE, OWNER - UNIT_FIELD_NEGSTAT = OBJECT_END + 0x07C, // Size: 4, Flags: PRIVATE, OWNER - UNIT_FIELD_RESISTANCES = OBJECT_END + 0x080, // Size: 7, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE = OBJECT_END + 0x087, // Size: 7, Flags: PRIVATE, OWNER - UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE = OBJECT_END + 0x08E, // Size: 7, Flags: PRIVATE, OWNER - UNIT_FIELD_MOD_BONUS_ARMOR = OBJECT_END + 0x095, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_BASE_MANA = OBJECT_END + 0x096, // Size: 1, Flags: PUBLIC - UNIT_FIELD_BASE_HEALTH = OBJECT_END + 0x097, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_BYTES_2 = OBJECT_END + 0x098, // Size: 1, Flags: PUBLIC - UNIT_FIELD_ATTACK_POWER = OBJECT_END + 0x099, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_ATTACK_POWER_MOD_POS = OBJECT_END + 0x09A, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x09B, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x09C, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_RANGED_ATTACK_POWER = OBJECT_END + 0x09D, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_RANGED_ATTACK_POWER_MOD_POS = OBJECT_END + 0x09E, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_RANGED_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x09F, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x0A0, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_ATTACK_SPEED_AURA = OBJECT_END + 0x0A1, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_MINRANGEDDAMAGE = OBJECT_END + 0x0A2, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_MAXRANGEDDAMAGE = OBJECT_END + 0x0A3, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_POWER_COST_MODIFIER = OBJECT_END + 0x0A4, // Size: 7, Flags: PRIVATE, OWNER - UNIT_FIELD_POWER_COST_MULTIPLIER = OBJECT_END + 0x0AB, // Size: 7, Flags: PRIVATE, OWNER - UNIT_FIELD_MAXHEALTHMODIFIER = OBJECT_END + 0x0B2, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_HOVERHEIGHT = OBJECT_END + 0x0B3, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MIN_ITEM_LEVEL_CUTOFF = OBJECT_END + 0x0B4, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MIN_ITEM_LEVEL = OBJECT_END + 0x0B5, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MAXITEMLEVEL = OBJECT_END + 0x0B6, // Size: 1, Flags: PUBLIC - UNIT_FIELD_WILD_BATTLEPET_LEVEL = OBJECT_END + 0x0B7, // Size: 1, Flags: PUBLIC - UNIT_FIELD_BATTLEPET_COMPANION_NAME_TIMESTAMP = OBJECT_END + 0x0B8, // Size: 1, Flags: PUBLIC - UNIT_FIELD_INTERACT_SPELLID = OBJECT_END + 0x0B9, // Size: 1, Flags: PUBLIC - UNIT_FIELD_STATE_SPELL_VISUAL_ID = OBJECT_END + 0x0BA, // Size: 1, Flags: DYNAMIC, URGENT - UNIT_FIELD_STATE_ANIM_ID = OBJECT_END + 0x0BB, // Size: 1, Flags: DYNAMIC, URGENT - UNIT_FIELD_STATE_ANIM_KIT_ID = OBJECT_END + 0x0BC, // Size: 1, Flags: DYNAMIC, URGENT - UNIT_FIELD_STATE_WORLD_EFFECT_ID = OBJECT_END + 0x0BD, // Size: 4, Flags: DYNAMIC, URGENT - UNIT_FIELD_SCALE_DURATION = OBJECT_END + 0x0C1, // Size: 1, Flags: PUBLIC - UNIT_FIELD_LOOKS_LIKE_MOUNT_ID = OBJECT_END + 0x0C2, // Size: 1, Flags: PUBLIC - UNIT_FIELD_LOOKS_LIKE_CREATURE_ID = OBJECT_END + 0x0C3, // Size: 1, Flags: PUBLIC - UNIT_FIELD_LOOK_AT_CONTROLLER_ID = OBJECT_END + 0x0C4, // Size: 1, Flags: PUBLIC - UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET = OBJECT_END + 0x0C5, // Size: 4, Flags: PUBLIC - UNIT_END = OBJECT_END + 0x0C9, + UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET = OBJECT_END + 0x01C, // Size: 4, Flags: PUBLIC + UNIT_FIELD_TARGET = OBJECT_END + 0x020, // Size: 4, Flags: PUBLIC + UNIT_FIELD_BATTLE_PET_COMPANION_GUID = OBJECT_END + 0x024, // Size: 4, Flags: PUBLIC + UNIT_FIELD_BATTLE_PET_DB_ID = OBJECT_END + 0x028, // Size: 2, Flags: PUBLIC + UNIT_FIELD_CHANNEL_DATA = OBJECT_END + 0x02A, // Size: 2, Flags: PUBLIC, URGENT + UNIT_FIELD_SUMMONED_BY_HOME_REALM = OBJECT_END + 0x02C, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BYTES_0 = OBJECT_END + 0x02D, // Size: 1, Flags: PUBLIC + UNIT_FIELD_DISPLAY_POWER = OBJECT_END + 0x02E, // Size: 1, Flags: PUBLIC + UNIT_FIELD_OVERRIDE_DISPLAY_POWER_ID = OBJECT_END + 0x02F, // Size: 1, Flags: PUBLIC + UNIT_FIELD_HEALTH = OBJECT_END + 0x030, // Size: 2, Flags: PUBLIC + UNIT_FIELD_POWER = OBJECT_END + 0x032, // Size: 6, Flags: PUBLIC, URGENT_SELF_ONLY + UNIT_FIELD_MAXHEALTH = OBJECT_END + 0x038, // Size: 2, Flags: PUBLIC + UNIT_FIELD_MAXPOWER = OBJECT_END + 0x03A, // Size: 6, Flags: PUBLIC + UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER = OBJECT_END + 0x040, // Size: 6, Flags: PRIVATE, OWNER, UNIT_ALL + UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER = OBJECT_END + 0x046, // Size: 6, Flags: PRIVATE, OWNER, UNIT_ALL + UNIT_FIELD_LEVEL = OBJECT_END + 0x04C, // Size: 1, Flags: PUBLIC + UNIT_FIELD_EFFECTIVE_LEVEL = OBJECT_END + 0x04D, // Size: 1, Flags: PUBLIC + UNIT_FIELD_CONTENT_TUNING_ID = OBJECT_END + 0x04E, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_LEVEL_MIN = OBJECT_END + 0x04F, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_LEVEL_MAX = OBJECT_END + 0x050, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_LEVEL_DELTA = OBJECT_END + 0x051, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_FACTION_GROUP = OBJECT_END + 0x052, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_HEALTH_ITEM_LEVEL_CURVE_ID = OBJECT_END + 0x053, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_DAMAGE_ITEM_LEVEL_CURVE_ID = OBJECT_END + 0x054, // Size: 1, Flags: PUBLIC + UNIT_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x055, // Size: 1, Flags: PUBLIC + UNIT_VIRTUAL_ITEM_SLOT_ID = OBJECT_END + 0x056, // Size: 6, Flags: PUBLIC + UNIT_FIELD_FLAGS = OBJECT_END + 0x05C, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_FLAGS_2 = OBJECT_END + 0x05D, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_FLAGS_3 = OBJECT_END + 0x05E, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_AURASTATE = OBJECT_END + 0x05F, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BASEATTACKTIME = OBJECT_END + 0x060, // Size: 2, Flags: PUBLIC + UNIT_FIELD_RANGEDATTACKTIME = OBJECT_END + 0x062, // Size: 1, Flags: PRIVATE + UNIT_FIELD_BOUNDINGRADIUS = OBJECT_END + 0x063, // Size: 1, Flags: PUBLIC + UNIT_FIELD_COMBATREACH = OBJECT_END + 0x064, // Size: 1, Flags: PUBLIC + UNIT_FIELD_DISPLAYID = OBJECT_END + 0x065, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_DISPLAY_SCALE = OBJECT_END + 0x066, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_NATIVEDISPLAYID = OBJECT_END + 0x067, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_NATIVE_X_DISPLAY_SCALE = OBJECT_END + 0x068, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_MOUNTDISPLAYID = OBJECT_END + 0x069, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_MINDAMAGE = OBJECT_END + 0x06A, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_MAXDAMAGE = OBJECT_END + 0x06B, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_MINOFFHANDDAMAGE = OBJECT_END + 0x06C, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_MAXOFFHANDDAMAGE = OBJECT_END + 0x06D, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_BYTES_1 = OBJECT_END + 0x06E, // Size: 1, Flags: PUBLIC + UNIT_FIELD_PETNUMBER = OBJECT_END + 0x06F, // Size: 1, Flags: PUBLIC + UNIT_FIELD_PET_NAME_TIMESTAMP = OBJECT_END + 0x070, // Size: 1, Flags: PUBLIC + UNIT_FIELD_PETEXPERIENCE = OBJECT_END + 0x071, // Size: 1, Flags: OWNER + UNIT_FIELD_PETNEXTLEVELEXP = OBJECT_END + 0x072, // Size: 1, Flags: OWNER + UNIT_MOD_CAST_SPEED = OBJECT_END + 0x073, // Size: 1, Flags: PUBLIC + UNIT_MOD_CAST_HASTE = OBJECT_END + 0x074, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MOD_HASTE = OBJECT_END + 0x075, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MOD_RANGED_HASTE = OBJECT_END + 0x076, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MOD_HASTE_REGEN = OBJECT_END + 0x077, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MOD_TIME_RATE = OBJECT_END + 0x078, // Size: 1, Flags: PUBLIC + UNIT_CREATED_BY_SPELL = OBJECT_END + 0x079, // Size: 1, Flags: PUBLIC + UNIT_NPC_FLAGS = OBJECT_END + 0x07A, // Size: 2, Flags: PUBLIC, DYNAMIC + UNIT_NPC_EMOTESTATE = OBJECT_END + 0x07C, // Size: 1, Flags: PUBLIC + UNIT_FIELD_STAT = OBJECT_END + 0x07D, // Size: 4, Flags: PRIVATE, OWNER + UNIT_FIELD_POSSTAT = OBJECT_END + 0x081, // Size: 4, Flags: PRIVATE, OWNER + UNIT_FIELD_NEGSTAT = OBJECT_END + 0x085, // Size: 4, Flags: PRIVATE, OWNER + UNIT_FIELD_RESISTANCES = OBJECT_END + 0x089, // Size: 7, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_BONUS_RESISTANCE_MODS = OBJECT_END + 0x090, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_BASE_MANA = OBJECT_END + 0x097, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BASE_HEALTH = OBJECT_END + 0x098, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_BYTES_2 = OBJECT_END + 0x099, // Size: 1, Flags: PUBLIC + UNIT_FIELD_ATTACK_POWER = OBJECT_END + 0x09A, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_POWER_MOD_POS = OBJECT_END + 0x09B, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x09C, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x09D, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER = OBJECT_END + 0x09E, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER_MOD_POS = OBJECT_END + 0x09F, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x0A0, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x0A1, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_MAIN_HAND_WEAPON_ATTACK_POWER = OBJECT_END + 0x0A2, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_OFF_HAND_WEAPON_ATTACK_POWER = OBJECT_END + 0x0A3, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_HAND_WEAPON_ATTACK_POWER = OBJECT_END + 0x0A4, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_SPEED_AURA = OBJECT_END + 0x0A5, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_LIFESTEAL = OBJECT_END + 0x0A6, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_MINRANGEDDAMAGE = OBJECT_END + 0x0A7, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_MAXRANGEDDAMAGE = OBJECT_END + 0x0A8, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_POWER_COST_MODIFIER = OBJECT_END + 0x0A9, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_POWER_COST_MULTIPLIER = OBJECT_END + 0x0B0, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_MAXHEALTHMODIFIER = OBJECT_END + 0x0B7, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_HOVERHEIGHT = OBJECT_END + 0x0B8, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MIN_ITEM_LEVEL_CUTOFF = OBJECT_END + 0x0B9, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MIN_ITEM_LEVEL = OBJECT_END + 0x0BA, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MAXITEMLEVEL = OBJECT_END + 0x0BB, // Size: 1, Flags: PUBLIC + UNIT_FIELD_WILD_BATTLEPET_LEVEL = OBJECT_END + 0x0BC, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BATTLEPET_COMPANION_NAME_TIMESTAMP = OBJECT_END + 0x0BD, // Size: 1, Flags: PUBLIC + UNIT_FIELD_INTERACT_SPELLID = OBJECT_END + 0x0BE, // Size: 1, Flags: PUBLIC + UNIT_FIELD_STATE_SPELL_VISUAL_ID = OBJECT_END + 0x0BF, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_STATE_ANIM_ID = OBJECT_END + 0x0C0, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_STATE_ANIM_KIT_ID = OBJECT_END + 0x0C1, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_STATE_WORLD_EFFECT_ID = OBJECT_END + 0x0C2, // Size: 4, Flags: DYNAMIC, URGENT + UNIT_FIELD_SCALE_DURATION = OBJECT_END + 0x0C6, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOKS_LIKE_MOUNT_ID = OBJECT_END + 0x0C7, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOKS_LIKE_CREATURE_ID = OBJECT_END + 0x0C8, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOK_AT_CONTROLLER_ID = OBJECT_END + 0x0C9, // Size: 1, Flags: PUBLIC + UNIT_FIELD_GUILD_GUID = OBJECT_END + 0x0CA, // Size: 4, Flags: PUBLIC + UNIT_END = OBJECT_END + 0x0CE, }; enum UnitDynamicFields @@ -209,141 +240,152 @@ enum PlayerFields PLAYER_BYTES_4 = UNIT_END + 0x014, // Size: 1, Flags: PUBLIC PLAYER_DUEL_TEAM = UNIT_END + 0x015, // Size: 1, Flags: PUBLIC PLAYER_GUILD_TIMESTAMP = UNIT_END + 0x016, // Size: 1, Flags: PUBLIC - PLAYER_QUEST_LOG = UNIT_END + 0x017, // Size: 800, Flags: PARTY_MEMBER - PLAYER_VISIBLE_ITEM = UNIT_END + 0x337, // Size: 38, Flags: PUBLIC - PLAYER_CHOSEN_TITLE = UNIT_END + 0x35D, // Size: 1, Flags: PUBLIC - PLAYER_FAKE_INEBRIATION = UNIT_END + 0x35E, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_VIRTUAL_PLAYER_REALM = UNIT_END + 0x35F, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_CURRENT_SPEC_ID = UNIT_END + 0x360, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_TAXI_MOUNT_ANIM_KIT_ID = UNIT_END + 0x361, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_AVG_ITEM_LEVEL = UNIT_END + 0x362, // Size: 4, Flags: PUBLIC - PLAYER_FIELD_CURRENT_BATTLE_PET_BREED_QUALITY = UNIT_END + 0x366, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_PRESTIGE = UNIT_END + 0x367, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_HONOR_LEVEL = UNIT_END + 0x368, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_INV_SLOT_HEAD = UNIT_END + 0x369, // Size: 780, Flags: PRIVATE - PLAYER_FIELD_END_NOT_SELF = UNIT_END + 0x369, - PLAYER_FARSIGHT = UNIT_END + 0x675, // Size: 4, Flags: PRIVATE - PLAYER_FIELD_SUMMONED_BATTLE_PET_ID = UNIT_END + 0x679, // Size: 4, Flags: PRIVATE - PLAYER__FIELD_KNOWN_TITLES = UNIT_END + 0x67D, // Size: 12, Flags: PRIVATE - PLAYER_FIELD_COINAGE = UNIT_END + 0x689, // Size: 2, Flags: PRIVATE - PLAYER_XP = UNIT_END + 0x68B, // Size: 1, Flags: PRIVATE - PLAYER_NEXT_LEVEL_XP = UNIT_END + 0x68C, // Size: 1, Flags: PRIVATE - PLAYER_TRIAL_XP = UNIT_END + 0x68D, // Size: 1, Flags: PRIVATE - PLAYER_SKILL_LINEID = UNIT_END + 0x68E, // Size: 448, Flags: PRIVATE - PLAYER_CHARACTER_POINTS = UNIT_END + 0x84E, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MAX_TALENT_TIERS = UNIT_END + 0x84F, // Size: 1, Flags: PRIVATE - PLAYER_TRACK_CREATURES = UNIT_END + 0x850, // Size: 1, Flags: PRIVATE - PLAYER_TRACK_RESOURCES = UNIT_END + 0x851, // Size: 1, Flags: PRIVATE - PLAYER_EXPERTISE = UNIT_END + 0x852, // Size: 1, Flags: PRIVATE - PLAYER_OFFHAND_EXPERTISE = UNIT_END + 0x853, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_RANGED_EXPERTISE = UNIT_END + 0x854, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_COMBAT_RATING_EXPERTISE = UNIT_END + 0x855, // Size: 1, Flags: PRIVATE - PLAYER_BLOCK_PERCENTAGE = UNIT_END + 0x856, // Size: 1, Flags: PRIVATE - PLAYER_DODGE_PERCENTAGE = UNIT_END + 0x857, // Size: 1, Flags: PRIVATE - PLAYER_DODGE_PERCENTAGE_FROM_ATTRIBUTE = UNIT_END + 0x858, // Size: 1, Flags: PRIVATE - PLAYER_PARRY_PERCENTAGE = UNIT_END + 0x859, // Size: 1, Flags: PRIVATE - PLAYER_PARRY_PERCENTAGE_FROM_ATTRIBUTE = UNIT_END + 0x85A, // Size: 1, Flags: PRIVATE - PLAYER_CRIT_PERCENTAGE = UNIT_END + 0x85B, // Size: 1, Flags: PRIVATE - PLAYER_RANGED_CRIT_PERCENTAGE = UNIT_END + 0x85C, // Size: 1, Flags: PRIVATE - PLAYER_OFFHAND_CRIT_PERCENTAGE = UNIT_END + 0x85D, // Size: 1, Flags: PRIVATE - PLAYER_SPELL_CRIT_PERCENTAGE1 = UNIT_END + 0x85E, // Size: 1, Flags: PRIVATE - PLAYER_SHIELD_BLOCK = UNIT_END + 0x85F, // Size: 1, Flags: PRIVATE - PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE = UNIT_END + 0x860, // Size: 1, Flags: PRIVATE - PLAYER_MASTERY = UNIT_END + 0x861, // Size: 1, Flags: PRIVATE - PLAYER_SPEED = UNIT_END + 0x862, // Size: 1, Flags: PRIVATE - PLAYER_LIFESTEAL = UNIT_END + 0x863, // Size: 1, Flags: PRIVATE - PLAYER_AVOIDANCE = UNIT_END + 0x864, // Size: 1, Flags: PRIVATE - PLAYER_STURDINESS = UNIT_END + 0x865, // Size: 1, Flags: PRIVATE - PLAYER_VERSATILITY = UNIT_END + 0x866, // Size: 1, Flags: PRIVATE - PLAYER_VERSATILITY_BONUS = UNIT_END + 0x867, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_PVP_POWER_DAMAGE = UNIT_END + 0x868, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_PVP_POWER_HEALING = UNIT_END + 0x869, // Size: 1, Flags: PRIVATE - PLAYER_EXPLORED_ZONES_1 = UNIT_END + 0x86A, // Size: 320, Flags: PRIVATE - PLAYER_FIELD_REST_INFO = UNIT_END + 0x9AA, // Size: 4, Flags: PRIVATE - PLAYER_FIELD_MOD_DAMAGE_DONE_POS = UNIT_END + 0x9AE, // Size: 7, Flags: PRIVATE - PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = UNIT_END + 0x9B5, // Size: 7, Flags: PRIVATE - PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = UNIT_END + 0x9BC, // Size: 7, Flags: PRIVATE - PLAYER_FIELD_MOD_HEALING_DONE_POS = UNIT_END + 0x9C3, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_HEALING_PCT = UNIT_END + 0x9C4, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_HEALING_DONE_PCT = UNIT_END + 0x9C5, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT = UNIT_END + 0x9C6, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS = UNIT_END + 0x9C7, // Size: 3, Flags: PRIVATE - PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS = UNIT_END + 0x9CA, // Size: 3, Flags: PRIVATE - PLAYER_FIELD_MOD_SPELL_POWER_PCT = UNIT_END + 0x9CD, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_RESILIENCE_PERCENT = UNIT_END + 0x9CE, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT = UNIT_END + 0x9CF, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT = UNIT_END + 0x9D0, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_TARGET_RESISTANCE = UNIT_END + 0x9D1, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE = UNIT_END + 0x9D2, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_LOCAL_FLAGS = UNIT_END + 0x9D3, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_BYTES = UNIT_END + 0x9D4, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_PVP_MEDALS = UNIT_END + 0x9D5, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_BUYBACK_PRICE_1 = UNIT_END + 0x9D6, // Size: 12, Flags: PRIVATE - PLAYER_FIELD_BUYBACK_TIMESTAMP_1 = UNIT_END + 0x9E2, // Size: 12, Flags: PRIVATE - PLAYER_FIELD_KILLS = UNIT_END + 0x9EE, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_LIFETIME_HONORABLE_KILLS = UNIT_END + 0x9EF, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_WATCHED_FACTION_INDEX = UNIT_END + 0x9F0, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_COMBAT_RATING_1 = UNIT_END + 0x9F1, // Size: 32, Flags: PRIVATE - PLAYER_FIELD_ARENA_TEAM_INFO_1_1 = UNIT_END + 0xA11, // Size: 42, Flags: PRIVATE - PLAYER_FIELD_MAX_LEVEL = UNIT_END + 0xA3B, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA = UNIT_END + 0xA3C, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MAX_CREATURE_SCALING_LEVEL = UNIT_END + 0xA3D, // Size: 1, Flags: PRIVATE - PLAYER_NO_REAGENT_COST_1 = UNIT_END + 0xA3E, // Size: 4, Flags: PRIVATE - PLAYER_PET_SPELL_POWER = UNIT_END + 0xA42, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_RESEARCHING_1 = UNIT_END + 0xA43, // Size: 10, Flags: PRIVATE - PLAYER_PROFESSION_SKILL_LINE_1 = UNIT_END + 0xA4D, // Size: 2, Flags: PRIVATE - PLAYER_FIELD_UI_HIT_MODIFIER = UNIT_END + 0xA4F, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_UI_SPELL_HIT_MODIFIER = UNIT_END + 0xA50, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_HOME_REALM_TIME_OFFSET = UNIT_END + 0xA51, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_PET_HASTE = UNIT_END + 0xA52, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_BYTES2 = UNIT_END + 0xA53, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_BYTES3 = UNIT_END + 0xA54, // Size: 1, Flags: PRIVATE, URGENT_SELF_ONLY - PLAYER_FIELD_LFG_BONUS_FACTION_ID = UNIT_END + 0xA55, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_LOOT_SPEC_ID = UNIT_END + 0xA56, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_OVERRIDE_ZONE_PVP_TYPE = UNIT_END + 0xA57, // Size: 1, Flags: PRIVATE, URGENT_SELF_ONLY - PLAYER_FIELD_BAG_SLOT_FLAGS = UNIT_END + 0xA58, // Size: 4, Flags: PRIVATE - PLAYER_FIELD_BANK_BAG_SLOT_FLAGS = UNIT_END + 0xA5C, // Size: 7, Flags: PRIVATE - PLAYER_FIELD_INSERT_ITEMS_LEFT_TO_RIGHT = UNIT_END + 0xA63, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_QUEST_COMPLETED = UNIT_END + 0xA64, // Size: 1750, Flags: PRIVATE - PLAYER_FIELD_HONOR = UNIT_END + 0x113A, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_HONOR_NEXT_LEVEL = UNIT_END + 0x113B, // Size: 1, Flags: PRIVATE - PLAYER_END = UNIT_END + 0x113C, + PLAYER_QUEST_LOG = UNIT_END + 0x017, // Size: 1600, Flags: PARTY_MEMBER + PLAYER_VISIBLE_ITEM = UNIT_END + 0x657, // Size: 38, Flags: PUBLIC + PLAYER_CHOSEN_TITLE = UNIT_END + 0x67D, // Size: 1, Flags: PUBLIC + PLAYER_FAKE_INEBRIATION = UNIT_END + 0x67E, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_VIRTUAL_PLAYER_REALM = UNIT_END + 0x67F, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_CURRENT_SPEC_ID = UNIT_END + 0x680, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_TAXI_MOUNT_ANIM_KIT_ID = UNIT_END + 0x681, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_AVG_ITEM_LEVEL = UNIT_END + 0x682, // Size: 4, Flags: PUBLIC + PLAYER_FIELD_CURRENT_BATTLE_PET_BREED_QUALITY = UNIT_END + 0x686, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_HONOR_LEVEL = UNIT_END + 0x687, // Size: 1, Flags: PUBLIC + PLAYER_END = UNIT_END + 0x688, }; enum PlayerDynamicFields { - PLAYER_DYNAMIC_FIELD_RESERACH_SITE = UNIT_DYNAMIC_END + 0x000, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS = UNIT_DYNAMIC_END + 0x001, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_DAILY_QUESTS = UNIT_DYNAMIC_END + 0x002, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_AVAILABLE_QUEST_LINE_X_QUEST_ID = UNIT_DYNAMIC_END + 0x003, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_HEIRLOOMS = UNIT_DYNAMIC_END + 0x004, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS = UNIT_DYNAMIC_END + 0x005, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_TOYS = UNIT_DYNAMIC_END + 0x006, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_TRANSMOG = UNIT_DYNAMIC_END + 0x007, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG = UNIT_DYNAMIC_END + 0x008, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS = UNIT_DYNAMIC_END + 0x009, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_CHARACTER_RESTRICTIONS = UNIT_DYNAMIC_END + 0x00A, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_SPELL_PCT_MOD_BY_LABEL = UNIT_DYNAMIC_END + 0x00B, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_SPELL_FLAT_MOD_BY_LABEL = UNIT_DYNAMIC_END + 0x00C, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_ARENA_COOLDOWNS = UNIT_DYNAMIC_END + 0x00D, // Flags: PUBLIC - PLAYER_DYNAMIC_END = UNIT_DYNAMIC_END + 0x00E, + PLAYER_DYNAMIC_FIELD_ARENA_COOLDOWNS = UNIT_DYNAMIC_END + 0x000, // Flags: PUBLIC + PLAYER_DYNAMIC_END = UNIT_DYNAMIC_END + 0x001, +}; + +enum ActivePlayerField +{ + ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD = PLAYER_END + 0x000, // Size: 780, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_FARSIGHT = PLAYER_END + 0x30C, // Size: 4, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID = PLAYER_END + 0x310, // Size: 4, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_KNOWN_TITLES = PLAYER_END + 0x314, // Size: 12, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_COINAGE = PLAYER_END + 0x320, // Size: 2, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_XP = PLAYER_END + 0x322, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP = PLAYER_END + 0x323, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_TRIAL_XP = PLAYER_END + 0x324, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SKILL_LINEID = PLAYER_END + 0x325, // Size: 896, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_CHARACTER_POINTS = PLAYER_END + 0x6A5, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MAX_TALENT_TIERS = PLAYER_END + 0x6A6, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_TRACK_CREATURES = PLAYER_END + 0x6A7, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_TRACK_RESOURCES = PLAYER_END + 0x6A8, // Size: 2, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_EXPERTISE = PLAYER_END + 0x6AA, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_OFFHAND_EXPERTISE = PLAYER_END + 0x6AB, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_RANGED_EXPERTISE = PLAYER_END + 0x6AC, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_COMBAT_RATING_EXPERTISE = PLAYER_END + 0x6AD, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE = PLAYER_END + 0x6AE, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE = PLAYER_END + 0x6AF, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE_FROM_ATTRIBUTE = PLAYER_END + 0x6B0, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE = PLAYER_END + 0x6B1, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE_FROM_ATTRIBUTE = PLAYER_END + 0x6B2, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE = PLAYER_END + 0x6B3, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE = PLAYER_END + 0x6B4, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_OFFHAND_CRIT_PERCENTAGE = PLAYER_END + 0x6B5, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1 = PLAYER_END + 0x6B6, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SHIELD_BLOCK = PLAYER_END + 0x6B7, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SHIELD_BLOCK_CRIT_PERCENTAGE = PLAYER_END + 0x6B8, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MASTERY = PLAYER_END + 0x6B9, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SPEED = PLAYER_END + 0x6BA, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_AVOIDANCE = PLAYER_END + 0x6BB, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_STURDINESS = PLAYER_END + 0x6BC, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_VERSATILITY = PLAYER_END + 0x6BD, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_VERSATILITY_BONUS = PLAYER_END + 0x6BE, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PVP_POWER_DAMAGE = PLAYER_END + 0x6BF, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PVP_POWER_HEALING = PLAYER_END + 0x6C0, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_EXPLORED_ZONES = PLAYER_END + 0x6C1, // Size: 320, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_REST_INFO = PLAYER_END + 0x801, // Size: 4, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS = PLAYER_END + 0x805, // Size: 7, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = PLAYER_END + 0x80C, // Size: 7, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = PLAYER_END + 0x813, // Size: 7, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_POS = PLAYER_END + 0x81A, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_HEALING_PCT = PLAYER_END + 0x81B, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_PCT = PLAYER_END + 0x81C, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT = PLAYER_END + 0x81D, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS = PLAYER_END + 0x81E, // Size: 3, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS = PLAYER_END + 0x821, // Size: 3, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_SPELL_POWER_PCT = PLAYER_END + 0x824, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_RESILIENCE_PERCENT = PLAYER_END + 0x825, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT = PLAYER_END + 0x826, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT = PLAYER_END + 0x827, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_TARGET_RESISTANCE = PLAYER_END + 0x828, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE = PLAYER_END + 0x829, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_LOCAL_FLAGS = PLAYER_END + 0x82A, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BYTES = PLAYER_END + 0x82B, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PVP_MEDALS = PLAYER_END + 0x82C, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BUYBACK_PRICE = PLAYER_END + 0x82D, // Size: 12, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP = PLAYER_END + 0x839, // Size: 12, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_KILLS = PLAYER_END + 0x845, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS = PLAYER_END + 0x846, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX = PLAYER_END + 0x847, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_COMBAT_RATING = PLAYER_END + 0x848, // Size: 32, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO = PLAYER_END + 0x868, // Size: 54, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MAX_LEVEL = PLAYER_END + 0x89E, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA = PLAYER_END + 0x89F, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MAX_CREATURE_SCALING_LEVEL = PLAYER_END + 0x8A0, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_NO_REAGENT_COST = PLAYER_END + 0x8A1, // Size: 4, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PET_SPELL_POWER = PLAYER_END + 0x8A5, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE = PLAYER_END + 0x8A6, // Size: 2, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_UI_HIT_MODIFIER = PLAYER_END + 0x8A8, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_UI_SPELL_HIT_MODIFIER = PLAYER_END + 0x8A9, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_HOME_REALM_TIME_OFFSET = PLAYER_END + 0x8AA, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_PET_HASTE = PLAYER_END + 0x8AB, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BYTES2 = PLAYER_END + 0x8AC, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BYTES3 = PLAYER_END + 0x8AD, // Size: 1, Flags: PUBLIC, URGENT_SELF_ONLY + ACTIVE_PLAYER_FIELD_LFG_BONUS_FACTION_ID = PLAYER_END + 0x8AE, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_LOOT_SPEC_ID = PLAYER_END + 0x8AF, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_OVERRIDE_ZONE_PVP_TYPE = PLAYER_END + 0x8B0, // Size: 1, Flags: PUBLIC, URGENT_SELF_ONLY + ACTIVE_PLAYER_FIELD_BAG_SLOT_FLAGS = PLAYER_END + 0x8B1, // Size: 4, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS = PLAYER_END + 0x8B5, // Size: 7, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_INSERT_ITEMS_LEFT_TO_RIGHT = PLAYER_END + 0x8BC, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_QUEST_COMPLETED = PLAYER_END + 0x8BD, // Size: 1750, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_HONOR = PLAYER_END + 0xF93, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL = PLAYER_END + 0xF94, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PVP_TIER_MAX_FROM_WINS = PLAYER_END + 0xF95, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PVP_LAST_WEEKS_TIER_MAX_FROM_WINS = PLAYER_END + 0xF96, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_END = PLAYER_END + 0xF97, +}; + +enum ActivePlayerDynamicField +{ + ACTIVE_PLAYER_DYNAMIC_FIELD_RESERACH_SITE = PLAYER_DYNAMIC_END + 0x000, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS = PLAYER_DYNAMIC_END + 0x001, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS = PLAYER_DYNAMIC_END + 0x002, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_AVAILABLE_QUEST_LINE_X_QUEST_ID = PLAYER_DYNAMIC_END + 0x003, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS = PLAYER_DYNAMIC_END + 0x005, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS = PLAYER_DYNAMIC_END + 0x006, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_TOYS = PLAYER_DYNAMIC_END + 0x007, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_TRANSMOG = PLAYER_DYNAMIC_END + 0x008, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG = PLAYER_DYNAMIC_END + 0x009, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS = PLAYER_DYNAMIC_END + 0x00A, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_CHARACTER_RESTRICTIONS = PLAYER_DYNAMIC_END + 0x00B, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_SPELL_PCT_MOD_BY_LABEL = PLAYER_DYNAMIC_END + 0x00C, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_SPELL_FLAT_MOD_BY_LABEL = PLAYER_DYNAMIC_END + 0x00D, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_RESERACH = PLAYER_DYNAMIC_END + 0x00E, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_END = PLAYER_DYNAMIC_END + 0x00F, }; enum GameObjectFields { GAMEOBJECT_FIELD_CREATED_BY = OBJECT_END + 0x000, // Size: 4, Flags: PUBLIC - GAMEOBJECT_DISPLAYID = OBJECT_END + 0x004, // Size: 1, Flags: DYNAMIC, URGENT - GAMEOBJECT_FLAGS = OBJECT_END + 0x005, // Size: 1, Flags: PUBLIC, URGENT - GAMEOBJECT_PARENTROTATION = OBJECT_END + 0x006, // Size: 4, Flags: PUBLIC - GAMEOBJECT_FACTION = OBJECT_END + 0x00A, // Size: 1, Flags: PUBLIC - GAMEOBJECT_LEVEL = OBJECT_END + 0x00B, // Size: 1, Flags: PUBLIC - GAMEOBJECT_BYTES_1 = OBJECT_END + 0x00C, // Size: 1, Flags: PUBLIC, URGENT - GAMEOBJECT_SPELL_VISUAL_ID = OBJECT_END + 0x00D, // Size: 1, Flags: PUBLIC, DYNAMIC, URGENT - GAMEOBJECT_STATE_SPELL_VISUAL_ID = OBJECT_END + 0x00E, // Size: 1, Flags: DYNAMIC, URGENT - GAMEOBJECT_STATE_ANIM_ID = OBJECT_END + 0x00F, // Size: 1, Flags: DYNAMIC, URGENT - GAMEOBJECT_STATE_ANIM_KIT_ID = OBJECT_END + 0x010, // Size: 1, Flags: DYNAMIC, URGENT - GAMEOBJECT_STATE_WORLD_EFFECT_ID = OBJECT_END + 0x011, // Size: 4, Flags: DYNAMIC, URGENT - GAMEOBJECT_END = OBJECT_END + 0x015, + GAMEOBJECT_FIELD_GUILD_GUID = OBJECT_END + 0x004, // Size: 4, Flags: PUBLIC + GAMEOBJECT_DISPLAYID = OBJECT_END + 0x008, // Size: 1, Flags: DYNAMIC, URGENT + GAMEOBJECT_FLAGS = OBJECT_END + 0x009, // Size: 1, Flags: PUBLIC, URGENT + GAMEOBJECT_PARENTROTATION = OBJECT_END + 0x00A, // Size: 4, Flags: PUBLIC + GAMEOBJECT_FACTION = OBJECT_END + 0x00E, // Size: 1, Flags: PUBLIC + GAMEOBJECT_LEVEL = OBJECT_END + 0x00F, // Size: 1, Flags: PUBLIC + GAMEOBJECT_BYTES_1 = OBJECT_END + 0x010, // Size: 1, Flags: PUBLIC, URGENT + GAMEOBJECT_SPELL_VISUAL_ID = OBJECT_END + 0x011, // Size: 1, Flags: PUBLIC, DYNAMIC, URGENT + GAMEOBJECT_STATE_SPELL_VISUAL_ID = OBJECT_END + 0x012, // Size: 1, Flags: DYNAMIC, URGENT + GAMEOBJECT_STATE_ANIM_ID = OBJECT_END + 0x013, // Size: 1, Flags: DYNAMIC, URGENT + GAMEOBJECT_STATE_ANIM_KIT_ID = OBJECT_END + 0x014, // Size: 1, Flags: DYNAMIC, URGENT + GAMEOBJECT_STATE_WORLD_EFFECT_ID = OBJECT_END + 0x015, // Size: 4, Flags: DYNAMIC, URGENT + GAMEOBJECT_FIELD_CUSTOM_PARAM = OBJECT_END + 0x019, // Size: 1, Flags: PUBLIC, URGENT + GAMEOBJECT_END = OBJECT_END + 0x01A, }; enum GameObjectDynamicFields @@ -372,15 +414,16 @@ enum CorpseFields { CORPSE_FIELD_OWNER = OBJECT_END + 0x000, // Size: 4, Flags: PUBLIC CORPSE_FIELD_PARTY = OBJECT_END + 0x004, // Size: 4, Flags: PUBLIC - CORPSE_FIELD_DISPLAY_ID = OBJECT_END + 0x008, // Size: 1, Flags: PUBLIC - CORPSE_FIELD_ITEM = OBJECT_END + 0x009, // Size: 19, Flags: PUBLIC - CORPSE_FIELD_BYTES_1 = OBJECT_END + 0x01C, // Size: 1, Flags: PUBLIC - CORPSE_FIELD_BYTES_2 = OBJECT_END + 0x01D, // Size: 1, Flags: PUBLIC - CORPSE_FIELD_FLAGS = OBJECT_END + 0x01E, // Size: 1, Flags: PUBLIC - CORPSE_FIELD_DYNAMIC_FLAGS = OBJECT_END + 0x01F, // Size: 1, Flags: DYNAMIC - CORPSE_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x020, // Size: 1, Flags: PUBLIC - CORPSE_FIELD_CUSTOM_DISPLAY_OPTION = OBJECT_END + 0x021, // Size: 1, Flags: PUBLIC - CORPSE_END = OBJECT_END + 0x022, + CORPSE_FIELD_GUILD_GUID = OBJECT_END + 0x008, // Size: 4, Flags: PUBLIC + CORPSE_FIELD_DISPLAY_ID = OBJECT_END + 0x00C, // Size: 1, Flags: PUBLIC + CORPSE_FIELD_ITEM = OBJECT_END + 0x00D, // Size: 19, Flags: PUBLIC + CORPSE_FIELD_BYTES_1 = OBJECT_END + 0x020, // Size: 1, Flags: PUBLIC + CORPSE_FIELD_BYTES_2 = OBJECT_END + 0x021, // Size: 1, Flags: PUBLIC + CORPSE_FIELD_FLAGS = OBJECT_END + 0x022, // Size: 1, Flags: PUBLIC + CORPSE_FIELD_DYNAMIC_FLAGS = OBJECT_END + 0x023, // Size: 1, Flags: DYNAMIC + CORPSE_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x024, // Size: 1, Flags: PUBLIC + CORPSE_FIELD_CUSTOM_DISPLAY_OPTION = OBJECT_END + 0x025, // Size: 1, Flags: PUBLIC + CORPSE_END = OBJECT_END + 0x026, }; enum CorpseDynamicFields diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 3e08a2ad31f..67fa6c00554 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -889,7 +889,7 @@ bool Guardian::InitStatsForLevel(uint8 petlevel) SetPowerType(POWER_ENERGY); else if (IsPetImp() || IsPetFelhunter() || IsPetVoidwalker() || IsPetSuccubus() || IsPetDoomguard() || IsPetFelguard()) // Warlock pets have energy (since 5.x) SetPowerType(POWER_ENERGY); - else + else SetPowerType(POWER_MANA); // Damage @@ -899,8 +899,8 @@ bool Guardian::InitStatsForLevel(uint8 petlevel) case SUMMON_PET: { // the damage bonus used for pets is either fire or shadow damage, whatever is higher - int32 fire = GetOwner()->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE); - int32 shadow = GetOwner()->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW); + int32 fire = GetOwner()->GetUInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE); + int32 shadow = GetOwner()->GetUInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW); int32 val = (fire > shadow) ? fire : shadow; if (val < 0) val = 0; diff --git a/src/server/game/Entities/Player/CollectionMgr.cpp b/src/server/game/Entities/Player/CollectionMgr.cpp index eb4834967ba..6aff0ca300a 100644 --- a/src/server/game/Entities/Player/CollectionMgr.cpp +++ b/src/server/game/Entities/Player/CollectionMgr.cpp @@ -81,14 +81,14 @@ CollectionMgr::~CollectionMgr() void CollectionMgr::LoadToys() { for (auto const& t : _toys) - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_TOYS, t.first); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_TOYS, t.first); } bool CollectionMgr::AddToy(uint32 itemId, bool isFavourite /*= false*/) { if (UpdateAccountToys(itemId, isFavourite)) { - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_TOYS, itemId); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_TOYS, itemId); return true; } @@ -204,8 +204,8 @@ void CollectionMgr::LoadHeirlooms() { for (auto const& item : _heirlooms) { - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOMS, item.first); - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, item.second.flags); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS, item.first); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, item.second.flags); } } @@ -213,8 +213,8 @@ void CollectionMgr::AddHeirloom(uint32 itemId, uint32 flags) { if (UpdateAccountHeirlooms(itemId, flags)) { - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOMS, itemId); - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, flags); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS, itemId); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, flags); } } @@ -255,10 +255,10 @@ void CollectionMgr::UpgradeHeirloom(uint32 itemId, int32 castItem) item->AddBonuses(bonusId); // Get heirloom offset to update only one part of dynamic field - std::vector const& fields = player->GetDynamicValues(PLAYER_DYNAMIC_FIELD_HEIRLOOMS); + std::vector const& fields = player->GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS); uint16 offset = uint16(std::find(fields.begin(), fields.end(), itemId) - fields.begin()); - player->SetDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, offset, flags); + player->SetDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, offset, flags); itr->second.flags = flags; itr->second.bonusId = bonusId; } @@ -295,11 +295,11 @@ void CollectionMgr::CheckHeirloomUpgrades(Item* item) if (newItemId) { - std::vector const& fields = player->GetDynamicValues(PLAYER_DYNAMIC_FIELD_HEIRLOOMS); + std::vector const& fields = player->GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS); uint16 offset = uint16(std::find(fields.begin(), fields.end(), itr->first) - fields.begin()); - player->SetDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOMS, offset, newItemId); - player->SetDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, offset, 0); + player->SetDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS, offset, newItemId); + player->SetDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, offset, 0); _heirlooms.erase(itr); _heirlooms[newItemId] = 0; @@ -460,11 +460,11 @@ void CollectionMgr::LoadItemAppearances() { boost::to_block_range(*_appearances, DynamicBitsetBlockOutputIterator([this](uint32 blockValue) { - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_TRANSMOG, blockValue); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_TRANSMOG, blockValue); })); for (auto itr = _temporaryAppearances.begin(); itr != _temporaryAppearances.end(); ++itr) - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itr->first); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itr->first); } void CollectionMgr::LoadAccountItemAppearances(PreparedQueryResult knownAppearances, PreparedQueryResult favoriteAppearances) @@ -738,18 +738,18 @@ void CollectionMgr::AddItemAppearance(ItemModifiedAppearanceEntry const* itemMod _appearances->resize(itemModifiedAppearance->ID + 1); numBlocks = _appearances->num_blocks() - numBlocks; while (numBlocks--) - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_TRANSMOG, 0); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_TRANSMOG, 0); } _appearances->set(itemModifiedAppearance->ID); uint32 blockIndex = itemModifiedAppearance->ID / 32; uint32 bitIndex = itemModifiedAppearance->ID % 32; - uint32 currentMask = _owner->GetPlayer()->GetDynamicValue(PLAYER_DYNAMIC_FIELD_TRANSMOG, blockIndex); - _owner->GetPlayer()->SetDynamicValue(PLAYER_DYNAMIC_FIELD_TRANSMOG, blockIndex, currentMask | (1 << bitIndex)); + uint32 currentMask = _owner->GetPlayer()->GetDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_TRANSMOG, blockIndex); + _owner->GetPlayer()->SetDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_TRANSMOG, blockIndex, currentMask | (1 << bitIndex)); auto temporaryAppearance = _temporaryAppearances.find(itemModifiedAppearance->ID); if (temporaryAppearance != _temporaryAppearances.end()) { - _owner->GetPlayer()->RemoveDynamicValue(PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itemModifiedAppearance->ID); + _owner->GetPlayer()->RemoveDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itemModifiedAppearance->ID); _temporaryAppearances.erase(temporaryAppearance); } @@ -770,7 +770,7 @@ void CollectionMgr::AddTemporaryAppearance(ObjectGuid const& itemGuid, ItemModif { std::unordered_set& itemsWithAppearance = _temporaryAppearances[itemModifiedAppearance->ID]; if (itemsWithAppearance.empty()) - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itemModifiedAppearance->ID); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itemModifiedAppearance->ID); itemsWithAppearance.insert(itemGuid); } @@ -788,7 +788,7 @@ void CollectionMgr::RemoveTemporaryAppearance(Item* item) itr->second.erase(item->GetGUID()); if (itr->second.empty()) { - _owner->GetPlayer()->RemoveDynamicValue(PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itemModifiedAppearance->ID); + _owner->GetPlayer()->RemoveDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itemModifiedAppearance->ID); _temporaryAppearances.erase(itr); } } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 39c79abdbe0..34609ed6698 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -140,8 +140,8 @@ Player::Player(WorldSession* session) : Unit(true), m_sceneMgr(this) m_objectType |= TYPEMASK_PLAYER; m_objectTypeId = TYPEID_PLAYER; - m_valuesCount = PLAYER_END; - _dynamicValuesCount = PLAYER_DYNAMIC_END; + m_valuesCount = ACTIVE_PLAYER_END; + _dynamicValuesCount = ACTIVE_PLAYER_DYNAMIC_END; m_session = session; @@ -468,7 +468,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_REGENERATE_POWER); SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 1.0f); // default for players in 3.0.3 - SetInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1)); // -1 is default value + SetInt32Value(ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1)); // -1 is default value SetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_SKIN_ID, createInfo->Skin); SetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_FACE_ID, createInfo->Face); @@ -477,23 +477,23 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_FACIAL_STYLE, createInfo->FacialHairStyle); for (uint32 i = 0; i < PLAYER_CUSTOM_DISPLAY_SIZE; ++i) SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_CUSTOM_DISPLAY_OPTION + i, createInfo->CustomDisplay[i]); - SetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_XP, (GetSession()->IsARecruiter() || GetSession()->GetRecruiterId() != 0) ? REST_STATE_RAF_LINKED : REST_STATE_NOT_RAF_LINKED); - SetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_HONOR, REST_STATE_NOT_RAF_LINKED); + SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + REST_STATE_XP, (GetSession()->IsARecruiter() || GetSession()->GetRecruiterId() != 0) ? REST_STATE_RAF_LINKED : REST_STATE_NOT_RAF_LINKED); + SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + REST_STATE_HONOR, REST_STATE_NOT_RAF_LINKED); SetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_GENDER, createInfo->Sex); SetByteValue(PLAYER_BYTES_4, PLAYER_BYTES_4_OFFSET_ARENA_FACTION, 0); SetInventorySlotCount(INVENTORY_DEFAULT_SIZE); - SetGuidValue(OBJECT_FIELD_DATA, ObjectGuid::Empty); + SetGuidValue(UNIT_FIELD_GUILD_GUID, ObjectGuid::Empty); SetUInt32Value(PLAYER_GUILDRANK, 0); SetGuildLevel(0); SetUInt32Value(PLAYER_GUILD_TIMESTAMP, 0); for (int i = 0; i < KNOWN_TITLES_SIZE; ++i) - SetUInt64Value(PLAYER__FIELD_KNOWN_TITLES + i, 0); // 0=disabled + SetUInt64Value(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + i, 0); // 0=disabled SetUInt32Value(PLAYER_CHOSEN_TITLE, 0); - SetUInt32Value(PLAYER_FIELD_KILLS, 0); - SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_KILLS, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 0); // set starting level uint32 start_level = sWorld->getIntConfig(CONFIG_START_PLAYER_LEVEL); @@ -527,7 +527,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac InitRunes(); - SetUInt64Value(PLAYER_FIELD_COINAGE, sWorld->getIntConfig(CONFIG_START_PLAYER_MONEY)); + SetUInt64Value(ACTIVE_PLAYER_FIELD_COINAGE, sWorld->getIntConfig(CONFIG_START_PLAYER_MONEY)); SetCurrency(CURRENCY_TYPE_APEXIS_CRYSTALS, sWorld->getIntConfig(CONFIG_CURRENCY_START_APEXIS_CRYSTALS)); SetCurrency(CURRENCY_TYPE_JUSTICE_POINTS, sWorld->getIntConfig(CONFIG_CURRENCY_START_JUSTICE_POINTS)); @@ -535,7 +535,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac if (sWorld->getBoolConfig(CONFIG_START_ALL_EXPLORED)) { for (uint16 i=0; iSendPacket(packet.Write()); - uint32 curXP = GetUInt32Value(PLAYER_XP); - uint32 nextLvlXP = GetUInt32Value(PLAYER_NEXT_LEVEL_XP); + uint32 curXP = GetUInt32Value(ACTIVE_PLAYER_FIELD_XP); + uint32 nextLvlXP = GetUInt32Value(ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP); uint32 newXP = curXP + xp + bonus_xp; while (newXP >= nextLvlXP && level < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)) @@ -2380,7 +2380,7 @@ void Player::GiveXP(uint32 xp, Unit* victim, float group_rate) GiveLevel(level + 1); level = getLevel(); - nextLvlXP = GetUInt32Value(PLAYER_NEXT_LEVEL_XP); + nextLvlXP = GetUInt32Value(ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP); } SetXP(newXP); @@ -2425,7 +2425,7 @@ void Player::GiveLevel(uint8 level) GetSession()->SendPacket(packet.Write()); - SetUInt32Value(PLAYER_NEXT_LEVEL_XP, sObjectMgr->GetXPForLevel(level)); + SetUInt32Value(ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP, sObjectMgr->GetXPForLevel(level)); //update level, max level of skills m_Played_time[PLAYED_TIME_LEVEL] = 0; // Level Played Time reset @@ -2489,8 +2489,8 @@ void Player::GiveLevel(uint8 level) { ++m_grantableLevels; - if (!HasByteFlag(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01)) - SetByteFlag(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01); + if (!HasByteFlag(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01)) + SetByteFlag(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01); } } } @@ -2520,7 +2520,7 @@ void Player::InitTalentForLevel() RemoveTalent(talent); } - SetUInt32Value(PLAYER_FIELD_MAX_TALENT_TIERS, talentTiers); + SetUInt32Value(ACTIVE_PLAYER_FIELD_MAX_TALENT_TIERS, talentTiers); if (!GetSession()->PlayerLoading()) SendTalentsInfoData(); // update at client @@ -2537,8 +2537,8 @@ void Player::InitStatsForLevel(bool reapplyMods) PlayerLevelInfo info; sObjectMgr->GetPlayerLevelInfo(getRace(), getClass(), getLevel(), &info); - SetUInt32Value(PLAYER_FIELD_MAX_LEVEL, sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)); - SetUInt32Value(PLAYER_NEXT_LEVEL_XP, sObjectMgr->GetXPForLevel(getLevel())); + SetUInt32Value(ACTIVE_PLAYER_FIELD_MAX_LEVEL, sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)); + SetUInt32Value(ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP, sObjectMgr->GetXPForLevel(getLevel())); // reset before any aura state sources (health set/aura apply) SetUInt32Value(UNIT_FIELD_AURASTATE, 0); @@ -2568,26 +2568,26 @@ void Player::InitStatsForLevel(bool reapplyMods) //set create powers SetCreateMana(basemana); - SetArmor(int32(m_createStats[STAT_AGILITY]*2)); + SetArmor(int32(m_createStats[STAT_AGILITY]*2), 0); InitStatBuffMods(); //reset rating fields values - for (uint16 index = PLAYER_FIELD_COMBAT_RATING_1; index < PLAYER_FIELD_COMBAT_RATING_1 + MAX_COMBAT_RATING; ++index) - SetUInt32Value(index, 0); + for (uint16 index = 0; index < MAX_COMBAT_RATING; ++index) + SetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + index, 0); - SetUInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS, 0); - SetFloatValue(PLAYER_FIELD_MOD_HEALING_PCT, 1.0f); - SetFloatValue(PLAYER_FIELD_MOD_HEALING_DONE_PCT, 1.0f); - SetFloatValue(PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT, 1.0f); + SetUInt32Value(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_POS, 0); + SetFloatValue(ACTIVE_PLAYER_FIELD_MOD_HEALING_PCT, 1.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_PCT, 1.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT, 1.0f); for (uint8 i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) { - SetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + i, 0); - SetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, 0); - SetFloatValue(PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i, 1.00f); + SetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + i, 0); + SetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, 0); + SetFloatValue(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i, 1.00f); } - SetFloatValue(PLAYER_FIELD_MOD_SPELL_POWER_PCT, 1.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_MOD_SPELL_POWER_PCT, 1.0f); //reset attack power, damage and attack speed fields for (uint8 i = BASE_ATTACK; i < MAX_ATTACK; ++i) @@ -2601,8 +2601,8 @@ void Player::InitStatsForLevel(bool reapplyMods) SetFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE, 0.0f); for (uint16 i = 0; i < 3; ++i) { - SetFloatValue(PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS + i, 1.0f); - SetFloatValue(PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS + i, 1.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS + i, 1.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS + i, 1.0f); } SetInt32Value(UNIT_FIELD_ATTACK_POWER, 0); @@ -2611,44 +2611,42 @@ void Player::InitStatsForLevel(bool reapplyMods) SetFloatValue(UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER, 0.0f); // Base crit values (will be recalculated in UpdateAllStats() at loading and in _ApplyAllStatBonuses() at reset - SetFloatValue(PLAYER_CRIT_PERCENTAGE, 0.0f); - SetFloatValue(PLAYER_OFFHAND_CRIT_PERCENTAGE, 0.0f); - SetFloatValue(PLAYER_RANGED_CRIT_PERCENTAGE, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_OFFHAND_CRIT_PERCENTAGE, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE, 0.0f); // Init spell schools (will be recalculated in UpdateAllStats() at loading and in _ApplyAllStatBonuses() at reset - SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1, 0.0f); - SetFloatValue(PLAYER_PARRY_PERCENTAGE, 0.0f); - SetFloatValue(PLAYER_BLOCK_PERCENTAGE, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE, 0.0f); // Static 30% damage blocked - SetUInt32Value(PLAYER_SHIELD_BLOCK, 30); + SetUInt32Value(ACTIVE_PLAYER_FIELD_SHIELD_BLOCK, 30); // Dodge percentage - SetFloatValue(PLAYER_DODGE_PERCENTAGE, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE, 0.0f); // set armor (resistance 0) to original value (create_agility*2) - SetArmor(int32(m_createStats[STAT_AGILITY]*2)); - SetResistanceBuffMods(SPELL_SCHOOL_NORMAL, true, 0.0f); - SetResistanceBuffMods(SPELL_SCHOOL_NORMAL, false, 0.0f); + SetArmor(int32(m_createStats[STAT_AGILITY]*2), 0); + SetBonusResistanceMod(SPELL_SCHOOL_NORMAL, 0); // set other resistance to original value (0) for (uint8 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) { SetResistance(SpellSchools(i), 0); - SetResistanceBuffMods(SpellSchools(i), true, 0.0f); - SetResistanceBuffMods(SpellSchools(i), false, 0.0f); + SetBonusResistanceMod(SpellSchools(i), 0); } - SetUInt32Value(PLAYER_FIELD_MOD_TARGET_RESISTANCE, 0); - SetUInt32Value(PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_MOD_TARGET_RESISTANCE, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE, 0); for (uint8 i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) { SetUInt32Value(UNIT_FIELD_POWER_COST_MODIFIER + i, 0); SetFloatValue(UNIT_FIELD_POWER_COST_MULTIPLIER + i, 0.0f); } // Reset no reagent cost field - for (uint8 i = 0; i < 3; ++i) - SetUInt32Value(PLAYER_NO_REAGENT_COST_1 + i, 0); + for (uint8 i = 0; i < 4; ++i) + SetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST + i, 0); // Init data for form but skip reapply item mods for form InitDataForForm(reapplyMods); @@ -2680,9 +2678,9 @@ void Player::InitStatsForLevel(bool reapplyMods) RemoveByteFlag(UNIT_FIELD_BYTES_2, UNIT_BYTES_2_OFFSET_PVP_FLAG, UNIT_BYTE2_FLAG_FFA_PVP | UNIT_BYTE2_FLAG_SANCTUARY); // restore if need some important flags - SetByteValue(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_IGNORE_POWER_REGEN_PREDICTION_MASK, 0); - SetByteValue(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, 0); - SetByteValue(PLAYER_FIELD_BYTES2, 3, 0); + SetByteValue(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_IGNORE_POWER_REGEN_PREDICTION_MASK, 0); + SetByteValue(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, 0); + SetByteValue(ACTIVE_PLAYER_FIELD_BYTES2, 3, 0); if (reapplyMods) // reapply stats values only on .reset stats (level) command _ApplyAllStatBonuses(); @@ -4299,7 +4297,7 @@ void Player::KillPlayer() //SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_IN_PVP); SetUInt32Value(OBJECT_DYNAMIC_FLAGS, UNIT_DYNFLAG_NONE); - ApplyModFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER, !sMapStore.LookupEntry(GetMapId())->Instanceable() && !HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)); + ApplyModFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER, !sMapStore.LookupEntry(GetMapId())->Instanceable() && !HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)); // 6 minutes until repop at graveyard m_deathTimer = 6 * MINUTE * IN_MILLISECONDS; @@ -4994,7 +4992,7 @@ float Player::GetRatingMultiplier(CombatRating cr) const float Player::GetRatingBonusValue(CombatRating cr) const { - float baseResult = float(GetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + cr)) * GetRatingMultiplier(cr); + float baseResult = float(GetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + cr)) * GetRatingMultiplier(cr); if (cr != CR_RESILIENCE_PLAYER_DAMAGE) return baseResult; return float(1.0f - pow(0.99f, baseResult)) * 100.0f; @@ -5006,9 +5004,9 @@ float Player::GetExpertiseDodgeOrParryReduction(WeaponAttackType attType) const switch (attType) { case BASE_ATTACK: - return baseExpertise + GetUInt32Value(PLAYER_EXPERTISE) / 4.0f; + return baseExpertise + GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPERTISE) / 4.0f; case OFF_ATTACK: - return baseExpertise + GetUInt32Value(PLAYER_OFFHAND_EXPERTISE) / 4.0f; + return baseExpertise + GetUInt32Value(ACTIVE_PLAYER_FIELD_OFFHAND_EXPERTISE) / 4.0f; default: break; } @@ -5039,8 +5037,8 @@ void Player::UpdateRating(CombatRating cr) if (amount < 0) amount = 0; - uint32 oldRating = GetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + cr); - SetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + cr, uint32(amount)); + uint32 oldRating = GetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + cr); + SetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + cr, uint32(amount)); bool affectStats = CanModifyStats(); @@ -5188,8 +5186,8 @@ bool Player::UpdateSkill(uint32 skill_id, uint32 step) uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; // itr->second.pos % 2 - uint16 value = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); - uint16 max = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); + uint16 value = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); + uint16 max = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); if (!max || !value || value >= max) return false; @@ -5200,7 +5198,7 @@ bool Player::UpdateSkill(uint32 skill_id, uint32 step) if (new_value > max) new_value = max; - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, new_value); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, new_value); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; @@ -5346,8 +5344,8 @@ bool Player::UpdateSkillPro(uint16 skillId, int32 chance, uint32 step) uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; // itr->second.pos % 2 - uint16 value = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); - uint16 max = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); + uint16 value = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); + uint16 max = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); if (!max || !value || value >= max) return false; @@ -5363,7 +5361,7 @@ bool Player::UpdateSkillPro(uint16 skillId, int32 chance, uint32 step) if (new_value > max) new_value = max; - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, new_value); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, new_value); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; @@ -5390,7 +5388,7 @@ void Player::ModifySkillBonus(uint32 skillid, int32 val, bool talent) if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return; - uint16 field = itr->second.pos / 2 + (talent ? PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET : PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET); + uint16 field = itr->second.pos / 2 + (talent ? ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET : ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET); uint8 offset = itr->second.pos & 1; // itr->second.pos % 2 uint16 bonus = GetUInt16Value(field, offset); @@ -5419,13 +5417,13 @@ void Player::UpdateSkillsForLevel() { if (!IsWeaponSkill(rcEntry->SkillID)) { - uint16 max = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); + uint16 max = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); /// update only level dependent max skill values if (max != 1) { - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, maxSkill); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxSkill); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, maxSkill); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxSkill); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; } @@ -5433,7 +5431,7 @@ void Player::UpdateSkillsForLevel() } // Update level dependent skillline spells - LearnSkillRewardedSpells(rcEntry->SkillID, GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset)); + LearnSkillRewardedSpells(rcEntry->SkillID, GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset)); } } @@ -5458,11 +5456,11 @@ void Player::UpdateSkillsToMaxSkillsForLevel() uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; // itr->second.pos % 2 - uint16 max = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); + uint16 max = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); if (max > 1) { - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, max); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, max); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; @@ -5485,7 +5483,7 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) { uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; // itr->second.pos % 2 - currVal = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); + currVal = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); if (newVal) { // if skill value is going down, update enchantments before setting the new value @@ -5493,10 +5491,10 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) UpdateSkillEnchantments(id, currVal, newVal); // update step - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); // update value - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, newVal); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxVal); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, newVal); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxVal); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; @@ -5514,12 +5512,12 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) //remove enchantments needing this skill UpdateSkillEnchantments(id, currVal, 0); // clear skill fields - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); // mark as deleted or simply remove from map if not saved yet if (itr->second.uState != SKILL_NEW) @@ -5534,10 +5532,10 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) RemoveSpell(sSpellMgr->GetFirstSpellInChain(pAbility->Spell)); // Clear profession lines - if (GetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1) == id) - SetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1, 0); - else if (GetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1 + 1) == id) - SetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1 + 1, 0); + if (GetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE) == id) + SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE, 0); + else if (GetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + 1) == id) + SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + 1, 0); } } else if (newVal) //add @@ -5548,7 +5546,7 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) uint16 field = i / 2; uint8 offset = i & 1; // i % 2 - if (!GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_ID_OFFSET + field, offset)) + if (!GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_ID_OFFSET + field, offset)) { SkillLineEntry const* skillEntry = sSkillLineStore.LookupEntry(id); if (!skillEntry) @@ -5558,18 +5556,18 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) return; } - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, id); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, id); if (skillEntry->CategoryID == SKILL_CATEGORY_PROFESSION) { - if (!GetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1)) - SetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1, id); - else if (!GetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1 + 1)) - SetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1 + 1, id); + if (!GetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE)) + SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE, id); + else if (!GetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + 1)) + SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + 1, id); } - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, newVal); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxVal); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, newVal); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxVal); UpdateSkillEnchantments(id, currVal, newVal); UpdateCriteria(CRITERIA_TYPE_REACH_SKILL_LEVEL, id); @@ -5585,8 +5583,8 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) mSkillStatus.insert(SkillStatusMap::value_type(id, SkillStatusData(i, SKILL_NEW))); // apply skill bonuses - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); // temporary bonuses AuraEffectList const& mModSkill = GetAuraEffectsByType(SPELL_AURA_MOD_SKILL); for (AuraEffectList::const_iterator j = mModSkill.begin(); j != mModSkill.end(); ++j) @@ -5629,7 +5627,7 @@ uint16 Player::GetSkillStep(uint16 skill) const if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return 0; - return GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_STEP_OFFSET + itr->second.pos / 2, itr->second.pos & 1); + return GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + itr->second.pos / 2, itr->second.pos & 1); } uint16 Player::GetSkillValue(uint32 skill) const @@ -5644,9 +5642,9 @@ uint16 Player::GetSkillValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - int32 result = int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset)); - result += int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset)); - result += int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset)); + int32 result = int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset)); + result += int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset)); + result += int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset)); return result < 0 ? 0 : result; } @@ -5662,9 +5660,9 @@ uint16 Player::GetMaxSkillValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - int32 result = int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset)); - result += int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset)); - result += int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset)); + int32 result = int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset)); + result += int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset)); + result += int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset)); return result < 0 ? 0 : result; } @@ -5680,7 +5678,7 @@ uint16 Player::GetPureMaxSkillValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - return GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); + return GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); } uint16 Player::GetBaseSkillValue(uint32 skill) const @@ -5695,8 +5693,8 @@ uint16 Player::GetBaseSkillValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - int32 result = int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset)); - result += int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset)); + int32 result = int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset)); + result += int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset)); return result < 0 ? 0 : result; } @@ -5712,7 +5710,7 @@ uint16 Player::GetPureSkillValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - return GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); + return GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); } int16 Player::GetSkillPermBonusValue(uint32 skill) const @@ -5727,7 +5725,7 @@ int16 Player::GetSkillPermBonusValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - return GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset); + return GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset); } int16 Player::GetSkillTempBonusValue(uint32 skill) const @@ -5742,7 +5740,7 @@ int16 Player::GetSkillTempBonusValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - return GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset); + return GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset); } void Player::SendActionButtons(uint32 state) const @@ -5977,11 +5975,11 @@ void Player::CheckAreaExploreAndOutdoor() } uint32 val = (uint32)(1 << (areaEntry->AreaBit % 32)); - uint32 currFields = GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset); + uint32 currFields = GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + offset); if (!(currFields & val)) { - SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, (uint32)(currFields | val)); + SetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + offset, (uint32)(currFields | val)); UpdateCriteria(CRITERIA_TYPE_EXPLORE_AREA); @@ -6256,14 +6254,14 @@ void Player::UpdateHonorFields() if (m_lastHonorUpdateTime >= yesterday) { // this is the first update today, reset today's contribution - uint16 killsToday = GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS); - SetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, 0); - SetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS, killsToday); + uint16 killsToday = GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS); + SetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS, killsToday); } else { // no honor/kills yesterday or today, reset - SetUInt32Value(PLAYER_FIELD_KILLS, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_KILLS, 0); } } @@ -6347,9 +6345,9 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto honor_f = std::ceil(Trinity::Honor::hk_honor_at_level_f(k_level) * (v_level - k_grey) / (k_level - k_grey)); // count the number of playerkills in one day - ApplyModUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, 1, true); + ApplyModUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, 1, true); // and those in a lifetime - ApplyModUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 1, true); + ApplyModUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 1, true); UpdateCriteria(CRITERIA_TYPE_EARN_HONORABLE_KILL); UpdateCriteria(CRITERIA_TYPE_HK_CLASS, victim->getClass()); UpdateCriteria(CRITERIA_TYPE_HK_RACE, victim->getRace()); @@ -6427,10 +6425,9 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto return true; } -void Player::_InitHonorLevelOnLoadFromDB(uint32 honor, uint32 honorLevel, uint32 prestigeLevel) +void Player::_InitHonorLevelOnLoadFromDB(uint32 honor, uint32 honorLevel) { SetUInt32Value(PLAYER_FIELD_HONOR_LEVEL, honorLevel); - SetUInt32Value(PLAYER_FIELD_PRESTIGE, prestigeLevel); UpdateHonorNextLevel(); AddHonorXP(honor); @@ -6462,8 +6459,8 @@ void Player::RewardPlayerWithRewardPack(RewardPackEntry const* rewardPackEntry) void Player::AddHonorXP(uint32 xp) { - uint32 currentHonorXP = GetUInt32Value(PLAYER_FIELD_HONOR); - uint32 nextHonorLevelXP = GetUInt32Value(PLAYER_FIELD_HONOR_NEXT_LEVEL); + uint32 currentHonorXP = GetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR); + uint32 nextHonorLevelXP = GetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL); uint32 newHonorXP = currentHonorXP + xp; uint32 honorLevel = GetHonorLevel(); @@ -6478,10 +6475,10 @@ void Player::AddHonorXP(uint32 xp) SetHonorLevel(honorLevel + 1); honorLevel = GetHonorLevel(); - nextHonorLevelXP = GetUInt32Value(PLAYER_FIELD_HONOR_NEXT_LEVEL); + nextHonorLevelXP = GetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL); } - SetUInt32Value(PLAYER_FIELD_HONOR, IsMaxHonorLevel() ? 0 : newHonorXP); + SetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR, IsMaxHonorLevel() ? 0 : newHonorXP); } void Player::SetHonorLevel(uint8 level) @@ -6501,7 +6498,7 @@ void Player::UpdateHonorNextLevel() // 5500 at honor level 1 // no idea what between here // 8800 at honor level ~14 (never goes above 8800) - SetUInt32Value(PLAYER_FIELD_HONOR_NEXT_LEVEL, 8800); + SetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL, 8800); } void Player::_LoadCurrency(PreparedQueryResult result) @@ -6842,12 +6839,11 @@ uint32 Player::GetCurrencyTotalCap(CurrencyTypesEntry const* currency) const void Player::SetInGuild(ObjectGuid::LowType guildId) { if (guildId) - SetGuidValue(OBJECT_FIELD_DATA, ObjectGuid::Create(guildId)); + SetGuidValue(UNIT_FIELD_GUILD_GUID, ObjectGuid::Create(guildId)); else - SetGuidValue(OBJECT_FIELD_DATA, ObjectGuid::Empty); + SetGuidValue(UNIT_FIELD_GUILD_GUID, ObjectGuid::Empty); ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_GUILD_LEVEL_ENABLED, guildId != 0); - SetUInt16Value(OBJECT_FIELD_TYPE, 1, guildId != 0); } ObjectGuid::LowType Player::GetGuildIdFromDB(ObjectGuid guid) @@ -6872,7 +6868,7 @@ uint8 Player::GetRankFromDB(ObjectGuid guid) void Player::SetArenaTeamInfoField(uint8 slot, ArenaTeamInfoType type, uint32 value) { - SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * ARENA_TEAM_END) + type, value); + SetUInt32Value(ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO + (slot * ARENA_TEAM_END) + type, value); } void Player::SetInArenaTeam(uint32 ArenaTeamId, uint8 slot, uint8 type) @@ -7461,6 +7457,9 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) case ITEM_MOD_MASTERY_RATING: ApplyRatingMod(CR_MASTERY, int32(val * combatRatingMultiplier), apply); break; + case ITEM_MOD_EXTRA_ARMOR: + HandleStatModifier(UNIT_MOD_ARMOR, TOTAL_VALUE, float(val), apply); + break; case ITEM_MOD_FIRE_RESISTANCE: HandleStatModifier(UNIT_MOD_RESISTANCE_FIRE, BASE_VALUE, float(val), apply); break; @@ -7542,29 +7541,7 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) } if (uint32 armor = item->GetArmor(this)) - { - UnitModifierType modType = TOTAL_VALUE; - if (proto->GetClass() == ITEM_CLASS_ARMOR) - { - switch (proto->GetSubClass()) - { - case ITEM_SUBCLASS_ARMOR_CLOTH: - case ITEM_SUBCLASS_ARMOR_LEATHER: - case ITEM_SUBCLASS_ARMOR_MAIL: - case ITEM_SUBCLASS_ARMOR_PLATE: - case ITEM_SUBCLASS_ARMOR_SHIELD: - modType = BASE_VALUE; - break; - } - } - - HandleStatModifier(UNIT_MOD_ARMOR, modType, float(armor), apply); - } - - /* - if (proto->GetArmorDamageModifier() > 0) - HandleStatModifier(UNIT_MOD_ARMOR, TOTAL_VALUE, float(proto->GetArmorDamageModifier()), apply); - */ + HandleStatModifier(UNIT_MOD_ARMOR, BASE_VALUE, float(armor), apply); WeaponAttackType attType = BASE_ATTACK; @@ -9934,7 +9911,7 @@ void Player::SetInventorySlotCount(uint8 slots) } } - SetByteValue(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_NUM_BACKPACK_SLOTS, slots); + SetByteValue(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_NUM_BACKPACK_SLOTS, slots); } bool Player::HasItemCount(uint32 item, uint32 count, bool inBankAlso) const @@ -11828,7 +11805,7 @@ Item* Player::_StoreItem(uint16 pos, Item* pItem, uint32 count, bool clone, bool if (!pBag) { m_items[slot] = pItem; - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), pItem->GetGUID()); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), pItem->GetGUID()); pItem->SetGuidValue(ITEM_FIELD_CONTAINED, GetGUID()); pItem->SetOwnerGUID(GetGUID()); @@ -12175,7 +12152,7 @@ void Player::VisualizeItem(uint8 slot, Item* pItem) GetName().c_str(), GetGUID().ToString().c_str(), slot, pItem->GetEntry()); m_items[slot] = pItem; - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), pItem->GetGUID()); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), pItem->GetGUID()); pItem->SetGuidValue(ITEM_FIELD_CONTAINED, GetGUID()); pItem->SetOwnerGUID(GetGUID()); pItem->SetSlot(slot); @@ -12255,7 +12232,7 @@ void Player::RemoveItem(uint8 bag, uint8 slot, bool update) } m_items[slot] = nullptr; - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); if (slot < EQUIPMENT_SLOT_END) { @@ -12357,7 +12334,7 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update) if (bag == INVENTORY_SLOT_BAG_0) { - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); // equipment and equipped bags can have applied bonuses if (slot < INVENTORY_SLOT_BAG_END) @@ -13326,7 +13303,7 @@ void Player::AddItemToBuyBackSlot(Item* pItem) // if current back slot non-empty search oldest or free if (m_items[slot]) { - uint32 oldest_time = GetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1); + uint32 oldest_time = GetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP); uint32 oldest_slot = BUYBACK_SLOT_START; for (uint32 i = BUYBACK_SLOT_START+1; i < BUYBACK_SLOT_END; ++i) @@ -13338,7 +13315,7 @@ void Player::AddItemToBuyBackSlot(Item* pItem) break; } - uint32 i_time = GetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1 + i - BUYBACK_SLOT_START); + uint32 i_time = GetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP + i - BUYBACK_SLOT_START); if (oldest_time > i_time) { @@ -13360,13 +13337,13 @@ void Player::AddItemToBuyBackSlot(Item* pItem) uint32 etime = uint32(base - m_logintime + (30 * 3600)); uint32 eslot = slot - BUYBACK_SLOT_START; - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), pItem->GetGUID()); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), pItem->GetGUID()); if (ItemTemplate const* proto = pItem->GetTemplate()) - SetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + eslot, proto->GetSellPrice() * pItem->GetCount()); + SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + eslot, proto->GetSellPrice() * pItem->GetCount()); else - SetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + eslot, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + eslot, 0); - SetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1 + eslot, (uint32)etime); + SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP + eslot, (uint32)etime); // move to next (for non filled list is move most optimized choice) if (m_currentBuybackSlot < BUYBACK_SLOT_END - 1) @@ -13400,9 +13377,9 @@ void Player::RemoveItemFromBuyBackSlot(uint32 slot, bool del) m_items[slot] = nullptr; uint32 eslot = slot - BUYBACK_SLOT_START; - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); - SetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + eslot, 0); - SetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1 + eslot, 0); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); + SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + eslot, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP + eslot, 0); // if current backslot is filled set to now free slot if (m_items[m_currentBuybackSlot]) @@ -15984,7 +15961,7 @@ bool Player::SatisfyQuestDay(Quest const* qInfo, bool /*msg*/) const return true; } - std::vector const& dailies = GetDynamicValues(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); + std::vector const& dailies = GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); for (uint32 dailyQuestId : dailies) if (dailyQuestId == qInfo->GetQuestId()) return false; @@ -16418,7 +16395,7 @@ void Player::SetQuestCompletedBit(uint32 questBit, bool completed) if (fieldOffset >= QUESTS_COMPLETED_BITS_SIZE) return; - ApplyModFlag(PLAYER_FIELD_QUEST_COMPLETED + ((questBit - 1) >> 5), 1 << ((questBit - 1) & 31), completed); + ApplyModFlag(ACTIVE_PLAYER_FIELD_QUEST_COMPLETED + ((questBit - 1) >> 5), 1 << ((questBit - 1) & 31), completed); } void Player::AreaExploredOrEventHappens(uint32 questId) @@ -17322,7 +17299,7 @@ void Player::_LoadDeclinedNames(PreparedQueryResult result) void Player::_LoadArenaTeamInfo(PreparedQueryResult result) { // arenateamid, played_week, played_season, personal_rating - memset((void*)&m_uint32Values[PLAYER_FIELD_ARENA_TEAM_INFO_1_1], 0, sizeof(uint32) * MAX_ARENA_SLOT * ARENA_TEAM_END); + memset((void*)&m_uint32Values[ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO], 0, sizeof(uint32) * MAX_ARENA_SLOT * ARENA_TEAM_END); uint16 personalRatingCache[] = {0, 0, 0}; @@ -17609,8 +17586,8 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) SetUInt32Value(UNIT_FIELD_LEVEL, fields[6].GetUInt8()); SetXP(fields[7].GetUInt32()); - _LoadIntoDataField(fields[66].GetString(), PLAYER_EXPLORED_ZONES_1, PLAYER_EXPLORED_ZONES_SIZE); - _LoadIntoDataField(fields[67].GetString(), PLAYER__FIELD_KNOWN_TITLES, KNOWN_TITLES_SIZE * 2); + _LoadIntoDataField(fields[66].GetString(), ACTIVE_PLAYER_FIELD_EXPLORED_ZONES, PLAYER_EXPLORED_ZONES_SIZE); + _LoadIntoDataField(fields[67].GetString(), ACTIVE_PLAYER_FIELD_KNOWN_TITLES, KNOWN_TITLES_SIZE * 2); SetObjectScale(1.0f); SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 1.0f); @@ -17642,7 +17619,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) SetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_INEBRIATION, fields[55].GetUInt8()); SetUInt32Value(PLAYER_FLAGS, fields[20].GetUInt32()); SetUInt32Value(PLAYER_FLAGS_EX, fields[21].GetUInt32()); - SetInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, fields[54].GetUInt32()); + SetInt32Value(ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX, fields[54].GetUInt32()); if (!ValidateAppearance( fields[3].GetUInt8(), // race @@ -17660,7 +17637,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) } // set which actionbars the client has active - DO NOT REMOVE EVER AGAIN (can be changed though, if it does change fieldwise) - SetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES, fields[68].GetUInt8()); + SetByteValue(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES, fields[68].GetUInt8()); m_fishingSteps = fields[72].GetUInt8(); @@ -17669,7 +17646,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) // cleanup inventory related item value fields (it will be filled correctly in _LoadInventory) for (uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; ++slot) { - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); SetVisibleItemSlot(slot, nullptr); delete m_items[slot]; @@ -17726,9 +17703,9 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) } _LoadCurrency(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_CURRENCY)); - SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, fields[50].GetUInt32()); - SetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, fields[51].GetUInt16()); - SetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS, fields[52].GetUInt16()); + SetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, fields[50].GetUInt32()); + SetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, fields[51].GetUInt16()); + SetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS, fields[52].GetUInt16()); _LoadBoundInstances(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_BOUND_INSTANCES)); _LoadInstanceTimeRestrictions(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_INSTANCE_LOCK_TIMES)); @@ -18058,14 +18035,14 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) SetGuidValue(UNIT_FIELD_CHARMEDBY, ObjectGuid::Empty); SetGuidValue(UNIT_FIELD_CHARM, ObjectGuid::Empty); SetGuidValue(UNIT_FIELD_SUMMON, ObjectGuid::Empty); - SetGuidValue(PLAYER_FARSIGHT, ObjectGuid::Empty); + SetGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT, ObjectGuid::Empty); SetCreatorGUID(ObjectGuid::Empty); RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FORCE_MOVEMENT); // reset some aura modifiers before aura apply - SetUInt32Value(PLAYER_TRACK_CREATURES, 0); - SetUInt32Value(PLAYER_TRACK_RESOURCES, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_TRACK_CREATURES, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_TRACK_RESOURCES, 0); // make sure the unit is considered out of combat for proper loading ClearInCombat(); @@ -18267,7 +18244,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) SetFlag(OBJECT_DYNAMIC_FLAGS, UNIT_DYNFLAG_REFER_A_FRIEND); if (m_grantableLevels > 0) - SetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01); + SetByteValue(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01); _LoadDeclinedNames(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_DECLINED_NAMES)); @@ -18284,9 +18261,9 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_GARRISON_FOLLOWER_ABILITIES))) _garrison = std::move(garrison); - _InitHonorLevelOnLoadFromDB(fields[73].GetUInt32(), fields[74].GetUInt32(), fields[75].GetUInt32()); + _InitHonorLevelOnLoadFromDB(fields[73].GetUInt32(), fields[74].GetUInt32()); - _restMgr->LoadRestBonus(REST_TYPE_HONOR, PlayerRestState(fields[76].GetUInt8()), fields[77].GetFloat()); + _restMgr->LoadRestBonus(REST_TYPE_HONOR, PlayerRestState(fields[75].GetUInt8()), fields[76].GetFloat()); if (time_diff > 0) { //speed collect rest bonus in offline, in logout, far from tavern, city (section/in hour) @@ -18527,7 +18504,7 @@ void Player::LoadCorpse(PreparedQueryResult result) { Field* fields = result->Fetch(); _corpseLocation.WorldRelocate(fields[0].GetUInt16(), fields[1].GetFloat(), fields[2].GetFloat(), fields[3].GetFloat(), fields[4].GetFloat()); - ApplyModFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER, !sMapStore.LookupEntry(_corpseLocation.GetMapId())->Instanceable()); + ApplyModFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER, !sMapStore.LookupEntry(_corpseLocation.GetMapId())->Instanceable()); } else ResurrectPlayer(0.5f); @@ -19252,7 +19229,7 @@ void Player::_LoadDailyQuestStatus(PreparedQueryResult result) if (!quest) continue; - AddDynamicValue(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS, quest_id); + AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS, quest_id); if (uint32 questBit = sDB2Manager.GetQuestUniqueBitFlag(quest_id)) SetQuestCompletedBit(questBit, true); @@ -19930,7 +19907,7 @@ void Player::SaveToDB(bool create /*=false*/) stmt->setUInt8(index++, getClass()); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_GENDER)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect stmt->setUInt8(index++, getLevel()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_XP)); stmt->setUInt64(index++, GetMoney()); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_SKIN_ID)); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_FACE_ID)); @@ -19941,7 +19918,7 @@ void Player::SaveToDB(bool create /*=false*/) stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_CUSTOM_DISPLAY_OPTION + i)); stmt->setUInt8(index++, GetInventorySlotCount()); stmt->setUInt8(index++, GetBankBagSlotCount()); - stmt->setUInt8(index++, uint8(GetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_XP))); + stmt->setUInt8(index++, uint8(GetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + REST_STATE_XP))); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FLAGS)); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FLAGS_EX)); stmt->setUInt16(index++, (uint16)GetMapId()); @@ -19986,11 +19963,11 @@ void Player::SaveToDB(bool create /*=false*/) ss << m_taxi.SaveTaxiDestinationsToString(); stmt->setString(index++, ss.str()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); + stmt->setUInt16(index++, GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS)); + stmt->setUInt16(index++, GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS)); stmt->setUInt32(index++, GetUInt32Value(PLAYER_CHOSEN_TITLE)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX)); stmt->setUInt8(index++, GetDrunkValue()); stmt->setUInt32(index++, GetHealth()); @@ -20016,7 +19993,7 @@ void Player::SaveToDB(bool create /*=false*/) ss.str(""); for (uint32 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i) - ss << GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + i) << ' '; + ss << GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + i) << ' '; stmt->setString(index++, ss.str()); ss.str(""); @@ -20041,10 +20018,10 @@ void Player::SaveToDB(bool create /*=false*/) ss.str(""); for (uint32 i = 0; i < KNOWN_TITLES_SIZE * 2; ++i) - ss << GetUInt32Value(PLAYER__FIELD_KNOWN_TITLES + i) << ' '; + ss << GetUInt32Value(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + i) << ' '; stmt->setString(index++, ss.str()); - stmt->setUInt8(index++, GetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES)); + stmt->setUInt8(index++, GetByteValue(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES)); stmt->setUInt32(index++, m_grantableLevels); stmt->setUInt32(index++, realm.Build); } @@ -20057,7 +20034,7 @@ void Player::SaveToDB(bool create /*=false*/) stmt->setUInt8(index++, getClass()); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_GENDER)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect stmt->setUInt8(index++, getLevel()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_XP)); stmt->setUInt64(index++, GetMoney()); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_SKIN_ID)); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_FACE_ID)); @@ -20068,7 +20045,7 @@ void Player::SaveToDB(bool create /*=false*/) stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_CUSTOM_DISPLAY_OPTION + i)); stmt->setUInt8(index++, GetInventorySlotCount()); stmt->setUInt8(index++, GetBankBagSlotCount()); - stmt->setUInt8(index++, uint8(GetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_XP))); + stmt->setUInt8(index++, uint8(GetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + REST_STATE_XP))); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FLAGS)); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FLAGS_EX)); @@ -20130,11 +20107,11 @@ void Player::SaveToDB(bool create /*=false*/) ss << m_taxi.SaveTaxiDestinationsToString(); stmt->setString(index++, ss.str()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); + stmt->setUInt16(index++, GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS)); + stmt->setUInt16(index++, GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS)); stmt->setUInt32(index++, GetUInt32Value(PLAYER_CHOSEN_TITLE)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX)); stmt->setUInt8(index++, GetDrunkValue()); stmt->setUInt32(index++, GetHealth()); @@ -20160,7 +20137,7 @@ void Player::SaveToDB(bool create /*=false*/) ss.str(""); for (uint32 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i) - ss << GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + i) << ' '; + ss << GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + i) << ' '; stmt->setString(index++, ss.str()); ss.str(""); @@ -20185,17 +20162,16 @@ void Player::SaveToDB(bool create /*=false*/) ss.str(""); for (uint32 i = 0; i < KNOWN_TITLES_SIZE*2; ++i) - ss << GetUInt32Value(PLAYER__FIELD_KNOWN_TITLES + i) << ' '; + ss << GetUInt32Value(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + i) << ' '; stmt->setString(index++, ss.str()); - stmt->setUInt8(index++, GetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES)); + stmt->setUInt8(index++, GetByteValue(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES)); stmt->setUInt32(index++, m_grantableLevels); stmt->setUInt8(index++, IsInWorld() && !GetSession()->PlayerLogout() ? 1 : 0); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_HONOR)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR)); stmt->setUInt32(index++, GetHonorLevel()); - stmt->setUInt32(index++, GetPrestigeLevel()); - stmt->setUInt8(index++, uint8(GetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_HONOR))); + stmt->setUInt8(index++, uint8(GetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + REST_STATE_HONOR))); stmt->setFloat(index++, finiteAlways(_restMgr->GetRestBonus(REST_TYPE_HONOR))); stmt->setUInt32(index++, realm.Build); @@ -20766,7 +20742,7 @@ void Player::_SaveDailyQuestStatus(SQLTransaction& trans) stmt->setUInt64(0, GetGUID().GetCounter()); trans->Append(stmt); - std::vector const& dailies = GetDynamicValues(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); + std::vector const& dailies = GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); for (uint32 questId : dailies) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_QUESTSTATUS_DAILY); @@ -20890,8 +20866,8 @@ void Player::_SaveSkills(SQLTransaction& trans) uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - uint16 value = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); - uint16 max = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); + uint16 value = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); + uint16 max = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); switch (itr->second.uState) { @@ -20985,18 +20961,18 @@ void Player::_SaveStats(SQLTransaction& trans) const stmt->setUInt32(index++, GetStat(Stats(i))); for (int i = 0; i < MAX_SPELL_SCHOOL; ++i) - stmt->setUInt32(index++, GetResistance(SpellSchools(i))); - - stmt->setFloat(index++, GetFloatValue(PLAYER_BLOCK_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_DODGE_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_PARRY_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_CRIT_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_RANGED_CRIT_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1)); + stmt->setUInt32(index++, GetResistance(SpellSchools(i)) + GetBonusResistanceMod(SpellSchools(i))); + + stmt->setFloat(index++, GetFloatValue(ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE)); + stmt->setFloat(index++, GetFloatValue(ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE)); + stmt->setFloat(index++, GetFloatValue(ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE)); + stmt->setFloat(index++, GetFloatValue(ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE)); + stmt->setFloat(index++, GetFloatValue(ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE)); + stmt->setFloat(index++, GetFloatValue(ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1)); stmt->setUInt32(index++, GetUInt32Value(UNIT_FIELD_ATTACK_POWER)); stmt->setUInt32(index++, GetUInt32Value(UNIT_FIELD_RANGED_ATTACK_POWER)); stmt->setUInt32(index++, GetBaseSpellPowerBonus()); - stmt->setUInt32(index, GetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + CR_RESILIENCE_PLAYER_DAMAGE)); + stmt->setUInt32(index, GetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + CR_RESILIENCE_PLAYER_DAMAGE)); trans->Append(stmt); } @@ -21010,10 +20986,10 @@ void Player::outDebugValues() const TC_LOG_DEBUG("entities.unit", "AGILITY is: \t\t%f\t\tSTRENGTH is: \t\t%f", GetStat(STAT_AGILITY), GetStat(STAT_STRENGTH)); TC_LOG_DEBUG("entities.unit", "INTELLECT is: \t\t%f", GetStat(STAT_INTELLECT)); TC_LOG_DEBUG("entities.unit", "STAMINA is: \t\t%f", GetStat(STAT_STAMINA)); - TC_LOG_DEBUG("entities.unit", "Armor is: \t\t%u\t\tBlock is: \t\t%f", GetArmor(), GetFloatValue(PLAYER_BLOCK_PERCENTAGE)); - TC_LOG_DEBUG("entities.unit", "HolyRes is: \t\t%u\t\tFireRes is: \t\t%u", GetResistance(SPELL_SCHOOL_HOLY), GetResistance(SPELL_SCHOOL_FIRE)); - TC_LOG_DEBUG("entities.unit", "NatureRes is: \t\t%u\t\tFrostRes is: \t\t%u", GetResistance(SPELL_SCHOOL_NATURE), GetResistance(SPELL_SCHOOL_FROST)); - TC_LOG_DEBUG("entities.unit", "ShadowRes is: \t\t%u\t\tArcaneRes is: \t\t%u", GetResistance(SPELL_SCHOOL_SHADOW), GetResistance(SPELL_SCHOOL_ARCANE)); + TC_LOG_DEBUG("entities.unit", "Armor is: \t\t%u\t\tBlock is: \t\t%f", GetArmor(), GetFloatValue(ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE)); + TC_LOG_DEBUG("entities.unit", "HolyRes is: \t\t%u\t\tFireRes is: \t\t%u", GetResistance(SPELL_SCHOOL_MASK_HOLY), GetResistance(SPELL_SCHOOL_MASK_FIRE)); + TC_LOG_DEBUG("entities.unit", "NatureRes is: \t\t%u\t\tFrostRes is: \t\t%u", GetResistance(SPELL_SCHOOL_MASK_NATURE), GetResistance(SPELL_SCHOOL_MASK_FROST)); + TC_LOG_DEBUG("entities.unit", "ShadowRes is: \t\t%u\t\tArcaneRes is: \t\t%u", GetResistance(SPELL_SCHOOL_MASK_SHADOW), GetResistance(SPELL_SCHOOL_MASK_ARCANE)); TC_LOG_DEBUG("entities.unit", "MIN_DAMAGE is: \t\t%f\tMAX_DAMAGE is: \t\t%f", GetFloatValue(UNIT_FIELD_MINDAMAGE), GetFloatValue(UNIT_FIELD_MAXDAMAGE)); TC_LOG_DEBUG("entities.unit", "MIN_OFFHAND_DAMAGE is: \t%f\tMAX_OFFHAND_DAMAGE is: \t%f", GetFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE), GetFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE)); TC_LOG_DEBUG("entities.unit", "MIN_RANGED_DAMAGE is: \t%f\tMAX_RANGED_DAMAGE is: \t%f", GetFloatValue(UNIT_FIELD_MINRANGEDDAMAGE), GetFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE)); @@ -23263,7 +23239,7 @@ bool Player::CanAlwaysSee(WorldObject const* obj) const if (m_unitMovedByMe == obj) return true; - ObjectGuid guid = GetGuidValue(PLAYER_FARSIGHT); + ObjectGuid guid = GetGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT); if (!guid.IsEmpty()) if (obj->GetGUID() == guid) return true; @@ -23535,7 +23511,7 @@ bool Player::HasEnoughMoney(int64 amount) const void Player::SetMoney(uint64 value) { - SetUInt64Value(PLAYER_FIELD_COINAGE, value); + SetUInt64Value(ACTIVE_PLAYER_FIELD_COINAGE, value); MoneyChanged(value); UpdateCriteria(CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED); } @@ -24182,7 +24158,7 @@ void Player::SetDailyQuestStatus(uint32 quest_id) { if (!qQuest->IsDFQuest()) { - AddDynamicValue(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS, quest_id); + AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS, quest_id); m_lastDailyQuestTime = time(nullptr); // last daily quest time m_DailyQuestChanged = true; } @@ -24200,7 +24176,7 @@ bool Player::IsDailyQuestDone(uint32 quest_id) bool found = false; if (sObjectMgr->GetQuestTemplate(quest_id)) { - std::vector const& dailies = GetDynamicValues(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); + std::vector const& dailies = GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); for (uint32 dailyQuestId : dailies) { if (dailyQuestId == quest_id) @@ -24238,15 +24214,15 @@ void Player::SetMonthlyQuestStatus(uint32 quest_id) void Player::DailyReset() { - for (uint32 questId : GetDynamicValues(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS)) + for (uint32 questId : GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS)) if (uint32 questBit = sDB2Manager.GetQuestUniqueBitFlag(questId)) SetQuestCompletedBit(questBit, false); WorldPackets::Quest::DailyQuestsReset dailyQuestsReset; - dailyQuestsReset.Count = int32(GetDynamicValues(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS).size()); + dailyQuestsReset.Count = int32(GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS).size()); SendDirectMessage(dailyQuestsReset.Write()); - ClearDynamicValue(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); + ClearDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); m_DFQuests.clear(); // Dungeon Finder Quests. @@ -24761,10 +24737,10 @@ bool Player::CanNoReagentCast(SpellInfo const* spellInfo) const // Check no reagent use mask flag128 noReagentMask; - noReagentMask[0] = GetUInt32Value(PLAYER_NO_REAGENT_COST_1); - noReagentMask[1] = GetUInt32Value(PLAYER_NO_REAGENT_COST_1 + 1); - noReagentMask[2] = GetUInt32Value(PLAYER_NO_REAGENT_COST_1 + 2); - noReagentMask[3] = GetUInt32Value(PLAYER_NO_REAGENT_COST_1 + 3); + noReagentMask[0] = GetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST); + noReagentMask[1] = GetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST + 1); + noReagentMask[2] = GetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST + 2); + noReagentMask[3] = GetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST + 3); if (spellInfo->SpellFamilyFlags & noReagentMask) return true; @@ -24805,7 +24781,7 @@ void Player::RemoveItemDependentAurasAndCasts(Item* pItem) void Player::InitializeSelfResurrectionSpells() { - ClearDynamicValue(PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS); + ClearDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS); uint32 spells[3] = { }; @@ -24826,7 +24802,7 @@ void Player::InitializeSelfResurrectionSpells() for (uint32 selfResSpell : spells) if (selfResSpell) - AddDynamicValue(PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS, selfResSpell); + AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS, selfResSpell); } // Used in triggers for check "Only to targets that grant experience or honor" req @@ -25399,7 +25375,7 @@ void Player::SetViewpoint(WorldObject* target, bool apply) TC_LOG_DEBUG("maps", "Player::CreateViewpoint: Player '%s' (%s) creates seer (Entry: %u, TypeId: %u).", GetName().c_str(), GetGUID().ToString().c_str(), target->GetEntry(), target->GetTypeId()); - if (!AddGuidValue(PLAYER_FARSIGHT, target->GetGUID())) + if (!AddGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT, target->GetGUID())) { TC_LOG_FATAL("entities.player", "Player::CreateViewpoint: Player '%s' (%s) cannot add new viewpoint!", GetName().c_str(), GetGUID().ToString().c_str()); return; @@ -25416,7 +25392,7 @@ void Player::SetViewpoint(WorldObject* target, bool apply) { TC_LOG_DEBUG("maps", "Player::CreateViewpoint: Player %s removed seer", GetName().c_str()); - if (!RemoveGuidValue(PLAYER_FARSIGHT, target->GetGUID())) + if (!RemoveGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT, target->GetGUID())) { TC_LOG_FATAL("entities.player", "Player::CreateViewpoint: Player '%s' (%s) cannot remove current viewpoint!", GetName().c_str(), GetGUID().ToString().c_str()); return; @@ -25435,7 +25411,7 @@ void Player::SetViewpoint(WorldObject* target, bool apply) WorldObject* Player::GetViewpoint() const { - ObjectGuid guid = GetGuidValue(PLAYER_FARSIGHT); + ObjectGuid guid = GetGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT); if (!guid.IsEmpty()) return static_cast(ObjectAccessor::GetObjectByTypeMask(*this, guid, TYPEMASK_SEER)); return nullptr; @@ -25537,7 +25513,7 @@ bool Player::HasTitle(uint32 bitIndex) const uint32 fieldIndexOffset = bitIndex / 32; uint32 flag = 1 << (bitIndex % 32); - return HasFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag); + return HasFlag(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + fieldIndexOffset, flag); } bool Player::HasTitle(CharTitlesEntry const* title) const @@ -25552,17 +25528,17 @@ void Player::SetTitle(CharTitlesEntry const* title, bool lost) if (lost) { - if (!HasFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag)) + if (!HasFlag(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + fieldIndexOffset, flag)) return; - RemoveFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag); + RemoveFlag(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + fieldIndexOffset, flag); } else { - if (HasFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag)) + if (HasFlag(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + fieldIndexOffset, flag)) return; - SetFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag); + SetFlag(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + fieldIndexOffset, flag); } WorldPackets::Character::TitleEarned packet(lost ? SMSG_TITLE_LOST : SMSG_TITLE_EARNED); @@ -25841,7 +25817,7 @@ void Player::_LoadSkills(PreparedQueryResult result) uint16 field = count / 2; uint8 offset = count & 1; - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, skill); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, skill); uint16 step = 0; SkillLineEntry const* skillLine = sSkillLineStore.LookupEntry(rcEntry->SkillID); @@ -25855,15 +25831,15 @@ void Player::_LoadSkills(PreparedQueryResult result) step = max / 75; if (professionCount < 2) - SetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1 + professionCount++, skill); + SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + professionCount++, skill); } } - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, value); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, max); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, value); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, max); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); mSkillStatus.insert(SkillStatusMap::value_type(skill, SkillStatusData(count, SKILL_UNCHANGED))); loadedSkillValues[skill] = value; @@ -25892,12 +25868,12 @@ void Player::_LoadSkills(PreparedQueryResult result) uint16 field = count / 2; uint8 offset = count & 1; - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); } } @@ -26104,7 +26080,7 @@ TalentLearnResult Player::LearnTalent(uint32 talentId, int32* spellOnCooldown) return TALENT_FAILED_UNKNOWN; // check if we have enough talent points - if (talentInfo->TierID >= GetUInt32Value(PLAYER_FIELD_MAX_TALENT_TIERS)) + if (talentInfo->TierID >= GetUInt32Value(ACTIVE_PLAYER_FIELD_MAX_TALENT_TIERS)) return TALENT_FAILED_UNKNOWN; // TODO: prevent changing talents that are on cooldown diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 548efab34c1..8f1529db7c5 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -101,16 +101,23 @@ namespace WorldPackets typedef std::deque PlayerMails; -#define PLAYER_MAX_SKILLS 128 -enum SkillFieldOffset +#define PLAYER_MAX_SKILLS 256 + +template +constexpr std::size_t CalculateSkillFieldArraySize() +{ + return PLAYER_MAX_SKILLS / sizeof(uint32) * sizeof(SkillArrayType); +} + +enum SkillFieldOffset : uint16 { - SKILL_ID_OFFSET = 0, - SKILL_STEP_OFFSET = 64, - SKILL_RANK_OFFSET = SKILL_STEP_OFFSET + 64, - SUBSKILL_START_RANK_OFFSET = SKILL_RANK_OFFSET + 64, - SKILL_MAX_RANK_OFFSET = SUBSKILL_START_RANK_OFFSET + 64, - SKILL_TEMP_BONUS_OFFSET = SKILL_MAX_RANK_OFFSET + 64, - SKILL_PERM_BONUS_OFFSET = SKILL_TEMP_BONUS_OFFSET + 64 + SKILL_ID_OFFSET = 0, + SKILL_STEP_OFFSET = SKILL_ID_OFFSET + CalculateSkillFieldArraySize(), + SKILL_RANK_OFFSET = SKILL_STEP_OFFSET + CalculateSkillFieldArraySize(), + SUBSKILL_START_RANK_OFFSET = SKILL_RANK_OFFSET + CalculateSkillFieldArraySize(), + SKILL_MAX_RANK_OFFSET = SUBSKILL_START_RANK_OFFSET + CalculateSkillFieldArraySize(), + SKILL_TEMP_BONUS_OFFSET = SKILL_MAX_RANK_OFFSET + CalculateSkillFieldArraySize(), + SKILL_PERM_BONUS_OFFSET = SKILL_TEMP_BONUS_OFFSET + CalculateSkillFieldArraySize() }; #define PLAYER_EXPLORED_ZONES_SIZE 320 @@ -1189,7 +1196,7 @@ class TC_GAME_API Player : public Unit, public GridObject static bool IsChildEquipmentPos(uint8 bag, uint8 slot); bool IsValidPos(uint16 pos, bool explicit_pos) const { return IsValidPos(pos >> 8, pos & 255, explicit_pos); } bool IsValidPos(uint8 bag, uint8 slot, bool explicit_pos) const; - uint8 GetInventorySlotCount() const { return GetByteValue(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_NUM_BACKPACK_SLOTS); } + uint8 GetInventorySlotCount() const { return GetByteValue(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_NUM_BACKPACK_SLOTS); } void SetInventorySlotCount(uint8 slots); uint8 GetBankBagSlotCount() const { return GetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_BANK_BAG_SLOTS); } void SetBankBagSlotCount(uint8 count) { SetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_BANK_BAG_SLOTS, count); } @@ -1531,7 +1538,7 @@ class TC_GAME_API Player : public Unit, public GridObject void setRegenTimerCount(uint32 time) {m_regenTimerCount = time;} void setWeaponChangeTimer(uint32 time) {m_weaponChangeTimer = time;} - uint64 GetMoney() const { return GetUInt64Value(PLAYER_FIELD_COINAGE); } + uint64 GetMoney() const { return GetUInt64Value(ACTIVE_PLAYER_FIELD_COINAGE); } bool ModifyMoney(int64 amount, bool sendError = true); bool HasEnoughMoney(uint64 amount) const { return (GetMoney() >= amount); } bool HasEnoughMoney(int64 amount) const; @@ -1623,8 +1630,8 @@ class TC_GAME_API Player : public Unit, public GridObject std::string GetGuildName() const; // Loot Spec - void SetLootSpecId(uint32 id) { SetUInt32Value(PLAYER_FIELD_LOOT_SPEC_ID, id); } - uint32 GetLootSpecId() const { return GetUInt32Value(PLAYER_FIELD_LOOT_SPEC_ID); } + void SetLootSpecId(uint32 id) { SetUInt32Value(ACTIVE_PLAYER_FIELD_LOOT_SPEC_ID, id); } + uint32 GetLootSpecId() const { return GetUInt32Value(ACTIVE_PLAYER_FIELD_LOOT_SPEC_ID); } // Talents uint32 GetTalentResetCost() const { return _specializationInfo.ResetTalentsCost; } @@ -1671,8 +1678,8 @@ class TC_GAME_API Player : public Unit, public GridObject std::vector& GetGlyphs(uint8 spec) { return _specializationInfo.Glyphs[spec]; } ActionButtonList const& GetActionButtons() const { return m_actionButtons; } - uint32 GetFreePrimaryProfessionPoints() const { return GetUInt32Value(PLAYER_CHARACTER_POINTS); } - void SetFreePrimaryProfessions(uint16 profs) { SetUInt32Value(PLAYER_CHARACTER_POINTS, profs); } + uint32 GetFreePrimaryProfessionPoints() const { return GetUInt32Value(ACTIVE_PLAYER_FIELD_CHARACTER_POINTS); } + void SetFreePrimaryProfessions(uint16 profs) { SetUInt32Value(ACTIVE_PLAYER_FIELD_CHARACTER_POINTS, profs); } void InitPrimaryProfessions(); PlayerSpellMap const& GetSpellMap() const { return m_spells; } @@ -1757,7 +1764,7 @@ class TC_GAME_API Player : public Unit, public GridObject void SetGuildLevel(uint32 level) { SetUInt32Value(PLAYER_GUILDLEVEL, level); } uint32 GetGuildLevel() const { return GetUInt32Value(PLAYER_GUILDLEVEL); } void SetGuildIdInvited(ObjectGuid::LowType GuildId) { m_GuildIdInvited = GuildId; } - ObjectGuid::LowType GetGuildId() const { return GetUInt64Value(OBJECT_FIELD_DATA); /* return only lower part */ } + ObjectGuid::LowType GetGuildId() const { return GetUInt64Value(UNIT_FIELD_GUILD_GUID); /* return only lower part */ } Guild* GetGuild(); Guild const* GetGuild() const; static ObjectGuid::LowType GetGuildIdFromDB(ObjectGuid guid); @@ -1770,8 +1777,8 @@ class TC_GAME_API Player : public Unit, public GridObject void SetArenaTeamInfoField(uint8 slot, ArenaTeamInfoType type, uint32 value); static uint32 GetArenaTeamIdFromDB(ObjectGuid guid, uint8 slot); static void LeaveAllArenaTeams(ObjectGuid guid); - uint32 GetArenaTeamId(uint8 slot) const { return GetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * ARENA_TEAM_END) + ARENA_TEAM_ID); } - uint32 GetArenaPersonalRating(uint8 slot) const { return GetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * ARENA_TEAM_END) + ARENA_TEAM_PERSONAL_RATING); } + uint32 GetArenaTeamId(uint8 slot) const { return GetUInt32Value(ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO + (slot * ARENA_TEAM_END) + ARENA_TEAM_ID); } + uint32 GetArenaPersonalRating(uint8 slot) const { return GetUInt32Value(ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO + (slot * ARENA_TEAM_END) + ARENA_TEAM_PERSONAL_RATING); } void SetArenaTeamIdInvited(uint32 ArenaTeamId) { m_ArenaTeamIdInvited = ArenaTeamId; } uint32 GetArenaTeamIdInvited() const { return m_ArenaTeamIdInvited; } uint32 GetRBGPersonalRating() const { return 0; } @@ -1986,7 +1993,7 @@ class TC_GAME_API Player : public Unit, public GridObject void RestoreHealthAfterDuel() { SetHealth(healthBeforeDuel); } void RestoreManaAfterDuel() { SetPower(POWER_MANA, manaBeforeDuel); } - uint32 GetPrestigeLevel() const { return GetUInt32Value(PLAYER_FIELD_PRESTIGE); } + uint32 GetPrestigeLevel() const { return 0; } uint32 GetHonorLevel() const { return GetUInt32Value(PLAYER_FIELD_HONOR_LEVEL); } void AddHonorXP(uint32 xp); void SetHonorLevel(uint8 honorLevel); @@ -2008,7 +2015,7 @@ class TC_GAME_API Player : public Unit, public GridObject int32 CalculateCorpseReclaimDelay(bool load = false) const; void SendCorpseReclaimDelay(uint32 delay) const; - uint32 GetBlockPercent() const override { return GetUInt32Value(PLAYER_SHIELD_BLOCK); } + uint32 GetBlockPercent() const override { return GetUInt32Value(ACTIVE_PLAYER_FIELD_SHIELD_BLOCK); } bool CanParry() const { return m_canParry; } void SetCanParry(bool value); bool CanBlock() const { return m_canBlock; } @@ -2724,7 +2731,7 @@ class TC_GAME_API Player : public Unit, public GridObject std::unordered_map m_AELootView; - void _InitHonorLevelOnLoadFromDB(uint32 /*honor*/, uint32 /*honorLevel*/, uint32 /*prestigeLevel*/); + void _InitHonorLevelOnLoadFromDB(uint32 honor, uint32 honorLevel); std::unique_ptr _restMgr; bool _usePvpItemLevels; diff --git a/src/server/game/Entities/Player/RestMgr.cpp b/src/server/game/Entities/Player/RestMgr.cpp index a4309d79d54..fc100d36088 100644 --- a/src/server/game/Entities/Player/RestMgr.cpp +++ b/src/server/game/Entities/Player/RestMgr.cpp @@ -44,7 +44,7 @@ void RestMgr::SetRestBonus(RestTypes restType, float restBonus) rest_rested_offset = REST_RESTED_XP; rest_state_offset = REST_STATE_XP; - next_level_xp_field = PLAYER_NEXT_LEVEL_XP; + next_level_xp_field = ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP; affectedByRaF = true; break; case REST_TYPE_HONOR: @@ -54,7 +54,7 @@ void RestMgr::SetRestBonus(RestTypes restType, float restBonus) rest_rested_offset = REST_RESTED_HONOR; rest_state_offset = REST_STATE_HONOR; - next_level_xp_field = PLAYER_FIELD_HONOR_NEXT_LEVEL; + next_level_xp_field = ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL; break; default: return; @@ -72,17 +72,17 @@ void RestMgr::SetRestBonus(RestTypes restType, float restBonus) // update data for client if (affectedByRaF && _player->GetsRecruitAFriendBonus(true) && (_player->GetSession()->IsARecruiter() || _player->GetSession()->GetRecruiterId() != 0)) - _player->SetUInt32Value(PLAYER_FIELD_REST_INFO + rest_state_offset, REST_STATE_RAF_LINKED); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + rest_state_offset, REST_STATE_RAF_LINKED); else { if (_restBonus[restType] > 10) - _player->SetUInt32Value(PLAYER_FIELD_REST_INFO + rest_state_offset, REST_STATE_RESTED); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + rest_state_offset, REST_STATE_RESTED); else if (_restBonus[restType] <= 1) - _player->SetUInt32Value(PLAYER_FIELD_REST_INFO + rest_state_offset, REST_STATE_NOT_RAF_LINKED); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + rest_state_offset, REST_STATE_NOT_RAF_LINKED); } // RestTickUpdate - _player->SetUInt32Value(PLAYER_FIELD_REST_INFO + rest_rested_offset, uint32(_restBonus[restType])); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + rest_rested_offset, uint32(_restBonus[restType])); } void RestMgr::AddRestBonus(RestTypes restType, float restBonus) @@ -153,8 +153,8 @@ void RestMgr::Update(time_t now) void RestMgr::LoadRestBonus(RestTypes restType, PlayerRestState state, float restBonus) { _restBonus[restType] = restBonus; - _player->SetUInt32Value(PLAYER_FIELD_REST_INFO + restType * 2, state); - _player->SetUInt32Value(PLAYER_FIELD_REST_INFO + restType * 2 + 1, uint32(restBonus)); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + restType * 2, state); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + restType * 2 + 1, uint32(restBonus)); } float RestMgr::CalcExtraPerSec(RestTypes restType, float bubble) const @@ -162,9 +162,9 @@ float RestMgr::CalcExtraPerSec(RestTypes restType, float bubble) const switch (restType) { case REST_TYPE_HONOR: - return float(_player->GetUInt32Value(PLAYER_FIELD_HONOR_NEXT_LEVEL)) / 72000.0f * bubble; + return float(_player->GetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL)) / 72000.0f * bubble; case REST_TYPE_XP: - return float(_player->GetUInt32Value(PLAYER_NEXT_LEVEL_XP)) / 72000.0f * bubble; + return float(_player->GetUInt32Value(ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP)) / 72000.0f * bubble; default: return 0.0f; } diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 7e0d38c9875..6d940a91582 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -160,9 +160,9 @@ void Player::ApplySpellPowerBonus(int32 amount, bool apply) apply = _ModifyUInt32(apply, m_baseSpellPower, amount); // For speed just update for client - ApplyModUInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS, amount, apply); + ApplyModUInt32Value(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_POS, amount, apply); for (int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) - ApplyModUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, amount, apply); + ApplyModUInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, amount, apply); if (HasAuraType(SPELL_AURA_OVERRIDE_ATTACK_POWER_BY_SP_PCT)) { @@ -176,18 +176,18 @@ void Player::UpdateSpellDamageAndHealingBonus() // Magic damage modifiers implemented in Unit::SpellDamageBonusDone // This information for client side use only // Get healing bonus for all schools - SetStatInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS, SpellBaseHealingBonusDone(SPELL_SCHOOL_MASK_ALL)); + SetStatInt32Value(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_POS, SpellBaseHealingBonusDone(SPELL_SCHOOL_MASK_ALL)); // Get damage bonus for all schools Unit::AuraEffectList const& modDamageAuras = GetAuraEffectsByType(SPELL_AURA_MOD_DAMAGE_DONE); for (uint16 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) { - SetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + i, std::accumulate(modDamageAuras.begin(), modDamageAuras.end(), 0, [i](int32 negativeMod, AuraEffect const* aurEff) + SetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + i, std::accumulate(modDamageAuras.begin(), modDamageAuras.end(), 0, [i](int32 negativeMod, AuraEffect const* aurEff) { if (aurEff->GetAmount() < 0 && aurEff->GetMiscValue() & (1 << i)) negativeMod += aurEff->GetAmount(); return negativeMod; })); - SetStatInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, SpellBaseDamageBonusDone(SpellSchoolMask(1 << i)) - GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + i)); + SetStatInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, SpellBaseDamageBonusDone(SpellSchoolMask(1 << i)) - GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + i)); } if (HasAuraType(SPELL_AURA_OVERRIDE_ATTACK_POWER_BY_SP_PCT)) @@ -231,7 +231,7 @@ bool Player::UpdateAllStats() void Player::ApplySpellPenetrationBonus(int32 amount, bool apply) { - ApplyModInt32Value(PLAYER_FIELD_MOD_TARGET_RESISTANCE, -amount, apply); + ApplyModInt32Value(ACTIVE_PLAYER_FIELD_MOD_TARGET_RESISTANCE, -amount, apply); m_spellPenetrationItemMod += apply ? amount : -amount; } @@ -239,8 +239,7 @@ void Player::UpdateResistances(uint32 school) { if (school > SPELL_SCHOOL_NORMAL) { - float value = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school)); - SetResistance(SpellSchools(school), int32(value)); + Unit::UpdateResistances(school); Pet* pet = GetPet(); if (pet) @@ -255,6 +254,7 @@ void Player::UpdateArmor() UnitMods unitMod = UNIT_MOD_ARMOR; float value = GetModifierValue(unitMod, BASE_VALUE); // base armor (from items) + float baseValue = value; value *= GetModifierValue(unitMod, BASE_PCT); // armor percent from items value += GetModifierValue(unitMod, TOTAL_VALUE); @@ -268,7 +268,7 @@ void Player::UpdateArmor() value *= GetModifierValue(unitMod, TOTAL_PCT); - SetArmor(int32(value)); + SetArmor(int32(baseValue), int32(value - baseValue)); Pet* pet = GetPet(); if (pet) @@ -360,11 +360,11 @@ void Player::UpdateAttackPowerAndDamage(bool ranged) } else { - int32 minSpellPower = GetInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS); + int32 minSpellPower = GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_POS); for (int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) - minSpellPower = std::min(minSpellPower, GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i)); + minSpellPower = std::min(minSpellPower, GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i)); - val2 = CalculatePct(float(minSpellPower), GetFloatValue(PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT)); + val2 = CalculatePct(float(minSpellPower), GetFloatValue(ACTIVE_PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT)); } SetModifierValue(unitMod, BASE_VALUE, val2); @@ -488,7 +488,7 @@ void Player::UpdateBlockPercentage() value = value < 0.0f ? 0.0f : value; } - SetStatFloatValue(PLAYER_BLOCK_PERCENTAGE, value); + SetStatFloatValue(ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE, value); } void Player::UpdateCritPercentage(WeaponAttackType attType) @@ -501,18 +501,18 @@ void Player::UpdateCritPercentage(WeaponAttackType attType) { case OFF_ATTACK: modGroup = OFFHAND_CRIT_PERCENTAGE; - index = PLAYER_OFFHAND_CRIT_PERCENTAGE; + index = ACTIVE_PLAYER_FIELD_OFFHAND_CRIT_PERCENTAGE; cr = CR_CRIT_MELEE; break; case RANGED_ATTACK: modGroup = RANGED_CRIT_PERCENTAGE; - index = PLAYER_RANGED_CRIT_PERCENTAGE; + index = ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE; cr = CR_CRIT_RANGED; break; case BASE_ATTACK: default: modGroup = CRIT_PERCENTAGE; - index = PLAYER_CRIT_PERCENTAGE; + index = ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE; cr = CR_CRIT_MELEE; break; } @@ -545,13 +545,13 @@ void Player::UpdateMastery() { if (!CanUseMastery()) { - SetFloatValue(PLAYER_MASTERY, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_MASTERY, 0.0f); return; } float value = GetTotalAuraModifier(SPELL_AURA_MASTERY); value += GetRatingBonusValue(CR_MASTERY); - SetFloatValue(PLAYER_MASTERY, value); + SetFloatValue(ACTIVE_PLAYER_FIELD_MASTERY, value); ChrSpecializationEntry const* chrSpec = sChrSpecializationStore.LookupEntry(GetUInt32Value(PLAYER_FIELD_CURRENT_SPEC_ID)); if (!chrSpec) @@ -579,7 +579,7 @@ void Player::UpdateMastery() void Player::UpdateVersatilityDamageDone() { // No proof that CR_VERSATILITY_DAMAGE_DONE is allways = PLAYER_VERSATILITY - SetUInt32Value(PLAYER_VERSATILITY, GetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + CR_VERSATILITY_DAMAGE_DONE)); + SetUInt32Value(ACTIVE_PLAYER_FIELD_VERSATILITY, GetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + CR_VERSATILITY_DAMAGE_DONE)); if (getClass() == CLASS_HUNTER) UpdateDamagePhysical(RANGED_ATTACK); @@ -596,7 +596,7 @@ void Player::UpdateHealingDonePercentMod() for (AuraEffect const* auraEffect : GetAuraEffectsByType(SPELL_AURA_MOD_HEALING_DONE_PERCENT)) AddPct(value, auraEffect->GetAmount()); - SetStatFloatValue(PLAYER_FIELD_MOD_HEALING_DONE_PCT, value); + SetStatFloatValue(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_PCT, value); } const float m_diminishing_k[MAX_CLASSES] = @@ -651,7 +651,7 @@ void Player::UpdateParryPercentage() value = value < 0.0f ? 0.0f : value; } - SetStatFloatValue(PLAYER_PARRY_PERCENTAGE, value); + SetStatFloatValue(ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE, value); } void Player::UpdateDodgePercentage() @@ -686,7 +686,7 @@ void Player::UpdateDodgePercentage() value = value > sWorld->getFloatConfig(CONFIG_STATS_LIMITS_DODGE) ? sWorld->getFloatConfig(CONFIG_STATS_LIMITS_DODGE) : value; value = value < 0.0f ? 0.0f : value; - SetStatFloatValue(PLAYER_DODGE_PERCENTAGE, value); + SetStatFloatValue(ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE, value); } void Player::UpdateSpellCritChance() @@ -700,13 +700,13 @@ void Player::UpdateSpellCritChance() crit += GetRatingBonusValue(CR_CRIT_SPELL); // Store crit value - SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1, crit); + SetFloatValue(ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1, crit); } void Player::UpdateArmorPenetration(int32 amount) { // Store Rating Value - SetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + CR_ARMOR_PENETRATION, amount); + SetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + CR_ARMOR_PENETRATION, amount); } void Player::UpdateMeleeHitChances() @@ -746,10 +746,10 @@ void Player::UpdateExpertise(WeaponAttackType attack) switch (attack) { case BASE_ATTACK: - SetUInt32Value(PLAYER_EXPERTISE, expertise); + SetUInt32Value(ACTIVE_PLAYER_FIELD_EXPERTISE, expertise); break; case OFF_ATTACK: - SetUInt32Value(PLAYER_OFFHAND_EXPERTISE, expertise); + SetUInt32Value(ACTIVE_PLAYER_FIELD_OFFHAND_EXPERTISE, expertise); break; default: break; @@ -855,21 +855,11 @@ bool Creature::UpdateAllStats() return true; } -void Creature::UpdateResistances(uint32 school) -{ - if (school > SPELL_SCHOOL_NORMAL) - { - float value = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school)); - SetResistance(SpellSchools(school), int32(value)); - } - else - UpdateArmor(); -} - void Creature::UpdateArmor() { + float baseValue = GetModifierValue(UNIT_MOD_ARMOR, BASE_VALUE); float value = GetTotalAuraModValue(UNIT_MOD_ARMOR); - SetArmor(int32(value)); + SetArmor(int32(baseValue), int32(value - baseValue)); } void Creature::UpdateMaxHealth() @@ -1077,13 +1067,18 @@ void Guardian::UpdateResistances(uint32 school) { if (school > SPELL_SCHOOL_NORMAL) { - float value = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school)); + float baseValue = GetModifierValue(UnitMods(UNIT_MOD_RESISTANCE_START + school), BASE_VALUE); + float bonusValue = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school)) - baseValue; // hunter and warlock pets gain 40% of owner's resistance if (IsPet()) - value += float(CalculatePct(m_owner->GetResistance(SpellSchools(school)), 40)); + { + baseValue += float(CalculatePct(m_owner->GetResistance(SpellSchools(school)), 40)); + bonusValue += float(CalculatePct(m_owner->GetBonusResistanceMod(SpellSchools(school)), 40)); + } - SetResistance(SpellSchools(school), int32(value)); + SetResistance(SpellSchools(school), int32(baseValue)); + SetBonusResistanceMod(SpellSchools(school), int32(bonusValue)); } else UpdateArmor(); @@ -1091,6 +1086,7 @@ void Guardian::UpdateResistances(uint32 school) void Guardian::UpdateArmor() { + float baseValue = 0.0f; float value = 0.0f; float bonus_armor = 0.0f; UnitMods unitMod = UNIT_MOD_ARMOR; @@ -1102,11 +1098,12 @@ void Guardian::UpdateArmor() bonus_armor = m_owner->GetArmor(); value = GetModifierValue(unitMod, BASE_VALUE); + baseValue = value; value *= GetModifierValue(unitMod, BASE_PCT); value += GetModifierValue(unitMod, TOTAL_VALUE) + bonus_armor; value *= GetModifierValue(unitMod, TOTAL_PCT); - SetArmor(int32(value)); + SetArmor(int32(baseValue), int32(value - baseValue)); } void Guardian::UpdateMaxHealth() @@ -1186,8 +1183,8 @@ void Guardian::UpdateAttackPowerAndDamage(bool ranged) //demons benefit from warlocks shadow or fire damage else if (IsPet()) { - int32 fire = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); - int32 shadow = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW); + int32 fire = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); + int32 shadow = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW); int32 maximum = (fire > shadow) ? fire : shadow; if (maximum < 0) maximum = 0; @@ -1197,7 +1194,7 @@ void Guardian::UpdateAttackPowerAndDamage(bool ranged) //water elementals benefit from mage's frost damage else if (GetEntry() == ENTRY_WATER_ELEMENTAL) { - int32 frost = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FROST) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FROST); + int32 frost = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FROST) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FROST); if (frost < 0) frost = 0; SetBonusDamage(int32(frost * 0.4f)); @@ -1230,14 +1227,14 @@ void Guardian::UpdateDamagePhysical(WeaponAttackType attType) //force of nature if (GetEntry() == ENTRY_TREANT) { - int32 spellDmg = m_owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_NATURE) - m_owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_NATURE); + int32 spellDmg = m_owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_NATURE) - m_owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_NATURE); if (spellDmg > 0) bonusDamage = spellDmg * 0.09f; } //greater fire elemental else if (GetEntry() == ENTRY_FIRE_ELEMENTAL) { - int32 spellDmg = m_owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - m_owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); + int32 spellDmg = m_owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - m_owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); if (spellDmg > 0) bonusDamage = spellDmg * 0.4f; } @@ -1266,5 +1263,5 @@ void Guardian::SetBonusDamage(int32 damage) { m_bonusSpellDamage = damage; if (GetOwner()->GetTypeId() == TYPEID_PLAYER) - GetOwner()->SetUInt32Value(PLAYER_PET_SPELL_POWER, damage); + GetOwner()->SetUInt32Value(ACTIVE_PLAYER_FIELD_PET_SPELL_POWER, damage); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index e6567fb1ff2..6edf0663547 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2573,7 +2573,7 @@ float Unit::GetUnitDodgeChance(WeaponAttackType attType, Unit const* victim) con float chance = 0.0f; float levelBonus = 0.0f; if (victim->GetTypeId() == TYPEID_PLAYER) - chance = victim->GetFloatValue(PLAYER_DODGE_PERCENTAGE); + chance = victim->GetFloatValue(ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE); else { if (!victim->IsTotem()) @@ -2617,7 +2617,7 @@ float Unit::GetUnitParryChance(WeaponAttackType attType, Unit const* victim) con tmpitem = playerVictim->GetWeaponForAttack(OFF_ATTACK, true); if (tmpitem) - chance = playerVictim->GetFloatValue(PLAYER_PARRY_PERCENTAGE); + chance = playerVictim->GetFloatValue(ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE); } } else @@ -2666,7 +2666,7 @@ float Unit::GetUnitBlockChance(WeaponAttackType /*attType*/, Unit const* victim) { Item* tmpitem = playerVictim->GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND); if (tmpitem && !tmpitem->IsBroken() && tmpitem->GetTemplate()->GetInventoryType() == INVTYPE_SHIELD) - chance = playerVictim->GetFloatValue(PLAYER_BLOCK_PERCENTAGE); + chance = playerVictim->GetFloatValue(ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE); } } else @@ -2693,13 +2693,13 @@ float Unit::GetUnitCriticalChance(WeaponAttackType attackType, Unit const* victi switch (attackType) { case BASE_ATTACK: - chance = GetFloatValue(PLAYER_CRIT_PERCENTAGE); + chance = GetFloatValue(ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE); break; case OFF_ATTACK: - chance = GetFloatValue(PLAYER_OFFHAND_CRIT_PERCENTAGE); + chance = GetFloatValue(ACTIVE_PLAYER_FIELD_OFFHAND_CRIT_PERCENTAGE); break; case RANGED_ATTACK: - chance = GetFloatValue(PLAYER_RANGED_CRIT_PERCENTAGE); + chance = GetFloatValue(ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE); break; // Just for good manner default: @@ -4724,26 +4724,6 @@ int32 Unit::GetMaxNegativeAuraModifierByAffectMask(AuraType auratype, SpellInfo }); } -float Unit::GetResistanceBuffMods(SpellSchools school, bool positive) const -{ - return GetFloatValue(positive ? UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+school : UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+school); -} - -void Unit::SetResistanceBuffMods(SpellSchools school, bool positive, float val) -{ - SetFloatValue(positive ? UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+school : UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+school, val); -} - -void Unit::ApplyResistanceBuffModsMod(SpellSchools school, bool positive, float val, bool apply) -{ - ApplyModSignedFloatValue(positive ? UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+school : UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+school, val, apply); -} - -void Unit::ApplyResistanceBuffModsPercentMod(SpellSchools school, bool positive, float val, bool apply) -{ - ApplyPercentModFloatValue(positive ? UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+school : UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+school, val, apply); -} - void Unit::InitStatBuffMods() { for (uint8 i = STAT_STRENGTH; i < MAX_STATS; ++i) @@ -5899,7 +5879,7 @@ void Unit::SetMinion(Minion *minion, bool apply) { SetCritterGUID(minion->GetGUID()); if (GetTypeId() == TYPEID_PLAYER) - minion->SetGuidValue(UNIT_FIELD_BATTLE_PET_COMPANION_GUID, GetGuidValue(PLAYER_FIELD_SUMMONED_BATTLE_PET_ID)); + minion->SetGuidValue(UNIT_FIELD_BATTLE_PET_COMPANION_GUID, GetGuidValue(ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID)); } // PvP, FFAPvP @@ -6514,7 +6494,7 @@ float Unit::SpellDamagePctDone(Unit* victim, SpellInfo const* spellProto, Damage { for (uint32 i = 0; i < MAX_SPELL_SCHOOL; ++i) if (spellProto->GetSchoolMask() & (1 << i)) - maxModDamagePercentSchool = std::max(maxModDamagePercentSchool, GetFloatValue(PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i)); + maxModDamagePercentSchool = std::max(maxModDamagePercentSchool, GetFloatValue(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i)); } else maxModDamagePercentSchool = GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, spellProto->GetSchoolMask()); @@ -6654,7 +6634,7 @@ int32 Unit::SpellBaseDamageBonusDone(SpellSchoolMask schoolMask) const { if (GetTypeId() == TYPEID_PLAYER) { - float overrideSP = GetFloatValue(PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT); + float overrideSP = GetFloatValue(ACTIVE_PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT); if (overrideSP > 0.0f) return int32(CalculatePct(GetTotalAttackPowerValue(BASE_ATTACK), overrideSP) + 0.5f); } @@ -6734,7 +6714,7 @@ float Unit::GetUnitSpellCriticalChance(Unit* victim, SpellInfo const* spellProto crit_chance = 0.0f; // For other schools else if (GetTypeId() == TYPEID_PLAYER) - crit_chance = GetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1); + crit_chance = GetFloatValue(ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1); else crit_chance = (float)m_baseSpellCritChance; // taken @@ -6975,7 +6955,7 @@ float Unit::SpellHealingPctDone(Unit* /*victim*/, SpellInfo const* spellProto) c return 1.0f; if (IsPlayer()) - return GetFloatValue(PLAYER_FIELD_MOD_HEALING_DONE_PCT); + return GetFloatValue(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_PCT); float DoneTotalMod = 1.0f; @@ -7074,7 +7054,7 @@ int32 Unit::SpellBaseHealingBonusDone(SpellSchoolMask schoolMask) const { if (GetTypeId() == TYPEID_PLAYER) { - float overrideSP = GetFloatValue(PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT); + float overrideSP = GetFloatValue(ACTIVE_PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT); if (overrideSP > 0.0f) return int32(CalculatePct(GetTotalAttackPowerValue(BASE_ATTACK), overrideSP) + 0.5f); } @@ -7344,7 +7324,7 @@ uint32 Unit::MeleeDamageBonusDone(Unit* victim, uint32 pdamage, WeaponAttackType { for (uint32 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) if (spellProto->GetSchoolMask() & (1 << i)) - maxModDamagePercentSchool = std::max(maxModDamagePercentSchool, GetFloatValue(PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i)); + maxModDamagePercentSchool = std::max(maxModDamagePercentSchool, GetFloatValue(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i)); } else maxModDamagePercentSchool = GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, spellProto->GetSchoolMask()); @@ -9323,6 +9303,19 @@ Stats Unit::GetStatByAuraGroup(UnitMods unitMod) const return stat; } +void Unit::UpdateResistances(uint32 school) +{ + if (school > SPELL_SCHOOL_NORMAL) + { + UnitMods unitMod = UnitMods(UNIT_MOD_RESISTANCE_START + school); + + SetResistance(SpellSchools(school), int32(m_auraModifiersGroup[unitMod][BASE_VALUE])); + SetBonusResistanceMod(SpellSchools(school), int32(GetTotalAuraModValue(unitMod) - GetResistance(SpellSchools(school)))); + } + else + UpdateArmor(); +} + float Unit::GetTotalAttackPowerValue(WeaponAttackType attType) const { if (attType == RANGED_ATTACK) @@ -13106,15 +13099,17 @@ void Unit::SendClearTarget() SendMessageToSet(breakTarget.Write(), false); } -uint32 Unit::GetResistance(SpellSchoolMask mask) const +int32 Unit::GetResistance(SpellSchoolMask mask) const { - int32 resist = -1; + Optional resist; for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) - if (mask & (1 << i) && (resist < 0 || resist > int32(GetResistance(SpellSchools(i))))) - resist = int32(GetResistance(SpellSchools(i))); + { + int32 schoolResistance = GetResistance(SpellSchools(i)) + GetBonusResistanceMod(SpellSchools(i)); + if (mask & (1 << i) && (!resist || *resist > schoolResistance)) + resist = schoolResistance; + } - // resist value will never be negative here - return uint32(resist); + return resist ? *resist : 0; } void CharmInfo::SetIsCommandAttack(bool val) @@ -13658,7 +13653,7 @@ void Unit::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* target) if (target == this) visibleFlag |= UF_FLAG_PRIVATE; else if (GetTypeId() == TYPEID_PLAYER) - valCount = PLAYER_FIELD_END_NOT_SELF; + valCount = PLAYER_END; std::size_t blockCount = UpdateMask::GetBlockCount(valCount); @@ -13706,8 +13701,6 @@ void Unit::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* target) // FIXME: Some values at server stored in float format but must be sent to client in uint32 format // there are some float values which may be negative or can't get negative due to other checks else if ((index >= UNIT_FIELD_NEGSTAT && index < UNIT_FIELD_NEGSTAT + MAX_STATS) || - (index >= UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE && index < (UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE + MAX_SPELL_SCHOOL)) || - (index >= UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE && index < (UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE + MAX_SPELL_SCHOOL)) || (index >= UNIT_FIELD_POSSTAT && index < UNIT_FIELD_POSSTAT + MAX_STATS)) { *data << uint32(m_floatValues[index]); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 74e2ed60f77..94d2fa06c75 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1033,12 +1033,18 @@ class TC_GAME_API Unit : public WorldObject float GetStat(Stats stat) const { return float(GetUInt32Value(UNIT_FIELD_STAT+stat)); } void SetStat(Stats stat, int32 val) { SetStatInt32Value(UNIT_FIELD_STAT+stat, val); } - uint32 GetArmor() const { return GetResistance(SPELL_SCHOOL_NORMAL); } - void SetArmor(int32 val) { SetResistance(SPELL_SCHOOL_NORMAL, val); } + uint32 GetArmor() const { return GetResistance(SPELL_SCHOOL_NORMAL) + GetBonusResistanceMod(SPELL_SCHOOL_NORMAL); } + void SetArmor(int32 val, int32 bonusVal) + { + SetResistance(SPELL_SCHOOL_NORMAL, val); + SetBonusResistanceMod(SPELL_SCHOOL_NORMAL, bonusVal); + } - uint32 GetResistance(SpellSchools school) const { return GetUInt32Value(UNIT_FIELD_RESISTANCES+school); } - uint32 GetResistance(SpellSchoolMask mask) const; - void SetResistance(SpellSchools school, int32 val) { SetStatInt32Value(UNIT_FIELD_RESISTANCES+school, val); } + int32 GetResistance(SpellSchools school) const { return GetUInt32Value(UNIT_FIELD_RESISTANCES + school); } + int32 GetBonusResistanceMod(SpellSchools school) const { return GetUInt32Value(UNIT_FIELD_BONUS_RESISTANCE_MODS + school); } + int32 GetResistance(SpellSchoolMask mask) const; + void SetResistance(SpellSchools school, int32 val) { SetStatInt32Value(UNIT_FIELD_RESISTANCES + school, val); } + void SetBonusResistanceMod(SpellSchools school, int32 val) { SetStatInt32Value(UNIT_FIELD_BONUS_RESISTANCE_MODS + school, val); } uint64 GetHealth() const { return GetUInt64Value(UNIT_FIELD_HEALTH); } uint64 GetMaxHealth() const { return GetUInt64Value(UNIT_FIELD_MAXHEALTH); } @@ -1533,10 +1539,6 @@ class TC_GAME_API Unit : public WorldObject int32 GetMaxPositiveAuraModifierByAffectMask(AuraType auratype, SpellInfo const* affectedSpell) const; int32 GetMaxNegativeAuraModifierByAffectMask(AuraType auratype, SpellInfo const* affectedSpell) const; - float GetResistanceBuffMods(SpellSchools school, bool positive) const; - void SetResistanceBuffMods(SpellSchools school, bool positive, float val); - void ApplyResistanceBuffModsMod(SpellSchools school, bool positive, float val, bool apply); - void ApplyResistanceBuffModsPercentMod(SpellSchools school, bool positive, float val, bool apply); void InitStatBuffMods(); void ApplyStatBuffMod(Stats stat, float val, bool apply); void ApplyStatPercentBuffMod(Stats stat, float val, bool apply); @@ -1620,7 +1622,7 @@ class TC_GAME_API Unit : public WorldObject void SetCanModifyStats(bool modifyStats) { m_canModifyStats = modifyStats; } virtual bool UpdateStats(Stats stat) = 0; virtual bool UpdateAllStats() = 0; - virtual void UpdateResistances(uint32 school) = 0; + virtual void UpdateResistances(uint32 school); virtual void UpdateAllResistances(); virtual void UpdateArmor() = 0; virtual void UpdateMaxHealth() = 0; diff --git a/src/server/game/Handlers/BattlePetHandler.cpp b/src/server/game/Handlers/BattlePetHandler.cpp index 295b0c52a4d..ed439b8fab6 100644 --- a/src/server/game/Handlers/BattlePetHandler.cpp +++ b/src/server/game/Handlers/BattlePetHandler.cpp @@ -68,7 +68,7 @@ void WorldSession::HandleCageBattlePet(WorldPackets::BattlePet::CageBattlePet& c void WorldSession::HandleBattlePetSummon(WorldPackets::BattlePet::BattlePetSummon& battlePetSummon) { - if (_player->GetGuidValue(PLAYER_FIELD_SUMMONED_BATTLE_PET_ID) != battlePetSummon.PetGuid) + if (_player->GetGuidValue(ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID) != battlePetSummon.PetGuid) GetBattlePetMgr()->SummonPet(battlePetSummon.PetGuid); else GetBattlePetMgr()->DismissPet(); diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 1fc6af5ea00..bc3fb563a57 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1224,7 +1224,7 @@ void WorldSession::HandleTutorialFlag(WorldPackets::Misc::TutorialSetFlag& packe void WorldSession::HandleSetWatchedFactionOpcode(WorldPackets::Character::SetWatchedFaction& packet) { - GetPlayer()->SetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, packet.FactionIndex); + GetPlayer()->SetUInt32Value(ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX, packet.FactionIndex); } void WorldSession::HandleSetFactionInactiveOpcode(WorldPackets::Character::SetFactionInactive& packet) @@ -2342,7 +2342,7 @@ void WorldSession::HandleReorderCharacters(WorldPackets::Character::ReorderChara void WorldSession::HandleOpeningCinematic(WorldPackets::Misc::OpeningCinematic& /*packet*/) { // Only players that has not yet gained any experience can use this - if (_player->GetUInt32Value(PLAYER_XP)) + if (_player->GetUInt32Value(ACTIVE_PLAYER_FIELD_XP)) return; if (ChrClassesEntry const* classEntry = sChrClassesStore.LookupEntry(_player->getClass())) diff --git a/src/server/game/Handlers/InspectHandler.cpp b/src/server/game/Handlers/InspectHandler.cpp index 2d8c559de51..598f00c519f 100644 --- a/src/server/game/Handlers/InspectHandler.cpp +++ b/src/server/game/Handlers/InspectHandler.cpp @@ -97,9 +97,9 @@ void WorldSession::HandleRequestHonorStatsOpcode(WorldPackets::Inspect::RequestH WorldPackets::Inspect::InspectHonorStats honorStats; honorStats.PlayerGUID = request.TargetGUID; - honorStats.LifetimeHK = player->GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS); - honorStats.YesterdayHK = player->GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS); - honorStats.TodayHK = player->GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS); + honorStats.LifetimeHK = player->GetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS); + honorStats.YesterdayHK = player->GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS); + honorStats.TodayHK = player->GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS); honorStats.LifetimeMaxRank = 0; /// @todo SendPacket(honorStats.Write()); diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 0ba24d95ac9..b518001ce34 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -516,7 +516,7 @@ void WorldSession::HandleBuybackItem(WorldPackets::Item::BuyBackItem& packet) Item* pItem = _player->GetItemFromBuyBackSlot(packet.Slot); if (pItem) { - uint32 price = _player->GetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + packet.Slot - BUYBACK_SLOT_START); + uint32 price = _player->GetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + packet.Slot - BUYBACK_SLOT_START); if (!_player->HasEnoughMoney(uint64(price))) { _player->SendBuyError(BUY_ERR_NOT_ENOUGHT_MONEY, creature, pItem->GetEntry(), 0); diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 20081bd36bf..ec3307a0c6b 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -756,7 +756,7 @@ void WorldSession::HandleSetActionBarToggles(WorldPackets::Character::SetActionB return; } - GetPlayer()->SetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES, packet.Mask); + GetPlayer()->SetByteValue(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES, packet.Mask); } void WorldSession::HandlePlayedTime(WorldPackets::Character::RequestPlayedTime& packet) @@ -824,11 +824,11 @@ void WorldSession::HandleFarSightOpcode(WorldPackets::Misc::FarSight& packet) { if (packet.Enable) { - TC_LOG_DEBUG("network", "Added FarSight %s to %s", _player->GetGuidValue(PLAYER_FARSIGHT).ToString().c_str(), _player->GetGUID().ToString().c_str()); + TC_LOG_DEBUG("network", "Added FarSight %s to %s", _player->GetGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT).ToString().c_str(), _player->GetGUID().ToString().c_str()); if (WorldObject* target = _player->GetViewpoint()) _player->SetSeer(target); else - TC_LOG_DEBUG("network", "Player %s (%s) requests non-existing seer %s", _player->GetName().c_str(), _player->GetGUID().ToString().c_str(), _player->GetGuidValue(PLAYER_FARSIGHT).ToString().c_str()); + TC_LOG_DEBUG("network", "Player %s (%s) requests non-existing seer %s", _player->GetName().c_str(), _player->GetGUID().ToString().c_str(), _player->GetGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT).ToString().c_str()); } else { diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index ca011dfd61f..f6d4a7dad5f 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -466,7 +466,7 @@ void WorldSession::HandleSelfResOpcode(WorldPackets::Spells::SelfRes& selfRes) if (_player->HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)) return; // silent return, client should display error by itself and not send this opcode - std::vector const& selfResSpells = _player->GetDynamicValues(PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS); + std::vector const& selfResSpells = _player->GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS); if (std::find(selfResSpells.begin(), selfResSpells.end(), selfRes.SpellID) == selfResSpells.end()) return; @@ -474,7 +474,7 @@ void WorldSession::HandleSelfResOpcode(WorldPackets::Spells::SelfRes& selfRes) if (spellInfo) _player->CastSpell(_player, spellInfo, false, nullptr); - _player->RemoveDynamicValue(PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS, selfRes.SpellID); + _player->RemoveDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS, selfRes.SpellID); } void WorldSession::HandleSpellClick(WorldPackets::Spells::SpellClick& spellClick) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 44ad75b15af..bb427b5903c 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -5410,842 +5410,864 @@ enum class GameError : uint32 ERR_OUT_OF_RANGE = 149, ERR_PLAYER_DEAD = 150, ERR_CLIENT_LOCKED_OUT = 151, - ERR_KILLED_BY_S = 152, - ERR_LOOT_LOCKED = 153, - ERR_LOOT_TOO_FAR = 154, - ERR_LOOT_DIDNT_KILL = 155, - ERR_LOOT_BAD_FACING = 156, - ERR_LOOT_NOTSTANDING = 157, - ERR_LOOT_STUNNED = 158, - ERR_LOOT_NO_UI = 159, - ERR_LOOT_WHILE_INVULNERABLE = 160, - ERR_NO_LOOT = 161, - ERR_QUEST_ACCEPTED_S = 162, - ERR_QUEST_COMPLETE_S = 163, - ERR_QUEST_FAILED_S = 164, - ERR_QUEST_FAILED_BAG_FULL_S = 165, - ERR_QUEST_FAILED_MAX_COUNT_S = 166, - ERR_QUEST_FAILED_LOW_LEVEL = 167, - ERR_QUEST_FAILED_MISSING_ITEMS = 168, - ERR_QUEST_FAILED_WRONG_RACE = 169, - ERR_QUEST_FAILED_NOT_ENOUGH_MONEY = 170, - ERR_QUEST_FAILED_EXPANSION = 171, - ERR_QUEST_ONLY_ONE_TIMED = 172, - ERR_QUEST_NEED_PREREQS = 173, - ERR_QUEST_NEED_PREREQS_CUSTOM = 174, - ERR_QUEST_ALREADY_ON = 175, - ERR_QUEST_ALREADY_DONE = 176, - ERR_QUEST_ALREADY_DONE_DAILY = 177, - ERR_QUEST_HAS_IN_PROGRESS = 178, - ERR_QUEST_REWARD_EXP_I = 179, - ERR_QUEST_REWARD_MONEY_S = 180, - ERR_QUEST_MUST_CHOOSE = 181, - ERR_QUEST_LOG_FULL = 182, - ERR_COMBAT_DAMAGE_SSI = 183, - ERR_INSPECT_S = 184, - ERR_CANT_USE_ITEM = 185, - ERR_CANT_USE_ITEM_IN_ARENA = 186, - ERR_CANT_USE_ITEM_IN_RATED_BATTLEGROUND = 187, - ERR_MUST_EQUIP_ITEM = 188, - ERR_PASSIVE_ABILITY = 189, - ERR_2HSKILLNOTFOUND = 190, - ERR_NO_ATTACK_TARGET = 191, - ERR_INVALID_ATTACK_TARGET = 192, - ERR_ATTACK_PVP_TARGET_WHILE_UNFLAGGED = 193, - ERR_ATTACK_STUNNED = 194, - ERR_ATTACK_PACIFIED = 195, - ERR_ATTACK_MOUNTED = 196, - ERR_ATTACK_FLEEING = 197, - ERR_ATTACK_CONFUSED = 198, - ERR_ATTACK_CHARMED = 199, - ERR_ATTACK_DEAD = 200, - ERR_ATTACK_PREVENTED_BY_MECHANIC_S = 201, - ERR_ATTACK_CHANNEL = 202, - ERR_TAXISAMENODE = 203, - ERR_TAXINOSUCHPATH = 204, - ERR_TAXIUNSPECIFIEDSERVERERROR = 205, - ERR_TAXINOTENOUGHMONEY = 206, - ERR_TAXITOOFARAWAY = 207, - ERR_TAXINOVENDORNEARBY = 208, - ERR_TAXINOTVISITED = 209, - ERR_TAXIPLAYERBUSY = 210, - ERR_TAXIPLAYERALREADYMOUNTED = 211, - ERR_TAXIPLAYERSHAPESHIFTED = 212, - ERR_TAXIPLAYERMOVING = 213, - ERR_TAXINOPATHS = 214, - ERR_TAXINOTELIGIBLE = 215, - ERR_TAXINOTSTANDING = 216, - ERR_NO_REPLY_TARGET = 217, - ERR_GENERIC_NO_TARGET = 218, - ERR_INITIATE_TRADE_S = 219, - ERR_TRADE_REQUEST_S = 220, - ERR_TRADE_BLOCKED_S = 221, - ERR_TRADE_TARGET_DEAD = 222, - ERR_TRADE_TOO_FAR = 223, - ERR_TRADE_CANCELLED = 224, - ERR_TRADE_COMPLETE = 225, - ERR_TRADE_BAG_FULL = 226, - ERR_TRADE_TARGET_BAG_FULL = 227, - ERR_TRADE_MAX_COUNT_EXCEEDED = 228, - ERR_TRADE_TARGET_MAX_COUNT_EXCEEDED = 229, - ERR_ALREADY_TRADING = 230, - ERR_MOUNT_INVALIDMOUNTEE = 231, - ERR_MOUNT_TOOFARAWAY = 232, - ERR_MOUNT_ALREADYMOUNTED = 233, - ERR_MOUNT_NOTMOUNTABLE = 234, - ERR_MOUNT_NOTYOURPET = 235, - ERR_MOUNT_OTHER = 236, - ERR_MOUNT_LOOTING = 237, - ERR_MOUNT_RACECANTMOUNT = 238, - ERR_MOUNT_SHAPESHIFTED = 239, - ERR_MOUNT_NO_FAVORITES = 240, - ERR_DISMOUNT_NOPET = 241, - ERR_DISMOUNT_NOTMOUNTED = 242, - ERR_DISMOUNT_NOTYOURPET = 243, - ERR_SPELL_FAILED_TOTEMS = 244, - ERR_SPELL_FAILED_REAGENTS = 245, - ERR_SPELL_FAILED_REAGENTS_GENERIC = 246, - ERR_SPELL_FAILED_EQUIPPED_ITEM = 247, - ERR_SPELL_FAILED_EQUIPPED_ITEM_CLASS_S = 248, - ERR_SPELL_FAILED_SHAPESHIFT_FORM_S = 249, - ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS = 250, - ERR_BADATTACKFACING = 251, - ERR_BADATTACKPOS = 252, - ERR_CHEST_IN_USE = 253, - ERR_USE_CANT_OPEN = 254, - ERR_USE_LOCKED = 255, - ERR_DOOR_LOCKED = 256, - ERR_BUTTON_LOCKED = 257, - ERR_USE_LOCKED_WITH_ITEM_S = 258, - ERR_USE_LOCKED_WITH_SPELL_S = 259, - ERR_USE_LOCKED_WITH_SPELL_KNOWN_SI = 260, - ERR_USE_TOO_FAR = 261, - ERR_USE_BAD_ANGLE = 262, - ERR_USE_OBJECT_MOVING = 263, - ERR_USE_SPELL_FOCUS = 264, - ERR_USE_DESTROYED = 265, - ERR_SET_LOOT_FREEFORALL = 266, - ERR_SET_LOOT_ROUNDROBIN = 267, - ERR_SET_LOOT_MASTER = 268, - ERR_SET_LOOT_GROUP = 269, - ERR_SET_LOOT_THRESHOLD_S = 270, - ERR_NEW_LOOT_MASTER_S = 271, - ERR_SPECIFY_MASTER_LOOTER = 272, - ERR_LOOT_SPEC_CHANGED_S = 273, - ERR_TAME_FAILED = 274, - ERR_CHAT_WHILE_DEAD = 275, - ERR_CHAT_PLAYER_NOT_FOUND_S = 276, - ERR_NEWTAXIPATH = 277, - ERR_NO_PET = 278, - ERR_NOTYOURPET = 279, - ERR_PET_NOT_RENAMEABLE = 280, - ERR_QUEST_OBJECTIVE_COMPLETE_S = 281, - ERR_QUEST_UNKNOWN_COMPLETE = 282, - ERR_QUEST_ADD_KILL_SII = 283, - ERR_QUEST_ADD_FOUND_SII = 284, - ERR_QUEST_ADD_ITEM_SII = 285, - ERR_QUEST_ADD_PLAYER_KILL_SII = 286, - ERR_CANNOTCREATEDIRECTORY = 287, - ERR_CANNOTCREATEFILE = 288, - ERR_PLAYER_WRONG_FACTION = 289, - ERR_PLAYER_IS_NEUTRAL = 290, - ERR_BANKSLOT_FAILED_TOO_MANY = 291, - ERR_BANKSLOT_INSUFFICIENT_FUNDS = 292, - ERR_BANKSLOT_NOTBANKER = 293, - ERR_FRIEND_DB_ERROR = 294, - ERR_FRIEND_LIST_FULL = 295, - ERR_FRIEND_ADDED_S = 296, - ERR_BATTLETAG_FRIEND_ADDED_S = 297, - ERR_FRIEND_ONLINE_SS = 298, - ERR_FRIEND_OFFLINE_S = 299, - ERR_FRIEND_NOT_FOUND = 300, - ERR_FRIEND_WRONG_FACTION = 301, - ERR_FRIEND_REMOVED_S = 302, - ERR_BATTLETAG_FRIEND_REMOVED_S = 303, - ERR_FRIEND_ERROR = 304, - ERR_FRIEND_ALREADY_S = 305, - ERR_FRIEND_SELF = 306, - ERR_FRIEND_DELETED = 307, - ERR_IGNORE_FULL = 308, - ERR_IGNORE_SELF = 309, - ERR_IGNORE_NOT_FOUND = 310, - ERR_IGNORE_ALREADY_S = 311, - ERR_IGNORE_ADDED_S = 312, - ERR_IGNORE_REMOVED_S = 313, - ERR_IGNORE_AMBIGUOUS = 314, - ERR_IGNORE_DELETED = 315, - ERR_ONLY_ONE_BOLT = 316, - ERR_ONLY_ONE_AMMO = 317, - ERR_SPELL_FAILED_EQUIPPED_SPECIFIC_ITEM = 318, - ERR_WRONG_BAG_TYPE_SUBCLASS = 319, - ERR_CANT_WRAP_STACKABLE = 320, - ERR_CANT_WRAP_EQUIPPED = 321, - ERR_CANT_WRAP_WRAPPED = 322, - ERR_CANT_WRAP_BOUND = 323, - ERR_CANT_WRAP_UNIQUE = 324, - ERR_CANT_WRAP_BAGS = 325, - ERR_OUT_OF_MANA = 326, - ERR_OUT_OF_RAGE = 327, - ERR_OUT_OF_FOCUS = 328, - ERR_OUT_OF_ENERGY = 329, - ERR_OUT_OF_CHI = 330, - ERR_OUT_OF_HEALTH = 331, - ERR_OUT_OF_RUNES = 332, - ERR_OUT_OF_RUNIC_POWER = 333, - ERR_OUT_OF_SOUL_SHARDS = 334, - ERR_OUT_OF_LUNAR_POWER = 335, - ERR_OUT_OF_HOLY_POWER = 336, - ERR_OUT_OF_MAELSTROM = 337, - ERR_OUT_OF_COMBO_POINTS = 338, - ERR_OUT_OF_INSANITY = 339, - ERR_OUT_OF_ARCANE_CHARGES = 340, - ERR_OUT_OF_FURY = 341, - ERR_OUT_OF_PAIN = 342, - ERR_OUT_OF_POWER_DISPLAY = 343, - ERR_LOOT_GONE = 344, - ERR_MOUNT_FORCEDDISMOUNT = 345, - ERR_AUTOFOLLOW_TOO_FAR = 346, - ERR_UNIT_NOT_FOUND = 347, - ERR_INVALID_FOLLOW_TARGET = 348, - ERR_INVALID_INSPECT_TARGET = 349, - ERR_GUILDEMBLEM_SUCCESS = 350, - ERR_GUILDEMBLEM_INVALID_TABARD_COLORS = 351, - ERR_GUILDEMBLEM_NOGUILD = 352, - ERR_GUILDEMBLEM_NOTGUILDMASTER = 353, - ERR_GUILDEMBLEM_NOTENOUGHMONEY = 354, - ERR_GUILDEMBLEM_INVALIDVENDOR = 355, - ERR_EMBLEMERROR_NOTABARDGEOSET = 356, - ERR_SPELL_OUT_OF_RANGE = 357, - ERR_COMMAND_NEEDS_TARGET = 358, - ERR_NOAMMO_S = 359, - ERR_TOOBUSYTOFOLLOW = 360, - ERR_DUEL_REQUESTED = 361, - ERR_DUEL_CANCELLED = 362, - ERR_DEATHBINDALREADYBOUND = 363, - ERR_DEATHBIND_SUCCESS_S = 364, - ERR_NOEMOTEWHILERUNNING = 365, - ERR_ZONE_EXPLORED = 366, - ERR_ZONE_EXPLORED_XP = 367, - ERR_INVALID_ITEM_TARGET = 368, - ERR_INVALID_QUEST_TARGET = 369, - ERR_IGNORING_YOU_S = 370, - ERR_FISH_NOT_HOOKED = 371, - ERR_FISH_ESCAPED = 372, - ERR_SPELL_FAILED_NOTUNSHEATHED = 373, - ERR_PETITION_OFFERED_S = 374, - ERR_PETITION_SIGNED = 375, - ERR_PETITION_SIGNED_S = 376, - ERR_PETITION_DECLINED_S = 377, - ERR_PETITION_ALREADY_SIGNED = 378, - ERR_PETITION_RESTRICTED_ACCOUNT_TRIAL = 379, - ERR_PETITION_ALREADY_SIGNED_OTHER = 380, - ERR_PETITION_IN_GUILD = 381, - ERR_PETITION_CREATOR = 382, - ERR_PETITION_NOT_ENOUGH_SIGNATURES = 383, - ERR_PETITION_NOT_SAME_SERVER = 384, - ERR_PETITION_FULL = 385, - ERR_PETITION_ALREADY_SIGNED_BY_S = 386, - ERR_GUILD_NAME_INVALID = 387, - ERR_SPELL_UNLEARNED_S = 388, - ERR_PET_SPELL_ROOTED = 389, - ERR_PET_SPELL_AFFECTING_COMBAT = 390, - ERR_PET_SPELL_OUT_OF_RANGE = 391, - ERR_PET_SPELL_NOT_BEHIND = 392, - ERR_PET_SPELL_TARGETS_DEAD = 393, - ERR_PET_SPELL_DEAD = 394, - ERR_PET_SPELL_NOPATH = 395, - ERR_ITEM_CANT_BE_DESTROYED = 396, - ERR_TICKET_ALREADY_EXISTS = 397, - ERR_TICKET_CREATE_ERROR = 398, - ERR_TICKET_UPDATE_ERROR = 399, - ERR_TICKET_DB_ERROR = 400, - ERR_TICKET_NO_TEXT = 401, - ERR_TICKET_TEXT_TOO_LONG = 402, - ERR_OBJECT_IS_BUSY = 403, - ERR_EXHAUSTION_WELLRESTED = 404, - ERR_EXHAUSTION_RESTED = 405, - ERR_EXHAUSTION_NORMAL = 406, - ERR_EXHAUSTION_TIRED = 407, - ERR_EXHAUSTION_EXHAUSTED = 408, - ERR_NO_ITEMS_WHILE_SHAPESHIFTED = 409, - ERR_CANT_INTERACT_SHAPESHIFTED = 410, - ERR_REALM_NOT_FOUND = 411, - ERR_MAIL_QUEST_ITEM = 412, - ERR_MAIL_BOUND_ITEM = 413, - ERR_MAIL_CONJURED_ITEM = 414, - ERR_MAIL_BAG = 415, - ERR_MAIL_TO_SELF = 416, - ERR_MAIL_TARGET_NOT_FOUND = 417, - ERR_MAIL_DATABASE_ERROR = 418, - ERR_MAIL_DELETE_ITEM_ERROR = 419, - ERR_MAIL_WRAPPED_COD = 420, - ERR_MAIL_CANT_SEND_REALM = 421, - ERR_MAIL_SENT = 422, - ERR_NOT_HAPPY_ENOUGH = 423, - ERR_USE_CANT_IMMUNE = 424, - ERR_CANT_BE_DISENCHANTED = 425, - ERR_CANT_USE_DISARMED = 426, - ERR_AUCTION_QUEST_ITEM = 427, - ERR_AUCTION_BOUND_ITEM = 428, - ERR_AUCTION_CONJURED_ITEM = 429, - ERR_AUCTION_LIMITED_DURATION_ITEM = 430, - ERR_AUCTION_WRAPPED_ITEM = 431, - ERR_AUCTION_LOOT_ITEM = 432, - ERR_AUCTION_BAG = 433, - ERR_AUCTION_EQUIPPED_BAG = 434, - ERR_AUCTION_DATABASE_ERROR = 435, - ERR_AUCTION_BID_OWN = 436, - ERR_AUCTION_BID_INCREMENT = 437, - ERR_AUCTION_HIGHER_BID = 438, - ERR_AUCTION_MIN_BID = 439, - ERR_AUCTION_REPAIR_ITEM = 440, - ERR_AUCTION_USED_CHARGES = 441, - ERR_AUCTION_ALREADY_BID = 442, - ERR_AUCTION_STARTED = 443, - ERR_AUCTION_REMOVED = 444, - ERR_AUCTION_OUTBID_S = 445, - ERR_AUCTION_WON_S = 446, - ERR_AUCTION_SOLD_S = 447, - ERR_AUCTION_EXPIRED_S = 448, - ERR_AUCTION_REMOVED_S = 449, - ERR_AUCTION_BID_PLACED = 450, - ERR_LOGOUT_FAILED = 451, - ERR_QUEST_PUSH_SUCCESS_S = 452, - ERR_QUEST_PUSH_INVALID_S = 453, - ERR_QUEST_PUSH_ACCEPTED_S = 454, - ERR_QUEST_PUSH_DECLINED_S = 455, - ERR_QUEST_PUSH_BUSY_S = 456, - ERR_QUEST_PUSH_DEAD_S = 457, - ERR_QUEST_PUSH_LOG_FULL_S = 458, - ERR_QUEST_PUSH_ONQUEST_S = 459, - ERR_QUEST_PUSH_ALREADY_DONE_S = 460, - ERR_QUEST_PUSH_NOT_DAILY_S = 461, - ERR_QUEST_PUSH_TIMER_EXPIRED_S = 462, - ERR_QUEST_PUSH_NOT_IN_PARTY_S = 463, - ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_S = 464, - ERR_QUEST_PUSH_NOT_ALLOWED_S = 465, - ERR_RAID_GROUP_LOWLEVEL = 466, - ERR_RAID_GROUP_ONLY = 467, - ERR_RAID_GROUP_FULL = 468, - ERR_RAID_GROUP_REQUIREMENTS_UNMATCH = 469, - ERR_CORPSE_IS_NOT_IN_INSTANCE = 470, - ERR_PVP_KILL_HONORABLE = 471, - ERR_PVP_KILL_DISHONORABLE = 472, - ERR_SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 473, - ERR_SPELL_FAILED_ALREADY_AT_FULL_MANA = 474, - ERR_SPELL_FAILED_ALREADY_AT_FULL_POWER_S = 475, - ERR_AUTOLOOT_MONEY_S = 476, - ERR_GENERIC_STUNNED = 477, - ERR_TARGET_STUNNED = 478, - ERR_MUST_REPAIR_DURABILITY = 479, - ERR_RAID_YOU_JOINED = 480, - ERR_RAID_YOU_LEFT = 481, - ERR_INSTANCE_GROUP_JOINED_WITH_PARTY = 482, - ERR_INSTANCE_GROUP_JOINED_WITH_RAID = 483, - ERR_RAID_MEMBER_ADDED_S = 484, - ERR_RAID_MEMBER_REMOVED_S = 485, - ERR_INSTANCE_GROUP_ADDED_S = 486, - ERR_INSTANCE_GROUP_REMOVED_S = 487, - ERR_CLICK_ON_ITEM_TO_FEED = 488, - ERR_TOO_MANY_CHAT_CHANNELS = 489, - ERR_LOOT_ROLL_PENDING = 490, - ERR_LOOT_PLAYER_NOT_FOUND = 491, - ERR_NOT_IN_RAID = 492, - ERR_LOGGING_OUT = 493, - ERR_TARGET_LOGGING_OUT = 494, - ERR_NOT_WHILE_MOUNTED = 495, - ERR_NOT_WHILE_SHAPESHIFTED = 496, - ERR_NOT_IN_COMBAT = 497, - ERR_NOT_WHILE_DISARMED = 498, - ERR_PET_BROKEN = 499, - ERR_TALENT_WIPE_ERROR = 500, - ERR_SPEC_WIPE_ERROR = 501, - ERR_GLYPH_WIPE_ERROR = 502, - ERR_PET_SPEC_WIPE_ERROR = 503, - ERR_FEIGN_DEATH_RESISTED = 504, - ERR_MEETING_STONE_IN_QUEUE_S = 505, - ERR_MEETING_STONE_LEFT_QUEUE_S = 506, - ERR_MEETING_STONE_OTHER_MEMBER_LEFT = 507, - ERR_MEETING_STONE_PARTY_KICKED_FROM_QUEUE = 508, - ERR_MEETING_STONE_MEMBER_STILL_IN_QUEUE = 509, - ERR_MEETING_STONE_SUCCESS = 510, - ERR_MEETING_STONE_IN_PROGRESS = 511, - ERR_MEETING_STONE_MEMBER_ADDED_S = 512, - ERR_MEETING_STONE_GROUP_FULL = 513, - ERR_MEETING_STONE_NOT_LEADER = 514, - ERR_MEETING_STONE_INVALID_LEVEL = 515, - ERR_MEETING_STONE_TARGET_NOT_IN_PARTY = 516, - ERR_MEETING_STONE_TARGET_INVALID_LEVEL = 517, - ERR_MEETING_STONE_MUST_BE_LEADER = 518, - ERR_MEETING_STONE_NO_RAID_GROUP = 519, - ERR_MEETING_STONE_NEED_PARTY = 520, - ERR_MEETING_STONE_NOT_FOUND = 521, - ERR_GUILDEMBLEM_SAME = 522, - ERR_EQUIP_TRADE_ITEM = 523, - ERR_PVP_TOGGLE_ON = 524, - ERR_PVP_TOGGLE_OFF = 525, - ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS = 526, - ERR_GROUP_JOIN_BATTLEGROUND_DEAD = 527, - ERR_GROUP_JOIN_BATTLEGROUND_S = 528, - ERR_GROUP_JOIN_BATTLEGROUND_FAIL = 529, - ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY = 530, - ERR_SOLO_JOIN_BATTLEGROUND_S = 531, - ERR_BATTLEGROUND_TOO_MANY_QUEUES = 532, - ERR_BATTLEGROUND_CANNOT_QUEUE_FOR_RATED = 533, - ERR_BATTLEDGROUND_QUEUED_FOR_RATED = 534, - ERR_BATTLEGROUND_TEAM_LEFT_QUEUE = 535, - ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND = 536, - ERR_ALREADY_IN_ARENA_TEAM_S = 537, - ERR_INVALID_PROMOTION_CODE = 538, - ERR_BG_PLAYER_JOINED_SS = 539, - ERR_BG_PLAYER_LEFT_S = 540, - ERR_RESTRICTED_ACCOUNT = 541, - ERR_RESTRICTED_ACCOUNT_TRIAL = 542, - ERR_PLAY_TIME_EXCEEDED = 543, - ERR_APPROACHING_PARTIAL_PLAY_TIME = 544, - ERR_APPROACHING_PARTIAL_PLAY_TIME_2 = 545, - ERR_APPROACHING_NO_PLAY_TIME = 546, - ERR_APPROACHING_NO_PLAY_TIME_2 = 547, - ERR_UNHEALTHY_TIME = 548, - ERR_CHAT_RESTRICTED_TRIAL = 549, - ERR_CHAT_THROTTLED = 550, - ERR_MAIL_REACHED_CAP = 551, - ERR_INVALID_RAID_TARGET = 552, - ERR_RAID_LEADER_READY_CHECK_START_S = 553, - ERR_READY_CHECK_IN_PROGRESS = 554, - ERR_READY_CHECK_THROTTLED = 555, - ERR_DUNGEON_DIFFICULTY_FAILED = 556, - ERR_DUNGEON_DIFFICULTY_CHANGED_S = 557, - ERR_TRADE_WRONG_REALM = 558, - ERR_TRADE_NOT_ON_TAPLIST = 559, - ERR_CHAT_PLAYER_AMBIGUOUS_S = 560, - ERR_LOOT_CANT_LOOT_THAT_NOW = 561, - ERR_LOOT_MASTER_INV_FULL = 562, - ERR_LOOT_MASTER_UNIQUE_ITEM = 563, - ERR_LOOT_MASTER_OTHER = 564, - ERR_FILTERING_YOU_S = 565, - ERR_USE_PREVENTED_BY_MECHANIC_S = 566, - ERR_ITEM_UNIQUE_EQUIPPABLE = 567, - ERR_LFG_LEADER_IS_LFM_S = 568, - ERR_LFG_PENDING = 569, - ERR_CANT_SPEAK_LANGAGE = 570, - ERR_VENDOR_MISSING_TURNINS = 571, - ERR_BATTLEGROUND_NOT_IN_TEAM = 572, - ERR_NOT_IN_BATTLEGROUND = 573, - ERR_NOT_ENOUGH_HONOR_POINTS = 574, - ERR_NOT_ENOUGH_ARENA_POINTS = 575, - ERR_SOCKETING_REQUIRES_META_GEM = 576, - ERR_SOCKETING_META_GEM_ONLY_IN_METASLOT = 577, - ERR_SOCKETING_REQUIRES_HYDRAULIC_GEM = 578, - ERR_SOCKETING_HYDRAULIC_GEM_ONLY_IN_HYDRAULICSLOT = 579, - ERR_SOCKETING_REQUIRES_COGWHEEL_GEM = 580, - ERR_SOCKETING_COGWHEEL_GEM_ONLY_IN_COGWHEELSLOT = 581, - ERR_SOCKETING_ITEM_TOO_LOW_LEVEL = 582, - ERR_ITEM_MAX_COUNT_SOCKETED = 583, - ERR_SYSTEM_DISABLED = 584, - ERR_QUEST_FAILED_TOO_MANY_DAILY_QUESTS_I = 585, - ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 586, - ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 587, - ERR_USER_SQUELCHED = 588, - ERR_TOO_MUCH_GOLD = 589, - ERR_NOT_BARBER_SITTING = 590, - ERR_QUEST_FAILED_CAIS = 591, - ERR_INVITE_RESTRICTED_TRIAL = 592, - ERR_VOICE_IGNORE_FULL = 593, - ERR_VOICE_IGNORE_SELF = 594, - ERR_VOICE_IGNORE_NOT_FOUND = 595, - ERR_VOICE_IGNORE_ALREADY_S = 596, - ERR_VOICE_IGNORE_ADDED_S = 597, - ERR_VOICE_IGNORE_REMOVED_S = 598, - ERR_VOICE_IGNORE_AMBIGUOUS = 599, - ERR_VOICE_IGNORE_DELETED = 600, - ERR_UNKNOWN_MACRO_OPTION_S = 601, - ERR_NOT_DURING_ARENA_MATCH = 602, - ERR_PLAYER_SILENCED = 603, - ERR_PLAYER_UNSILENCED = 604, - ERR_COMSAT_DISCONNECT = 605, - ERR_COMSAT_RECONNECT_ATTEMPT = 606, - ERR_COMSAT_CONNECT_FAIL = 607, - ERR_MAIL_INVALID_ATTACHMENT_SLOT = 608, - ERR_MAIL_TOO_MANY_ATTACHMENTS = 609, - ERR_MAIL_INVALID_ATTACHMENT = 610, - ERR_MAIL_ATTACHMENT_EXPIRED = 611, - ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 612, - ERR_VOICE_CHAT_PARENTAL_DISABLE_MIC = 613, - ERR_PROFANE_CHAT_NAME = 614, - ERR_PLAYER_SILENCED_ECHO = 615, - ERR_PLAYER_UNSILENCED_ECHO = 616, - ERR_VOICESESSION_FULL = 617, - ERR_LOOT_CANT_LOOT_THAT = 618, - ERR_ARENA_EXPIRED_CAIS = 619, - ERR_GROUP_ACTION_THROTTLED = 620, - ERR_ALREADY_PICKPOCKETED = 621, - ERR_NAME_INVALID = 622, - ERR_NAME_NO_NAME = 623, - ERR_NAME_TOO_SHORT = 624, - ERR_NAME_TOO_LONG = 625, - ERR_NAME_MIXED_LANGUAGES = 626, - ERR_NAME_PROFANE = 627, - ERR_NAME_RESERVED = 628, - ERR_NAME_THREE_CONSECUTIVE = 629, - ERR_NAME_INVALID_SPACE = 630, - ERR_NAME_CONSECUTIVE_SPACES = 631, - ERR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 632, - ERR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 633, - ERR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 634, - ERR_REFER_A_FRIEND_NOT_REFERRED_BY = 635, - ERR_REFER_A_FRIEND_TARGET_TOO_HIGH = 636, - ERR_REFER_A_FRIEND_INSUFFICIENT_GRANTABLE_LEVELS = 637, - ERR_REFER_A_FRIEND_TOO_FAR = 638, - ERR_REFER_A_FRIEND_DIFFERENT_FACTION = 639, - ERR_REFER_A_FRIEND_NOT_NOW = 640, - ERR_REFER_A_FRIEND_GRANT_LEVEL_MAX_I = 641, - ERR_REFER_A_FRIEND_SUMMON_LEVEL_MAX_I = 642, - ERR_REFER_A_FRIEND_SUMMON_COOLDOWN = 643, - ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S = 644, - ERR_REFER_A_FRIEND_INSUF_EXPAN_LVL = 645, - ERR_REFER_A_FRIEND_NOT_IN_LFG = 646, - ERR_REFER_A_FRIEND_NO_XREALM = 647, - ERR_REFER_A_FRIEND_MAP_INCOMING_TRANSFER_NOT_ALLOWED = 648, - ERR_NOT_SAME_ACCOUNT = 649, - ERR_BAD_ON_USE_ENCHANT = 650, - ERR_TRADE_SELF = 651, - ERR_TOO_MANY_SOCKETS = 652, - ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 653, - ERR_TRADE_TARGET_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 654, - ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS = 655, - ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS = 656, - ERR_SHAPESHIFT_FORM_CANNOT_EQUIP = 657, - ERR_ITEM_INVENTORY_FULL_SATCHEL = 658, - ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 659, - ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW = 660, - ERR_PURCHASE_LEVEL_TOO_LOW = 661, - ERR_GROUP_SWAP_FAILED = 662, - ERR_INVITE_IN_COMBAT = 663, - ERR_INVALID_GLYPH_SLOT = 664, - ERR_GENERIC_NO_VALID_TARGETS = 665, - ERR_CALENDAR_EVENT_ALERT_S = 666, - ERR_PET_LEARN_SPELL_S = 667, - ERR_PET_LEARN_ABILITY_S = 668, - ERR_PET_SPELL_UNLEARNED_S = 669, - ERR_INVITE_UNKNOWN_REALM = 670, - ERR_INVITE_NO_PARTY_SERVER = 671, - ERR_INVITE_PARTY_BUSY = 672, - ERR_PARTY_TARGET_AMBIGUOUS = 673, - ERR_PARTY_LFG_INVITE_RAID_LOCKED = 674, - ERR_PARTY_LFG_BOOT_LIMIT = 675, - ERR_PARTY_LFG_BOOT_COOLDOWN_S = 676, - ERR_PARTY_LFG_BOOT_NOT_ELIGIBLE_S = 677, - ERR_PARTY_LFG_BOOT_INPATIENT_TIMER_S = 678, - ERR_PARTY_LFG_BOOT_IN_PROGRESS = 679, - ERR_PARTY_LFG_BOOT_TOO_FEW_PLAYERS = 680, - ERR_PARTY_LFG_BOOT_VOTE_SUCCEEDED = 681, - ERR_PARTY_LFG_BOOT_VOTE_FAILED = 682, - ERR_PARTY_LFG_BOOT_IN_COMBAT = 683, - ERR_PARTY_LFG_BOOT_DUNGEON_COMPLETE = 684, - ERR_PARTY_LFG_BOOT_LOOT_ROLLS = 685, - ERR_PARTY_LFG_BOOT_VOTE_REGISTERED = 686, - ERR_PARTY_PRIVATE_GROUP_ONLY = 687, - ERR_PARTY_LFG_TELEPORT_IN_COMBAT = 688, - ERR_RAID_DISALLOWED_BY_LEVEL = 689, - ERR_RAID_DISALLOWED_BY_CROSS_REALM = 690, - ERR_PARTY_ROLE_NOT_AVAILABLE = 691, - ERR_JOIN_LFG_OBJECT_FAILED = 692, - ERR_LFG_REMOVED_LEVELUP = 693, - ERR_LFG_REMOVED_XP_TOGGLE = 694, - ERR_LFG_REMOVED_FACTION_CHANGE = 695, - ERR_BATTLEGROUND_INFO_THROTTLED = 696, - ERR_BATTLEGROUND_ALREADY_IN = 697, - ERR_ARENA_TEAM_CHANGE_FAILED_QUEUED = 698, - ERR_ARENA_TEAM_PERMISSIONS = 699, - ERR_NOT_WHILE_FALLING = 700, - ERR_NOT_WHILE_MOVING = 701, - ERR_NOT_WHILE_FATIGUED = 702, - ERR_MAX_SOCKETS = 703, - ERR_MULTI_CAST_ACTION_TOTEM_S = 704, - ERR_BATTLEGROUND_JOIN_LEVELUP = 705, - ERR_REMOVE_FROM_PVP_QUEUE_XP_GAIN = 706, - ERR_BATTLEGROUND_JOIN_XP_GAIN = 707, - ERR_BATTLEGROUND_JOIN_MERCENARY = 708, - ERR_BATTLEGROUND_JOIN_TOO_MANY_HEALERS = 709, - ERR_BATTLEGROUND_JOIN_TOO_MANY_TANKS = 710, - ERR_BATTLEGROUND_JOIN_TOO_MANY_DAMAGE = 711, - ERR_RAID_DIFFICULTY_FAILED = 712, - ERR_RAID_DIFFICULTY_CHANGED_S = 713, - ERR_LEGACY_RAID_DIFFICULTY_CHANGED_S = 714, - ERR_RAID_LOCKOUT_CHANGED_S = 715, - ERR_RAID_CONVERTED_TO_PARTY = 716, - ERR_PARTY_CONVERTED_TO_RAID = 717, - ERR_PLAYER_DIFFICULTY_CHANGED_S = 718, - ERR_GMRESPONSE_DB_ERROR = 719, - ERR_BATTLEGROUND_JOIN_RANGE_INDEX = 720, - ERR_ARENA_JOIN_RANGE_INDEX = 721, - ERR_REMOVE_FROM_PVP_QUEUE_FACTION_CHANGE = 722, - ERR_BATTLEGROUND_JOIN_FAILED = 723, - ERR_BATTLEGROUND_JOIN_NO_VALID_SPEC_FOR_ROLE = 724, - ERR_BATTLEGROUND_JOIN_RESPEC = 725, - ERR_BATTLEGROUND_INVITATION_DECLINED = 726, - ERR_BATTLEGROUND_JOIN_TIMED_OUT = 727, - ERR_BATTLEGROUND_DUPE_QUEUE = 728, - ERR_BATTLEGROUND_JOIN_MUST_COMPLETE_QUEST = 729, - ERR_IN_BATTLEGROUND_RESPEC = 730, - ERR_MAIL_LIMITED_DURATION_ITEM = 731, - ERR_YELL_RESTRICTED_TRIAL = 732, - ERR_CHAT_RAID_RESTRICTED_TRIAL = 733, - ERR_LFG_ROLE_CHECK_FAILED = 734, - ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT = 735, - ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE = 736, - ERR_LFG_READY_CHECK_FAILED = 737, - ERR_LFG_READY_CHECK_FAILED_TIMEOUT = 738, - ERR_LFG_GROUP_FULL = 739, - ERR_LFG_NO_LFG_OBJECT = 740, - ERR_LFG_NO_SLOTS_PLAYER = 741, - ERR_LFG_NO_SLOTS_PARTY = 742, - ERR_LFG_NO_SPEC = 743, - ERR_LFG_MISMATCHED_SLOTS = 744, - ERR_LFG_MISMATCHED_SLOTS_LOCAL_XREALM = 745, - ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 746, - ERR_LFG_MEMBERS_NOT_PRESENT = 747, - ERR_LFG_GET_INFO_TIMEOUT = 748, - ERR_LFG_INVALID_SLOT = 749, - ERR_LFG_DESERTER_PLAYER = 750, - ERR_LFG_DESERTER_PARTY = 751, - ERR_LFG_DEAD = 752, - ERR_LFG_RANDOM_COOLDOWN_PLAYER = 753, - ERR_LFG_RANDOM_COOLDOWN_PARTY = 754, - ERR_LFG_TOO_MANY_MEMBERS = 755, - ERR_LFG_TOO_FEW_MEMBERS = 756, - ERR_LFG_PROPOSAL_FAILED = 757, - ERR_LFG_PROPOSAL_DECLINED_SELF = 758, - ERR_LFG_PROPOSAL_DECLINED_PARTY = 759, - ERR_LFG_NO_SLOTS_SELECTED = 760, - ERR_LFG_NO_ROLES_SELECTED = 761, - ERR_LFG_ROLE_CHECK_INITIATED = 762, - ERR_LFG_READY_CHECK_INITIATED = 763, - ERR_LFG_PLAYER_DECLINED_ROLE_CHECK = 764, - ERR_LFG_PLAYER_DECLINED_READY_CHECK = 765, - ERR_LFG_JOINED_QUEUE = 766, - ERR_LFG_JOINED_FLEX_QUEUE = 767, - ERR_LFG_JOINED_RF_QUEUE = 768, - ERR_LFG_JOINED_SCENARIO_QUEUE = 769, - ERR_LFG_JOINED_WORLD_PVP_QUEUE = 770, - ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 771, - ERR_LFG_JOINED_LIST = 772, - ERR_LFG_LEFT_QUEUE = 773, - ERR_LFG_LEFT_LIST = 774, - ERR_LFG_ROLE_CHECK_ABORTED = 775, - ERR_LFG_READY_CHECK_ABORTED = 776, - ERR_LFG_CANT_USE_BATTLEGROUND = 777, - ERR_LFG_CANT_USE_DUNGEONS = 778, - ERR_LFG_REASON_TOO_MANY_LFG = 779, - ERR_INVALID_TELEPORT_LOCATION = 780, - ERR_TOO_FAR_TO_INTERACT = 781, - ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 782, - ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 783, - ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 784, - ERR_DIFFICULTY_CHANGE_WORLDSTATE = 785, - ERR_DIFFICULTY_CHANGE_ENCOUNTER = 786, - ERR_DIFFICULTY_CHANGE_COMBAT = 787, - ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 788, - ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 789, - ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 790, - ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 791, - ERR_ARENA_TEAM_PARTY_SIZE = 792, - ERR_QUEST_FORCE_REMOVED_S = 793, - ERR_ATTACK_NO_ACTIONS = 794, - ERR_IN_RANDOM_BG = 795, - ERR_IN_NON_RANDOM_BG = 796, - ERR_AUCTION_ENOUGH_ITEMS = 797, - ERR_BN_FRIEND_SELF = 798, - ERR_BN_FRIEND_ALREADY = 799, - ERR_BN_FRIEND_BLOCKED = 800, - ERR_BN_FRIEND_LIST_FULL = 801, - ERR_BN_FRIEND_REQUEST_SENT = 802, - ERR_BN_BROADCAST_THROTTLE = 803, - ERR_BG_DEVELOPER_ONLY = 804, - ERR_CURRENCY_SPELL_SLOT_MISMATCH = 805, - ERR_CURRENCY_NOT_TRADABLE = 806, - ERR_REQUIRES_EXPANSION_S = 807, - ERR_QUEST_FAILED_SPELL = 808, - ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 809, - ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 810, - ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 811, - ERR_TALENT_FAILED_UNKNOWN = 812, - ERR_WARGAME_REQUEST_FAILURE = 813, - ERR_RANK_REQUIRES_AUTHENTICATOR = 814, - ERR_GUILD_BANK_VOUCHER_FAILED = 815, - ERR_WARGAME_REQUEST_SENT = 816, - ERR_REQUIRES_ACHIEVEMENT_I = 817, - ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 818, - ERR_CANT_BUY_QUANTITY = 819, - ERR_ITEM_IS_BATTLE_PAY_LOCKED = 820, - ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 821, - ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 822, - ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 823, - ERR_INSUFF_TRACKED_CURRENCY_IS = 824, - ERR_NOT_ON_TOURNAMENT_REALM = 825, - ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 826, - ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 827, - ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 828, - ERR_CANT_DO_THAT_IN_A_GROUP = 829, - ERR_GUILD_LEADER_REPLACED = 830, - ERR_TRANSMOGRIFY_CANT_EQUIP = 831, - ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 832, - ERR_TRANSMOGRIFY_NOT_SOULBOUND = 833, - ERR_TRANSMOGRIFY_INVALID_SOURCE = 834, - ERR_TRANSMOGRIFY_INVALID_DESTINATION = 835, - ERR_TRANSMOGRIFY_MISMATCH = 836, - ERR_TRANSMOGRIFY_LEGENDARY = 837, - ERR_TRANSMOGRIFY_SAME_ITEM = 838, - ERR_TRANSMOGRIFY_SAME_APPEARANCE = 839, - ERR_TRANSMOGRIFY_NOT_EQUIPPED = 840, - ERR_VOID_DEPOSIT_FULL = 841, - ERR_VOID_WITHDRAW_FULL = 842, - ERR_VOID_STORAGE_WRAPPED = 843, - ERR_VOID_STORAGE_STACKABLE = 844, - ERR_VOID_STORAGE_UNBOUND = 845, - ERR_VOID_STORAGE_REPAIR = 846, - ERR_VOID_STORAGE_CHARGES = 847, - ERR_VOID_STORAGE_QUEST = 848, - ERR_VOID_STORAGE_CONJURED = 849, - ERR_VOID_STORAGE_MAIL = 850, - ERR_VOID_STORAGE_BAG = 851, - ERR_VOID_TRANSFER_STORAGE_FULL = 852, - ERR_VOID_TRANSFER_INV_FULL = 853, - ERR_VOID_TRANSFER_INTERNAL_ERROR = 854, - ERR_VOID_TRANSFER_ITEM_INVALID = 855, - ERR_DIFFICULTY_DISABLED_IN_LFG = 856, - ERR_VOID_STORAGE_UNIQUE = 857, - ERR_VOID_STORAGE_LOOT = 858, - ERR_VOID_STORAGE_HOLIDAY = 859, - ERR_VOID_STORAGE_DURATION = 860, - ERR_VOID_STORAGE_LOAD_FAILED = 861, - ERR_VOID_STORAGE_INVALID_ITEM = 862, - ERR_PARENTAL_CONTROLS_CHAT_MUTED = 863, - ERR_SOR_START_EXPERIENCE_INCOMPLETE = 864, - ERR_SOR_INVALID_EMAIL = 865, - ERR_SOR_INVALID_COMMENT = 866, - ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 867, - ERR_CHALLENGE_MODE_RESET_KEYSTONE = 868, - ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 869, - ERR_REPORT_SUBMITTED_SUCCESSFULLY = 870, - ERR_REPORT_SUBMISSION_FAILED = 871, - ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 872, - ERR_BUG_SUBMITTED_SUCCESSFULLY = 873, - ERR_CHALLENGE_MODE_ENABLED = 874, - ERR_CHALLENGE_MODE_DISABLED = 875, - ERR_PETBATTLE_CREATE_FAILED = 876, - ERR_PETBATTLE_NOT_HERE = 877, - ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 878, - ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 879, - ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 880, - ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 881, - ERR_PETBATTLE_NOT_WHILE_DEAD = 882, - ERR_PETBATTLE_NOT_WHILE_FLYING = 883, - ERR_PETBATTLE_TARGET_INVALID = 884, - ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 885, - ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 886, - ERR_PETBATTLE_NOT_A_TRAINER = 887, - ERR_PETBATTLE_DECLINED = 888, - ERR_PETBATTLE_IN_BATTLE = 889, - ERR_PETBATTLE_INVALID_LOADOUT = 890, - ERR_PETBATTLE_ALL_PETS_DEAD = 891, - ERR_PETBATTLE_NO_PETS_IN_SLOTS = 892, - ERR_PETBATTLE_NO_ACCOUNT_LOCK = 893, - ERR_PETBATTLE_WILD_PET_TAPPED = 894, - ERR_PETBATTLE_RESTRICTED_ACCOUNT = 895, - ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 896, - ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 897, - ERR_CANT_HAVE_MORE_PETS = 898, - ERR_PVP_MAP_NOT_FOUND = 899, - ERR_PVP_MAP_NOT_SET = 900, - ERR_PETBATTLE_QUEUE_QUEUED = 901, - ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 902, - ERR_PETBATTLE_QUEUE_JOIN_FAILED = 903, - ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 904, - ERR_PETBATTLE_QUEUE_REMOVED = 905, - ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 906, - ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 907, - ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 908, - ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 909, - ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 910, - ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 911, - ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 912, - ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 913, - ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 914, - ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 915, - ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 916, - ERR_PETBATTLE_QUEUE_SLOT_DEAD = 917, - ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 918, - ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 919, - ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 920, - ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 921, - ERR_HAS_RESTRICTION = 922, - ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 923, - ERR_ITEM_UPGRADE_NO_PATH = 924, - ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 925, - ERR_BONUS_ROLL_EMPTY = 926, - ERR_CHALLENGE_MODE_FULL = 927, - ERR_CHALLENGE_MODE_IN_PROGRESS = 928, - ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 929, - ERR_BATTLETAG_FRIEND_NOT_FOUND = 930, - ERR_BATTLETAG_FRIEND_NOT_VALID = 931, - ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 932, - ERR_BATTLETAG_FRIEND_THROTTLED = 933, - ERR_BATTLETAG_FRIEND_SUCCESS = 934, - ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 935, - ERR_PETBATTLE_INTERNAL = 936, - ERR_CANT_CAGE_PET_YET = 937, - ERR_NO_LOOT_IN_CHALLENGE_MODE = 938, - ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 939, - ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 940, - ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 941, - ERR_RECRUIT_A_FRIEND_FAILED = 942, - ERR_SET_LOOT_PERSONAL = 943, - ERR_SET_LOOT_METHOD_FAILED_COMBAT = 944, - ERR_REAGENT_BANK_FULL = 945, - ERR_REAGENT_BANK_LOCKED = 946, - ERR_GARRISON_BUILDING_EXISTS = 947, - ERR_GARRISON_INVALID_PLOT = 948, - ERR_GARRISON_INVALID_BUILDINGID = 949, - ERR_GARRISON_INVALID_PLOT_BUILDING = 950, - ERR_GARRISON_REQUIRES_BLUEPRINT = 951, - ERR_GARRISON_NOT_ENOUGH_CURRENCY = 952, - ERR_GARRISON_NOT_ENOUGH_GOLD = 953, - ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 954, - ERR_ALREADY_USING_LFG_LIST = 955, - ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 956, - ERR_TOY_USE_LIMIT_REACHED = 957, - ERR_TOY_ALREADY_KNOWN = 958, - ERR_TRANSMOG_SET_ALREADY_KNOWN = 959, - ERR_NOT_ENOUGH_CURRENCY = 960, - ERR_SPEC_IS_DISABLED = 961, - ERR_FEATURE_RESTRICTED_TRIAL = 962, - ERR_CANT_BE_OBLITERATED = 963, - ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 964, - ERR_MUST_EQUIP_ARTIFACT = 965, - ERR_CANT_DO_THAT_RIGHT_NOW = 966, - ERR_AFFECTING_COMBAT = 967, - ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 968, - ERR_EQUIPMENT_MANAGER_BAGS_FULL = 969, - ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 970, - ERR_MOVIE_RECORDING_WARNING_PERF = 971, - ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 972, - ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 973, - ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 974, - ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 975, - ERR_NO_CHALLENGE_MODE_REWARD = 976, - ERR_CLAIMED_CHALLENGE_MODE_REWARD = 977, - ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 978, - ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 979, - ERR_TALENT_FAILED_REST_AREA = 980, - ERR_CANNOT_ABANDON_LAST_PET = 981, - ERR_TEST_CVAR_SET_SSS = 982, - ERR_QUEST_TURN_IN_FAIL_REASON = 983, - ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 984, - ERR_TALENT_GRANTED_BY_AURA = 985, - ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 986, - ERR_GLYPH_TARGET_NOT_AVAILABLE = 987, + ERR_CLIENT_ON_TRANSPORT = 152, + ERR_KILLED_BY_S = 153, + ERR_LOOT_LOCKED = 154, + ERR_LOOT_TOO_FAR = 155, + ERR_LOOT_DIDNT_KILL = 156, + ERR_LOOT_BAD_FACING = 157, + ERR_LOOT_NOTSTANDING = 158, + ERR_LOOT_STUNNED = 159, + ERR_LOOT_NO_UI = 160, + ERR_LOOT_WHILE_INVULNERABLE = 161, + ERR_NO_LOOT = 162, + ERR_QUEST_ACCEPTED_S = 163, + ERR_QUEST_COMPLETE_S = 164, + ERR_QUEST_FAILED_S = 165, + ERR_QUEST_FAILED_BAG_FULL_S = 166, + ERR_QUEST_FAILED_MAX_COUNT_S = 167, + ERR_QUEST_FAILED_LOW_LEVEL = 168, + ERR_QUEST_FAILED_MISSING_ITEMS = 169, + ERR_QUEST_FAILED_WRONG_RACE = 170, + ERR_QUEST_FAILED_NOT_ENOUGH_MONEY = 171, + ERR_QUEST_FAILED_EXPANSION = 172, + ERR_QUEST_ONLY_ONE_TIMED = 173, + ERR_QUEST_NEED_PREREQS = 174, + ERR_QUEST_NEED_PREREQS_CUSTOM = 175, + ERR_QUEST_ALREADY_ON = 176, + ERR_QUEST_ALREADY_DONE = 177, + ERR_QUEST_ALREADY_DONE_DAILY = 178, + ERR_QUEST_HAS_IN_PROGRESS = 179, + ERR_QUEST_REWARD_EXP_I = 180, + ERR_QUEST_REWARD_MONEY_S = 181, + ERR_QUEST_MUST_CHOOSE = 182, + ERR_QUEST_LOG_FULL = 183, + ERR_COMBAT_DAMAGE_SSI = 184, + ERR_INSPECT_S = 185, + ERR_CANT_USE_ITEM = 186, + ERR_CANT_USE_ITEM_IN_ARENA = 187, + ERR_CANT_USE_ITEM_IN_RATED_BATTLEGROUND = 188, + ERR_MUST_EQUIP_ITEM = 189, + ERR_PASSIVE_ABILITY = 190, + ERR_2HSKILLNOTFOUND = 191, + ERR_NO_ATTACK_TARGET = 192, + ERR_INVALID_ATTACK_TARGET = 193, + ERR_ATTACK_PVP_TARGET_WHILE_UNFLAGGED = 194, + ERR_ATTACK_STUNNED = 195, + ERR_ATTACK_PACIFIED = 196, + ERR_ATTACK_MOUNTED = 197, + ERR_ATTACK_FLEEING = 198, + ERR_ATTACK_CONFUSED = 199, + ERR_ATTACK_CHARMED = 200, + ERR_ATTACK_DEAD = 201, + ERR_ATTACK_PREVENTED_BY_MECHANIC_S = 202, + ERR_ATTACK_CHANNEL = 203, + ERR_TAXISAMENODE = 204, + ERR_TAXINOSUCHPATH = 205, + ERR_TAXIUNSPECIFIEDSERVERERROR = 206, + ERR_TAXINOTENOUGHMONEY = 207, + ERR_TAXITOOFARAWAY = 208, + ERR_TAXINOVENDORNEARBY = 209, + ERR_TAXINOTVISITED = 210, + ERR_TAXIPLAYERBUSY = 211, + ERR_TAXIPLAYERALREADYMOUNTED = 212, + ERR_TAXIPLAYERSHAPESHIFTED = 213, + ERR_TAXIPLAYERMOVING = 214, + ERR_TAXINOPATHS = 215, + ERR_TAXINOTELIGIBLE = 216, + ERR_TAXINOTSTANDING = 217, + ERR_NO_REPLY_TARGET = 218, + ERR_GENERIC_NO_TARGET = 219, + ERR_INITIATE_TRADE_S = 220, + ERR_TRADE_REQUEST_S = 221, + ERR_TRADE_BLOCKED_S = 222, + ERR_TRADE_TARGET_DEAD = 223, + ERR_TRADE_TOO_FAR = 224, + ERR_TRADE_CANCELLED = 225, + ERR_TRADE_COMPLETE = 226, + ERR_TRADE_BAG_FULL = 227, + ERR_TRADE_TARGET_BAG_FULL = 228, + ERR_TRADE_MAX_COUNT_EXCEEDED = 229, + ERR_TRADE_TARGET_MAX_COUNT_EXCEEDED = 230, + ERR_ALREADY_TRADING = 231, + ERR_MOUNT_INVALIDMOUNTEE = 232, + ERR_MOUNT_TOOFARAWAY = 233, + ERR_MOUNT_ALREADYMOUNTED = 234, + ERR_MOUNT_NOTMOUNTABLE = 235, + ERR_MOUNT_NOTYOURPET = 236, + ERR_MOUNT_OTHER = 237, + ERR_MOUNT_LOOTING = 238, + ERR_MOUNT_RACECANTMOUNT = 239, + ERR_MOUNT_SHAPESHIFTED = 240, + ERR_MOUNT_NO_FAVORITES = 241, + ERR_DISMOUNT_NOPET = 242, + ERR_DISMOUNT_NOTMOUNTED = 243, + ERR_DISMOUNT_NOTYOURPET = 244, + ERR_SPELL_FAILED_TOTEMS = 245, + ERR_SPELL_FAILED_REAGENTS = 246, + ERR_SPELL_FAILED_REAGENTS_GENERIC = 247, + ERR_CANT_TRADE_GOLD = 248, + ERR_SPELL_FAILED_EQUIPPED_ITEM = 249, + ERR_SPELL_FAILED_EQUIPPED_ITEM_CLASS_S = 250, + ERR_SPELL_FAILED_SHAPESHIFT_FORM_S = 251, + ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS = 252, + ERR_BADATTACKFACING = 253, + ERR_BADATTACKPOS = 254, + ERR_CHEST_IN_USE = 255, + ERR_USE_CANT_OPEN = 256, + ERR_USE_LOCKED = 257, + ERR_DOOR_LOCKED = 258, + ERR_BUTTON_LOCKED = 259, + ERR_USE_LOCKED_WITH_ITEM_S = 260, + ERR_USE_LOCKED_WITH_SPELL_S = 261, + ERR_USE_LOCKED_WITH_SPELL_KNOWN_SI = 262, + ERR_USE_TOO_FAR = 263, + ERR_USE_BAD_ANGLE = 264, + ERR_USE_OBJECT_MOVING = 265, + ERR_USE_SPELL_FOCUS = 266, + ERR_USE_DESTROYED = 267, + ERR_SET_LOOT_FREEFORALL = 268, + ERR_SET_LOOT_ROUNDROBIN = 269, + ERR_SET_LOOT_MASTER = 270, + ERR_SET_LOOT_GROUP = 271, + ERR_SET_LOOT_THRESHOLD_S = 272, + ERR_NEW_LOOT_MASTER_S = 273, + ERR_SPECIFY_MASTER_LOOTER = 274, + ERR_LOOT_SPEC_CHANGED_S = 275, + ERR_TAME_FAILED = 276, + ERR_CHAT_WHILE_DEAD = 277, + ERR_CHAT_PLAYER_NOT_FOUND_S = 278, + ERR_NEWTAXIPATH = 279, + ERR_NO_PET = 280, + ERR_NOTYOURPET = 281, + ERR_PET_NOT_RENAMEABLE = 282, + ERR_QUEST_OBJECTIVE_COMPLETE_S = 283, + ERR_QUEST_UNKNOWN_COMPLETE = 284, + ERR_QUEST_ADD_KILL_SII = 285, + ERR_QUEST_ADD_FOUND_SII = 286, + ERR_QUEST_ADD_ITEM_SII = 287, + ERR_QUEST_ADD_PLAYER_KILL_SII = 288, + ERR_CANNOTCREATEDIRECTORY = 289, + ERR_CANNOTCREATEFILE = 290, + ERR_PLAYER_WRONG_FACTION = 291, + ERR_PLAYER_IS_NEUTRAL = 292, + ERR_BANKSLOT_FAILED_TOO_MANY = 293, + ERR_BANKSLOT_INSUFFICIENT_FUNDS = 294, + ERR_BANKSLOT_NOTBANKER = 295, + ERR_FRIEND_DB_ERROR = 296, + ERR_FRIEND_LIST_FULL = 297, + ERR_FRIEND_ADDED_S = 298, + ERR_BATTLETAG_FRIEND_ADDED_S = 299, + ERR_FRIEND_ONLINE_SS = 300, + ERR_FRIEND_OFFLINE_S = 301, + ERR_FRIEND_NOT_FOUND = 302, + ERR_FRIEND_WRONG_FACTION = 303, + ERR_FRIEND_REMOVED_S = 304, + ERR_BATTLETAG_FRIEND_REMOVED_S = 305, + ERR_FRIEND_ERROR = 306, + ERR_FRIEND_ALREADY_S = 307, + ERR_FRIEND_SELF = 308, + ERR_FRIEND_DELETED = 309, + ERR_IGNORE_FULL = 310, + ERR_IGNORE_SELF = 311, + ERR_IGNORE_NOT_FOUND = 312, + ERR_IGNORE_ALREADY_S = 313, + ERR_IGNORE_ADDED_S = 314, + ERR_IGNORE_REMOVED_S = 315, + ERR_IGNORE_AMBIGUOUS = 316, + ERR_IGNORE_DELETED = 317, + ERR_ONLY_ONE_BOLT = 318, + ERR_ONLY_ONE_AMMO = 319, + ERR_SPELL_FAILED_EQUIPPED_SPECIFIC_ITEM = 320, + ERR_WRONG_BAG_TYPE_SUBCLASS = 321, + ERR_CANT_WRAP_STACKABLE = 322, + ERR_CANT_WRAP_EQUIPPED = 323, + ERR_CANT_WRAP_WRAPPED = 324, + ERR_CANT_WRAP_BOUND = 325, + ERR_CANT_WRAP_UNIQUE = 326, + ERR_CANT_WRAP_BAGS = 327, + ERR_OUT_OF_MANA = 328, + ERR_OUT_OF_RAGE = 329, + ERR_OUT_OF_FOCUS = 330, + ERR_OUT_OF_ENERGY = 331, + ERR_OUT_OF_CHI = 332, + ERR_OUT_OF_HEALTH = 333, + ERR_OUT_OF_RUNES = 334, + ERR_OUT_OF_RUNIC_POWER = 335, + ERR_OUT_OF_SOUL_SHARDS = 336, + ERR_OUT_OF_LUNAR_POWER = 337, + ERR_OUT_OF_HOLY_POWER = 338, + ERR_OUT_OF_MAELSTROM = 339, + ERR_OUT_OF_COMBO_POINTS = 340, + ERR_OUT_OF_INSANITY = 341, + ERR_OUT_OF_ARCANE_CHARGES = 342, + ERR_OUT_OF_FURY = 343, + ERR_OUT_OF_PAIN = 344, + ERR_OUT_OF_POWER_DISPLAY = 345, + ERR_LOOT_GONE = 346, + ERR_MOUNT_FORCEDDISMOUNT = 347, + ERR_AUTOFOLLOW_TOO_FAR = 348, + ERR_UNIT_NOT_FOUND = 349, + ERR_INVALID_FOLLOW_TARGET = 350, + ERR_INVALID_FOLLOW_PVP_COMBAT = 351, + ERR_INVALID_FOLLOW_TARGET_PVP_COMBAT = 352, + ERR_INVALID_INSPECT_TARGET = 353, + ERR_GUILDEMBLEM_SUCCESS = 354, + ERR_GUILDEMBLEM_INVALID_TABARD_COLORS = 355, + ERR_GUILDEMBLEM_NOGUILD = 356, + ERR_GUILDEMBLEM_NOTGUILDMASTER = 357, + ERR_GUILDEMBLEM_NOTENOUGHMONEY = 358, + ERR_GUILDEMBLEM_INVALIDVENDOR = 359, + ERR_EMBLEMERROR_NOTABARDGEOSET = 360, + ERR_SPELL_OUT_OF_RANGE = 361, + ERR_COMMAND_NEEDS_TARGET = 362, + ERR_NOAMMO_S = 363, + ERR_TOOBUSYTOFOLLOW = 364, + ERR_DUEL_REQUESTED = 365, + ERR_DUEL_CANCELLED = 366, + ERR_DEATHBINDALREADYBOUND = 367, + ERR_DEATHBIND_SUCCESS_S = 368, + ERR_NOEMOTEWHILERUNNING = 369, + ERR_ZONE_EXPLORED = 370, + ERR_ZONE_EXPLORED_XP = 371, + ERR_INVALID_ITEM_TARGET = 372, + ERR_INVALID_QUEST_TARGET = 373, + ERR_IGNORING_YOU_S = 374, + ERR_FISH_NOT_HOOKED = 375, + ERR_FISH_ESCAPED = 376, + ERR_SPELL_FAILED_NOTUNSHEATHED = 377, + ERR_PETITION_OFFERED_S = 378, + ERR_PETITION_SIGNED = 379, + ERR_PETITION_SIGNED_S = 380, + ERR_PETITION_DECLINED_S = 381, + ERR_PETITION_ALREADY_SIGNED = 382, + ERR_PETITION_RESTRICTED_ACCOUNT_TRIAL = 383, + ERR_PETITION_ALREADY_SIGNED_OTHER = 384, + ERR_PETITION_IN_GUILD = 385, + ERR_PETITION_CREATOR = 386, + ERR_PETITION_NOT_ENOUGH_SIGNATURES = 387, + ERR_PETITION_NOT_SAME_SERVER = 388, + ERR_PETITION_FULL = 389, + ERR_PETITION_ALREADY_SIGNED_BY_S = 390, + ERR_GUILD_NAME_INVALID = 391, + ERR_SPELL_UNLEARNED_S = 392, + ERR_PET_SPELL_ROOTED = 393, + ERR_PET_SPELL_AFFECTING_COMBAT = 394, + ERR_PET_SPELL_OUT_OF_RANGE = 395, + ERR_PET_SPELL_NOT_BEHIND = 396, + ERR_PET_SPELL_TARGETS_DEAD = 397, + ERR_PET_SPELL_DEAD = 398, + ERR_PET_SPELL_NOPATH = 399, + ERR_ITEM_CANT_BE_DESTROYED = 400, + ERR_TICKET_ALREADY_EXISTS = 401, + ERR_TICKET_CREATE_ERROR = 402, + ERR_TICKET_UPDATE_ERROR = 403, + ERR_TICKET_DB_ERROR = 404, + ERR_TICKET_NO_TEXT = 405, + ERR_TICKET_TEXT_TOO_LONG = 406, + ERR_OBJECT_IS_BUSY = 407, + ERR_EXHAUSTION_WELLRESTED = 408, + ERR_EXHAUSTION_RESTED = 409, + ERR_EXHAUSTION_NORMAL = 410, + ERR_EXHAUSTION_TIRED = 411, + ERR_EXHAUSTION_EXHAUSTED = 412, + ERR_NO_ITEMS_WHILE_SHAPESHIFTED = 413, + ERR_CANT_INTERACT_SHAPESHIFTED = 414, + ERR_REALM_NOT_FOUND = 415, + ERR_MAIL_QUEST_ITEM = 416, + ERR_MAIL_BOUND_ITEM = 417, + ERR_MAIL_CONJURED_ITEM = 418, + ERR_MAIL_BAG = 419, + ERR_MAIL_TO_SELF = 420, + ERR_MAIL_TARGET_NOT_FOUND = 421, + ERR_MAIL_DATABASE_ERROR = 422, + ERR_MAIL_DELETE_ITEM_ERROR = 423, + ERR_MAIL_WRAPPED_COD = 424, + ERR_MAIL_CANT_SEND_REALM = 425, + ERR_MAIL_SENT = 426, + ERR_NOT_HAPPY_ENOUGH = 427, + ERR_USE_CANT_IMMUNE = 428, + ERR_CANT_BE_DISENCHANTED = 429, + ERR_CANT_USE_DISARMED = 430, + ERR_AUCTION_QUEST_ITEM = 431, + ERR_AUCTION_BOUND_ITEM = 432, + ERR_AUCTION_CONJURED_ITEM = 433, + ERR_AUCTION_LIMITED_DURATION_ITEM = 434, + ERR_AUCTION_WRAPPED_ITEM = 435, + ERR_AUCTION_LOOT_ITEM = 436, + ERR_AUCTION_BAG = 437, + ERR_AUCTION_EQUIPPED_BAG = 438, + ERR_AUCTION_DATABASE_ERROR = 439, + ERR_AUCTION_BID_OWN = 440, + ERR_AUCTION_BID_INCREMENT = 441, + ERR_AUCTION_HIGHER_BID = 442, + ERR_AUCTION_MIN_BID = 443, + ERR_AUCTION_REPAIR_ITEM = 444, + ERR_AUCTION_USED_CHARGES = 445, + ERR_AUCTION_ALREADY_BID = 446, + ERR_AUCTION_STARTED = 447, + ERR_AUCTION_REMOVED = 448, + ERR_AUCTION_OUTBID_S = 449, + ERR_AUCTION_WON_S = 450, + ERR_AUCTION_SOLD_S = 451, + ERR_AUCTION_EXPIRED_S = 452, + ERR_AUCTION_REMOVED_S = 453, + ERR_AUCTION_BID_PLACED = 454, + ERR_LOGOUT_FAILED = 455, + ERR_QUEST_PUSH_SUCCESS_S = 456, + ERR_QUEST_PUSH_INVALID_S = 457, + ERR_QUEST_PUSH_ACCEPTED_S = 458, + ERR_QUEST_PUSH_DECLINED_S = 459, + ERR_QUEST_PUSH_BUSY_S = 460, + ERR_QUEST_PUSH_DEAD_S = 461, + ERR_QUEST_PUSH_LOG_FULL_S = 462, + ERR_QUEST_PUSH_ONQUEST_S = 463, + ERR_QUEST_PUSH_ALREADY_DONE_S = 464, + ERR_QUEST_PUSH_NOT_DAILY_S = 465, + ERR_QUEST_PUSH_TIMER_EXPIRED_S = 466, + ERR_QUEST_PUSH_NOT_IN_PARTY_S = 467, + ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_S = 468, + ERR_QUEST_PUSH_NOT_ALLOWED_S = 469, + ERR_RAID_GROUP_LOWLEVEL = 470, + ERR_RAID_GROUP_ONLY = 471, + ERR_RAID_GROUP_FULL = 472, + ERR_RAID_GROUP_REQUIREMENTS_UNMATCH = 473, + ERR_CORPSE_IS_NOT_IN_INSTANCE = 474, + ERR_PVP_KILL_HONORABLE = 475, + ERR_PVP_KILL_DISHONORABLE = 476, + ERR_SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 477, + ERR_SPELL_FAILED_ALREADY_AT_FULL_MANA = 478, + ERR_SPELL_FAILED_ALREADY_AT_FULL_POWER_S = 479, + ERR_AUTOLOOT_MONEY_S = 480, + ERR_GENERIC_STUNNED = 481, + ERR_TARGET_STUNNED = 482, + ERR_MUST_REPAIR_DURABILITY = 483, + ERR_RAID_YOU_JOINED = 484, + ERR_RAID_YOU_LEFT = 485, + ERR_INSTANCE_GROUP_JOINED_WITH_PARTY = 486, + ERR_INSTANCE_GROUP_JOINED_WITH_RAID = 487, + ERR_RAID_MEMBER_ADDED_S = 488, + ERR_RAID_MEMBER_REMOVED_S = 489, + ERR_INSTANCE_GROUP_ADDED_S = 490, + ERR_INSTANCE_GROUP_REMOVED_S = 491, + ERR_CLICK_ON_ITEM_TO_FEED = 492, + ERR_TOO_MANY_CHAT_CHANNELS = 493, + ERR_LOOT_ROLL_PENDING = 494, + ERR_LOOT_PLAYER_NOT_FOUND = 495, + ERR_NOT_IN_RAID = 496, + ERR_LOGGING_OUT = 497, + ERR_TARGET_LOGGING_OUT = 498, + ERR_NOT_WHILE_MOUNTED = 499, + ERR_NOT_WHILE_SHAPESHIFTED = 500, + ERR_NOT_IN_COMBAT = 501, + ERR_NOT_WHILE_DISARMED = 502, + ERR_PET_BROKEN = 503, + ERR_TALENT_WIPE_ERROR = 504, + ERR_SPEC_WIPE_ERROR = 505, + ERR_GLYPH_WIPE_ERROR = 506, + ERR_PET_SPEC_WIPE_ERROR = 507, + ERR_FEIGN_DEATH_RESISTED = 508, + ERR_MEETING_STONE_IN_QUEUE_S = 509, + ERR_MEETING_STONE_LEFT_QUEUE_S = 510, + ERR_MEETING_STONE_OTHER_MEMBER_LEFT = 511, + ERR_MEETING_STONE_PARTY_KICKED_FROM_QUEUE = 512, + ERR_MEETING_STONE_MEMBER_STILL_IN_QUEUE = 513, + ERR_MEETING_STONE_SUCCESS = 514, + ERR_MEETING_STONE_IN_PROGRESS = 515, + ERR_MEETING_STONE_MEMBER_ADDED_S = 516, + ERR_MEETING_STONE_GROUP_FULL = 517, + ERR_MEETING_STONE_NOT_LEADER = 518, + ERR_MEETING_STONE_INVALID_LEVEL = 519, + ERR_MEETING_STONE_TARGET_NOT_IN_PARTY = 520, + ERR_MEETING_STONE_TARGET_INVALID_LEVEL = 521, + ERR_MEETING_STONE_MUST_BE_LEADER = 522, + ERR_MEETING_STONE_NO_RAID_GROUP = 523, + ERR_MEETING_STONE_NEED_PARTY = 524, + ERR_MEETING_STONE_NOT_FOUND = 525, + ERR_GUILDEMBLEM_SAME = 526, + ERR_EQUIP_TRADE_ITEM = 527, + ERR_PVP_TOGGLE_ON = 528, + ERR_PVP_TOGGLE_OFF = 529, + ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS = 530, + ERR_GROUP_JOIN_BATTLEGROUND_DEAD = 531, + ERR_GROUP_JOIN_BATTLEGROUND_S = 532, + ERR_GROUP_JOIN_BATTLEGROUND_FAIL = 533, + ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY = 534, + ERR_SOLO_JOIN_BATTLEGROUND_S = 535, + ERR_JOIN_SINGLE_SCENARIO_S = 536, + ERR_BATTLEGROUND_TOO_MANY_QUEUES = 537, + ERR_BATTLEGROUND_CANNOT_QUEUE_FOR_RATED = 538, + ERR_BATTLEDGROUND_QUEUED_FOR_RATED = 539, + ERR_BATTLEGROUND_TEAM_LEFT_QUEUE = 540, + ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND = 541, + ERR_ALREADY_IN_ARENA_TEAM_S = 542, + ERR_INVALID_PROMOTION_CODE = 543, + ERR_BG_PLAYER_JOINED_SS = 544, + ERR_BG_PLAYER_LEFT_S = 545, + ERR_RESTRICTED_ACCOUNT = 546, + ERR_RESTRICTED_ACCOUNT_TRIAL = 547, + ERR_PLAY_TIME_EXCEEDED = 548, + ERR_APPROACHING_PARTIAL_PLAY_TIME = 549, + ERR_APPROACHING_PARTIAL_PLAY_TIME_2 = 550, + ERR_APPROACHING_NO_PLAY_TIME = 551, + ERR_APPROACHING_NO_PLAY_TIME_2 = 552, + ERR_UNHEALTHY_TIME = 553, + ERR_CHAT_RESTRICTED_TRIAL = 554, + ERR_CHAT_THROTTLED = 555, + ERR_MAIL_REACHED_CAP = 556, + ERR_INVALID_RAID_TARGET = 557, + ERR_RAID_LEADER_READY_CHECK_START_S = 558, + ERR_READY_CHECK_IN_PROGRESS = 559, + ERR_READY_CHECK_THROTTLED = 560, + ERR_DUNGEON_DIFFICULTY_FAILED = 561, + ERR_DUNGEON_DIFFICULTY_CHANGED_S = 562, + ERR_TRADE_WRONG_REALM = 563, + ERR_TRADE_NOT_ON_TAPLIST = 564, + ERR_CHAT_PLAYER_AMBIGUOUS_S = 565, + ERR_LOOT_CANT_LOOT_THAT_NOW = 566, + ERR_LOOT_MASTER_INV_FULL = 567, + ERR_LOOT_MASTER_UNIQUE_ITEM = 568, + ERR_LOOT_MASTER_OTHER = 569, + ERR_FILTERING_YOU_S = 570, + ERR_USE_PREVENTED_BY_MECHANIC_S = 571, + ERR_ITEM_UNIQUE_EQUIPPABLE = 572, + ERR_LFG_LEADER_IS_LFM_S = 573, + ERR_LFG_PENDING = 574, + ERR_CANT_SPEAK_LANGAGE = 575, + ERR_VENDOR_MISSING_TURNINS = 576, + ERR_BATTLEGROUND_NOT_IN_TEAM = 577, + ERR_NOT_IN_BATTLEGROUND = 578, + ERR_NOT_ENOUGH_HONOR_POINTS = 579, + ERR_NOT_ENOUGH_ARENA_POINTS = 580, + ERR_SOCKETING_REQUIRES_META_GEM = 581, + ERR_SOCKETING_META_GEM_ONLY_IN_METASLOT = 582, + ERR_SOCKETING_REQUIRES_HYDRAULIC_GEM = 583, + ERR_SOCKETING_HYDRAULIC_GEM_ONLY_IN_HYDRAULICSLOT = 584, + ERR_SOCKETING_REQUIRES_COGWHEEL_GEM = 585, + ERR_SOCKETING_COGWHEEL_GEM_ONLY_IN_COGWHEELSLOT = 586, + ERR_SOCKETING_ITEM_TOO_LOW_LEVEL = 587, + ERR_ITEM_MAX_COUNT_SOCKETED = 588, + ERR_SYSTEM_DISABLED = 589, + ERR_QUEST_FAILED_TOO_MANY_DAILY_QUESTS_I = 590, + ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 591, + ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 592, + ERR_USER_SQUELCHED = 593, + ERR_TOO_MUCH_GOLD = 594, + ERR_NOT_BARBER_SITTING = 595, + ERR_QUEST_FAILED_CAIS = 596, + ERR_INVITE_RESTRICTED_TRIAL = 597, + ERR_VOICE_IGNORE_FULL = 598, + ERR_VOICE_IGNORE_SELF = 599, + ERR_VOICE_IGNORE_NOT_FOUND = 600, + ERR_VOICE_IGNORE_ALREADY_S = 601, + ERR_VOICE_IGNORE_ADDED_S = 602, + ERR_VOICE_IGNORE_REMOVED_S = 603, + ERR_VOICE_IGNORE_AMBIGUOUS = 604, + ERR_VOICE_IGNORE_DELETED = 605, + ERR_UNKNOWN_MACRO_OPTION_S = 606, + ERR_NOT_DURING_ARENA_MATCH = 607, + ERR_PLAYER_SILENCED = 608, + ERR_PLAYER_UNSILENCED = 609, + ERR_COMSAT_DISCONNECT = 610, + ERR_COMSAT_RECONNECT_ATTEMPT = 611, + ERR_COMSAT_CONNECT_FAIL = 612, + ERR_MAIL_INVALID_ATTACHMENT_SLOT = 613, + ERR_MAIL_TOO_MANY_ATTACHMENTS = 614, + ERR_MAIL_INVALID_ATTACHMENT = 615, + ERR_MAIL_ATTACHMENT_EXPIRED = 616, + ERR_VOICE_CHAT_PARENTAL_DISABLE_MIC = 617, + ERR_PROFANE_CHAT_NAME = 618, + ERR_PLAYER_SILENCED_ECHO = 619, + ERR_PLAYER_UNSILENCED_ECHO = 620, + ERR_LOOT_CANT_LOOT_THAT = 621, + ERR_ARENA_EXPIRED_CAIS = 622, + ERR_GROUP_ACTION_THROTTLED = 623, + ERR_ALREADY_PICKPOCKETED = 624, + ERR_NAME_INVALID = 625, + ERR_NAME_NO_NAME = 626, + ERR_NAME_TOO_SHORT = 627, + ERR_NAME_TOO_LONG = 628, + ERR_NAME_MIXED_LANGUAGES = 629, + ERR_NAME_PROFANE = 630, + ERR_NAME_RESERVED = 631, + ERR_NAME_THREE_CONSECUTIVE = 632, + ERR_NAME_INVALID_SPACE = 633, + ERR_NAME_CONSECUTIVE_SPACES = 634, + ERR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 635, + ERR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 636, + ERR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 637, + ERR_REFER_A_FRIEND_NOT_REFERRED_BY = 638, + ERR_REFER_A_FRIEND_TARGET_TOO_HIGH = 639, + ERR_REFER_A_FRIEND_INSUFFICIENT_GRANTABLE_LEVELS = 640, + ERR_REFER_A_FRIEND_TOO_FAR = 641, + ERR_REFER_A_FRIEND_DIFFERENT_FACTION = 642, + ERR_REFER_A_FRIEND_NOT_NOW = 643, + ERR_REFER_A_FRIEND_GRANT_LEVEL_MAX_I = 644, + ERR_REFER_A_FRIEND_SUMMON_LEVEL_MAX_I = 645, + ERR_REFER_A_FRIEND_SUMMON_COOLDOWN = 646, + ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S = 647, + ERR_REFER_A_FRIEND_INSUF_EXPAN_LVL = 648, + ERR_REFER_A_FRIEND_NOT_IN_LFG = 649, + ERR_REFER_A_FRIEND_NO_XREALM = 650, + ERR_REFER_A_FRIEND_MAP_INCOMING_TRANSFER_NOT_ALLOWED = 651, + ERR_NOT_SAME_ACCOUNT = 652, + ERR_BAD_ON_USE_ENCHANT = 653, + ERR_TRADE_SELF = 654, + ERR_TOO_MANY_SOCKETS = 655, + ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 656, + ERR_TRADE_TARGET_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 657, + ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS = 658, + ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS = 659, + ERR_SHAPESHIFT_FORM_CANNOT_EQUIP = 660, + ERR_ITEM_INVENTORY_FULL_SATCHEL = 661, + ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 662, + ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW = 663, + ERR_PURCHASE_LEVEL_TOO_LOW = 664, + ERR_GROUP_SWAP_FAILED = 665, + ERR_INVITE_IN_COMBAT = 666, + ERR_INVALID_GLYPH_SLOT = 667, + ERR_GENERIC_NO_VALID_TARGETS = 668, + ERR_CALENDAR_EVENT_ALERT_S = 669, + ERR_PET_LEARN_SPELL_S = 670, + ERR_PET_LEARN_ABILITY_S = 671, + ERR_PET_SPELL_UNLEARNED_S = 672, + ERR_INVITE_UNKNOWN_REALM = 673, + ERR_INVITE_NO_PARTY_SERVER = 674, + ERR_INVITE_PARTY_BUSY = 675, + ERR_PARTY_TARGET_AMBIGUOUS = 676, + ERR_PARTY_LFG_INVITE_RAID_LOCKED = 677, + ERR_PARTY_LFG_BOOT_LIMIT = 678, + ERR_PARTY_LFG_BOOT_COOLDOWN_S = 679, + ERR_PARTY_LFG_BOOT_NOT_ELIGIBLE_S = 680, + ERR_PARTY_LFG_BOOT_INPATIENT_TIMER_S = 681, + ERR_PARTY_LFG_BOOT_IN_PROGRESS = 682, + ERR_PARTY_LFG_BOOT_TOO_FEW_PLAYERS = 683, + ERR_PARTY_LFG_BOOT_VOTE_SUCCEEDED = 684, + ERR_PARTY_LFG_BOOT_VOTE_FAILED = 685, + ERR_PARTY_LFG_BOOT_IN_COMBAT = 686, + ERR_PARTY_LFG_BOOT_DUNGEON_COMPLETE = 687, + ERR_PARTY_LFG_BOOT_LOOT_ROLLS = 688, + ERR_PARTY_LFG_BOOT_VOTE_REGISTERED = 689, + ERR_PARTY_PRIVATE_GROUP_ONLY = 690, + ERR_PARTY_LFG_TELEPORT_IN_COMBAT = 691, + ERR_RAID_DISALLOWED_BY_LEVEL = 692, + ERR_RAID_DISALLOWED_BY_CROSS_REALM = 693, + ERR_PARTY_ROLE_NOT_AVAILABLE = 694, + ERR_JOIN_LFG_OBJECT_FAILED = 695, + ERR_LFG_REMOVED_LEVELUP = 696, + ERR_LFG_REMOVED_XP_TOGGLE = 697, + ERR_LFG_REMOVED_FACTION_CHANGE = 698, + ERR_BATTLEGROUND_INFO_THROTTLED = 699, + ERR_BATTLEGROUND_ALREADY_IN = 700, + ERR_ARENA_TEAM_CHANGE_FAILED_QUEUED = 701, + ERR_ARENA_TEAM_PERMISSIONS = 702, + ERR_NOT_WHILE_FALLING = 703, + ERR_NOT_WHILE_MOVING = 704, + ERR_NOT_WHILE_FATIGUED = 705, + ERR_MAX_SOCKETS = 706, + ERR_MULTI_CAST_ACTION_TOTEM_S = 707, + ERR_BATTLEGROUND_JOIN_LEVELUP = 708, + ERR_REMOVE_FROM_PVP_QUEUE_XP_GAIN = 709, + ERR_BATTLEGROUND_JOIN_XP_GAIN = 710, + ERR_BATTLEGROUND_JOIN_MERCENARY = 711, + ERR_BATTLEGROUND_JOIN_TOO_MANY_HEALERS = 712, + ERR_BATTLEGROUND_JOIN_TOO_MANY_TANKS = 713, + ERR_BATTLEGROUND_JOIN_TOO_MANY_DAMAGE = 714, + ERR_RAID_DIFFICULTY_FAILED = 715, + ERR_RAID_DIFFICULTY_CHANGED_S = 716, + ERR_LEGACY_RAID_DIFFICULTY_CHANGED_S = 717, + ERR_RAID_LOCKOUT_CHANGED_S = 718, + ERR_RAID_CONVERTED_TO_PARTY = 719, + ERR_PARTY_CONVERTED_TO_RAID = 720, + ERR_PLAYER_DIFFICULTY_CHANGED_S = 721, + ERR_GMRESPONSE_DB_ERROR = 722, + ERR_BATTLEGROUND_JOIN_RANGE_INDEX = 723, + ERR_ARENA_JOIN_RANGE_INDEX = 724, + ERR_REMOVE_FROM_PVP_QUEUE_FACTION_CHANGE = 725, + ERR_BATTLEGROUND_JOIN_FAILED = 726, + ERR_BATTLEGROUND_JOIN_NO_VALID_SPEC_FOR_ROLE = 727, + ERR_BATTLEGROUND_JOIN_RESPEC = 728, + ERR_BATTLEGROUND_INVITATION_DECLINED = 729, + ERR_BATTLEGROUND_JOIN_TIMED_OUT = 730, + ERR_BATTLEGROUND_DUPE_QUEUE = 731, + ERR_BATTLEGROUND_JOIN_MUST_COMPLETE_QUEST = 732, + ERR_IN_BATTLEGROUND_RESPEC = 733, + ERR_MAIL_LIMITED_DURATION_ITEM = 734, + ERR_YELL_RESTRICTED_TRIAL = 735, + ERR_CHAT_RAID_RESTRICTED_TRIAL = 736, + ERR_LFG_ROLE_CHECK_FAILED = 737, + ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT = 738, + ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE = 739, + ERR_LFG_READY_CHECK_FAILED = 740, + ERR_LFG_READY_CHECK_FAILED_TIMEOUT = 741, + ERR_LFG_GROUP_FULL = 742, + ERR_LFG_NO_LFG_OBJECT = 743, + ERR_LFG_NO_SLOTS_PLAYER = 744, + ERR_LFG_NO_SLOTS_PARTY = 745, + ERR_LFG_NO_SPEC = 746, + ERR_LFG_MISMATCHED_SLOTS = 747, + ERR_LFG_MISMATCHED_SLOTS_LOCAL_XREALM = 748, + ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 749, + ERR_LFG_MEMBERS_NOT_PRESENT = 750, + ERR_LFG_GET_INFO_TIMEOUT = 751, + ERR_LFG_INVALID_SLOT = 752, + ERR_LFG_DESERTER_PLAYER = 753, + ERR_LFG_DESERTER_PARTY = 754, + ERR_LFG_DEAD = 755, + ERR_LFG_RANDOM_COOLDOWN_PLAYER = 756, + ERR_LFG_RANDOM_COOLDOWN_PARTY = 757, + ERR_LFG_TOO_MANY_MEMBERS = 758, + ERR_LFG_TOO_FEW_MEMBERS = 759, + ERR_LFG_PROPOSAL_FAILED = 760, + ERR_LFG_PROPOSAL_DECLINED_SELF = 761, + ERR_LFG_PROPOSAL_DECLINED_PARTY = 762, + ERR_LFG_NO_SLOTS_SELECTED = 763, + ERR_LFG_NO_ROLES_SELECTED = 764, + ERR_LFG_ROLE_CHECK_INITIATED = 765, + ERR_LFG_READY_CHECK_INITIATED = 766, + ERR_LFG_PLAYER_DECLINED_ROLE_CHECK = 767, + ERR_LFG_PLAYER_DECLINED_READY_CHECK = 768, + ERR_LFG_JOINED_QUEUE = 769, + ERR_LFG_JOINED_FLEX_QUEUE = 770, + ERR_LFG_JOINED_RF_QUEUE = 771, + ERR_LFG_JOINED_SCENARIO_QUEUE = 772, + ERR_LFG_JOINED_WORLD_PVP_QUEUE = 773, + ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 774, + ERR_LFG_JOINED_LIST = 775, + ERR_LFG_LEFT_QUEUE = 776, + ERR_LFG_LEFT_LIST = 777, + ERR_LFG_ROLE_CHECK_ABORTED = 778, + ERR_LFG_READY_CHECK_ABORTED = 779, + ERR_LFG_CANT_USE_BATTLEGROUND = 780, + ERR_LFG_CANT_USE_DUNGEONS = 781, + ERR_LFG_REASON_TOO_MANY_LFG = 782, + ERR_INVALID_TELEPORT_LOCATION = 783, + ERR_TOO_FAR_TO_INTERACT = 784, + ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 785, + ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 786, + ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 787, + ERR_DIFFICULTY_CHANGE_WORLDSTATE = 788, + ERR_DIFFICULTY_CHANGE_ENCOUNTER = 789, + ERR_DIFFICULTY_CHANGE_COMBAT = 790, + ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 791, + ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 792, + ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 793, + ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 794, + ERR_ARENA_TEAM_PARTY_SIZE = 795, + ERR_QUEST_FORCE_REMOVED_S = 796, + ERR_ATTACK_NO_ACTIONS = 797, + ERR_IN_RANDOM_BG = 798, + ERR_IN_NON_RANDOM_BG = 799, + ERR_AUCTION_ENOUGH_ITEMS = 800, + ERR_BN_FRIEND_SELF = 801, + ERR_BN_FRIEND_ALREADY = 802, + ERR_BN_FRIEND_BLOCKED = 803, + ERR_BN_FRIEND_LIST_FULL = 804, + ERR_BN_FRIEND_REQUEST_SENT = 805, + ERR_BN_BROADCAST_THROTTLE = 806, + ERR_BG_DEVELOPER_ONLY = 807, + ERR_CURRENCY_SPELL_SLOT_MISMATCH = 808, + ERR_CURRENCY_NOT_TRADABLE = 809, + ERR_REQUIRES_EXPANSION_S = 810, + ERR_QUEST_FAILED_SPELL = 811, + ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 812, + ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 813, + ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 814, + ERR_TALENT_FAILED_UNKNOWN = 815, + ERR_WARGAME_REQUEST_FAILURE = 816, + ERR_RANK_REQUIRES_AUTHENTICATOR = 817, + ERR_GUILD_BANK_VOUCHER_FAILED = 818, + ERR_WARGAME_REQUEST_SENT = 819, + ERR_REQUIRES_ACHIEVEMENT_I = 820, + ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 821, + ERR_CANT_BUY_QUANTITY = 822, + ERR_ITEM_IS_BATTLE_PAY_LOCKED = 823, + ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 824, + ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 825, + ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 826, + ERR_INSUFF_TRACKED_CURRENCY_IS = 827, + ERR_NOT_ON_TOURNAMENT_REALM = 828, + ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 829, + ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 830, + ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 831, + ERR_CANT_DO_THAT_IN_A_GROUP = 832, + ERR_GUILD_LEADER_REPLACED = 833, + ERR_TRANSMOGRIFY_CANT_EQUIP = 834, + ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 835, + ERR_TRANSMOGRIFY_NOT_SOULBOUND = 836, + ERR_TRANSMOGRIFY_INVALID_SOURCE = 837, + ERR_TRANSMOGRIFY_INVALID_DESTINATION = 838, + ERR_TRANSMOGRIFY_MISMATCH = 839, + ERR_TRANSMOGRIFY_LEGENDARY = 840, + ERR_TRANSMOGRIFY_SAME_ITEM = 841, + ERR_TRANSMOGRIFY_SAME_APPEARANCE = 842, + ERR_TRANSMOGRIFY_NOT_EQUIPPED = 843, + ERR_VOID_DEPOSIT_FULL = 844, + ERR_VOID_WITHDRAW_FULL = 845, + ERR_VOID_STORAGE_WRAPPED = 846, + ERR_VOID_STORAGE_STACKABLE = 847, + ERR_VOID_STORAGE_UNBOUND = 848, + ERR_VOID_STORAGE_REPAIR = 849, + ERR_VOID_STORAGE_CHARGES = 850, + ERR_VOID_STORAGE_QUEST = 851, + ERR_VOID_STORAGE_CONJURED = 852, + ERR_VOID_STORAGE_MAIL = 853, + ERR_VOID_STORAGE_BAG = 854, + ERR_VOID_TRANSFER_STORAGE_FULL = 855, + ERR_VOID_TRANSFER_INV_FULL = 856, + ERR_VOID_TRANSFER_INTERNAL_ERROR = 857, + ERR_VOID_TRANSFER_ITEM_INVALID = 858, + ERR_DIFFICULTY_DISABLED_IN_LFG = 859, + ERR_VOID_STORAGE_UNIQUE = 860, + ERR_VOID_STORAGE_LOOT = 861, + ERR_VOID_STORAGE_HOLIDAY = 862, + ERR_VOID_STORAGE_DURATION = 863, + ERR_VOID_STORAGE_LOAD_FAILED = 864, + ERR_VOID_STORAGE_INVALID_ITEM = 865, + ERR_PARENTAL_CONTROLS_CHAT_MUTED = 866, + ERR_SOR_START_EXPERIENCE_INCOMPLETE = 867, + ERR_SOR_INVALID_EMAIL = 868, + ERR_SOR_INVALID_COMMENT = 869, + ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 870, + ERR_CHALLENGE_MODE_RESET_KEYSTONE = 871, + ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 872, + ERR_REPORT_SUBMITTED_SUCCESSFULLY = 873, + ERR_REPORT_SUBMISSION_FAILED = 874, + ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 875, + ERR_BUG_SUBMITTED_SUCCESSFULLY = 876, + ERR_CHALLENGE_MODE_ENABLED = 877, + ERR_CHALLENGE_MODE_DISABLED = 878, + ERR_PETBATTLE_CREATE_FAILED = 879, + ERR_PETBATTLE_NOT_HERE = 880, + ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 881, + ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 882, + ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 883, + ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 884, + ERR_PETBATTLE_NOT_WHILE_DEAD = 885, + ERR_PETBATTLE_NOT_WHILE_FLYING = 886, + ERR_PETBATTLE_TARGET_INVALID = 887, + ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 888, + ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 889, + ERR_PETBATTLE_NOT_A_TRAINER = 890, + ERR_PETBATTLE_DECLINED = 891, + ERR_PETBATTLE_IN_BATTLE = 892, + ERR_PETBATTLE_INVALID_LOADOUT = 893, + ERR_PETBATTLE_ALL_PETS_DEAD = 894, + ERR_PETBATTLE_NO_PETS_IN_SLOTS = 895, + ERR_PETBATTLE_NO_ACCOUNT_LOCK = 896, + ERR_PETBATTLE_WILD_PET_TAPPED = 897, + ERR_PETBATTLE_RESTRICTED_ACCOUNT = 898, + ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 899, + ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 900, + ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 901, + ERR_CANT_HAVE_MORE_PETS = 902, + ERR_PVP_MAP_NOT_FOUND = 903, + ERR_PVP_MAP_NOT_SET = 904, + ERR_PETBATTLE_QUEUE_QUEUED = 905, + ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 906, + ERR_PETBATTLE_QUEUE_JOIN_FAILED = 907, + ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 908, + ERR_PETBATTLE_QUEUE_REMOVED = 909, + ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 910, + ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 911, + ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 912, + ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 913, + ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 914, + ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 915, + ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 916, + ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 917, + ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 918, + ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 919, + ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 920, + ERR_PETBATTLE_QUEUE_SLOT_DEAD = 921, + ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 922, + ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 923, + ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 924, + ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 925, + ERR_HAS_RESTRICTION = 926, + ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 927, + ERR_ITEM_UPGRADE_NO_PATH = 928, + ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 929, + ERR_BONUS_ROLL_EMPTY = 930, + ERR_CHALLENGE_MODE_FULL = 931, + ERR_CHALLENGE_MODE_IN_PROGRESS = 932, + ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 933, + ERR_BATTLETAG_FRIEND_NOT_FOUND = 934, + ERR_BATTLETAG_FRIEND_NOT_VALID = 935, + ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 936, + ERR_BATTLETAG_FRIEND_THROTTLED = 937, + ERR_BATTLETAG_FRIEND_SUCCESS = 938, + ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 939, + ERR_PETBATTLE_INTERNAL = 940, + ERR_CANT_CAGE_PET_YET = 941, + ERR_NO_LOOT_IN_CHALLENGE_MODE = 942, + ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 943, + ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 944, + ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 945, + ERR_RECRUIT_A_FRIEND_FAILED = 946, + ERR_SET_LOOT_PERSONAL = 947, + ERR_SET_LOOT_METHOD_FAILED_COMBAT = 948, + ERR_REAGENT_BANK_FULL = 949, + ERR_REAGENT_BANK_LOCKED = 950, + ERR_GARRISON_BUILDING_EXISTS = 951, + ERR_GARRISON_INVALID_PLOT = 952, + ERR_GARRISON_INVALID_BUILDINGID = 953, + ERR_GARRISON_INVALID_PLOT_BUILDING = 954, + ERR_GARRISON_REQUIRES_BLUEPRINT = 955, + ERR_GARRISON_NOT_ENOUGH_CURRENCY = 956, + ERR_GARRISON_NOT_ENOUGH_GOLD = 957, + ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 958, + ERR_ALREADY_USING_LFG_LIST = 959, + ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 960, + ERR_TOY_USE_LIMIT_REACHED = 961, + ERR_TOY_ALREADY_KNOWN = 962, + ERR_TRANSMOG_SET_ALREADY_KNOWN = 963, + ERR_NOT_ENOUGH_CURRENCY = 964, + ERR_SPEC_IS_DISABLED = 965, + ERR_FEATURE_RESTRICTED_TRIAL = 966, + ERR_CANT_BE_OBLITERATED = 967, + ERR_CANT_BE_SCRAPPED = 968, + ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 969, + ERR_MUST_EQUIP_ARTIFACT = 970, + ERR_CANT_DO_THAT_RIGHT_NOW = 971, + ERR_AFFECTING_COMBAT = 972, + ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 973, + ERR_EQUIPMENT_MANAGER_BAGS_FULL = 974, + ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 975, + ERR_MOVIE_RECORDING_WARNING_PERF = 976, + ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 977, + ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 978, + ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 979, + ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 980, + ERR_NO_CHALLENGE_MODE_REWARD = 981, + ERR_CLAIMED_CHALLENGE_MODE_REWARD = 982, + ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 983, + ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 984, + ERR_TALENT_FAILED_REST_AREA = 985, + ERR_CANNOT_ABANDON_LAST_PET = 986, + ERR_TEST_CVAR_SET_SSS = 987, + ERR_QUEST_TURN_IN_FAIL_REASON = 988, + ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 989, + ERR_TALENT_GRANTED_BY_AURA = 990, + ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 991, + ERR_GLYPH_TARGET_NOT_AVAILABLE = 992, + ERR_PVP_WARMODE_TOGGLE_ON = 993, + ERR_PVP_WARMODE_TOGGLE_OFF = 994, + ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 995, + ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 996, + ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 997, + ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 998, + ERR_VOICE_CHAT_SERVICE_LOST = 999, + ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1000, + ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1001, + ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1002, + ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1003, + ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1004, + ERR_VOICE_CHAT_PLAYER_SILENCED = 1005, + ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1006, + ERR_VOICE_CHAT_DISABLED = 1007, + ERR_NO_PVP_REWARD = 1008, + ERR_CLAIMED_PVP_REWARD = 1009, }; #endif diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index e2f18ace45e..532779af445 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -64,7 +64,7 @@ namespace WorldPackets CreatureTemplate const* creatureTemplate = attacker->GetCreatureTemplate(); Type = TYPE_CREATURE_TO_PLAYER_DAMAGE; - PlayerLevelDelta = target->GetInt32Value(PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); + PlayerLevelDelta = target->GetInt32Value(ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); PlayerItemLevel = target->GetAverageItemLevel(); TargetLevel = target->getLevel(); Expansion = creatureTemplate->RequiredExpansion; @@ -81,7 +81,7 @@ namespace WorldPackets CreatureTemplate const* creatureTemplate = target->GetCreatureTemplate(); Type = TYPE_PLAYER_TO_CREATURE_DAMAGE; - PlayerLevelDelta = attacker->GetInt32Value(PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); + PlayerLevelDelta = attacker->GetInt32Value(ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); PlayerItemLevel = attacker->GetAverageItemLevel(); TargetLevel = target->getLevel(); Expansion = creatureTemplate->RequiredExpansion; diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 0197441f0b5..b7994e19bf6 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -572,9 +572,9 @@ void WorldSession::LogoutPlayer(bool save) for (int j = BUYBACK_SLOT_START; j < BUYBACK_SLOT_END; ++j) { eslot = j - BUYBACK_SLOT_START; - _player->SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (j * 4), ObjectGuid::Empty); - _player->SetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + eslot, 0); - _player->SetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1 + eslot, 0); + _player->SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (j * 4), ObjectGuid::Empty); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + eslot, 0); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP + eslot, 0); } _player->SaveToDB(); } diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index b639fe12d75..76547257af2 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -609,7 +609,7 @@ int32 AuraEffect::CalculateAmount(Unit* caster) if (!m_spellInfo->HasAttribute(SPELL_ATTR8_MASTERY_SPECIALIZATION) || G3D::fuzzyEq(GetSpellEffectInfo()->BonusCoefficient, 0.0f)) amount = GetSpellEffectInfo()->CalcValue(caster, &m_baseAmount, GetBase()->GetOwner()->ToUnit(), nullptr, GetBase()->GetCastItemLevel()); else if (caster && caster->GetTypeId() == TYPEID_PLAYER) - amount = int32(caster->GetFloatValue(PLAYER_MASTERY) * GetSpellEffectInfo()->BonusCoefficient); + amount = int32(caster->GetFloatValue(ACTIVE_PLAYER_FIELD_MASTERY) * GetSpellEffectInfo()->BonusCoefficient); // check item enchant aura cast if (!amount && caster) @@ -1483,7 +1483,7 @@ void AuraEffect::HandleModInvisibility(AuraApplication const* aurApp, uint8 mode { // apply glow vision if (target->GetTypeId() == TYPEID_PLAYER) - target->SetByteFlag(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW); + target->SetByteFlag(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW); target->m_invisibility.AddFlag(type); target->m_invisibility.AddValue(type, GetAmount()); @@ -1495,7 +1495,7 @@ void AuraEffect::HandleModInvisibility(AuraApplication const* aurApp, uint8 mode // if not have different invisibility auras. // remove glow vision if (target->GetTypeId() == TYPEID_PLAYER) - target->RemoveByteFlag(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW); + target->RemoveByteFlag(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW); target->m_invisibility.DelFlag(type); } @@ -1567,7 +1567,7 @@ void AuraEffect::HandleModStealth(AuraApplication const* aurApp, uint8 mode, boo target->SetStandFlags(UNIT_STAND_FLAGS_CREEP); if (target->GetTypeId() == TYPEID_PLAYER) - target->SetByteFlag(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_STEALTH); + target->SetByteFlag(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_STEALTH); } else { @@ -1579,7 +1579,7 @@ void AuraEffect::HandleModStealth(AuraApplication const* aurApp, uint8 mode, boo target->RemoveStandFlags(UNIT_STAND_FLAGS_CREEP); if (target->GetTypeId() == TYPEID_PLAYER) - target->RemoveByteFlag(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_STEALTH); + target->RemoveByteFlag(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_STEALTH); } } @@ -2400,9 +2400,9 @@ void AuraEffect::HandleAuraTrackCreatures(AuraApplication const* aurApp, uint8 m return; if (apply) - target->SetFlag(PLAYER_TRACK_CREATURES, uint32(1) << (GetMiscValue() - 1)); + target->SetFlag(ACTIVE_PLAYER_FIELD_TRACK_CREATURES, uint32(1) << (GetMiscValue() - 1)); else - target->RemoveFlag(PLAYER_TRACK_CREATURES, uint32(1) << (GetMiscValue() - 1)); + target->RemoveFlag(ACTIVE_PLAYER_FIELD_TRACK_CREATURES, uint32(1) << (GetMiscValue() - 1)); } void AuraEffect::HandleAuraTrackResources(AuraApplication const* aurApp, uint8 mode, bool apply) const @@ -2416,9 +2416,9 @@ void AuraEffect::HandleAuraTrackResources(AuraApplication const* aurApp, uint8 m return; if (apply) - target->SetFlag(PLAYER_TRACK_RESOURCES, uint32(1) << (GetMiscValue() - 1)); + target->SetFlag(ACTIVE_PLAYER_FIELD_TRACK_RESOURCES, uint32(1) << (GetMiscValue() - 1)); else - target->RemoveFlag(PLAYER_TRACK_RESOURCES, uint32(1) << (GetMiscValue() - 1)); + target->RemoveFlag(ACTIVE_PLAYER_FIELD_TRACK_RESOURCES, uint32(1) << (GetMiscValue() - 1)); } void AuraEffect::HandleAuraTrackStealthed(AuraApplication const* aurApp, uint8 mode, bool apply) const @@ -2437,7 +2437,7 @@ void AuraEffect::HandleAuraTrackStealthed(AuraApplication const* aurApp, uint8 m if (target->HasAuraType(GetAuraType())) return; } - target->ApplyModFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_TRACK_STEALTHED, apply); + target->ApplyModFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_TRACK_STEALTHED, apply); } void AuraEffect::HandleAuraModStalked(AuraApplication const* aurApp, uint8 mode, bool apply) const @@ -3202,14 +3202,8 @@ void AuraEffect::HandleAuraModResistance(AuraApplication const* aurApp, uint8 mo Unit* target = aurApp->GetTarget(); for (int8 x = SPELL_SCHOOL_NORMAL; x < MAX_SPELL_SCHOOL; x++) - { if (GetMiscValue() & int32(1<HandleStatModifier(UnitMods(UNIT_MOD_RESISTANCE_START + x), TOTAL_VALUE, float(GetAmount()), apply); - if (target->GetTypeId() == TYPEID_PLAYER || target->IsPet()) - target->ApplyResistanceBuffModsMod(SpellSchools(x), GetAmount() > 0, (float)GetAmount(), apply); - } - } } void AuraEffect::HandleAuraModBaseResistancePCT(AuraApplication const* aurApp, uint8 mode, bool apply) const @@ -3251,20 +3245,9 @@ void AuraEffect::HandleModResistancePercent(AuraApplication const* aurApp, uint8 if (GetMiscValue() & int32(1<HandleStatModifier(UnitMods(UNIT_MOD_RESISTANCE_START + i), TOTAL_PCT, (float)spellGroupVal, !apply); - if (target->GetTypeId() == TYPEID_PLAYER || target->IsPet()) - { - target->ApplyResistanceBuffModsPercentMod(SpellSchools(i), true, (float)spellGroupVal, !apply); - target->ApplyResistanceBuffModsPercentMod(SpellSchools(i), false, (float)spellGroupVal, !apply); - } - } + target->HandleStatModifier(UnitMods(UNIT_MOD_RESISTANCE_START + i), TOTAL_PCT, float(GetAmount()), apply); - if (target->GetTypeId() == TYPEID_PLAYER || target->IsPet()) - { - target->ApplyResistanceBuffModsPercentMod(SpellSchools(i), true, (float)GetAmount(), apply); - target->ApplyResistanceBuffModsPercentMod(SpellSchools(i), false, (float)GetAmount(), apply); - } } } } @@ -3302,11 +3285,11 @@ void AuraEffect::HandleModTargetResistance(AuraApplication const* aurApp, uint8 // show armor penetration if (target->GetTypeId() == TYPEID_PLAYER && (GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL)) - target->ApplyModInt32Value(PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE, GetAmount(), apply); + target->ApplyModInt32Value(ACTIVE_PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE, GetAmount(), apply); // show as spell penetration only full spell penetration bonuses (all resistances except armor and holy if (target->GetTypeId() == TYPEID_PLAYER && (GetMiscValue() & SPELL_SCHOOL_MASK_SPELL) == SPELL_SCHOOL_MASK_SPELL) - target->ApplyModInt32Value(PLAYER_FIELD_MOD_TARGET_RESISTANCE, GetAmount(), apply); + target->ApplyModInt32Value(ACTIVE_PLAYER_FIELD_MOD_TARGET_RESISTANCE, GetAmount(), apply); } /********************************/ @@ -3582,7 +3565,7 @@ void AuraEffect::HandleOverrideSpellPowerByAttackPower(AuraApplication const* au if (!target) return; - target->ApplyModSignedFloatValue(PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT, float(m_amount), apply); + target->ApplyModSignedFloatValue(ACTIVE_PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT, float(m_amount), apply); target->UpdateSpellDamageAndHealingBonus(); } @@ -3595,7 +3578,7 @@ void AuraEffect::HandleOverrideAttackPowerBySpellPower(AuraApplication const* au if (!target) return; - target->ApplyModSignedFloatValue(PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT, float(m_amount), apply); + target->ApplyModSignedFloatValue(ACTIVE_PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT, float(m_amount), apply); target->UpdateAttackPowerAndDamage(); target->UpdateAttackPowerAndDamage(true); } @@ -3607,7 +3590,7 @@ void AuraEffect::HandleModVersatilityByPct(AuraApplication const* aurApp, uint8 if (Player* target = aurApp->GetTarget()->ToPlayer()) { - target->SetStatFloatValue(PLAYER_VERSATILITY_BONUS, target->GetTotalAuraModifier(SPELL_AURA_MOD_VERSATILITY)); + target->SetStatFloatValue(ACTIVE_PLAYER_FIELD_VERSATILITY_BONUS, target->GetTotalAuraModifier(SPELL_AURA_MOD_VERSATILITY)); target->UpdateHealingDonePercentMod(); target->UpdateVersatilityDamageDone(); } @@ -4210,7 +4193,7 @@ void AuraEffect::HandleModDamageDone(AuraApplication const* aurApp, uint8 mode, // This information for client side use only if (target->GetTypeId() == TYPEID_PLAYER) { - uint16 baseField = GetAmount() >= 0 ? PLAYER_FIELD_MOD_DAMAGE_DONE_POS : PLAYER_FIELD_MOD_DAMAGE_DONE_NEG; + uint16 baseField = GetAmount() >= 0 ? ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS : ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG; for (uint16 i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) if (GetMiscValue() & (1 << i)) target->ApplyModInt32Value(baseField + i, GetAmount(), apply); @@ -4251,9 +4234,9 @@ void AuraEffect::HandleModDamagePercentDone(AuraApplication const* aurApp, uint8 if (GetMiscValue() & (1 << i)) { if (spellGroupVal) - target->ApplyPercentModFloatValue(PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i, float(spellGroupVal), !apply); + target->ApplyPercentModFloatValue(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i, float(spellGroupVal), !apply); - target->ApplyPercentModFloatValue(PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i, float(GetAmount()), apply); + target->ApplyPercentModFloatValue(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i, float(GetAmount()), apply); } } } @@ -4341,10 +4324,10 @@ void AuraEffect::HandleNoReagentUseAura(AuraApplication const* aurApp, uint8 mod if (SpellEffectInfo const* effect = (*i)->GetSpellEffectInfo()) mask |= effect->SpellClassMask; - target->SetUInt32Value(PLAYER_NO_REAGENT_COST_1 , mask[0]); - target->SetUInt32Value(PLAYER_NO_REAGENT_COST_1+1, mask[1]); - target->SetUInt32Value(PLAYER_NO_REAGENT_COST_1+2, mask[2]); - target->SetUInt32Value(PLAYER_NO_REAGENT_COST_1+3, mask[3]); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST , mask[0]); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST+1, mask[1]); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST+2, mask[2]); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST+3, mask[3]); } void AuraEffect::HandleAuraRetainComboPoints(AuraApplication const* aurApp, uint8 mode, bool apply) const @@ -4953,7 +4936,7 @@ void AuraEffect::HandleAuraOverrideSpells(AuraApplication const* aurApp, uint8 m if (apply) { - target->SetUInt16Value(PLAYER_FIELD_BYTES3, PLAYER_BYTES_3_OVERRIDE_SPELLS_UINT16_OFFSET, overrideId); + target->SetUInt16Value(ACTIVE_PLAYER_FIELD_BYTES3, PLAYER_BYTES_3_OVERRIDE_SPELLS_UINT16_OFFSET, overrideId); if (OverrideSpellDataEntry const* overrideSpells = sOverrideSpellDataStore.LookupEntry(overrideId)) for (uint8 i = 0; i < MAX_OVERRIDE_SPELL; ++i) if (uint32 spellId = overrideSpells->Spells[i]) @@ -4961,7 +4944,7 @@ void AuraEffect::HandleAuraOverrideSpells(AuraApplication const* aurApp, uint8 m } else { - target->SetUInt16Value(PLAYER_FIELD_BYTES3, PLAYER_BYTES_3_OVERRIDE_SPELLS_UINT16_OFFSET, 0); + target->SetUInt16Value(ACTIVE_PLAYER_FIELD_BYTES3, PLAYER_BYTES_3_OVERRIDE_SPELLS_UINT16_OFFSET, 0); if (OverrideSpellDataEntry const* overrideSpells = sOverrideSpellDataStore.LookupEntry(overrideId)) for (uint8 i = 0; i < MAX_OVERRIDE_SPELL; ++i) if (uint32 spellId = overrideSpells->Spells[i]) @@ -5005,9 +4988,9 @@ void AuraEffect::HandlePreventResurrection(AuraApplication const* aurApp, uint8 return; if (apply) - aurApp->GetTarget()->RemoveFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER); + aurApp->GetTarget()->RemoveFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER); else if (!aurApp->GetTarget()->GetMap()->Instanceable()) - aurApp->GetTarget()->SetFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER); + aurApp->GetTarget()->SetFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER); } void AuraEffect::HandleMastery(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const @@ -6156,9 +6139,9 @@ void AuraEffect::HandleAllowUsingGameobjectsWhileMounted(AuraApplication const* return; if (apply) - aurApp->GetTarget()->SetFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED); + aurApp->GetTarget()->SetFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED); else if (!aurApp->GetTarget()->HasAuraType(SPELL_AURA_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED)) - aurApp->GetTarget()->RemoveFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED); + aurApp->GetTarget()->RemoveFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED); } void AuraEffect::HandlePlayScene(AuraApplication const* aurApp, uint8 mode, bool apply) const diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 796f0c1c803..f33472669b7 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -3925,9 +3925,9 @@ inline float CalcPPMCritMod(SpellProcsPerMinuteModEntry const* mod, Unit* caster if (caster->GetTypeId() != TYPEID_PLAYER) return 0.0f; - float crit = caster->GetFloatValue(PLAYER_CRIT_PERCENTAGE); - float rangedCrit = caster->GetFloatValue(PLAYER_RANGED_CRIT_PERCENTAGE); - float spellCrit = caster->GetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1); + float crit = caster->GetFloatValue(ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE); + float rangedCrit = caster->GetFloatValue(ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE); + float spellCrit = caster->GetFloatValue(ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1); switch (mod->Param) { diff --git a/src/server/scripts/Commands/cs_character.cpp b/src/server/scripts/Commands/cs_character.cpp index 9107c0c2ebb..101d522e85b 100644 --- a/src/server/scripts/Commands/cs_character.cpp +++ b/src/server/scripts/Commands/cs_character.cpp @@ -234,7 +234,7 @@ public: { player->GiveLevel(newLevel); player->InitTalentForLevel(); - player->SetUInt32Value(PLAYER_XP, 0); + player->SetUInt32Value(ACTIVE_PLAYER_FIELD_XP, 0); if (handler->needReportToTarget(player)) { diff --git a/src/server/scripts/Commands/cs_cheat.cpp b/src/server/scripts/Commands/cs_cheat.cpp index b9c2e78b98a..c4100d84438 100644 --- a/src/server/scripts/Commands/cs_cheat.cpp +++ b/src/server/scripts/Commands/cs_cheat.cpp @@ -276,9 +276,9 @@ public: for (uint16 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i) { if (flag != 0) - handler->GetSession()->GetPlayer()->SetFlag(PLAYER_EXPLORED_ZONES_1+i, 0xFFFFFFFF); + handler->GetSession()->GetPlayer()->SetFlag(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + i, 0xFFFFFFFF); else - handler->GetSession()->GetPlayer()->SetFlag(PLAYER_EXPLORED_ZONES_1+i, 0); + handler->GetSession()->GetPlayer()->SetFlag(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + i, 0); } return true; diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 9be3ff64559..a5a3fe831b2 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1203,8 +1203,8 @@ public: } uint32 val = uint32((1 << (area->AreaBit % 32))); - uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset); - playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields | val))); + uint32 currFields = playerTarget->GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + offset); + playerTarget->SetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + offset, uint32((currFields | val))); handler->SendSysMessage(LANG_EXPLORE_AREA); return true; @@ -1247,8 +1247,8 @@ public: } uint32 val = uint32((1 << (area->AreaBit % 32))); - uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset); - playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields ^ val))); + uint32 currFields = playerTarget->GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + offset); + playerTarget->SetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + offset, uint32((currFields ^ val))); handler->SendSysMessage(LANG_UNEXPLORE_AREA); return true; diff --git a/src/server/scripts/Commands/cs_reset.cpp b/src/server/scripts/Commands/cs_reset.cpp index 10c924b89ed..1c62712f5bd 100644 --- a/src/server/scripts/Commands/cs_reset.cpp +++ b/src/server/scripts/Commands/cs_reset.cpp @@ -83,8 +83,8 @@ public: if (!handler->extractPlayerTarget((char*)args, &target)) return false; - target->SetUInt32Value(PLAYER_FIELD_KILLS, 0); - target->SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 0); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_KILLS, 0); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 0); target->UpdateCriteria(CRITERIA_TYPE_EARN_HONORABLE_KILL); return true; @@ -117,7 +117,7 @@ public: player->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE); //-1 is default value - player->SetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1)); + player->SetUInt32Value(ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1)); return true; } @@ -143,7 +143,7 @@ public: target->InitStatsForLevel(true); target->InitTaxiNodesForLevel(); target->InitTalentForLevel(); - target->SetUInt32Value(PLAYER_XP, 0); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_XP, 0); target->_ApplyAllLevelScaleItemMods(true); diff --git a/src/server/scripts/Commands/cs_titles.cpp b/src/server/scripts/Commands/cs_titles.cpp index b493f810e13..c910d9ca8ce 100644 --- a/src/server/scripts/Commands/cs_titles.cpp +++ b/src/server/scripts/Commands/cs_titles.cpp @@ -234,7 +234,7 @@ public: titles &= ~titles2; // remove non-existing titles - target->SetUInt64Value(PLAYER__FIELD_KNOWN_TITLES, titles); + target->SetUInt64Value(ACTIVE_PLAYER_FIELD_KNOWN_TITLES, titles); handler->SendSysMessage(LANG_DONE); if (!target->HasTitle(target->GetInt32Value(PLAYER_CHOSEN_TITLE))) diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp index 4acf2099f51..e869ee3e6c1 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp @@ -173,7 +173,7 @@ class boss_sapphiron : public CreatureScript switch(spell->Id) { case SPELL_CHECK_RESISTS: - if (target && target->GetResistance(SPELL_SCHOOL_FROST) > MAX_FROST_RESISTANCE) + if (target && target->GetResistance(SPELL_SCHOOL_MASK_FROST) > MAX_FROST_RESISTANCE) _canTheHundredClub = false; break; } diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp index a1376de652f..8649c4c1601 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp @@ -150,7 +150,7 @@ class boss_high_astromancer_solarian : public CreatureScript { Initialize(); _Reset(); - me->SetArmor(defaultarmor); + me->SetArmor(defaultarmor, 0); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetVisible(true); me->SetObjectScale(defaultsize); @@ -403,7 +403,7 @@ class boss_high_astromancer_solarian : public CreatureScript me->SetVisible(true); Talk(SAY_VOIDA); Talk(SAY_VOIDB); - me->SetArmor(WV_ARMOR); + me->SetArmor(WV_ARMOR, 0); me->SetDisplayId(MODEL_VOIDWALKER); me->SetObjectScale(defaultsize*2.5f); } diff --git a/src/server/scripts/Spells/spell_pet.cpp b/src/server/scripts/Spells/spell_pet.cpp index 81bfe4fcd0c..5e46c2dfda4 100644 --- a/src/server/scripts/Spells/spell_pet.cpp +++ b/src/server/scripts/Spells/spell_pet.cpp @@ -300,8 +300,8 @@ public: if (Unit* owner = pet->ToPet()->GetOwner()) { - int32 fire = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); - int32 shadow = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW); + int32 fire = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); + int32 shadow = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW); int32 maximum = (fire > shadow) ? fire : shadow; if (maximum < 0) maximum = 0; @@ -328,8 +328,8 @@ public: if (Unit* owner = pet->ToPet()->GetOwner()) { //the damage bonus used for pets is either fire or shadow damage, whatever is higher - int32 fire = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); - int32 shadow = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW); + int32 fire = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); + int32 shadow = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW); int32 maximum = (fire > shadow) ? fire : shadow; float bonusDamage = 0.0f; @@ -450,7 +450,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FIRE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_FIRE), 40); amount += ownerBonus; } } @@ -496,7 +496,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FROST), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_FROST), 40); amount += ownerBonus; } } @@ -507,7 +507,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_ARCANE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_ARCANE), 40); amount += ownerBonus; } } @@ -518,7 +518,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_NATURE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_NATURE), 40); amount += ownerBonus; } } @@ -559,7 +559,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_SHADOW), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_SHADOW), 40); amount += ownerBonus; } } @@ -1025,7 +1025,7 @@ public: if (!owner) return; - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FROST), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_FROST), 40); amount += ownerBonus; } } @@ -1041,7 +1041,7 @@ public: if (!owner) return; - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FIRE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_FIRE), 40); amount += ownerBonus; } } @@ -1057,7 +1057,7 @@ public: if (!owner) return; - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_NATURE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_NATURE), 40); amount += ownerBonus; } } @@ -1103,7 +1103,7 @@ public: if (!owner) return; - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_SHADOW), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_SHADOW), 40); amount += ownerBonus; } } @@ -1119,7 +1119,7 @@ public: if (!owner) return; - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_ARCANE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_ARCANE), 40); amount += ownerBonus; } } -- cgit v1.2.3 From 0a779bd791fb63b2fc1663206279c7eaa9c02c6f Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 4 Oct 2018 18:50:21 +0200 Subject: Core/PacketIO: Updated packet structures to 8.0.1 --- .../hotfixes/master/2018_10_16_00_hotfixes.sql | 27 ++ sql/updates/world/master/2018_10_16_00_world.sql | 104 ++++++++ .../Database/Implementation/HotfixDatabase.cpp | 7 + .../Database/Implementation/HotfixDatabase.h | 4 + src/server/game/Achievements/CriteriaHandler.cpp | 4 +- src/server/game/Battlegrounds/Battleground.cpp | 5 +- src/server/game/Calendar/CalendarMgr.cpp | 16 +- src/server/game/DataStores/DB2LoadInfo.h | 34 +++ src/server/game/DataStores/DB2Stores.cpp | 36 +++ src/server/game/DataStores/DB2Stores.h | 5 +- src/server/game/DataStores/DB2Structure.h | 17 ++ .../game/Entities/AreaTrigger/AreaTrigger.cpp | 19 +- .../Entities/AreaTrigger/AreaTriggerTemplate.cpp | 3 + .../Entities/AreaTrigger/AreaTriggerTemplate.h | 12 +- .../game/Entities/Conversation/Conversation.cpp | 7 +- .../game/Entities/Conversation/Conversation.h | 9 +- src/server/game/Entities/Corpse/Corpse.cpp | 2 +- src/server/game/Entities/Creature/Creature.cpp | 2 + src/server/game/Entities/Creature/GossipDef.cpp | 8 +- .../game/Entities/DynamicObject/DynamicObject.cpp | 2 +- src/server/game/Entities/GameObject/GameObject.cpp | 11 +- .../game/Entities/GameObject/GameObjectData.h | 49 +++- src/server/game/Entities/Item/Item.cpp | 2 - src/server/game/Entities/Object/Object.cpp | 161 +++++++----- src/server/game/Entities/Object/Object.h | 31 ++- src/server/game/Entities/Object/ObjectGuid.cpp | 1 + src/server/game/Entities/Object/ObjectGuid.h | 56 ++-- .../game/Entities/Object/Updates/UpdateData.h | 23 -- src/server/game/Entities/Player/Player.cpp | 91 ++++--- src/server/game/Entities/Player/Player.h | 20 +- src/server/game/Entities/Transport/Transport.cpp | 4 +- src/server/game/Entities/Unit/Unit.cpp | 80 +++--- src/server/game/Entities/Unit/Unit.h | 11 +- src/server/game/Globals/AreaTriggerDataStore.cpp | 13 +- src/server/game/Globals/ConversationDataStore.cpp | 7 +- src/server/game/Globals/ConversationDataStore.h | 3 +- src/server/game/Globals/ObjectMgr.cpp | 172 ++++++------ src/server/game/Globals/ObjectMgr.h | 17 +- src/server/game/Handlers/AuthHandler.cpp | 3 + src/server/game/Handlers/CalendarHandler.cpp | 3 +- src/server/game/Handlers/CharacterHandler.cpp | 6 +- src/server/game/Handlers/DuelHandler.cpp | 2 +- src/server/game/Handlers/InspectHandler.cpp | 4 + src/server/game/Handlers/QueryHandler.cpp | 29 ++- src/server/game/Handlers/SkillHandler.cpp | 6 +- src/server/game/Miscellaneous/SharedDefines.h | 289 +++++++++++++++------ src/server/game/Quests/QuestDef.cpp | 155 +++++------ src/server/game/Quests/QuestDef.h | 26 +- src/server/game/Scenarios/ScenarioMgr.cpp | 37 ++- src/server/game/Scenarios/ScenarioMgr.h | 15 +- .../game/Server/Packets/AchievementPackets.h | 2 +- .../game/Server/Packets/AreaTriggerPackets.cpp | 14 +- .../game/Server/Packets/AreaTriggerPackets.h | 13 +- .../game/Server/Packets/AuthenticationPackets.cpp | 6 +- .../game/Server/Packets/AuthenticationPackets.h | 3 +- .../game/Server/Packets/BattlegroundPackets.cpp | 10 +- .../game/Server/Packets/BattlegroundPackets.h | 6 +- src/server/game/Server/Packets/CalendarPackets.cpp | 73 ++++-- src/server/game/Server/Packets/CalendarPackets.h | 17 +- .../game/Server/Packets/CharacterPackets.cpp | 7 +- src/server/game/Server/Packets/CharacterPackets.h | 25 +- src/server/game/Server/Packets/ChatPackets.cpp | 17 +- src/server/game/Server/Packets/ChatPackets.h | 7 +- .../game/Server/Packets/CombatLogPackets.cpp | 63 ++--- src/server/game/Server/Packets/CombatLogPackets.h | 13 +- .../game/Server/Packets/CombatLogPacketsCommon.cpp | 40 +-- .../game/Server/Packets/CombatLogPacketsCommon.h | 16 +- src/server/game/Server/Packets/CombatPackets.cpp | 6 +- src/server/game/Server/Packets/CombatPackets.h | 4 +- src/server/game/Server/Packets/DuelPackets.cpp | 1 + src/server/game/Server/Packets/DuelPackets.h | 1 + .../game/Server/Packets/EquipmentSetPackets.h | 4 +- src/server/game/Server/Packets/GarrisonPackets.h | 2 +- .../game/Server/Packets/GuildFinderPackets.cpp | 2 +- .../game/Server/Packets/GuildFinderPackets.h | 2 +- src/server/game/Server/Packets/GuildPackets.cpp | 168 ++++++------ src/server/game/Server/Packets/GuildPackets.h | 12 +- src/server/game/Server/Packets/InspectPackets.cpp | 18 +- src/server/game/Server/Packets/InspectPackets.h | 11 +- src/server/game/Server/Packets/InstancePackets.cpp | 32 +-- src/server/game/Server/Packets/InstancePackets.h | 8 +- src/server/game/Server/Packets/ItemPackets.cpp | 2 +- src/server/game/Server/Packets/LFGPackets.cpp | 13 +- src/server/game/Server/Packets/LFGPackets.h | 26 +- src/server/game/Server/Packets/MiscPackets.cpp | 3 +- src/server/game/Server/Packets/MiscPackets.h | 5 +- src/server/game/Server/Packets/MovementPackets.cpp | 44 +++- src/server/game/Server/Packets/MovementPackets.h | 12 +- src/server/game/Server/Packets/NPCPackets.cpp | 24 +- src/server/game/Server/Packets/NPCPackets.h | 7 +- src/server/game/Server/Packets/PacketUtilities.h | 5 + src/server/game/Server/Packets/PartyPackets.cpp | 27 +- src/server/game/Server/Packets/PartyPackets.h | 29 ++- src/server/game/Server/Packets/PetPackets.cpp | 13 +- src/server/game/Server/Packets/PetPackets.h | 2 +- src/server/game/Server/Packets/PetitionPackets.cpp | 41 ++- src/server/game/Server/Packets/PetitionPackets.h | 2 +- src/server/game/Server/Packets/QueryPackets.cpp | 58 +++-- src/server/game/Server/Packets/QueryPackets.h | 32 ++- src/server/game/Server/Packets/QuestPackets.cpp | 26 +- src/server/game/Server/Packets/QuestPackets.h | 15 +- .../game/Server/Packets/ReputationPackets.cpp | 2 - src/server/game/Server/Packets/ReputationPackets.h | 2 +- src/server/game/Server/Packets/ScenarioPackets.cpp | 3 +- src/server/game/Server/Packets/SpellPackets.cpp | 25 +- src/server/game/Server/Packets/SpellPackets.h | 12 +- src/server/game/Server/Packets/SystemPackets.cpp | 21 +- src/server/game/Server/Packets/SystemPackets.h | 21 +- src/server/game/Server/Packets/TalentPackets.cpp | 30 ++- src/server/game/Server/Packets/TalentPackets.h | 12 +- src/server/game/Server/Packets/TaxiPackets.h | 2 +- src/server/game/Server/Packets/TicketPackets.cpp | 8 + src/server/game/Server/Packets/TicketPackets.h | 7 +- src/server/game/Server/Packets/TotemPackets.cpp | 2 +- src/server/game/Server/Packets/TotemPackets.h | 2 +- .../Server/Packets/TransmogrificationPackets.cpp | 4 +- src/server/game/Server/Packets/WhoPackets.cpp | 4 +- .../game/Server/Packets/WorldStatePackets.cpp | 8 +- src/server/game/Server/Packets/WorldStatePackets.h | 10 +- src/server/game/Server/Protocol/Opcodes.cpp | 8 +- src/server/game/Server/Protocol/Opcodes.h | 6 +- src/server/game/Server/WorldSession.h | 2 +- src/server/game/Server/WorldSocket.cpp | 7 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 11 +- src/server/game/Spells/SpellEffects.cpp | 3 +- src/server/game/Spells/SpellMgr.h | 2 +- src/server/shared/Packets/ByteBuffer.h | 23 +- 127 files changed, 1820 insertions(+), 1056 deletions(-) create mode 100644 sql/updates/hotfixes/master/2018_10_16_00_hotfixes.sql create mode 100644 sql/updates/world/master/2018_10_16_00_world.sql (limited to 'src/server/database/Database/Implementation') diff --git a/sql/updates/hotfixes/master/2018_10_16_00_hotfixes.sql b/sql/updates/hotfixes/master/2018_10_16_00_hotfixes.sql new file mode 100644 index 00000000000..88498a167dc --- /dev/null +++ b/sql/updates/hotfixes/master/2018_10_16_00_hotfixes.sql @@ -0,0 +1,27 @@ +-- +-- Table structure for table `animation_data` +-- +DROP TABLE IF EXISTS `animation_data`; +CREATE TABLE `animation_data` ( + `ID` int(10) unsigned NOT NULL DEFAULT '0', + `Fallback` smallint(5) unsigned NOT NULL DEFAULT '0', + `BehaviorTier` tinyint(3) unsigned NOT NULL DEFAULT '0', + `BehaviorID` int(11) NOT NULL DEFAULT '0', + `Flags1` int(11) NOT NULL DEFAULT '0', + `Flags2` int(11) NOT NULL DEFAULT '0', + `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `num_talents_at_level` +-- +DROP TABLE IF EXISTS `num_talents_at_level`; +CREATE TABLE `num_talents_at_level` ( + `ID` int(10) unsigned NOT NULL DEFAULT '0', + `NumTalents` int(11) NOT NULL DEFAULT '0', + `NumTalentsDeathKnight` int(11) NOT NULL DEFAULT '0', + `NumTalentsDemonHunter` int(11) NOT NULL DEFAULT '0', + `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/sql/updates/world/master/2018_10_16_00_world.sql b/sql/updates/world/master/2018_10_16_00_world.sql new file mode 100644 index 00000000000..8a747a34db2 --- /dev/null +++ b/sql/updates/world/master/2018_10_16_00_world.sql @@ -0,0 +1,104 @@ +ALTER TABLE `conversation_template` ADD `TextureKitId` int(10) unsigned NOT NULL DEFAULT '0' AFTER `LastLineEndTime`; +ALTER TABLE `gameobject_template` ADD `Data33` int(11) NOT NULL DEFAULT '0' AFTER `Data32`; +ALTER TABLE `playerchoice` ADD `KeepOpenAfterChoice` tinyint(3) unsigned NOT NULL DEFAULT '0' AFTER `HideWarboardHeader`; +ALTER TABLE `playerchoice_response` + ADD `Flags` int(11) NOT NULL DEFAULT '0' AFTER `ChoiceArtFileId`, + ADD `WidgetSetID` int(10) unsigned NOT NULL DEFAULT '0' AFTER `Flags`, + ADD `GroupID` tinyint(3) unsigned NOT NULL DEFAULT '0' AFTER `WidgetSetID`; + +ALTER TABLE `quest_poi` + ADD `UiMapID` int(11) DEFAULT NULL AFTER `MapID`, + CHANGE `WoDUnk1` `SpawnTrackingID` int(11) NOT NULL DEFAULT '0' AFTER `PlayerConditionID`; + +ALTER TABLE `quest_template` + ADD `ScalingFactionGroup` int(11) NOT NULL DEFAULT '0' AFTER `QuestLevel`, + ADD `FlagsEx2` int(10) unsigned NOT NULL DEFAULT '0' AFTER `FlagsEx`, + ADD `PortraitGiverMount` int(11) NOT NULL DEFAULT '0' AFTER `PortraitGiver`, + CHANGE `QuestRewardID` `TreasurePickerID` int(11) NOT NULL DEFAULT '0' AFTER `AllowableRaces`; + +ALTER TABLE `scenario_poi` ADD `UiMapID` int(11) DEFAULT NULL AFTER `MapID`; + +DROP TABLE IF EXISTS `world_map_area_to_ui_map`; +CREATE TABLE `world_map_area_to_ui_map` ( + `WorldMapAreaID` int(11) NOT NULL, + `Floor` int(11) NOT NULL, + `UiMapID` int(11) DEFAULT NULL, + PRIMARY KEY (`WorldMapAreaID`,`Floor`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; + +INSERT INTO `world_map_area_to_ui_map` VALUES +(4,0,1),(4,8,2),(4,10,3),(4,11,4),(4,12,5),(4,19,6),(9,0,7),(9,6,8),(9,7,9),(11,0,10),(11,20,11),(13,0,12),(14,0,13),(16,0,14),(17,0,15),(17,18,16),(19,0,17),(20,0,18),(20,13,19),(20,25,20), +(21,0,21),(22,0,22),(23,0,23),(23,20,24),(24,0,25),(26,0,26),(27,0,27),(27,6,28),(27,7,29),(27,10,30),(27,11,31),(28,0,32),(28,14,33),(28,15,34),(28,16,35),(29,0,36),(30,0,37),(30,1,38),(30,2,39),(30,19,40), +(30,21,41),(32,0,42),(32,22,43),(32,23,44),(32,24,45),(32,27,46),(34,0,47),(35,0,48),(36,0,49),(37,0,50),(38,0,51),(39,0,52),(39,4,53),(39,5,54),(39,17,55),(40,0,56),(41,0,57),(41,2,58),(41,3,59),(41,4,60), +(41,5,61),(42,0,62),(43,0,63),(61,0,64),(81,0,65),(101,0,66),(101,21,67),(101,22,68),(121,0,69),(141,0,70),(161,0,71),(161,15,72),(161,16,73),(161,17,74),(161,18,75),(181,0,76),(182,0,77),(201,0,78),(201,14,79),(241,0,80), +(261,0,81),(261,13,82),(281,0,83),(301,0,84),(321,0,85),(321,1,86),(341,0,87),(362,0,88),(381,0,89),(382,0,90),(401,0,91),(443,0,92),(461,0,93),(462,0,94),(463,0,95),(463,1,96),(464,0,97),(464,2,98),(464,3,99),(465,0,100), +(466,0,101),(467,0,102),(471,0,103),(473,0,104),(475,0,105),(476,0,106),(477,0,107),(478,0,108),(479,0,109),(480,0,110),(481,0,111),(482,0,112),(485,0,113),(486,0,114),(488,0,115),(490,0,116),(491,0,117),(492,0,118),(493,0,119),(495,0,120), +(496,0,121),(499,0,122),(501,0,123),(502,0,124),(504,1,125),(504,2,126),(510,0,127),(512,0,128),(520,1,129),(521,0,130),(521,1,131),(522,1,132),(523,1,133),(523,2,134),(523,3,135),(524,1,136),(524,2,137),(525,1,138),(525,2,139),(526,1,140), +(527,1,141),(528,0,142),(528,1,143),(528,2,144),(528,3,145),(528,4,146),(529,0,147),(529,1,148),(529,2,149),(529,3,150),(529,4,151),(529,5,152),(530,0,153),(530,1,154),(531,0,155),(532,1,156),(533,1,157),(533,2,158),(533,3,159),(534,1,160), +(534,2,161),(535,1,162),(535,2,163),(535,3,164),(535,4,165),(535,5,166),(535,6,167),(536,1,168),(540,0,169),(541,0,170),(542,1,171),(543,1,172),(543,2,173),(544,0,174),(544,1,175),(544,2,176),(544,3,177),(544,4,178),(545,0,179),(545,1,180), +(545,2,181),(545,3,182),(601,1,183),(602,0,184),(603,1,185),(604,1,186),(604,2,187),(604,3,188),(604,4,189),(604,5,190),(604,6,191),(604,7,192),(604,8,193),(605,0,194),(605,5,195),(605,6,196),(605,7,197),(606,0,198),(607,0,199),(609,0,200), +(610,0,201),(611,0,202),(613,0,203),(614,0,204),(615,0,205),(626,0,206),(640,0,207),(640,1,208),(640,2,209),(673,0,210),(680,1,213),(684,0,217),(685,0,218),(686,0,219),(687,1,220),(688,1,221),(688,2,222),(688,3,223),(689,0,224),(690,1,225), +(691,1,226),(691,2,227),(691,3,228),(691,4,229),(692,1,230),(692,2,231),(696,1,232),(697,0,233),(699,0,234),(699,1,235),(699,2,236),(699,3,237),(699,4,238),(699,5,239),(699,6,240),(700,0,241),(704,1,242),(704,2,243),(708,0,244),(709,0,245), +(710,1,246),(717,0,247),(718,1,248),(720,0,249),(721,1,250),(721,2,251),(721,3,252),(721,4,253),(721,5,254),(721,6,255),(722,1,256),(722,2,257),(723,1,258),(723,2,259),(724,1,260),(725,1,261),(726,1,262),(727,1,263),(727,2,264),(728,1,265), +(729,1,266),(730,1,267),(730,2,268),(731,1,269),(731,2,270),(731,3,271),(732,1,272),(733,0,273),(734,0,274),(736,0,275),(737,0,276),(747,0,277),(749,1,279),(750,1,280),(750,2,281),(752,1,282),(753,1,283),(753,2,284),(754,1,285),(754,2,286), +(755,1,287),(755,2,288),(755,3,289),(755,4,290),(756,1,291),(756,2,292),(757,1,293),(758,1,294),(758,2,295),(758,3,296),(759,1,297),(759,2,298),(759,3,299),(760,1,300),(761,1,301),(762,1,302),(762,2,303),(762,3,304),(762,4,305),(763,1,306), +(763,2,307),(763,3,308),(763,4,309),(764,1,310),(764,2,311),(764,3,312),(764,4,313),(764,5,314),(764,6,315),(764,7,316),(765,1,317),(765,2,318),(766,1,319),(766,2,320),(766,3,321),(767,1,322),(767,2,323),(768,1,324),(769,1,325),(772,0,327), +(773,1,328),(775,0,329),(776,1,330),(779,1,331),(780,1,332),(781,0,333),(782,1,334),(789,0,335),(789,1,336),(793,0,337),(795,0,338),(796,0,339),(796,1,340),(796,2,341),(796,3,342),(796,4,343),(796,5,344),(796,6,345),(796,7,346),(797,1,347), +(798,1,348),(798,2,349),(799,1,350),(799,2,351),(799,3,352),(799,4,353),(799,5,354),(799,6,355),(799,7,356),(799,8,357),(799,9,358),(799,10,359),(799,11,360),(799,12,361),(799,13,362),(799,14,363),(799,15,364),(799,16,365),(799,17,366),(800,0,367), +(800,1,368),(800,2,369),(803,1,370),(806,0,371),(806,6,372),(806,7,373),(806,15,374),(806,16,375),(807,0,376),(807,14,377),(808,0,378),(809,0,379),(809,8,380),(809,9,381),(809,10,382),(809,11,383),(809,12,384),(809,17,385),(809,20,386),(809,21,387), +(810,0,388),(810,13,389),(811,0,390),(811,1,391),(811,2,392),(811,3,393),(811,4,394),(811,18,395),(811,19,396),(813,0,397),(816,0,398),(819,0,399),(819,1,400),(820,0,401),(820,1,402),(820,2,403),(820,3,404),(820,4,405),(820,5,406),(823,0,407), +(823,1,408),(824,0,409),(824,1,410),(824,2,411),(824,3,412),(824,4,413),(824,5,414),(824,6,415),(851,0,416),(856,0,417),(857,0,418),(857,1,419),(857,2,420),(857,3,421),(858,0,422),(860,1,423),(862,0,424),(864,0,425),(864,3,426),(866,0,427), +(866,9,428),(867,1,429),(867,2,430),(871,1,431),(871,2,432),(873,0,433),(873,5,434),(874,1,435),(874,2,436),(875,1,437),(875,2,438),(876,1,439),(876,2,440),(876,3,441),(876,4,442),(877,0,443),(877,1,444),(877,2,445),(877,3,446),(878,0,447), +(880,0,448),(881,0,449),(882,0,450),(883,0,451),(884,0,452),(885,1,453),(885,2,454),(885,3,455),(886,0,456),(887,0,457),(887,1,458),(887,2,459),(888,0,460),(889,0,461),(890,0,462),(891,0,463),(891,9,464),(892,0,465),(892,12,466),(893,0,467), +(894,0,468),(895,0,469),(895,8,470),(896,1,471),(896,2,472),(896,3,473),(897,1,474),(897,2,475),(898,1,476),(898,2,477),(898,3,478),(898,4,479),(899,1,480),(900,1,481),(900,2,482),(906,0,483),(911,0,486),(912,0,487),(914,0,488),(914,1,489), +(919,0,490),(919,1,491),(919,2,492),(919,3,493),(919,4,494),(919,5,495),(919,6,496),(919,7,497),(920,0,498),(922,1,499),(922,2,500),(924,1,501),(924,2,502),(925,1,503),(928,0,504),(928,1,505),(928,2,506),(929,0,507),(930,1,508),(930,2,509), +(930,3,510),(930,4,511),(930,5,512),(930,6,513),(930,7,514),(930,8,515),(933,0,516),(933,1,517),(934,1,518),(935,0,519),(937,0,520),(937,1,521),(938,1,522),(939,0,523),(940,0,524),(941,0,525),(941,1,526),(941,2,527),(941,3,528),(941,4,529), +(941,6,530),(941,7,531),(941,8,532),(941,9,533),(945,0,534),(946,0,535),(946,13,536),(946,14,537),(946,30,538),(947,0,539),(947,15,540),(947,22,541),(948,0,542),(949,0,543),(949,16,544),(949,17,545),(949,18,546),(949,19,547),(949,20,548),(949,21,549), +(950,0,550),(950,10,551),(950,11,552),(950,12,553),(951,0,554),(951,22,555),(953,0,556),(953,1,557),(953,2,558),(953,3,559),(953,4,560),(953,5,561),(953,6,562),(953,7,563),(953,8,564),(953,9,565),(953,10,566),(953,11,567),(953,12,568),(953,13,569), +(953,14,570),(955,0,571),(962,0,572),(964,1,573),(969,1,574),(969,2,575),(969,3,576),(970,0,577),(970,1,578),(971,23,579),(971,24,580),(971,25,581),(973,0,582),(976,26,585),(976,27,586),(976,28,587),(978,0,588),(978,29,589),(980,0,590),(983,0,592), +(984,1,593),(986,0,594),(987,1,595),(988,1,596),(988,2,597),(988,3,598),(988,4,599),(988,5,600),(989,1,601),(989,2,602),(993,1,606),(993,2,607),(993,3,608),(993,4,609),(994,0,610),(994,1,611),(994,2,612),(994,3,613),(994,4,614),(994,5,615), +(995,1,616),(995,2,617),(995,3,618),(1007,0,619),(1008,0,620),(1008,1,621),(1009,0,622),(1010,0,623),(1011,0,624),(1014,0,625),(1014,4,626),(1014,10,627),(1014,11,628),(1014,12,629),(1015,0,630),(1015,17,631),(1015,18,632),(1015,19,633),(1017,0,634),(1017,1,635), +(1017,9,636),(1017,25,637),(1017,26,638),(1017,27,639),(1017,28,640),(1018,0,641),(1018,13,642),(1018,14,643),(1018,15,644),(1020,0,645),(1021,0,646),(1021,1,647),(1021,2,648),(1022,0,649),(1024,0,650), +(1024,5,651),(1024,6,652),(1024,8,653),(1024,16,654),(1024,20,655),(1024,21,656),(1024,29,657),(1024,30,658),(1024,31,659),(1024,40,660),(1026,0,661),(1026,1,662),(1026,2,663),(1026,3,664),(1026,4,665), +(1026,5,666),(1026,6,667),(1026,7,668),(1026,8,669),(1026,9,670),(1027,0,671),(1028,0,672),(1028,1,673),(1028,2,674),(1028,3,675),(1031,0,676),(1032,1,677),(1032,2,678),(1032,3,679),(1033,0,680), +(1033,22,681),(1033,23,682),(1033,24,683),(1033,32,684),(1033,33,685),(1033,34,686),(1033,35,687),(1033,36,688),(1033,37,689),(1033,38,690),(1033,39,691),(1033,41,692),(1033,42,693),(1034,0,694), +(1035,1,695),(1037,0,696),(1038,0,697),(1039,1,698),(1039,2,699),(1039,3,700),(1039,4,701),(1040,1,702),(1041,0,703),(1041,1,704),(1041,2,705),(1042,0,706),(1042,1,707),(1042,2,708),(1044,0,709), +(1045,1,710),(1045,2,711),(1045,3,712),(1046,0,713),(1047,0,714),(1048,0,715),(1049,1,716),(1050,0,717),(1051,0,718),(1052,0,719),(1052,1,720),(1052,2,721),(1054,1,723),(1056,0,725),(1057,0,726), +(1059,0,728),(1060,1,729),(1065,0,731),(1066,1,732),(1067,0,733),(1068,1,734),(1068,2,735),(1069,1,736),(1070,1,737),(1071,0,738),(1072,0,739),(1073,1,740),(1073,2,741),(1075,1,742),(1075,2,743), +(1076,1,744),(1076,2,745),(1076,3,746),(1077,0,747),(1078,0,748),(1079,1,749),(1080,0,750),(1081,1,751),(1081,2,752),(1081,3,753),(1081,4,754),(1081,5,755),(1081,6,756),(1082,0,757),(1084,0,758), +(1085,1,759),(1086,0,760),(1087,0,761),(1087,1,762),(1087,2,763),(1088,1,764),(1088,2,765),(1088,3,766),(1088,4,767),(1088,5,768),(1088,6,769),(1088,7,770),(1088,8,771),(1088,9,772),(1090,0,773), +(1090,1,774),(1091,0,775),(1092,0,776),(1094,1,777),(1094,2,778),(1094,3,779),(1094,4,780),(1094,5,781),(1094,6,782),(1094,7,783),(1094,8,784),(1094,9,785),(1094,10,786),(1094,11,787),(1094,12,788), +(1094,13,789),(1096,0,790),(1097,1,791),(1097,2,792),(1099,0,793),(1100,1,794),(1100,2,795),(1100,3,796),(1100,4,797),(1102,1,798),(1104,0,799),(1104,1,800),(1104,2,801),(1104,3,802),(1104,4,803), +(1105,1,804),(1105,2,805),(1114,0,806),(1114,1,807),(1114,2,808),(1115,1,809),(1115,2,810),(1115,3,811),(1115,4,812),(1115,5,813),(1115,6,814),(1115,7,815),(1115,8,816),(1115,9,817),(1115,10,818), +(1115,11,819),(1115,12,820),(1115,13,821),(1115,14,822),(1116,0,823),(1126,0,824),(1127,1,825),(1129,1,826),(1130,1,827),(1131,1,828),(1132,1,829),(1135,0,830),(1135,1,831),(1135,2,832),(1135,7,833), +(1136,0,834),(1137,1,835),(1137,2,836),(1139,0,837),(1140,0,838),(1142,1,839),(1143,1,840),(1143,2,841),(1143,3,842),(1144,0,843),(1145,0,844),(1146,1,845),(1146,2,846),(1146,3,847),(1146,4,848), +(1146,5,849),(1147,1,850),(1147,2,851),(1147,3,852),(1147,4,853),(1147,5,854),(1147,6,855),(1147,7,856),(1148,1,857),(1149,0,858),(1150,0,859),(1151,0,860),(1152,0,861),(1153,0,862),(1154,0,863), +(1155,0,864),(1156,1,865),(1156,2,866),(1157,1,867),(1158,1,868),(1159,1,869),(1159,2,870),(1160,0,871),(1161,0,872),(1161,1,873),(1161,2,874),(1162,0,875),(1163,0,876),(1164,0,877),(1165,0,878), +(1165,1,879),(1165,2,880),(1166,1,881),(1170,0,882),(1170,3,883),(1170,4,884),(1171,0,885),(1171,5,886),(1171,6,887),(1172,1,888),(1173,1,889),(1173,2,890),(1174,0,891),(1174,1,892),(1174,2,893), +(1174,3,894),(1175,0,895),(1176,0,896),(1177,0,897),(1177,1,898),(1177,2,899),(1177,3,900),(1177,4,901),(1177,5,902),(1178,0,903),(1183,0,904),(1184,0,905),(1185,0,906),(1186,0,907),(1187,0,908), +(1188,0,909),(1188,1,910),(1188,2,911),(1188,3,912),(1188,4,913),(1188,5,914),(1188,6,915),(1188,7,916),(1188,8,917),(1188,9,918),(1188,10,919),(1188,11,920),(1190,0,921),(1191,0,922),(1192,0,923), +(1193,0,924),(1194,0,925),(1195,0,926),(1196,0,927),(1197,0,928),(1198,0,929),(1199,0,930),(1200,0,931),(1201,0,932),(1202,0,933),(1204,1,934),(1204,2,935),(1205,0,936),(1210,0,938),(1211,0,939), +(1212,1,940),(1212,2,941),(1213,0,942),(1214,0,943),(1215,0,971),(1216,0,972),(1217,1,973),(1219,0,974),(1219,1,975),(1219,2,976),(1219,3,977),(1219,4,978),(1219,5,979),(1219,6,980),(1220,0,981), +(32,21,42),(974,0,582),(1121,0,646),(992,0,17),(981,0,590),(991,0,582),(990,0,590),(975,0,582),(910,0,418),(910,1,419),(910,2,420),(910,3,421),(907,0,70),(905,4,394),(321,2,85),(510,1,127),(522,0,132); + +UPDATE `quest_poi` SET `UiMapID`=(SELECT wma.`UiMapID` FROM `world_map_area_to_ui_map` wma WHERE wma.`WorldMapAreaID`=`quest_poi`.`WorldMapAreaID` AND wma.`Floor`=`quest_poi`.`Floor`); +UPDATE `scenario_poi` SET `UiMapID`=(SELECT wma.`UiMapID` FROM `world_map_area_to_ui_map` wma WHERE wma.`WorldMapAreaID`=`scenario_poi`.`WorldMapAreaID` AND wma.`Floor`=`scenario_poi`.`Floor`); + +DROP TABLE IF EXISTS `world_map_area_to_ui_map`; + +DELETE FROM `quest_poi` WHERE `UiMapID` IS NULL; +DELETE FROM `scenario_poi` WHERE `UiMapID` IS NULL; + +ALTER TABLE `quest_poi` + CHANGE `UiMapID` `UiMapID` int(11) NOT NULL DEFAULT '0' AFTER `MapID`, + DROP `WorldMapAreaID`, + DROP `Floor`; + +ALTER TABLE `scenario_poi` + CHANGE `UiMapID` `UiMapID` int(11) NOT NULL DEFAULT '0' AFTER `MapID`, + DROP `WorldMapAreaID`, + DROP `Floor`; + +ALTER TABLE `spell_areatrigger` + ADD `AnimId` int(11) NOT NULL DEFAULT '0' AFTER `FacingCurveId`, + ADD `AnimKitId` int(11) NOT NULL DEFAULT '0' AFTER `AnimId`; diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index a0646a0b1c1..967104b65cf 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -36,6 +36,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() "Points, Flags, UiOrder, IconFileID, CriteriaTree, SharesCriteria FROM achievement ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ACHIEVEMENT, "SELECT ID, Description_lang, Title_lang, Reward_lang FROM achievement_locale WHERE locale = ?", CONNECTION_SYNCH); + // AnimationData.db2 + PrepareStatement(HOTFIX_SEL_ANIMATION_DATA, "SELECT ID, Fallback, BehaviorTier, BehaviorID, Flags1, Flags2 FROM animation_data ORDER BY ID DESC", CONNECTION_SYNCH); + // AnimKit.db2 PrepareStatement(HOTFIX_SEL_ANIM_KIT, "SELECT ID, OneShotDuration, OneShotStopAnimKitID, LowDefAnimKitID FROM anim_kit ORDER BY ID DESC", CONNECTION_SYNCH); @@ -684,6 +687,10 @@ void HotfixDatabaseConnection::DoPrepareStatements() // NamesReservedLocale.db2 PrepareStatement(HOTFIX_SEL_NAMES_RESERVED_LOCALE, "SELECT ID, Name, LocaleMask FROM names_reserved_locale ORDER BY ID DESC", CONNECTION_SYNCH); + // NumTalentsAtLevel.db2 + PrepareStatement(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter FROM num_talents_at_level" + " ORDER BY ID DESC", CONNECTION_SYNCH); + // OverrideSpellData.db2 PrepareStatement(HOTFIX_SEL_OVERRIDE_SPELL_DATA, "SELECT ID, Spells1, Spells2, Spells3, Spells4, Spells5, Spells6, Spells7, Spells8, Spells9, " "Spells10, PlayerActionBarFileDataID, Flags FROM override_spell_data ORDER BY ID DESC", CONNECTION_SYNCH); diff --git a/src/server/database/Database/Implementation/HotfixDatabase.h b/src/server/database/Database/Implementation/HotfixDatabase.h index 655cdc376a6..ce2120cf648 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.h +++ b/src/server/database/Database/Implementation/HotfixDatabase.h @@ -34,6 +34,8 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_ACHIEVEMENT, HOTFIX_SEL_ACHIEVEMENT_LOCALE, + HOTFIX_SEL_ANIMATION_DATA, + HOTFIX_SEL_ANIM_KIT, HOTFIX_SEL_AREA_GROUP_MEMBER, @@ -364,6 +366,8 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_NAMES_RESERVED_LOCALE, + HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, + HOTFIX_SEL_OVERRIDE_SPELL_DATA, HOTFIX_SEL_PHASE, diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index b6e6908faad..bef431b367f 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -1787,9 +1787,7 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr return false; break; case CRITERIA_ADDITIONAL_CONDITION_PRESTIGE_LEVEL: // 194 - if (!referencePlayer || referencePlayer->GetPrestigeLevel() != reqValue) - return false; - break; + return false; default: break; } diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 3ddca3a7b33..e63accbb018 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1289,9 +1289,10 @@ void Battleground::BuildPvPLogDataPacket(WorldPackets::Battleground::PVPLogData& { playerData.IsInWorld = true; playerData.PrimaryTalentTree = player->GetUInt32Value(PLAYER_FIELD_CURRENT_SPEC_ID); - playerData.PrimaryTalentTreeNameIndex = 0; + playerData.Sex = player->getGender(); playerData.Race = player->getRace(); - playerData.Prestige = player->GetPrestigeLevel(); + playerData.Class = player->getClass(); + playerData.HonorLevel = player->GetHonorLevel(); } pvpLogData.Players.push_back(playerData); diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp index cf4898d8099..73d6c49f7ff 100644 --- a/src/server/game/Calendar/CalendarMgr.cpp +++ b/src/server/game/Calendar/CalendarMgr.cpp @@ -463,6 +463,7 @@ void CalendarMgr::SendCalendarEventUpdateAlert(CalendarEvent const& calendarEven packet.ClearPending = true; // FIXME packet.Date = calendarEvent.GetDate(); packet.Description = calendarEvent.GetDescription(); + packet.EventClubID = calendarEvent.GetGuildId(); packet.EventID = calendarEvent.GetEventId(); packet.EventName = calendarEvent.GetTitle(); packet.EventType = calendarEvent.GetType(); @@ -534,18 +535,15 @@ void CalendarMgr::SendCalendarEventInviteAlert(CalendarEvent const& calendarEven packet.OwnerGuid = calendarEvent.GetOwnerGUID(); packet.Status = invite.GetStatus(); packet.TextureID = calendarEvent.GetTextureId(); - - Guild* guild = sGuildMgr->GetGuildById(calendarEvent.GetGuildId()); - packet.EventGuildID = guild ? guild->GetGUID() : ObjectGuid::Empty; + packet.EventClubID = calendarEvent.GetGuildId(); if (calendarEvent.IsGuildEvent() || calendarEvent.IsGuildAnnouncement()) { - if (guild) + if (Guild* guild = sGuildMgr->GetGuildById(calendarEvent.GetGuildId())) guild->BroadcastPacket(packet.Write()); } - else - if (Player* player = ObjectAccessor::FindConnectedPlayer(invite.GetInviteeGUID())) - player->SendDirectMessage(packet.Write()); + else if (Player* player = ObjectAccessor::FindConnectedPlayer(invite.GetInviteeGUID())) + player->SendDirectMessage(packet.Write()); } void CalendarMgr::SendCalendarEvent(ObjectGuid guid, CalendarEvent const& calendarEvent, CalendarSendEventType sendType) @@ -567,9 +565,7 @@ void CalendarMgr::SendCalendarEvent(ObjectGuid guid, CalendarEvent const& calend packet.LockDate = calendarEvent.GetLockDate(); // Always 0 ? packet.OwnerGuid = calendarEvent.GetOwnerGUID(); packet.TextureID = calendarEvent.GetTextureId(); - - Guild* guild = sGuildMgr->GetGuildById(calendarEvent.GetGuildId()); - packet.EventGuildID = (guild ? guild->GetGUID() : ObjectGuid::Empty); + packet.EventClubID = calendarEvent.GetGuildId(); for (auto const& calendarInvite : eventInviteeList) { diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index bf831521cba..81ba8e1d6df 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -51,6 +51,24 @@ struct AchievementLoadInfo } }; +struct AnimationDataLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_INT, "ID" }, + { false, FT_SHORT, "Fallback" }, + { false, FT_BYTE, "BehaviorTier" }, + { true, FT_INT, "BehaviorID" }, + { true, FT_INT, "Flags1" }, + { true, FT_INT, "Flags2" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, AnimationDataMeta::Instance(), HOTFIX_SEL_ANIMATION_DATA); + return &loadInfo; + } +}; + struct AnimKitLoadInfo { static DB2LoadInfo const* Instance() @@ -3384,6 +3402,22 @@ struct NamesReservedLocaleLoadInfo } }; +struct NumTalentsAtLevelLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_INT, "ID" }, + { true, FT_INT, "NumTalents" }, + { true, FT_INT, "NumTalentsDeathKnight" }, + { true, FT_INT, "NumTalentsDemonHunter" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, NumTalentsAtLevelMeta::Instance(), HOTFIX_SEL_NUM_TALENTS_AT_LEVEL); + return &loadInfo; + } +}; + struct OverrideSpellDataLoadInfo { static DB2LoadInfo const* Instance() diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 0adeac47f51..59b99139d8c 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -37,6 +37,7 @@ #endif DB2Storage sAchievementStore("Achievement.db2", AchievementLoadInfo::Instance()); +DB2Storage sAnimationDataStore("AnimationData.db2", AnimationDataLoadInfo::Instance()); DB2Storage sAnimKitStore("AnimKit.db2", AnimKitLoadInfo::Instance()); DB2Storage sAreaGroupMemberStore("AreaGroupMember.db2", AreaGroupMemberLoadInfo::Instance()); DB2Storage sAreaTableStore("AreaTable.db2", AreaTableLoadInfo::Instance()); @@ -182,6 +183,7 @@ DB2Storage sNameGenStore("NameGen.db2", Nam DB2Storage sNamesProfanityStore("NamesProfanity.db2", NamesProfanityLoadInfo::Instance()); DB2Storage sNamesReservedStore("NamesReserved.db2", NamesReservedLoadInfo::Instance()); DB2Storage sNamesReservedLocaleStore("NamesReservedLocale.db2", NamesReservedLocaleLoadInfo::Instance()); +DB2Storage sNumTalentsAtLevelStore("NumTalentsAtLevel.db2", NumTalentsAtLevelLoadInfo::Instance()); DB2Storage sOverrideSpellDataStore("OverrideSpellData.db2", OverrideSpellDataLoadInfo::Instance()); DB2Storage sPhaseStore("Phase.db2", PhaseLoadInfo::Instance()); DB2Storage sPhaseXPhaseGroupStore("PhaseXPhaseGroup.db2", PhaseXPhaseGroupLoadInfo::Instance()); @@ -490,6 +492,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) #define LOAD_DB2(store) LoadDB2(availableDb2Locales, bad_db2_files, _stores, &store, db2Path, defaultLocale, store) LOAD_DB2(sAchievementStore); + LOAD_DB2(sAnimationDataStore); LOAD_DB2(sAnimKitStore); LOAD_DB2(sAreaGroupMemberStore); LOAD_DB2(sAreaTableStore); @@ -634,6 +637,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) LOAD_DB2(sNamesProfanityStore); LOAD_DB2(sNamesReservedStore); LOAD_DB2(sNamesReservedLocaleStore); + LOAD_DB2(sNumTalentsAtLevelStore); LOAD_DB2(sOverrideSpellDataStore); LOAD_DB2(sPhaseStore); LOAD_DB2(sPhaseXPhaseGroupStore); @@ -2102,6 +2106,28 @@ ResponseCodes DB2Manager::ValidateName(std::wstring const& name, LocaleConstant return CHAR_NAME_SUCCESS; } +int32 DB2Manager::GetNumTalentsAtLevel(uint32 level, Classes playerClass) +{ + NumTalentsAtLevelEntry const* numTalentsAtLevel = sNumTalentsAtLevelStore.LookupEntry(level); + if (!numTalentsAtLevel) + numTalentsAtLevel = sNumTalentsAtLevelStore.LookupEntry(sNumTalentsAtLevelStore.GetNumRows() - 1); + + if (numTalentsAtLevel) + { + switch (playerClass) + { + case CLASS_DEATH_KNIGHT: + return numTalentsAtLevel->NumTalentsDeathKnight; + case CLASS_DEMON_HUNTER: + return numTalentsAtLevel->NumTalentsDemonHunter; + default: + return numTalentsAtLevel->NumTalents; + } + } + + return 0; +} + PVPDifficultyEntry const* DB2Manager::GetBattlegroundBracketByLevel(uint32 mapid, uint32 level) { PVPDifficultyEntry const* maxEntry = nullptr; // used for level > max listed level case @@ -2152,6 +2178,16 @@ uint32 DB2Manager::GetRequiredLevelForPvpTalentSlot(uint8 slot, Classes class_) return 0; } +int32 DB2Manager::GetPvpTalentNumSlotsAtLevel(uint32 level, Classes class_) const +{ + int32 slots = 0; + for (uint8 slot = 0; slot < MAX_PVP_TALENT_SLOTS; ++slot) + if (level >= GetRequiredLevelForPvpTalentSlot(slot, class_)) + ++slots; + + return slots; +} + std::vector const* DB2Manager::GetQuestPackageItems(uint32 questPackageID) const { auto itr = _questPackages.find(questPackageID); diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index 46a0dee2095..06f8635c908 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -35,6 +35,7 @@ class DB2HotfixGeneratorBase; TC_GAME_API extern DB2Storage sAchievementStore; +TC_GAME_API extern DB2Storage sAnimationDataStore; TC_GAME_API extern DB2Storage sAnimKitStore; TC_GAME_API extern DB2Storage sAreaTableStore; TC_GAME_API extern DB2Storage sAreaTriggerStore; @@ -301,12 +302,13 @@ public: MapDifficultyEntry const* GetDefaultMapDifficulty(uint32 mapId, Difficulty* difficulty = nullptr) const; MapDifficultyEntry const* GetMapDifficultyData(uint32 mapId, Difficulty difficulty) const; MapDifficultyEntry const* GetDownscaledMapDifficultyData(uint32 mapId, Difficulty &difficulty) const; - std::string GetNameGenEntry(uint8 race, uint8 gender) const; MountEntry const* GetMount(uint32 spellId) const; MountEntry const* GetMountById(uint32 id) const; MountTypeXCapabilitySet const* GetMountCapabilities(uint32 mountType) const; MountXDisplayContainer const* GetMountDisplays(uint32 mountId) const; + std::string GetNameGenEntry(uint8 race, uint8 gender) const; ResponseCodes ValidateName(std::wstring const& name, LocaleConstant locale) const; + static int32 GetNumTalentsAtLevel(uint32 level, Classes playerClass); std::vector const* GetPhasesForGroup(uint32 group) const; PowerTypeEntry const* GetPowerTypeEntry(Powers power) const; PowerTypeEntry const* GetPowerTypeByName(std::string const& name) const; @@ -314,6 +316,7 @@ public: static PVPDifficultyEntry const* GetBattlegroundBracketByLevel(uint32 mapid, uint32 level); static PVPDifficultyEntry const* GetBattlegroundBracketById(uint32 mapid, BattlegroundBracketId id); uint32 GetRequiredLevelForPvpTalentSlot(uint8 slot, Classes class_) const; + int32 GetPvpTalentNumSlotsAtLevel(uint32 level, Classes class_) const; std::vector const* GetQuestPackageItems(uint32 questPackageID) const; std::vector const* GetQuestPackageItemsFallback(uint32 questPackageID) const; uint32 GetQuestUniqueBitFlag(uint32 questId); diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index fa8aa435673..0c38d0fb213 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -45,6 +45,15 @@ struct AchievementEntry int16 SharesCriteria; // referenced achievement (counting of all completed criterias) }; +struct AnimationDataEntry +{ + uint32 ID; + uint16 Fallback; + uint8 BehaviorTier; + int32 BehaviorID; + int32 Flags[2]; +}; + struct AnimKitEntry { uint32 ID; @@ -2052,6 +2061,14 @@ struct NamesReservedLocaleEntry uint8 LocaleMask; }; +struct NumTalentsAtLevelEntry +{ + uint32 ID; + int32 NumTalents; + int32 NumTalentsDeathKnight; + int32 NumTalentsDemonHunter; +}; + #define MAX_OVERRIDE_SPELL 10 struct OverrideSpellDataEntry diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index b03bdab76ce..4e4e70e1b0a 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -46,7 +46,8 @@ AreaTrigger::AreaTrigger() : WorldObject(false), MapObject(), _aurEff(nullptr), m_objectType |= TYPEMASK_AREATRIGGER; m_objectTypeId = TYPEID_AREATRIGGER; - m_updateFlag = UPDATEFLAG_STATIONARY_POSITION | UPDATEFLAG_AREATRIGGER; + m_updateFlag.Stationary = true; + m_updateFlag.AreaTrigger = true; m_valuesCount = AREATRIGGER_END; _dynamicValuesCount = AREATRIGGER_DYNAMIC_END; @@ -142,7 +143,7 @@ bool AreaTrigger::Create(uint32 spellMiscId, Unit* caster, Unit* target, SpellIn { AreaTriggerCircularMovementInfo cmi = GetMiscTemplate()->CircularMovementInfo; if (target && GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ATTACHED)) - cmi.TargetGUID = target->GetGUID(); + cmi.PathTarget = target->GetGUID(); else cmi.Center = pos; @@ -637,12 +638,12 @@ void AreaTrigger::InitSplines(std::vector splinePoints, uint32 tim { if (_reachedDestination) { - WorldPackets::AreaTrigger::AreaTriggerReShape reshape; + WorldPackets::AreaTrigger::AreaTriggerRePath reshape; reshape.TriggerGUID = GetGUID(); SendMessageToSet(reshape.Write(), true); } - WorldPackets::AreaTrigger::AreaTriggerReShape reshape; + WorldPackets::AreaTrigger::AreaTriggerRePath reshape; reshape.TriggerGUID = GetGUID(); reshape.AreaTriggerSpline = boost::in_place(); reshape.AreaTriggerSpline->ElapsedTimeForMovement = GetElapsedTimeForMovement(); @@ -664,7 +665,7 @@ bool AreaTrigger::HasSplines() const void AreaTrigger::InitCircularMovement(AreaTriggerCircularMovementInfo const& cmi, uint32 timeToTarget) { // Circular movement requires either a center position or an attached unit - ASSERT(cmi.Center.is_initialized() || cmi.TargetGUID.is_initialized()); + ASSERT(cmi.Center.is_initialized() || cmi.PathTarget.is_initialized()); // should be sent in object create packets only m_uint32Values[AREATRIGGER_TIME_TO_TARGET] = timeToTarget; @@ -676,7 +677,7 @@ void AreaTrigger::InitCircularMovement(AreaTriggerCircularMovementInfo const& cm if (IsInWorld()) { - WorldPackets::AreaTrigger::AreaTriggerReShape reshape; + WorldPackets::AreaTrigger::AreaTriggerRePath reshape; reshape.TriggerGUID = GetGUID(); reshape.AreaTriggerCircularMovement = _circularMovementInfo; @@ -691,11 +692,11 @@ bool AreaTrigger::HasCircularMovement() const Position const* AreaTrigger::GetCircularMovementCenterPosition() const { - if (_circularMovementInfo.is_initialized()) + if (!_circularMovementInfo.is_initialized()) return nullptr; - if (_circularMovementInfo->TargetGUID.is_initialized()) - if (WorldObject* center = ObjectAccessor::GetWorldObject(*this, *_circularMovementInfo->TargetGUID)) + if (_circularMovementInfo->PathTarget.is_initialized()) + if (WorldObject* center = ObjectAccessor::GetWorldObject(*this, *_circularMovementInfo->PathTarget)) return center; if (_circularMovementInfo->Center.is_initialized()) diff --git a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp index 633988b17b0..431c4cc7d57 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp @@ -96,6 +96,9 @@ AreaTriggerMiscTemplate::AreaTriggerMiscTemplate() MorphCurveId = 0; FacingCurveId = 0; + AnimId = 0; + AnimKitId = 0; + DecalPropertiesId = 0; TimeToTarget = 0; diff --git a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h index 35be0f40f7f..2371c65cf09 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h +++ b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h @@ -36,10 +36,11 @@ enum AreaTriggerFlags AREATRIGGER_FLAG_HAS_FOLLOWS_TERRAIN = 0x00010, // NYI AREATRIGGER_FLAG_UNK1 = 0x00020, AREATRIGGER_FLAG_HAS_TARGET_ROLL_PITCH_YAW = 0x00040, // NYI - AREATRIGGER_FLAG_UNK2 = 0x00080, + AREATRIGGER_FLAG_HAS_ANIM_ID = 0x00080, AREATRIGGER_FLAG_UNK3 = 0x00100, - AREATRIGGER_FLAG_UNK4 = 0x00200, - AREATRIGGER_FLAG_HAS_CIRCULAR_MOVEMENT = 0x00400 + AREATRIGGER_FLAG_HAS_ANIM_KIT_ID = 0x00200, + AREATRIGGER_FLAG_HAS_CIRCULAR_MOVEMENT = 0x00400, + AREATRIGGER_FLAG_UNK5 = 0x00800, }; enum AreaTriggerTypes @@ -96,7 +97,7 @@ struct AreaTriggerScaleInfo struct AreaTriggerCircularMovementInfo { - Optional TargetGUID; + Optional PathTarget; Optional> Center; bool CounterClockwise = false; bool CanLoop = false; @@ -190,6 +191,9 @@ public: uint32 MorphCurveId; uint32 FacingCurveId; + int32 AnimId; + int32 AnimKitId; + uint32 DecalPropertiesId; uint32 TimeToTarget; diff --git a/src/server/game/Entities/Conversation/Conversation.cpp b/src/server/game/Entities/Conversation/Conversation.cpp index 13339f3169f..0445f8ff6bc 100644 --- a/src/server/game/Entities/Conversation/Conversation.cpp +++ b/src/server/game/Entities/Conversation/Conversation.cpp @@ -30,7 +30,8 @@ Conversation::Conversation() : WorldObject(false), _duration(0) m_objectType |= TYPEMASK_CONVERSATION; m_objectTypeId = TYPEID_CONVERSATION; - m_updateFlag = UPDATEFLAG_STATIONARY_POSITION; + m_updateFlag.Stationary = true; + m_updateFlag.Conversation = true; m_valuesCount = CONVERSATION_END; _dynamicValuesCount = CONVERSATION_DYNAMIC_END; @@ -123,13 +124,15 @@ bool Conversation::Create(ObjectGuid::LowType lowGuid, uint32 conversationEntry, SetUInt32Value(CONVERSATION_LAST_LINE_END_TIME, conversationTemplate->LastLineEndTime); _duration = conversationTemplate->LastLineEndTime; + _textureKitId = conversationTemplate->TextureKitId; for (uint16 actorIndex = 0; actorIndex < conversationTemplate->Actors.size(); ++actorIndex) { if (ConversationActorTemplate const* actor = conversationTemplate->Actors[actorIndex]) { ConversationDynamicFieldActor actorField; - actorField.ActorTemplate = *actor; + actorField.ActorTemplate.CreatureId = actor->CreatureId; + actorField.ActorTemplate.CreatureModelId = actor->CreatureModelId; actorField.Type = ConversationDynamicFieldActor::ActorType::CreatureActor; SetDynamicStructuredValue(CONVERSATION_DYNAMIC_FIELD_ACTORS, actorIndex, &actorField); } diff --git a/src/server/game/Entities/Conversation/Conversation.h b/src/server/game/Entities/Conversation/Conversation.h index 860264b1de8..ddc44ddfea9 100644 --- a/src/server/game/Entities/Conversation/Conversation.h +++ b/src/server/game/Entities/Conversation/Conversation.h @@ -47,8 +47,11 @@ struct ConversationDynamicFieldActor union { ObjectGuid ActorGuid; - - ConversationActorTemplate ActorTemplate; + struct + { + uint32 CreatureId; + uint32 CreatureModelId; + } ActorTemplate; struct { @@ -75,6 +78,7 @@ class TC_GAME_API Conversation : public WorldObject, public GridObjectBaseAttackTime); diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index 58c77eb63b6..89b553d0792 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -286,6 +286,7 @@ void PlayerMenu::SendPointOfInterest(uint32 id) const } WorldPackets::NPC::GossipPOI packet; + packet.ID = pointOfInterest->ID; packet.Name = pointOfInterest->Name; LocaleConstant localeConstant = _session->GetSessionDbLocaleIndex(); @@ -438,6 +439,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU packet.InformUnit = _session->GetPlayer()->GetDivider(); packet.QuestID = quest->GetQuestId(); packet.PortraitGiver = quest->GetQuestGiverPortrait(); + packet.PortraitGiverMount = quest->GetQuestGiverPortraitMount(); packet.PortraitTurnIn = quest->GetQuestTurnInPortrait(); packet.AutoLaunched = autoLaunched; packet.DisplayPopup = displayPopup; @@ -512,6 +514,7 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const packet.Info.QuestID = quest->GetQuestId(); packet.Info.QuestType = quest->GetQuestType(); packet.Info.QuestLevel = quest->GetQuestLevel(); + packet.Info.QuestScalingFactionGroup = quest->GetQuestScalingFactionGroup(); packet.Info.QuestMaxScalingLevel = quest->GetQuestMaxScalingLevel(); packet.Info.QuestPackageID = quest->GetQuestPackageID(); packet.Info.QuestMinLevel = quest->GetMinLevel(); @@ -543,12 +546,14 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const packet.Info.StartItem = quest->GetSrcItemId(); packet.Info.Flags = quest->GetFlags(); packet.Info.FlagsEx = quest->GetFlagsEx(); + packet.Info.FlagsEx2 = quest->GetFlagsEx2(); packet.Info.RewardTitle = quest->GetRewTitle(); packet.Info.RewardArenaPoints = quest->GetRewArenaPoints(); packet.Info.RewardSkillLineID = quest->GetRewardSkillId(); packet.Info.RewardNumSkillUps = quest->GetRewardSkillPoints(); packet.Info.RewardFactionFlags = quest->GetRewardReputationMask(); packet.Info.PortraitGiver = quest->GetQuestGiverPortrait(); + packet.Info.PortraitGiverMount = quest->GetQuestGiverPortraitMount(); packet.Info.PortraitTurnIn = quest->GetQuestTurnInPortrait(); for (uint8 i = 0; i < QUEST_ITEM_DROP_COUNT; ++i) @@ -585,7 +590,7 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const packet.Info.POIPriority = quest->GetPOIPriority(); packet.Info.AllowableRaces = quest->GetAllowableRaces(); - packet.Info.QuestRewardID = quest->GetRewardId(); + packet.Info.TreasurePickerID = quest->GetTreasurePickerId(); packet.Info.Expansion = quest->GetExpansion(); for (QuestObjective const& questObjective : quest->GetObjectives()) @@ -666,6 +671,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUI packet.PortraitTurnIn = quest->GetQuestTurnInPortrait(); packet.PortraitGiver = quest->GetQuestGiverPortrait(); + packet.PortraitGiverMount = quest->GetQuestGiverPortraitMount(); packet.QuestPackageID = quest->GetQuestPackageID(); _session->SendPacket(packet.Write()); diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.cpp b/src/server/game/Entities/DynamicObject/DynamicObject.cpp index ed5e3dc043b..8ee595cb179 100644 --- a/src/server/game/Entities/DynamicObject/DynamicObject.cpp +++ b/src/server/game/Entities/DynamicObject/DynamicObject.cpp @@ -38,7 +38,7 @@ DynamicObject::DynamicObject(bool isWorldObject) : WorldObject(isWorldObject), m_objectType |= TYPEMASK_DYNAMICOBJECT; m_objectTypeId = TYPEID_DYNAMICOBJECT; - m_updateFlag = UPDATEFLAG_STATIONARY_POSITION; + m_updateFlag.Stationary = true; m_valuesCount = DYNAMICOBJECT_END; _dynamicValuesCount = DYNAMICOBJECT_DYNAMIC_END; diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 89b59a11ab2..435ccc5c9a9 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -61,7 +61,8 @@ GameObject::GameObject() : WorldObject(false), MapObject(), m_objectType |= TYPEMASK_GAMEOBJECT; m_objectTypeId = TYPEID_GAMEOBJECT; - m_updateFlag = (UPDATEFLAG_STATIONARY_POSITION | UPDATEFLAG_ROTATION); + m_updateFlag.Stationary = true; + m_updateFlag.Rotation = true; m_valuesCount = GAMEOBJECT_END; _dynamicValuesCount = GAMEOBJECT_DYNAMIC_END; @@ -238,7 +239,7 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD else { guid = ObjectGuid::Create(map->GenerateLowGuid()); - m_updateFlag |= UPDATEFLAG_TRANSPORT; + m_updateFlag.ServerTime = true; } Object::_Create(guid); @@ -271,7 +272,7 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD if (m_goTemplateAddon->WorldEffectID) { - m_updateFlag |= UPDATEFLAG_GAMEOBJECT; + m_updateFlag.GameObject = true; SetWorldEffectID(m_goTemplateAddon->WorldEffectID); } } @@ -292,6 +293,8 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD SetGoState(goState); SetGoArtKit(artKit); + SetUInt32Value(GAMEOBJECT_STATE_ANIM_ID, sAnimationDataStore.GetNumRows()); + switch (goInfo->type) { case GAMEOBJECT_TYPE_FISHINGHOLE: @@ -376,7 +379,7 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD if (gameObjectAddon && gameObjectAddon->WorldEffectID) { - m_updateFlag |= UPDATEFLAG_GAMEOBJECT; + m_updateFlag.GameObject = true; SetWorldEffectID(gameObjectAddon->WorldEffectID); } diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h index c6411c24f0a..2bf4a423590 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -104,7 +104,7 @@ struct GameObjectTemplate uint32 usegrouplootrules; // 15 use group loot rules, enum { false, true, }; Default: false uint32 floatingTooltip; // 16 floatingTooltip, enum { false, true, }; Default: false uint32 conditionID1; // 17 conditionID1, References: PlayerCondition, NoValue = 0 - int32 xpLevel; // 18 xpLevel, int, Min value: -1, Max value: 123, Default value: 0 + uint32 XPLevelRange; // 18 XP Level Range, References: ContentTuning, NoValue = 0 uint32 xpDifficulty; // 19 xpDifficulty, enum { No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, 5, }; Default: No Exp uint32 lootLevel; // 20 lootLevel, int, Min value: 0, Max value: 123, Default value: 0 uint32 GroupXP; // 21 Group XP, enum { false, true, }; Default: false @@ -119,6 +119,7 @@ struct GameObjectTemplate uint32 chestPersonalLoot; // 30 chest Personal Loot, References: Treasure, NoValue = 0 uint32 turnpersonallootsecurityoff; // 31 turn personal loot security off, enum { false, true, }; Default: false uint32 ChestProperties; // 32 Chest Properties, References: ChestProperties, NoValue = 0 + uint32 chestPushLoot; // 33 chest Push Loot, References: Treasure, NoValue = 0 } chest; // 4 GAMEOBJECT_TYPE_BINDER struct @@ -331,6 +332,7 @@ struct GameObjectTemplate { uint32 creatureID; // 0 creatureID, References: Creature, NoValue = 0 uint32 charges; // 1 charges, int, Min value: 0, Max value: 65535, Default value: 1 + uint32 Preferonlyifinlineofsight; // 2 Prefer only if in line of sight (expensive), enum { false, true, }; Default: false } guardPost; // 22 GAMEOBJECT_TYPE_SPELLCASTER struct @@ -502,7 +504,10 @@ struct GameObjectTemplate uint32 startOpen; // 1 startOpen, enum { false, true, }; Default: false uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 BlocksPathsDown; // 3 Blocks Paths Down, enum { false, true, }; Default: false - uint32 PathBlockerBump; // 4 Path Blocker Bump (ft), int, Min value: -2147483648, Max value: 2147483647, Default value: 0 + int32 PathBlockerBump; // 4 Path Blocker Bump (ft), int, Min value: -2147483648, Max value: 2147483647, Default value: 0 + uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false + uint32 InfiniteAOI; // 6 Infinite AOI, enum { false, true, }; Default: false + uint32 DoorisOpaque; // 7 Door is Opaque (Disable portal on close), enum { false, true, }; Default: false } trapdoor; // 36 GAMEOBJECT_TYPE_NEW_FLAG struct @@ -580,7 +585,7 @@ struct GameObjectTemplate struct { int32 SpawnMap; // 0 Spawn Map, References: Map, NoValue = -1 - uint32 AreaNameSet; // 1 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0 + int32 AreaNameSet; // 1 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0 uint32 DoodadSetA; // 2 Doodad Set A, int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 DoodadSetB; // 3 Doodad Set B, int, Min value: 0, Max value: 2147483647, Default value: 0 } phaseableMO; @@ -615,7 +620,7 @@ struct GameObjectTemplate // 48 GAMEOBJECT_TYPE_UI_LINK struct { - uint32 UILinkType; // 0 UI Link Type, enum { Adventure Journal, Obliterum Forge, }; Default: Adventure Journal + uint32 UILinkType; // 0 UI Link Type, enum { Adventure Journal, Obliterum Forge, Scrapping Machine, }; Default: Adventure Journal uint32 allowMounted; // 1 allowMounted, enum { false, true, }; Default: false uint32 GiganticAOI; // 2 Gigantic AOI, enum { false, true, }; Default: false uint32 spellFocusType; // 3 spellFocusType, References: SpellFocusObject, NoValue = 0 @@ -640,7 +645,7 @@ struct GameObjectTemplate uint32 openTextID; // 9 openTextID, References: BroadcastText, NoValue = 0 uint32 floatingTooltip; // 10 floatingTooltip, enum { false, true, }; Default: false uint32 conditionID1; // 11 conditionID1, References: PlayerCondition, NoValue = 0 - uint32 xpLevel; // 12 xpLevel, int, Min value: -1, Max value: 123, Default value: 0 + uint32 XPLevelRange; // 12 XP Level Range, References: ContentTuning, NoValue = 0 uint32 xpDifficulty; // 13 xpDifficulty, enum { No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, 5, }; Default: No Exp uint32 spell; // 14 spell, References: Spell, NoValue = 0 uint32 GiganticAOI; // 15 Gigantic AOI, enum { false, true, }; Default: false @@ -649,13 +654,45 @@ struct GameObjectTemplate uint32 MaxNumberofLoots; // 18 Max Number of Loots, int, Min value: 1, Max value: 40, Default value: 10 uint32 logloot; // 19 log loot, enum { false, true, }; Default: false uint32 linkedTrap; // 20 linkedTrap, References: GameObjects, NoValue = 0 + uint32 PlayOpenAnimationonOpening; // 21 Play Open Animation on Opening, enum { false, true, }; Default: false } gatheringNode; // 51 GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD struct { uint32 chestLoot; // 0 chestLoot, References: Treasure, NoValue = 0 uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0 + uint32 open; // 2 open, References: Lock_, NoValue = 0 + uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0 } challengeModeReward; + // 52 GAMEOBJECT_TYPE_MULTI + struct + { + uint32 MultiProperties; // 0 Multi Properties, References: MultiProperties, NoValue = 0 + } multi; + // 53 GAMEOBJECT_TYPE_SIEGEABLE_MULTI + struct + { + uint32 MultiProperties; // 0 Multi Properties, References: MultiProperties, NoValue = 0 + uint32 InitialDamage; // 1 Initial Damage, enum { None, Raw, Ratio, }; Default: None + } siegeableMulti; + // 54 GAMEOBJECT_TYPE_SIEGEABLE_MO + struct + { + uint32 SiegeableProperties; // 0 Siegeable Properties, References: SiegeableProperties, NoValue = 0 + uint32 DoodadSetA; // 1 Doodad Set A, int, Min value: 0, Max value: 2147483647, Default value: 0 + uint32 DoodadSetB; // 2 Doodad Set B, int, Min value: 0, Max value: 2147483647, Default value: 0 + uint32 DoodadSetC; // 3 Doodad Set C, int, Min value: 0, Max value: 2147483647, Default value: 0 + int32 SpawnMap; // 4 Spawn Map, References: Map, NoValue = -1 + int32 AreaNameSet; // 5 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0 + } siegeableMO; + // 55 GAMEOBJECT_TYPE_PVP_REWARD + struct + { + uint32 chestLoot; // 0 chestLoot, References: Treasure, NoValue = 0 + uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0 + uint32 open; // 2 open, References: Lock_, NoValue = 0 + uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0 + } pvpReward; struct { uint32 data[MAX_GAMEOBJECT_DATA]; @@ -708,6 +745,8 @@ struct GameObjectTemplate case GAMEOBJECT_TYPE_NEW_FLAG_DROP: return newflagdrop.open; case GAMEOBJECT_TYPE_CAPTURE_POINT: return capturePoint.open; case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.open; + case GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD: return challengeModeReward.open; + case GAMEOBJECT_TYPE_PVP_REWARD: return pvpReward.open; default: return 0; } } diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index d63d5246d5a..847c3c47c79 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -275,8 +275,6 @@ Item::Item() m_objectType |= TYPEMASK_ITEM; m_objectTypeId = TYPEID_ITEM; - m_updateFlag = 0; - m_valuesCount = ITEM_END; _dynamicValuesCount = ITEM_DYNAMIC_END; m_slot = 0; diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 201f5c1515c..9d8a17ecbd7 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -55,7 +55,7 @@ Object::Object() { m_objectTypeId = TYPEID_OBJECT; m_objectType = TYPEMASK_OBJECT; - m_updateFlag = UPDATEFLAG_NONE; + m_updateFlag.Clear(); m_uint32Values = nullptr; _dynamicValues = nullptr; @@ -170,12 +170,19 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c if (!target) return; - uint8 updateType = UPDATETYPE_CREATE_OBJECT; - uint32 flags = m_updateFlag; + uint8 updateType = UPDATETYPE_CREATE_OBJECT; + uint8 objectType = m_objectTypeId; + uint16 objectTypeMask = m_objectType; + CreateObjectBits flags = m_updateFlag; /** lower flag1 **/ if (target == this) // building packet for yourself - flags |= UPDATEFLAG_SELF; + { + flags.ThisIsYou = true; + flags.ActivePlayer = true; + objectType = TYPEID_ACTIVE_PLAYER; + objectTypeMask |= TYPEMASK_ACTIVE_PLAYER; + } switch (GetGUID().GetHigh()) { @@ -208,15 +215,14 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c if (WorldObject const* worldObject = dynamic_cast(this)) { - if (!(flags & UPDATEFLAG_LIVING)) - if (!worldObject->m_movementInfo.transport.guid.IsEmpty()) - flags |= UPDATEFLAG_TRANSPORT_POSITION; + if (!flags.MovementUpdate && !worldObject->m_movementInfo.transport.guid.IsEmpty()) + flags.MovementTransport = true; if (worldObject->GetAIAnimKitId() || worldObject->GetMovementAnimKitId() || worldObject->GetMeleeAnimKitId()) - flags |= UPDATEFLAG_ANIMKITS; + flags.AnimKit = true; } - if (flags & UPDATEFLAG_STATIONARY_POSITION) + if (flags.Stationary) { // UPDATETYPE_CREATE_OBJECT2 for some gameobject types... if (isType(TYPEMASK_GAMEOBJECT)) @@ -237,12 +243,13 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c if (Unit const* unit = ToUnit()) if (unit->GetVictim()) - flags |= UPDATEFLAG_HAS_TARGET; + flags.CombatVictim = true; ByteBuffer buf(0x400); buf << uint8(updateType); buf << GetGUID(); - buf << uint8(m_objectTypeId); + buf << uint8(objectType); + buf << uint32(objectTypeMask); BuildMovementUpdate(&buf, flags); BuildValuesUpdate(updateType, &buf, target); @@ -337,25 +344,8 @@ ObjectGuid const& Object::GetGuidValue(uint16 index) const return *((ObjectGuid*)&(m_uint32Values[index])); } -void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const -{ - bool NoBirthAnim = false; - bool EnablePortals = false; - bool PlayHoverAnim = false; - bool HasMovementUpdate = (flags & UPDATEFLAG_LIVING) != 0; - bool HasMovementTransport = (flags & UPDATEFLAG_TRANSPORT_POSITION) != 0; - bool Stationary = (flags & UPDATEFLAG_STATIONARY_POSITION) != 0; - bool CombatVictim = (flags & UPDATEFLAG_HAS_TARGET) != 0; - bool ServerTime = (flags & UPDATEFLAG_TRANSPORT) != 0; - bool VehicleCreate = (flags & UPDATEFLAG_VEHICLE) != 0; - bool AnimKitCreate = (flags & UPDATEFLAG_ANIMKITS) != 0; - bool Rotation = (flags & UPDATEFLAG_ROTATION) != 0; - bool HasAreaTrigger = (flags & UPDATEFLAG_AREATRIGGER) != 0; - bool HasGameObject = (flags & UPDATEFLAG_GAMEOBJECT) != 0; - bool ThisIsYou = (flags & UPDATEFLAG_SELF) != 0; - bool SmoothPhasing = false; - bool SceneObjCreate = false; - bool PlayerCreateData = GetTypeId() == TYPEID_PLAYER && ToUnit()->GetPowerIndex(POWER_RUNES) != MAX_POWERS; +void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const +{ std::vector const* PauseTimes = nullptr; uint32 PauseTimesCount = 0; if (GameObject const* go = ToGameObject()) @@ -367,26 +357,27 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const } } - data->WriteBit(NoBirthAnim); - data->WriteBit(EnablePortals); - data->WriteBit(PlayHoverAnim); - data->WriteBit(HasMovementUpdate); - data->WriteBit(HasMovementTransport); - data->WriteBit(Stationary); - data->WriteBit(CombatVictim); - data->WriteBit(ServerTime); - data->WriteBit(VehicleCreate); - data->WriteBit(AnimKitCreate); - data->WriteBit(Rotation); - data->WriteBit(HasAreaTrigger); - data->WriteBit(HasGameObject); - data->WriteBit(SmoothPhasing); - data->WriteBit(ThisIsYou); - data->WriteBit(SceneObjCreate); - data->WriteBit(PlayerCreateData); + data->WriteBit(flags.NoBirthAnim); + data->WriteBit(flags.EnablePortals); + data->WriteBit(flags.PlayHoverAnim); + data->WriteBit(flags.MovementUpdate); + data->WriteBit(flags.MovementTransport); + data->WriteBit(flags.Stationary); + data->WriteBit(flags.CombatVictim); + data->WriteBit(flags.ServerTime); + data->WriteBit(flags.Vehicle); + data->WriteBit(flags.AnimKit); + data->WriteBit(flags.Rotation); + data->WriteBit(flags.AreaTrigger); + data->WriteBit(flags.GameObject); + data->WriteBit(flags.SmoothPhasing); + data->WriteBit(flags.ThisIsYou); + data->WriteBit(flags.SceneObject); + data->WriteBit(flags.ActivePlayer); + data->WriteBit(flags.Conversation); data->FlushBits(); - if (HasMovementUpdate) + if (flags.MovementUpdate) { Unit const* unit = ToUnit(); bool HasFallDirection = unit->HasUnitMovementFlag(MOVEMENTFLAG_FALLING); @@ -457,6 +448,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const // *data << uint32(TransportID); // *data << float(Magnitude); // data->WriteBits(Type, 2); + // data->FlushBits(); //} if (HasSpline) @@ -465,7 +457,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << uint32(PauseTimesCount); - if (Stationary) + if (flags.Stationary) { WorldObject const* self = static_cast(this); *data << float(self->GetStationaryX()); @@ -474,10 +466,10 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << float(self->GetStationaryO()); } - if (CombatVictim) + if (flags.CombatVictim) *data << ToUnit()->GetVictim()->GetGUID(); // CombatVictim - if (ServerTime) + if (flags.ServerTime) { GameObject const* go = ToGameObject(); /** @TODO Use IsTransport() to also handle type 11 (TRANSPORT) @@ -491,14 +483,14 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << uint32(getMSTime()); } - if (VehicleCreate) + if (flags.Vehicle) { Unit const* unit = ToUnit(); *data << uint32(unit->GetVehicleKit()->GetVehicleInfo()->ID); // RecID *data << float(unit->GetOrientation()); // InitialRawFacing } - if (AnimKitCreate) + if (flags.AnimKit) { WorldObject const* self = static_cast(this); *data << uint16(self->GetAIAnimKitId()); // AiID @@ -506,19 +498,19 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << uint16(self->GetMeleeAnimKitId()); // MeleeID } - if (Rotation) + if (flags.Rotation) *data << uint64(ToGameObject()->GetPackedWorldRotation()); // Rotation if (PauseTimesCount) data->append(PauseTimes->data(), PauseTimes->size()); - if (HasMovementTransport) + if (flags.MovementTransport) { WorldObject const* self = static_cast(this); *data << self->m_movementInfo.transport; } - if (HasAreaTrigger) + if (flags.AreaTrigger) { AreaTrigger const* areaTrigger = ToAreaTrigger(); AreaTriggerMiscTemplate const* areaTriggerMiscTemplate = areaTrigger->GetMiscTemplate(); @@ -539,9 +531,10 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const bool hasMorphCurveID = areaTriggerMiscTemplate->MorphCurveId != 0; bool hasFacingCurveID = areaTriggerMiscTemplate->FacingCurveId != 0; bool hasMoveCurveID = areaTriggerMiscTemplate->MoveCurveId != 0; - bool hasUnk2 = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_UNK2); + bool hasAnimation = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_HAS_ANIM_ID); bool hasUnk3 = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_UNK3); - bool hasUnk4 = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_UNK4); + bool hasAnimKitID = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_HAS_ANIM_KIT_ID); + bool hasAnimProgress = false; bool hasAreaTriggerSphere = areaTriggerTemplate->IsSphere(); bool hasAreaTriggerBox = areaTriggerTemplate->IsBox(); bool hasAreaTriggerPolygon = areaTriggerTemplate->IsPolygon(); @@ -560,9 +553,10 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const data->WriteBit(hasMorphCurveID); data->WriteBit(hasFacingCurveID); data->WriteBit(hasMoveCurveID); - data->WriteBit(hasUnk2); + data->WriteBit(hasAnimation); + data->WriteBit(hasAnimKitID); data->WriteBit(hasUnk3); - data->WriteBit(hasUnk4); + data->WriteBit(hasAnimProgress); data->WriteBit(hasAreaTriggerSphere); data->WriteBit(hasAreaTriggerBox); data->WriteBit(hasAreaTriggerPolygon); @@ -598,10 +592,13 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const if (hasMoveCurveID) *data << uint32(areaTriggerMiscTemplate->MoveCurveId); - if (hasUnk2) - *data << int32(0); + if (hasAnimation) + *data << int32(areaTriggerMiscTemplate->AnimId); + + if (hasAnimKitID) + *data << int32(areaTriggerMiscTemplate->AnimKitId); - if (hasUnk4) + if (hasAnimProgress) *data << uint32(0); if (hasAreaTriggerSphere) @@ -648,7 +645,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << *areaTrigger->GetCircularMovementInfo(); } - if (HasGameObject) + if (flags.GameObject) { bool bit8 = false; uint32 Int1 = 0; @@ -663,7 +660,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << uint32(Int1); } - //if (SmoothPhasing) + //if (flags.SmoothPhasing) //{ // data->WriteBit(ReplaceActive); // data->WriteBit(HasReplaceObject); @@ -672,7 +669,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const // *data << ObjectGuid(ReplaceObject); //} - //if (SceneObjCreate) + //if (flags.SceneObject) //{ // data->WriteBit(HasLocalScriptData); // data->WriteBit(HasPetBattleFullUpdate); @@ -782,7 +779,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const // } //} - if (PlayerCreateData) + if (flags.ActivePlayer) { bool HasSceneInstanceIDs = false; bool HasRuneState = ToUnit()->GetPowerIndex(POWER_RUNES) != MAX_POWERS; @@ -809,6 +806,15 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << uint8((baseCd - float(player->GetRuneCooldown(i))) / baseCd * 255); } } + + if (flags.Conversation) + { + Conversation const* self = ToConversation(); + if (data->WriteBit(self->GetTextureKitId() != 0)) + *data << uint32(self->GetTextureKitId()); + + data->FlushBits(); + } } void Object::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* target) const @@ -842,7 +848,11 @@ void Object::BuildDynamicValuesUpdate(uint8 updateType, ByteBuffer* data, Player if (!target) return; - std::size_t blockCount = UpdateMask::GetBlockCount(_dynamicValuesCount); + std::size_t valueCount = _dynamicValuesCount; + if (target != this && GetTypeId() == TYPEID_PLAYER) + valueCount = PLAYER_DYNAMIC_END; + + std::size_t blockCount = UpdateMask::GetBlockCount(valueCount); uint32* flags = nullptr; uint32 visibleFlag = GetDynamicUpdateFieldData(target, flags); @@ -851,7 +861,7 @@ void Object::BuildDynamicValuesUpdate(uint8 updateType, ByteBuffer* data, Player std::size_t maskPos = data->wpos(); data->resize(data->size() + blockCount * sizeof(UpdateMask::BlockType)); - for (uint16 index = 0; index < _dynamicValuesCount; ++index) + for (uint16 index = 0; index < valueCount; ++index) { std::vector const& values = _dynamicValues[index]; if (_fieldNotifyFlags & flags[index] || @@ -931,6 +941,16 @@ uint32 Object::GetUpdateFieldData(Player const* target, uint32*& flags) const if (((Item const*)this)->GetOwnerGUID() == target->GetGUID()) visibleFlag |= UF_FLAG_OWNER | UF_FLAG_ITEM_OWNER; break; + case TYPEID_AZERITE_EMPOWERED_ITEM: + flags = AzeriteEmpoweredItemUpdateFieldFlags; + if (((Item const*)this)->GetOwnerGUID() == target->GetGUID()) + visibleFlag |= UF_FLAG_OWNER | UF_FLAG_ITEM_OWNER; + break; + case TYPEID_AZERITE_ITEM: + flags = AzeriteItemUpdateFieldFlags; + if (((Item const*)this)->GetOwnerGUID() == target->GetGUID()) + visibleFlag |= UF_FLAG_OWNER | UF_FLAG_ITEM_OWNER; + break; case TYPEID_UNIT: case TYPEID_PLAYER: { @@ -972,6 +992,7 @@ uint32 Object::GetUpdateFieldData(Player const* target, uint32*& flags) const flags = ConversationUpdateFieldFlags; break; case TYPEID_OBJECT: + case TYPEID_ACTIVE_PLAYER: ABORT(); break; } @@ -990,6 +1011,8 @@ uint32 Object::GetDynamicUpdateFieldData(Player const* target, uint32*& flags) c { case TYPEID_ITEM: case TYPEID_CONTAINER: + case TYPEID_AZERITE_EMPOWERED_ITEM: + case TYPEID_AZERITE_ITEM: flags = ItemDynamicUpdateFieldFlags; if (((Item const*)this)->GetOwnerGUID() == target->GetGUID()) visibleFlag |= UF_FLAG_OWNER | UF_FLAG_ITEM_OWNER; diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 2ebea15a58d..79420076f5b 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -54,6 +54,33 @@ struct QuaternionData; typedef std::unordered_map UpdateDataMapType; +struct CreateObjectBits +{ + bool NoBirthAnim : 1; + bool EnablePortals : 1; + bool PlayHoverAnim : 1; + bool MovementUpdate : 1; + bool MovementTransport : 1; + bool Stationary : 1; + bool CombatVictim : 1; + bool ServerTime : 1; + bool Vehicle : 1; + bool AnimKit : 1; + bool Rotation : 1; + bool AreaTrigger : 1; + bool GameObject : 1; + bool SmoothPhasing : 1; + bool ThisIsYou : 1; + bool SceneObject : 1; + bool ActivePlayer : 1; + bool Conversation : 1; + + void Clear() + { + memset(this, 0, sizeof(CreateObjectBits)); + } +}; + namespace UpdateMask { typedef uint32 BlockType; @@ -298,14 +325,14 @@ class TC_GAME_API Object uint32 GetUpdateFieldData(Player const* target, uint32*& flags) const; uint32 GetDynamicUpdateFieldData(Player const* target, uint32*& flags) const; - void BuildMovementUpdate(ByteBuffer* data, uint32 flags) const; + void BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const; virtual void BuildValuesUpdate(uint8 updatetype, ByteBuffer* data, Player* target) const; virtual void BuildDynamicValuesUpdate(uint8 updatetype, ByteBuffer* data, Player* target) const; uint16 m_objectType; TypeID m_objectTypeId; - uint32 m_updateFlag; + CreateObjectBits m_updateFlag; union { diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp index d5094aea2b0..f8ee803ed22 100644 --- a/src/server/game/Entities/Object/ObjectGuid.cpp +++ b/src/server/game/Entities/Object/ObjectGuid.cpp @@ -87,6 +87,7 @@ namespace SET_GUID_NAME(CommerceObj); SET_GUID_NAME(ClientSession); SET_GUID_NAME(Cast); + SET_GUID_NAME(ClientConnection); #undef SET_GUID_NAME } diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h index 941608f9493..0584c0d7262 100644 --- a/src/server/game/Entities/Object/ObjectGuid.h +++ b/src/server/game/Entities/Object/ObjectGuid.h @@ -30,35 +30,41 @@ enum TypeID { - TYPEID_OBJECT = 0, - TYPEID_ITEM = 1, - TYPEID_CONTAINER = 2, - TYPEID_UNIT = 3, - TYPEID_PLAYER = 4, - TYPEID_GAMEOBJECT = 5, - TYPEID_DYNAMICOBJECT = 6, - TYPEID_CORPSE = 7, - TYPEID_AREATRIGGER = 8, - TYPEID_SCENEOBJECT = 9, - TYPEID_CONVERSATION = 10 + TYPEID_OBJECT = 0, + TYPEID_ITEM = 1, + TYPEID_CONTAINER = 2, + TYPEID_AZERITE_EMPOWERED_ITEM = 3, + TYPEID_AZERITE_ITEM = 4, + TYPEID_UNIT = 5, + TYPEID_PLAYER = 6, + TYPEID_ACTIVE_PLAYER = 7, + TYPEID_GAMEOBJECT = 8, + TYPEID_DYNAMICOBJECT = 9, + TYPEID_CORPSE = 10, + TYPEID_AREATRIGGER = 11, + TYPEID_SCENEOBJECT = 12, + TYPEID_CONVERSATION = 13 }; -#define NUM_CLIENT_OBJECT_TYPES 11 +#define NUM_CLIENT_OBJECT_TYPES 14 enum TypeMask { - TYPEMASK_OBJECT = 0x0001, - TYPEMASK_ITEM = 0x0002, - TYPEMASK_CONTAINER = 0x0004, - TYPEMASK_UNIT = 0x0008, - TYPEMASK_PLAYER = 0x0010, - TYPEMASK_GAMEOBJECT = 0x0020, - TYPEMASK_DYNAMICOBJECT = 0x0040, - TYPEMASK_CORPSE = 0x0080, - TYPEMASK_AREATRIGGER = 0x0100, - TYPEMASK_SCENEOBJECT = 0x0200, - TYPEMASK_CONVERSATION = 0x0400, - TYPEMASK_SEER = TYPEMASK_PLAYER | TYPEMASK_UNIT | TYPEMASK_DYNAMICOBJECT + TYPEMASK_OBJECT = 0x0001, + TYPEMASK_ITEM = 0x0002, + TYPEMASK_CONTAINER = 0x0004, + TYPEMASK_AZERITE_EMPOWERED_ITEM = 0x0008, + TYPEMASK_AZERITE_ITEM = 0x0010, + TYPEMASK_UNIT = 0x0020, + TYPEMASK_PLAYER = 0x0040, + TYPEMASK_ACTIVE_PLAYER = 0x0080, + TYPEMASK_GAMEOBJECT = 0x0100, + TYPEMASK_DYNAMICOBJECT = 0x0200, + TYPEMASK_CORPSE = 0x0400, + TYPEMASK_AREATRIGGER = 0x0800, + TYPEMASK_SCENEOBJECT = 0x1000, + TYPEMASK_CONVERSATION = 0x2000, + TYPEMASK_SEER = TYPEMASK_PLAYER | TYPEMASK_UNIT | TYPEMASK_DYNAMICOBJECT }; enum class HighGuid @@ -111,6 +117,7 @@ enum class HighGuid CommerceObj = 45, ClientSession = 46, Cast = 47, + ClientConnection = 48, Count, }; @@ -349,6 +356,7 @@ class TC_GAME_API ObjectGuidGeneratorBase { public: ObjectGuidGeneratorBase(ObjectGuid::LowType start = UI64LIT(1)) : _nextGuid(start) { } + virtual ~ObjectGuidGeneratorBase() { } virtual void Set(uint64 val) { _nextGuid = val; } virtual ObjectGuid::LowType Generate() = 0; diff --git a/src/server/game/Entities/Object/Updates/UpdateData.h b/src/server/game/Entities/Object/Updates/UpdateData.h index 800948c4281..9d438ed625e 100644 --- a/src/server/game/Entities/Object/Updates/UpdateData.h +++ b/src/server/game/Entities/Object/Updates/UpdateData.h @@ -34,29 +34,6 @@ enum OBJECT_UPDATE_TYPE UPDATETYPE_OUT_OF_RANGE_OBJECTS = 3, }; -enum OBJECT_UPDATE_FLAGS -{ - UPDATEFLAG_NONE = 0x0000, - UPDATEFLAG_SELF = 0x0001, - UPDATEFLAG_TRANSPORT = 0x0002, - UPDATEFLAG_HAS_TARGET = 0x0004, - UPDATEFLAG_LIVING = 0x0008, - UPDATEFLAG_STATIONARY_POSITION = 0x0010, - UPDATEFLAG_VEHICLE = 0x0020, - UPDATEFLAG_TRANSPORT_POSITION = 0x0040, - UPDATEFLAG_ROTATION = 0x0080, - UPDATEFLAG_ANIMKITS = 0x0100, - UPDATEFLAG_AREATRIGGER = 0x0200, - UPDATEFLAG_GAMEOBJECT = 0x0400, - //UPDATEFLAG_REPLACE_ACTIVE = 0x0800, - //UPDATEFLAG_NO_BIRTH_ANIM = 0x1000, - //UPDATEFLAG_ENABLE_PORTALS = 0x2000, - //UPDATEFLAG_PLAY_HOVER_ANIM = 0x4000, - //UPDATEFLAG_IS_SUPPRESSING_GREETINGS = 0x8000 - //UPDATEFLAG_SCENEOBJECT = 0x10000, - //UPDATEFLAG_SCENE_PENDING_INSTANCE = 0x20000 -}; - class UpdateData { public: diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 34609ed6698..51db53c9c61 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2419,9 +2419,8 @@ void Player::GiveLevel(uint8 level) for (uint8 i = STAT_STRENGTH; i < MAX_STATS; ++i) packet.StatDelta[i] = int32(info.stats[i]) - GetCreateStat(Stats(i)); - uint32 const* rowLevels = (getClass() != CLASS_DEATH_KNIGHT) ? DefaultTalentRowLevels : DKTalentRowLevels; - - packet.Cp = std::find(rowLevels, rowLevels + MAX_TALENT_TIERS, level) != (rowLevels + MAX_TALENT_TIERS); + packet.NumNewTalents = DB2Manager::GetNumTalentsAtLevel(level, Classes(getClass())) - DB2Manager::GetNumTalentsAtLevel(oldLevel, Classes(getClass())); + packet.NumNewPvpTalentSlots = sDB2Manager.GetPvpTalentNumSlotsAtLevel(level, Classes(getClass())) - sDB2Manager.GetPvpTalentNumSlotsAtLevel(oldLevel, Classes(getClass())); GetSession()->SendPacket(packet.Write()); @@ -2505,7 +2504,7 @@ void Player::InitTalentForLevel() if (level < MIN_SPECIALIZATION_LEVEL) ResetTalentSpecialization(); - uint32 talentTiers = CalculateTalentsTiers(); + uint32 talentTiers = DB2Manager::GetNumTalentsAtLevel(level, Classes(getClass())); if (level < 15) { // Remove all talent points @@ -14570,6 +14569,38 @@ uint32 Player::GetDefaultGossipMenuForSource(WorldObject* source) /*** QUEST SYSTEM ***/ /*********************************************************/ +int32 Player::GetQuestMinLevel(Quest const* quest) const +{ + if (quest->GetQuestLevel() == -1 && quest->GetQuestScalingFactionGroup()) + { + ChrRacesEntry const* race = sChrRacesStore.AssertEntry(getRace()); + FactionTemplateEntry const* raceFaction = sFactionTemplateStore.LookupEntry(race->FactionID); + if (!raceFaction || raceFaction->FactionGroup != quest->GetQuestScalingFactionGroup()) + return quest->GetQuestMaxScalingLevel(); + } + + return quest->GetMinLevel(); +} + +int32 Player::GetQuestLevel(Quest const* quest) const +{ + if (!quest) + return 0; + + if (quest->GetQuestLevel() == -1) + { + int32 minLevel = GetQuestMinLevel(quest); + int32 maxLevel = quest->GetQuestMaxScalingLevel(); + int32 level = getLevel(); + if (level >= minLevel) + return std::min(level, maxLevel); + + return minLevel; + } + + return quest->GetQuestLevel(); +} + void Player::PrepareQuestMenu(ObjectGuid guid) { QuestRelationBounds objectQR; @@ -14737,7 +14768,7 @@ bool Player::CanSeeStartQuest(Quest const* quest) SatisfyQuestPrevChain(quest, false) && SatisfyQuestDay(quest, false) && SatisfyQuestWeek(quest, false) && SatisfyQuestMonth(quest, false) && SatisfyQuestSeasonal(quest, false)) { - return int32(getLevel() + sWorld->getIntConfig(CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF)) >= quest->GetMinLevel(); + return int32(getLevel() + sWorld->getIntConfig(CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF)) >= GetQuestMinLevel(quest); } return false; @@ -15163,7 +15194,7 @@ void Player::IncompleteQuest(uint32 quest_id) uint32 Player::GetQuestMoneyReward(Quest const* quest) const { - return quest->MoneyValue(getLevel()) * sWorld->getRate(RATE_MONEY_QUEST); + return quest->MoneyValue(this) * sWorld->getRate(RATE_MONEY_QUEST); } uint32 Player::GetQuestXPReward(Quest const* quest) @@ -15174,7 +15205,7 @@ uint32 Player::GetQuestXPReward(Quest const* quest) if (rewarded && !quest->IsDFQuest()) return 0; - uint32 XP = quest->XPValue(getLevel()) * sWorld->getRate(RATE_XP_QUEST); + uint32 XP = quest->XPValue(this) * sWorld->getRate(RATE_XP_QUEST); // handle SPELL_AURA_MOD_XP_QUEST_PCT auras Unit::AuraEffectList const& ModXPPctAuras = GetAuraEffectsByType(SPELL_AURA_MOD_XP_QUEST_PCT); @@ -15570,7 +15601,7 @@ bool Player::SatisfyQuestSkill(Quest const* qInfo, bool msg) const bool Player::SatisfyQuestLevel(Quest const* qInfo, bool msg) const { - if (getLevel() < qInfo->GetMinLevel()) + if (getLevel() < GetQuestMinLevel(qInfo)) { if (msg) { @@ -19625,7 +19656,7 @@ void Player::SendRaidInfo() { InstanceSave* save = itr->second.save; - WorldPackets::Instance::InstanceLockInfos lockInfos; + WorldPackets::Instance::InstanceLock lockInfos; lockInfos.InstanceID = save->GetInstanceId(); lockInfos.MapID = save->GetMapId(); @@ -22328,6 +22359,8 @@ void Player::InitDisplayIds() default: TC_LOG_ERROR("entities.player", "Player::InitDisplayIds: Player '%s' (%s) has invalid gender %u", GetName().c_str(), GetGUID().ToString().c_str(), gender); } + + SetUInt32Value(UNIT_FIELD_STATE_ANIM_ID, sAnimationDataStore.GetNumRows()); } inline bool Player::_StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot, int64 price, ItemTemplate const* pProto, Creature* pVendor, VendorItem const* crItem, bool bStore) @@ -23999,19 +24032,15 @@ void Player::LearnDefaultSkill(SkillRaceClassInfoEntry const* rcInfo) break; case SKILL_RANGE_RANK: { - uint16 rank = 1; - if (getClass() == CLASS_DEATH_KNIGHT && skillId == SKILL_FIRST_AID) - rank = 4; - SkillTiersEntry const* tier = sObjectMgr->GetSkillTier(rcInfo->SkillTierID); - uint16 maxValue = tier->Value[std::max(rank - 1, 0)]; + uint16 maxValue = tier->Value[0]; uint16 skillValue = 1; if (rcInfo->Flags & SKILL_FLAG_ALWAYS_MAX_VALUE) skillValue = maxValue; else if (getClass() == CLASS_DEATH_KNIGHT) skillValue = std::min(std::max(uint16(1), uint16((getLevel() - 1) * 5)), maxValue); - SetSkill(skillId, rank, skillValue, maxValue); + SetSkill(skillId, 1, skillValue, maxValue); break; } default: @@ -26496,7 +26525,10 @@ void Player::SendTalentsInfoData() continue; } - groupInfoPkt.PvPTalentIDs.push_back(uint16(pvpTalents[slot])); + groupInfoPkt.PvPTalents.emplace_back(); + WorldPackets::Talent::PvPTalent& pvpTalent = groupInfoPkt.PvPTalents.back(); + pvpTalent.PvPTalentID = pvpTalents[slot]; + pvpTalent.Slot = slot; } packet.Info.TalentGroups.push_back(groupInfoPkt); @@ -27517,6 +27549,7 @@ void Player::SendPlayerChoice(ObjectGuid sender, int32 choiceId) displayPlayerChoice.Responses.resize(playerChoice->Responses.size()); displayPlayerChoice.CloseChoiceFrame = false; displayPlayerChoice.HideWarboardHeader = playerChoice->HideWarboardHeader; + displayPlayerChoice.KeepOpenAfterChoice = playerChoice->KeepOpenAfterChoice; for (std::size_t i = 0; i < playerChoice->Responses.size(); ++i) { @@ -27524,6 +27557,9 @@ void Player::SendPlayerChoice(ObjectGuid sender, int32 choiceId) WorldPackets::Quest::PlayerChoiceResponse& playerChoiceResponse = displayPlayerChoice.Responses[i]; playerChoiceResponse.ResponseID = playerChoiceResponseTemplate.ResponseId; playerChoiceResponse.ChoiceArtFileID = playerChoiceResponseTemplate.ChoiceArtFileId; + playerChoiceResponse.Flags = playerChoiceResponseTemplate.Flags; + playerChoiceResponse.WidgetSetID = playerChoiceResponseTemplate.WidgetSetID; + playerChoiceResponse.GroupID = playerChoiceResponseTemplate.GroupID; playerChoiceResponse.Answer = playerChoiceResponseTemplate.Answer; playerChoiceResponse.Header = playerChoiceResponseTemplate.Header; playerChoiceResponse.Description = playerChoiceResponseTemplate.Description; @@ -27848,29 +27884,6 @@ void Player::SendSupercededSpell(uint32 oldSpell, uint32 newSpell) const GetSession()->SendPacket(supercededSpells.Write()); } -uint32 Player::CalculateTalentsTiers() const -{ - uint32 const* rowLevels; - switch (getClass()) - { - case CLASS_DEATH_KNIGHT: - rowLevels = DKTalentRowLevels; - break; - case CLASS_DEMON_HUNTER: - rowLevels = DHTalentRowLevels; - break; - default: - rowLevels = DefaultTalentRowLevels; - break; - } - - for (uint32 i = MAX_TALENT_TIERS; i; --i) - if (getLevel() >= rowLevels[i - 1]) - return i; - - return 0; -} - Difficulty Player::GetDifficultyID(MapEntry const* mapEntry) const { if (!mapEntry->IsRaid()) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 8f1529db7c5..e3092f0279c 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -399,7 +399,7 @@ enum PlayerFlags PLAYER_FLAGS_GM = 0x00000008, PLAYER_FLAGS_GHOST = 0x00000010, PLAYER_FLAGS_RESTING = 0x00000020, - PLAYER_FLAGS_UNK6 = 0x00000040, + PLAYER_FLAGS_VOICE_CHAT = 0x00000040, PLAYER_FLAGS_UNK7 = 0x00000080, // pre-3.0.3 PLAYER_FLAGS_FFA_PVP flag for FFA PVP state PLAYER_FLAGS_CONTESTED_PVP = 0x00000100, // Player has been involved in a PvP combat and will be attacked by contested guards PLAYER_FLAGS_IN_PVP = 0x00000200, @@ -430,7 +430,8 @@ enum PlayerFlags enum PlayerFlagsEx { PLAYER_FLAGS_EX_REAGENT_BANK_UNLOCKED = 0x0001, - PLAYER_FLAGS_EX_MERCENARY_MODE = 0x0002 + PLAYER_FLAGS_EX_MERCENARY_MODE = 0x0002, + PLAYER_FLAGS_EX_ARTIFACT_FORGE_CHEAT = 0x0004 }; enum PlayerLocalFlags @@ -1009,10 +1010,6 @@ enum TalentLearnResult TALENT_FAILED_REST_AREA = 8 }; -static uint32 const DefaultTalentRowLevels[MAX_TALENT_TIERS] = { 15, 30, 45, 60, 75, 90, 100 }; -static uint32 const DKTalentRowLevels[MAX_TALENT_TIERS] = { 57, 58, 59, 60, 75, 90, 100 }; -static uint32 const DHTalentRowLevels[MAX_TALENT_TIERS] = { 99, 100, 102, 104, 106, 108, 110 }; - struct TC_GAME_API SpecializationInfo { SpecializationInfo() : ResetTalentsCost(0), ResetTalentsTime(0), PrimarySpecialization(0), ActiveGroup(0) @@ -1357,13 +1354,8 @@ class TC_GAME_API Player : public Unit, public GridObject /*** QUEST SYSTEM ***/ /*********************************************************/ - int32 GetQuestLevel(Quest const* quest) const - { - if (!quest) - return getLevel(); - return quest->GetQuestLevel() > 0 ? quest->GetQuestLevel() : std::min(getLevel(), quest->GetQuestMaxScalingLevel()); - } - + int32 GetQuestMinLevel(Quest const* quest) const; + int32 GetQuestLevel(Quest const* quest) const; void PrepareQuestMenu(ObjectGuid guid); void SendPreparedQuest(WorldObject* source); bool IsActiveQuest(uint32 quest_id) const; @@ -1653,7 +1645,6 @@ class TC_GAME_API Player : public Unit, public GridObject bool AddTalent(TalentEntry const* talent, uint8 spec, bool learning); bool HasTalent(uint32 spell_id, uint8 spec) const; void RemoveTalent(TalentEntry const* talent); - uint32 CalculateTalentsTiers() const; void ResetTalentSpecialization(); TalentLearnResult LearnPvpTalent(uint32 talentID, uint8 slot, int32* spellOnCooldown); @@ -1993,7 +1984,6 @@ class TC_GAME_API Player : public Unit, public GridObject void RestoreHealthAfterDuel() { SetHealth(healthBeforeDuel); } void RestoreManaAfterDuel() { SetPower(POWER_MANA, manaBeforeDuel); } - uint32 GetPrestigeLevel() const { return 0; } uint32 GetHonorLevel() const { return GetUInt32Value(PLAYER_FIELD_HONOR_LEVEL); } void AddHonorXP(uint32 xp); void SetHonorLevel(uint8 honorLevel); diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 50b1897e2c5..6de4ae21027 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -38,7 +38,9 @@ Transport::Transport() : GameObject(), _triggeredArrivalEvent(false), _triggeredDepartureEvent(false), _passengerTeleportItr(_passengers.begin()), _delayedAddModel(false), _delayedTeleport(false) { - m_updateFlag = UPDATEFLAG_TRANSPORT | UPDATEFLAG_STATIONARY_POSITION | UPDATEFLAG_ROTATION; + m_updateFlag.ServerTime = true; + m_updateFlag.Stationary = true; + m_updateFlag.Rotation = true; } Transport::~Transport() diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 6edf0663547..bb6a3e9dc5d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -111,13 +111,13 @@ bool DispelableAura::RollDispel() const } DamageInfo::DamageInfo(Unit* attacker, Unit* victim, uint32 damage, SpellInfo const* spellInfo, SpellSchoolMask schoolMask, DamageEffectType damageType, WeaponAttackType attackType) - : m_attacker(attacker), m_victim(victim), m_damage(damage), m_spellInfo(spellInfo), m_schoolMask(schoolMask), m_damageType(damageType), m_attackType(attackType), + : m_attacker(attacker), m_victim(victim), m_damage(damage), m_originalDamage(damage), m_spellInfo(spellInfo), m_schoolMask(schoolMask), m_damageType(damageType), m_attackType(attackType), m_absorb(0), m_resist(0), m_block(0), m_hitMask(0) { } DamageInfo::DamageInfo(CalcDamageInfo const& dmgInfo) - : m_attacker(dmgInfo.attacker), m_victim(dmgInfo.target), m_damage(dmgInfo.damage), m_spellInfo(nullptr), m_schoolMask(SpellSchoolMask(dmgInfo.damageSchoolMask)), + : m_attacker(dmgInfo.attacker), m_victim(dmgInfo.target), m_damage(dmgInfo.damage), m_originalDamage(dmgInfo.damage), m_spellInfo(nullptr), m_schoolMask(SpellSchoolMask(dmgInfo.damageSchoolMask)), m_damageType(DIRECT_DAMAGE), m_attackType(dmgInfo.attackType), m_absorb(dmgInfo.absorb), m_resist(dmgInfo.resist), m_block(dmgInfo.blocked_amount), m_hitMask(0) { switch (dmgInfo.TargetState) @@ -171,7 +171,7 @@ DamageInfo::DamageInfo(CalcDamageInfo const& dmgInfo) } DamageInfo::DamageInfo(SpellNonMeleeDamage const& spellNonMeleeDamage, DamageEffectType damageType, WeaponAttackType attackType, uint32 hitMask) - : m_attacker(spellNonMeleeDamage.attacker), m_victim(spellNonMeleeDamage.target), m_damage(spellNonMeleeDamage.damage), + : m_attacker(spellNonMeleeDamage.attacker), m_victim(spellNonMeleeDamage.target), m_damage(spellNonMeleeDamage.damage), m_originalDamage(spellNonMeleeDamage.originalDamage), m_spellInfo(sSpellMgr->GetSpellInfo(spellNonMeleeDamage.SpellID)), m_schoolMask(SpellSchoolMask(spellNonMeleeDamage.schoolMask)), m_damageType(damageType), m_attackType(attackType), m_absorb(spellNonMeleeDamage.absorb), m_resist(spellNonMeleeDamage.resist), m_block(spellNonMeleeDamage.blocked), m_hitMask(hitMask) { @@ -226,7 +226,7 @@ uint32 DamageInfo::GetHitMask() const } HealInfo::HealInfo(Unit* healer, Unit* target, uint32 heal, SpellInfo const* spellInfo, SpellSchoolMask schoolMask) - : _healer(healer), _target(target), _heal(heal), _effectiveHeal(0), _absorb(0), _spellInfo(spellInfo), _schoolMask(schoolMask), _hitMask(0) + : _healer(healer), _target(target), _heal(heal), _originalHeal(heal), _effectiveHeal(0), _absorb(0), _spellInfo(spellInfo), _schoolMask(schoolMask), _hitMask(0) { } @@ -279,8 +279,8 @@ SpellSchoolMask ProcEventInfo::GetSchoolMask() const } SpellNonMeleeDamage::SpellNonMeleeDamage(Unit* _attacker, Unit* _target, uint32 _SpellID, uint32 _SpellXSpellVisualID, uint32 _schoolMask, ObjectGuid _castId) - : target(_target), attacker(_attacker), castId(_castId), SpellID(_SpellID), SpellXSpellVisualID(_SpellXSpellVisualID), damage(0), schoolMask(_schoolMask), - absorb(0), resist(0), periodicLog(false), blocked(0), HitInfo(0), cleanDamage(0), fullBlock(false), preHitHealth(_target->GetHealth()) + : target(_target), attacker(_attacker), castId(_castId), SpellID(_SpellID), SpellXSpellVisualID(_SpellXSpellVisualID), damage(0), originalDamage(0), + schoolMask(_schoolMask), absorb(0), resist(0), periodicLog(false), blocked(0), HitInfo(0), cleanDamage(0), fullBlock(false), preHitHealth(_target->GetHealth()) { } @@ -297,7 +297,7 @@ Unit::Unit(bool isWorldObject) : m_objectType |= TYPEMASK_UNIT; m_objectTypeId = TYPEID_UNIT; - m_updateFlag = UPDATEFLAG_LIVING; + m_updateFlag.MovementUpdate = true; for (uint32 i = 0; i < MAX_ATTACK; ++i) { @@ -1181,6 +1181,7 @@ void Unit::CalculateSpellDamageTaken(SpellNonMeleeDamage* damageInfo, int32 dama damage = 0; damageInfo->damage = damage; + damageInfo->originalDamage = damage; DamageInfo dmgInfo(*damageInfo, SPELL_DIRECT_DAMAGE, BASE_ATTACK, PROC_HIT_NONE); CalcAbsorbResist(dmgInfo); damageInfo->absorb = dmgInfo.GetAbsorb(); @@ -1227,6 +1228,7 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam damageInfo->damageSchoolMask = GetMeleeDamageSchoolMask(); damageInfo->attackType = attackType; damageInfo->damage = 0; + damageInfo->originalDamage = 0; damageInfo->cleanDamage = 0; damageInfo->absorb = 0; damageInfo->resist = 0; @@ -1295,17 +1297,20 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam case MELEE_HIT_EVADE: damageInfo->HitInfo |= HITINFO_MISS | HITINFO_SWINGNOHITSOUND; damageInfo->TargetState = VICTIMSTATE_EVADES; + damageInfo->originalDamage = damageInfo->damage; damageInfo->damage = 0; damageInfo->cleanDamage = 0; return; case MELEE_HIT_MISS: damageInfo->HitInfo |= HITINFO_MISS; damageInfo->TargetState = VICTIMSTATE_INTACT; + damageInfo->originalDamage = damageInfo->damage; damageInfo->damage = 0; damageInfo->cleanDamage = 0; break; case MELEE_HIT_NORMAL: damageInfo->TargetState = VICTIMSTATE_HIT; + damageInfo->originalDamage = damageInfo->damage; break; case MELEE_HIT_CRIT: { @@ -1320,21 +1325,26 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam if (mod != 0) AddPct(damageInfo->damage, mod); + + damageInfo->originalDamage = damageInfo->damage; break; } case MELEE_HIT_PARRY: damageInfo->TargetState = VICTIMSTATE_PARRY; + damageInfo->originalDamage = damageInfo->damage; damageInfo->cleanDamage += damageInfo->damage; damageInfo->damage = 0; break; case MELEE_HIT_DODGE: damageInfo->TargetState = VICTIMSTATE_DODGE; + damageInfo->originalDamage = damageInfo->damage; damageInfo->cleanDamage += damageInfo->damage; damageInfo->damage = 0; break; case MELEE_HIT_BLOCK: damageInfo->TargetState = VICTIMSTATE_HIT; damageInfo->HitInfo |= HITINFO_BLOCK; + damageInfo->originalDamage = damageInfo->damage; // 30% damage blocked, double blocked amount if block is critical damageInfo->blocked_amount = CalculatePct(damageInfo->damage, damageInfo->target->isBlockCritical() ? damageInfo->target->GetBlockPercent() * 2 : damageInfo->target->GetBlockPercent()); damageInfo->damage -= damageInfo->blocked_amount; @@ -1344,6 +1354,7 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam { damageInfo->HitInfo |= HITINFO_GLANCING; damageInfo->TargetState = VICTIMSTATE_HIT; + damageInfo->originalDamage = damageInfo->damage; int32 leveldif = int32(victim->getLevel()) - int32(getLevel()); if (leveldif > 3) leveldif = 3; @@ -1358,6 +1369,7 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam damageInfo->TargetState = VICTIMSTATE_HIT; // 150% normal damage damageInfo->damage += (damageInfo->damage / 2); + damageInfo->originalDamage = damageInfo->damage; break; default: break; @@ -1372,6 +1384,7 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam resilienceReduction = damageInfo->damage - resilienceReduction; damageInfo->damage -= resilienceReduction; damageInfo->cleanDamage += resilienceReduction; + damageInfo->originalDamage -= resilienceReduction; // Calculate absorb resist if (int32(damageInfo->damage) > 0) @@ -1514,7 +1527,6 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss) DamageInfo damageInfo(this, victim, damage, spellInfo, spellInfo->GetSchoolMask(), SPELL_DIRECT_DAMAGE, BASE_ATTACK); victim->CalcAbsorbResist(damageInfo); damage = damageInfo.GetDamage(); - // No Unit::CalcAbsorbResist here - opcode doesn't send that data - this damage is probably not affected by that victim->DealDamageMods(this, damage, nullptr); WorldPackets::CombatLog::SpellDamageShield damageShield; @@ -1522,6 +1534,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss) damageShield.Defender = GetGUID(); damageShield.SpellID = spellInfo->Id; damageShield.TotalDamage = damage; + damageShield.OriginalDamage = damageInfo.GetOriginalDamage(); damageShield.OverKill = std::max(int32(damage) - int32(GetHealth()), 0); damageShield.SchoolMask = spellInfo->SchoolMask; damageShield.LogAbsorbed = damageInfo.GetAbsorb(); @@ -1881,6 +1894,7 @@ void Unit::CalcAbsorbResist(DamageInfo& damageInfo) CleanDamage cleanDamage = CleanDamage(splitDamage, 0, BASE_ATTACK, MELEE_HIT_NORMAL); DealDamage(caster, splitDamage, &cleanDamage, DIRECT_DAMAGE, damageInfo.GetSchoolMask(), (*itr)->GetSpellInfo(), false); log.damage = splitDamage; + log.originalDamage = splitDamage; log.absorb = split_absorb; SendSpellNonMeleeDamageLog(&log); @@ -2016,6 +2030,7 @@ void Unit::FakeAttackerStateUpdate(Unit* victim, WeaponAttackType attType /*= BA damageInfo.damageSchoolMask = GetMeleeDamageSchoolMask(); damageInfo.attackType = attType; damageInfo.damage = 0; + damageInfo.originalDamage = 0; damageInfo.cleanDamage = 0; damageInfo.absorb = 0; damageInfo.resist = 0; @@ -4985,6 +5000,7 @@ void Unit::SendSpellNonMeleeDamageLog(SpellNonMeleeDamage const* log) packet.CastID = log->castId; packet.SpellID = log->SpellID; packet.Damage = log->damage; + packet.OriginalDamage = log->originalDamage; if (log->damage > log->preHitHealth) packet.Overkill = log->damage - log->preHitHealth; else @@ -4997,9 +5013,9 @@ void Unit::SendSpellNonMeleeDamageLog(SpellNonMeleeDamage const* log) packet.Periodic = log->periodicLog; packet.Flags = log->HitInfo; - WorldPackets::Spells::SandboxScalingData sandboxScalingData; - if (sandboxScalingData.GenerateDataForUnits(log->attacker, log->target)) - packet.SandboxScaling = sandboxScalingData; + WorldPackets::Spells::ContentTuningParams contentTuningParams; + if (contentTuningParams.GenerateDataForUnits(log->attacker, log->target)) + packet.ContentTuning = contentTuningParams; SendCombatLogMessage(&packet); } @@ -5025,10 +5041,10 @@ void Unit::SendPeriodicAuraLog(SpellPeriodicAuraLogInfo* info) data.SpellID = aura->GetId(); data.LogData.Initialize(this); - /// @todo: should send more logs in one packet when multistrike WorldPackets::CombatLog::SpellPeriodicAuraLog::SpellLogEffect spellLogEffect; spellLogEffect.Effect = aura->GetAuraType(); spellLogEffect.Amount = info->damage; + spellLogEffect.OriginalDamage = info->originalDamage; spellLogEffect.OverHealOrKill = info->overDamage; spellLogEffect.SchoolMaskOrPower = aura->GetSpellInfo()->GetSchoolMask(); spellLogEffect.AbsorbedOrAmplitude = info->absorb; @@ -5036,10 +5052,10 @@ void Unit::SendPeriodicAuraLog(SpellPeriodicAuraLogInfo* info) spellLogEffect.Crit = info->critical; /// @todo: implement debug info - WorldPackets::Spells::SandboxScalingData sandboxScalingData; + WorldPackets::Spells::ContentTuningParams contentTuningParams; if (Unit* caster = ObjectAccessor::GetUnit(*this, aura->GetCasterGUID())) - if (sandboxScalingData.GenerateDataForUnits(caster, this)) - spellLogEffect.SandboxScaling = sandboxScalingData; + if (contentTuningParams.GenerateDataForUnits(caster, this)) + spellLogEffect.ContentTuning = contentTuningParams; data.Effects.push_back(spellLogEffect); @@ -5081,6 +5097,7 @@ void Unit::SendAttackStateUpdate(CalcDamageInfo* damageInfo) packet.AttackerGUID = damageInfo->attacker->GetGUID(); packet.VictimGUID = damageInfo->target->GetGUID(); packet.Damage = damageInfo->damage; + packet.OriginalDamage = damageInfo->originalDamage; int32 overkill = damageInfo->damage - damageInfo->target->GetHealth(); packet.OverDamage = (overkill < 0 ? -1 : overkill); @@ -5096,9 +5113,9 @@ void Unit::SendAttackStateUpdate(CalcDamageInfo* damageInfo) packet.LogData.Initialize(damageInfo->attacker); - WorldPackets::Spells::SandboxScalingData sandboxScalingData; - if (sandboxScalingData.GenerateDataForUnits(damageInfo->attacker, damageInfo->target)) - packet.SandboxScaling = sandboxScalingData; + WorldPackets::Spells::ContentTuningParams contentTuningParams; + if (contentTuningParams.GenerateDataForUnits(damageInfo->attacker, damageInfo->target)) + packet.ContentTuning = contentTuningParams; SendCombatLogMessage(&packet); } @@ -5110,6 +5127,7 @@ void Unit::SendAttackStateUpdate(uint32 HitInfo, Unit* target, uint8 /*SwingType dmgInfo.attacker = this; dmgInfo.target = target; dmgInfo.damage = Damage - AbsorbDamage - Resist - BlockedAmount; + dmgInfo.originalDamage = Damage; dmgInfo.damageSchoolMask = damageSchoolMask; dmgInfo.absorb = AbsorbDamage; dmgInfo.resist = Resist; @@ -6334,32 +6352,12 @@ void Unit::SendHealSpellLog(HealInfo& healInfo, bool critical /*= false*/) spellHealLog.TargetGUID = healInfo.GetTarget()->GetGUID(); spellHealLog.CasterGUID = healInfo.GetHealer()->GetGUID(); - spellHealLog.SpellID = healInfo.GetSpellInfo()->Id; spellHealLog.Health = healInfo.GetHeal(); + spellHealLog.OriginalHeal = healInfo.GetOriginalHeal(); spellHealLog.OverHeal = int32(healInfo.GetHeal()) - healInfo.GetEffectiveHeal(); spellHealLog.Absorbed = healInfo.GetAbsorb(); - spellHealLog.Crit = critical; - - /// @todo: 6.x Has to be implemented - /* - packet.ReadBit("Multistrike"); - - var hasCritRollMade = packet.ReadBit("HasCritRollMade"); - var hasCritRollNeeded = packet.ReadBit("HasCritRollNeeded"); - var hasLogData = packet.ReadBit("HasLogData"); - - if (hasCritRollMade) - packet.ReadSingle("CritRollMade"); - - if (hasCritRollNeeded) - packet.ReadSingle("CritRollNeeded"); - - if (hasLogData) - SpellParsers.ReadSpellCastLogData(packet); - */ - spellHealLog.LogData.Initialize(healInfo.GetTarget()); SendCombatLogMessage(&spellHealLog); } @@ -11665,7 +11663,7 @@ bool Unit::CreateVehicleKit(uint32 id, uint32 creatureEntry, bool loading /*= fa return false; m_vehicleKit = new Vehicle(this, vehInfo, creatureEntry); - m_updateFlag |= UPDATEFLAG_VEHICLE; + m_updateFlag.Vehicle = true; m_unitTypeMask |= UNIT_MASK_VEHICLE; if (!loading) @@ -11687,7 +11685,7 @@ void Unit::RemoveVehicleKit(bool onRemoveFromWorld /*= false*/) m_vehicleKit = NULL; - m_updateFlag &= ~UPDATEFLAG_VEHICLE; + m_updateFlag.Vehicle = false; m_unitTypeMask &= ~UNIT_MASK_VEHICLE; RemoveFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK | UNIT_NPC_FLAG_PLAYER_VEHICLE); } diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 94d2fa06c75..77e23462cd8 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -576,6 +576,7 @@ class TC_GAME_API DamageInfo Unit* const m_attacker; Unit* const m_victim; uint32 m_damage; + uint32 const m_originalDamage; SpellInfo const* const m_spellInfo; SpellSchoolMask const m_schoolMask; DamageEffectType const m_damageType; @@ -601,6 +602,7 @@ class TC_GAME_API DamageInfo DamageEffectType GetDamageType() const { return m_damageType; } WeaponAttackType GetAttackType() const { return m_attackType; } uint32 GetDamage() const { return m_damage; } + uint32 GetOriginalDamage() const { return m_originalDamage; } uint32 GetAbsorb() const { return m_absorb; } uint32 GetResist() const { return m_resist; } uint32 GetBlock() const { return m_block; } @@ -614,6 +616,7 @@ class TC_GAME_API HealInfo Unit* const _healer; Unit* const _target; uint32 _heal; + uint32 const _originalHeal; uint32 _effectiveHeal; uint32 _absorb; SpellInfo const* const _spellInfo; @@ -629,6 +632,7 @@ class TC_GAME_API HealInfo Unit* GetHealer() const { return _healer; } Unit* GetTarget() const { return _target; } uint32 GetHeal() const { return _heal; } + uint32 GetOriginalHeal() const { return _originalHeal; } uint32 GetEffectiveHeal() const { return _effectiveHeal; } uint32 GetAbsorb() const { return _absorb; } SpellInfo const* GetSpellInfo() const { return _spellInfo; }; @@ -682,6 +686,7 @@ struct CalcDamageInfo Unit *target; // Target for damage uint32 damageSchoolMask; uint32 damage; + uint32 originalDamage; uint32 absorb; uint32 resist; uint32 blocked_amount; @@ -706,6 +711,7 @@ struct TC_GAME_API SpellNonMeleeDamage uint32 SpellID; uint32 SpellXSpellVisualID; uint32 damage; + uint32 originalDamage; uint32 schoolMask; uint32 absorb; uint32 resist; @@ -720,11 +726,12 @@ struct TC_GAME_API SpellNonMeleeDamage struct SpellPeriodicAuraLogInfo { - SpellPeriodicAuraLogInfo(AuraEffect const* _auraEff, uint32 _damage, uint32 _overDamage, uint32 _absorb, uint32 _resist, float _multiplier, bool _critical) - : auraEff(_auraEff), damage(_damage), overDamage(_overDamage), absorb(_absorb), resist(_resist), multiplier(_multiplier), critical(_critical){ } + SpellPeriodicAuraLogInfo(AuraEffect const* _auraEff, uint32 _damage, uint32 _originalDamage, uint32 _overDamage, uint32 _absorb, uint32 _resist, float _multiplier, bool _critical) + : auraEff(_auraEff), damage(_damage), originalDamage(_originalDamage), overDamage(_overDamage), absorb(_absorb), resist(_resist), multiplier(_multiplier), critical(_critical){ } AuraEffect const* auraEff; uint32 damage; + uint32 originalDamage; uint32 overDamage; // overkill/overheal uint32 absorb; uint32 resist; diff --git a/src/server/game/Globals/AreaTriggerDataStore.cpp b/src/server/game/Globals/AreaTriggerDataStore.cpp index 903525c90f5..ecbaac165a6 100644 --- a/src/server/game/Globals/AreaTriggerDataStore.cpp +++ b/src/server/game/Globals/AreaTriggerDataStore.cpp @@ -147,8 +147,8 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() while (templates->NextRow()); } - // 0 1 2 3 4 5 6 7 8 - if (QueryResult areatriggerSpellMiscs = WorldDatabase.Query("SELECT SpellMiscId, AreaTriggerId, MoveCurveId, ScaleCurveId, MorphCurveId, FacingCurveId, DecalPropertiesId, TimeToTarget, TimeToTargetScale FROM `spell_areatrigger`")) + // 0 1 2 3 4 5 6 7 8 9 10 + if (QueryResult areatriggerSpellMiscs = WorldDatabase.Query("SELECT SpellMiscId, AreaTriggerId, MoveCurveId, ScaleCurveId, MorphCurveId, FacingCurveId, AnimId, AnimKitId, DecalPropertiesId, TimeToTarget, TimeToTargetScale FROM `spell_areatrigger`")) { do { @@ -182,10 +182,13 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() #undef VALIDATE_AND_SET_CURVE - miscTemplate.DecalPropertiesId = areatriggerSpellMiscFields[6].GetUInt32(); + miscTemplate.AnimId = areatriggerSpellMiscFields[6].GetInt32(); + miscTemplate.AnimKitId = areatriggerSpellMiscFields[7].GetInt32(); - miscTemplate.TimeToTarget = areatriggerSpellMiscFields[7].GetUInt32(); - miscTemplate.TimeToTargetScale = areatriggerSpellMiscFields[8].GetUInt32(); + miscTemplate.DecalPropertiesId = areatriggerSpellMiscFields[8].GetUInt32(); + + miscTemplate.TimeToTarget = areatriggerSpellMiscFields[9].GetUInt32(); + miscTemplate.TimeToTargetScale = areatriggerSpellMiscFields[10].GetUInt32(); miscTemplate.SplinePoints = std::move(splinesBySpellMisc[miscTemplate.MiscId]); diff --git a/src/server/game/Globals/ConversationDataStore.cpp b/src/server/game/Globals/ConversationDataStore.cpp index af2a416e000..9d57f6d0a17 100644 --- a/src/server/game/Globals/ConversationDataStore.cpp +++ b/src/server/game/Globals/ConversationDataStore.cpp @@ -150,7 +150,7 @@ void ConversationDataStore::LoadConversationTemplates() TC_LOG_INFO("server.loading", ">> Loaded 0 Conversation actors. DB table `conversation_actors` is empty."); } - if (QueryResult templates = WorldDatabase.Query("SELECT Id, FirstLineId, LastLineEndTime, ScriptName FROM conversation_template")) + if (QueryResult templates = WorldDatabase.Query("SELECT Id, FirstLineId, LastLineEndTime, TextureKitId, ScriptName FROM conversation_template")) { uint32 oldMSTime = getMSTime(); @@ -162,7 +162,8 @@ void ConversationDataStore::LoadConversationTemplates() conversationTemplate.Id = fields[0].GetUInt32(); conversationTemplate.FirstLineId = fields[1].GetUInt32(); conversationTemplate.LastLineEndTime = fields[2].GetUInt32(); - conversationTemplate.ScriptId = sObjectMgr->GetScriptId(fields[3].GetString()); + conversationTemplate.TextureKitId = fields[3].GetUInt32(); + conversationTemplate.ScriptId = sObjectMgr->GetScriptId(fields[4].GetString()); conversationTemplate.Actors = std::move(actorsByConversation[conversationTemplate.Id]); conversationTemplate.ActorGuids = std::move(actorGuidsByConversation[conversationTemplate.Id]); @@ -184,7 +185,7 @@ void ConversationDataStore::LoadConversationTemplates() currentConversationLine = sConversationLineStore.AssertEntry(currentConversationLine->NextConversationLineID); } - _conversationTemplateStore[conversationTemplate.Id] = conversationTemplate; + _conversationTemplateStore[conversationTemplate.Id] = std::move(conversationTemplate); } while (templates->NextRow()); diff --git a/src/server/game/Globals/ConversationDataStore.h b/src/server/game/Globals/ConversationDataStore.h index e6e750455d5..d4d53a2cd7d 100644 --- a/src/server/game/Globals/ConversationDataStore.h +++ b/src/server/game/Globals/ConversationDataStore.h @@ -28,7 +28,6 @@ enum ConversationLineFlags CONVERSATION_LINE_FLAG_NOTIFY_STARTED = 0x1 // Client will send CMSG_CONVERSATION_LINE_STARTED when it runs this line }; -#pragma pack(push, 1) struct ConversationActorTemplate { uint32 Id; @@ -36,6 +35,7 @@ struct ConversationActorTemplate uint32 CreatureModelId; }; +#pragma pack(push, 1) struct ConversationLineTemplate { uint32 Id; // Link to ConversationLine.db2 @@ -52,6 +52,7 @@ struct ConversationTemplate uint32 Id; uint32 FirstLineId; // Link to ConversationLine.db2 uint32 LastLineEndTime; // Time in ms after conversation creation the last line fades out + uint32 TextureKitId; // Background texture std::vector Actors; std::vector ActorGuids; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 6f562ba412e..af49f29b3c1 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -171,30 +171,37 @@ ExtendedPlayerName ExtractExtendedPlayerName(std::string const& name) LanguageDesc lang_description[LANGUAGES_COUNT] = { - { LANG_ADDON, 0, 0 }, - { LANG_UNIVERSAL, 0, 0 }, - { LANG_ORCISH, 669, SKILL_LANG_ORCISH }, - { LANG_DARNASSIAN, 671, SKILL_LANG_DARNASSIAN }, - { LANG_TAURAHE, 670, SKILL_LANG_TAURAHE }, - { LANG_DWARVISH, 672, SKILL_LANG_DWARVEN }, - { LANG_COMMON, 668, SKILL_LANG_COMMON }, - { LANG_DEMONIC, 815, SKILL_LANG_DEMON_TONGUE }, - { LANG_TITAN, 816, SKILL_LANG_TITAN }, - { LANG_THALASSIAN, 813, SKILL_LANG_THALASSIAN }, - { LANG_DRACONIC, 814, SKILL_LANG_DRACONIC }, - { LANG_KALIMAG, 817, SKILL_LANG_OLD_TONGUE }, - { LANG_GNOMISH, 7340, SKILL_LANG_GNOMISH }, - { LANG_TROLL, 7341, SKILL_LANG_TROLL }, - { LANG_GUTTERSPEAK, 17737, SKILL_LANG_FORSAKEN }, - { LANG_DRAENEI, 29932, SKILL_LANG_DRAENEI }, - { LANG_ZOMBIE, 0, 0 }, - { LANG_GNOMISH_BINARY, 0, 0 }, - { LANG_GOBLIN_BINARY, 0, 0 }, - { LANG_WORGEN, 69270, SKILL_LANG_GILNEAN }, - { LANG_GOBLIN, 69269, SKILL_LANG_GOBLIN }, - { LANG_PANDAREN_NEUTRAL, 108127, SKILL_LANG_PANDAREN_NEUTRAL }, - { LANG_PANDAREN_ALLIANCE, 108130, SKILL_LANG_PANDAREN_ALLIANCE }, - { LANG_PANDAREN_HORDE, 108131, SKILL_LANG_PANDAREN_HORDE } + { LANG_ADDON, 0, 0 }, + { LANG_ADDON_LOGGED, 0, 0 }, + { LANG_UNIVERSAL, 0, 0 }, + { LANG_ORCISH, 669, SKILL_LANGUAGE_ORCISH }, + { LANG_DARNASSIAN, 671, SKILL_LANGUAGE_DARNASSIAN }, + { LANG_TAURAHE, 670, SKILL_LANGUAGE_TAURAHE }, + { LANG_DWARVISH, 672, SKILL_LANGUAGE_DWARVEN }, + { LANG_COMMON, 668, SKILL_LANGUAGE_COMMON }, + { LANG_DEMONIC, 815, SKILL_LANGUAGE_DEMON_TONGUE }, + { LANG_TITAN, 816, SKILL_LANGUAGE_TITAN }, + { LANG_THALASSIAN, 813, SKILL_LANGUAGE_THALASSIAN }, + { LANG_DRACONIC, 814, SKILL_LANGUAGE_DRACONIC }, + { LANG_KALIMAG, 265462, SKILL_LANGUAGE_OLD_TONGUE }, + { LANG_GNOMISH, 7340, SKILL_LANGUAGE_GNOMISH }, + { LANG_TROLL, 7341, SKILL_LANGUAGE_TROLL }, + { LANG_GUTTERSPEAK, 17737, SKILL_LANGUAGE_FORSAKEN }, + { LANG_DRAENEI, 29932, SKILL_LANGUAGE_DRAENEI }, + { LANG_ZOMBIE, 265467, 0 }, + { LANG_GNOMISH_BINARY, 265460, 0 }, + { LANG_GOBLIN_BINARY, 265461, 0 }, + { LANG_WORGEN, 69270, SKILL_LANGUAGE_GILNEAN }, + { LANG_GOBLIN, 69269, SKILL_LANGUAGE_GOBLIN }, + { LANG_PANDAREN_NEUTRAL, 108127, SKILL_LANGUAGE_PANDAREN_NEUTRAL }, + { LANG_PANDAREN_ALLIANCE, 108130, 0 }, + { LANG_PANDAREN_HORDE, 108131, 0 }, + { LANG_SPRITE, 265466, 0 }, + { LANG_SHATH_YAR, 265465, 0 }, + { LANG_NERGLISH, 265464, 0 }, + { LANG_MOONKIN, 265463, 0 }, + { LANG_SHALASSIAN, 262439, SKILL_LANGUAGE_SHALASSIAN }, + { LANG_THALASSIAN_2, 262454, SKILL_LANGUAGE_THALASSIAN_2 } }; LanguageDesc const* GetLanguageDescByID(uint32 lang) @@ -3924,35 +3931,35 @@ void ObjectMgr::LoadQuests() mExclusiveQuestGroups.clear(); QueryResult result = WorldDatabase.Query("SELECT " - //0 1 2 3 4 5 6 7 8 9 10 11 - "ID, QuestType, QuestLevel, MaxScalingLevel, QuestPackageID, MinLevel, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, " - //12 13 14 15 16 17 18 19 20 21 22 + //0 1 2 3 4 5 6 7 8 9 10 11 12 + "ID, QuestType, QuestLevel, ScalingFactionGroup, MaxScalingLevel, QuestPackageID, MinLevel, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, " + //13 14 15 16 17 18 19 20 21 22 23 "RewardMoney, RewardMoneyDifficulty, RewardMoneyMultiplier, RewardBonusMoney, RewardDisplaySpell1, RewardDisplaySpell2, RewardDisplaySpell3, RewardSpell, RewardHonor, RewardKillHonor, StartItem, " - //23 24 25 26 27 - "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, " - //28 29 30 31 32 33 34 35 + //24 25 26 27 28 29 + "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, FlagsEx2, " + //30 31 32 33 34 35 36 37 "RewardItem1, RewardAmount1, ItemDrop1, ItemDropQuantity1, RewardItem2, RewardAmount2, ItemDrop2, ItemDropQuantity2, " - //36 37 38 39 40 41 42 43 + //38 39 40 41 42 43 44 45 "RewardItem3, RewardAmount3, ItemDrop3, ItemDropQuantity3, RewardItem4, RewardAmount4, ItemDrop4, ItemDropQuantity4, " - //44 45 46 47 48 49 + //46 47 48 49 50 51 "RewardChoiceItemID1, RewardChoiceItemQuantity1, RewardChoiceItemDisplayID1, RewardChoiceItemID2, RewardChoiceItemQuantity2, RewardChoiceItemDisplayID2, " - //50 51 52 53 54 55 + //52 53 54 55 56 57 "RewardChoiceItemID3, RewardChoiceItemQuantity3, RewardChoiceItemDisplayID3, RewardChoiceItemID4, RewardChoiceItemQuantity4, RewardChoiceItemDisplayID4, " - //56 57 58 59 60 61 + //58 59 60 61 62 63 "RewardChoiceItemID5, RewardChoiceItemQuantity5, RewardChoiceItemDisplayID5, RewardChoiceItemID6, RewardChoiceItemQuantity6, RewardChoiceItemDisplayID6, " - //62 63 64 65 66 67 68 69 70 71 - "POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, PortraitGiver, PortraitTurnIn, " - //72 73 74 75 76 77 78 79 + //64 65 66 67 68 69 70 71 72 73 74 + "POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, PortraitGiver, PortraitGiverMount, PortraitTurnIn, " + //75 76 77 78 79 80 81 82 "RewardFactionID1, RewardFactionValue1, RewardFactionOverride1, RewardFactionCapIn1, RewardFactionID2, RewardFactionValue2, RewardFactionOverride2, RewardFactionCapIn2, " - //80 81 82 83 84 85 86 87 + //83 84 85 86 87 88 89 90 "RewardFactionID3, RewardFactionValue3, RewardFactionOverride3, RewardFactionCapIn3, RewardFactionID4, RewardFactionValue4, RewardFactionOverride4, RewardFactionCapIn4, " - //88 89 90 91 92 + //91 92 93 94 95 "RewardFactionID5, RewardFactionValue5, RewardFactionOverride5, RewardFactionCapIn5, RewardFactionFlags, " - //93 94 95 96 97 98 99 100 + //96 97 98 99 100 101 102 103 "RewardCurrencyID1, RewardCurrencyQty1, RewardCurrencyID2, RewardCurrencyQty2, RewardCurrencyID3, RewardCurrencyQty3, RewardCurrencyID4, RewardCurrencyQty4, " - //101 102 103 104 105 106 107 - "AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, QuestRewardID, Expansion, " - //108 109 110 111 112 113 114 115 116 + //104 105 106 107 108 109 110 + "AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, TreasurePickerID, Expansion, " + //111 112 113 114 115 116 117 118 119 "LogTitle, LogDescription, QuestDescription, AreaDescription, PortraitGiverText, PortraitGiverName, PortraitTurnInText, PortraitTurnInName, QuestCompletionLog" " FROM quest_template"); if (!result) @@ -7027,8 +7034,8 @@ void ObjectMgr::LoadGameObjectTemplate() "Data0, Data1, Data2, Data3, Data4, Data5, Data6, Data7, Data8, Data9, Data10, Data11, Data12, " // 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 "Data13, Data14, Data15, Data16, Data17, Data18, Data19, Data20, Data21, Data22, Data23, Data24, Data25, Data26, Data27, Data28, " - // 37 38 39 40 41 42 43 - "Data29, Data30, Data31, Data32, RequiredLevel, AIName, ScriptName " + // 37 38 39 40 41 42 43 44 + "Data29, Data30, Data31, Data32, Data33, RequiredLevel, AIName, ScriptName " "FROM gameobject_template"); if (!result) @@ -7058,9 +7065,9 @@ void ObjectMgr::LoadGameObjectTemplate() for (uint8 i = 0; i < MAX_GAMEOBJECT_DATA; ++i) got.raw.data[i] = fields[8 + i].GetUInt32(); - got.RequiredLevel = fields[41].GetInt32(); - got.AIName = fields[42].GetString(); - got.ScriptId = GetScriptId(fields[43].GetString()); + got.RequiredLevel = fields[42].GetInt32(); + got.AIName = fields[43].GetString(); + got.ScriptId = GetScriptId(fields[44].GetString()); // Checks @@ -7696,8 +7703,8 @@ void ObjectMgr::LoadQuestPOI() uint32 count = 0; - // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 - QueryResult result = WorldDatabase.Query("SELECT QuestID, BlobIndex, Idx1, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, WoDUnk1, AlwaysAllowMergingBlobs FROM quest_poi order by QuestID, Idx1"); + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + QueryResult result = WorldDatabase.Query("SELECT QuestID, BlobIndex, Idx1, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, UiMapID, Priority, Flags, WorldEffectID, PlayerConditionID, SpawnTrackingID, AlwaysAllowMergingBlobs FROM quest_poi order by QuestID, Idx1"); if (!result) { TC_LOG_ERROR("server.loading", ">> Loaded 0 quest POI definitions. DB table `quest_poi` is empty."); @@ -7737,33 +7744,32 @@ void ObjectMgr::LoadQuestPOI() { Field* fields = result->Fetch(); - int32 QuestID = fields[0].GetInt32(); - int32 BlobIndex = fields[1].GetInt32(); - int32 Idx1 = fields[2].GetInt32(); - int32 ObjectiveIndex = fields[3].GetInt32(); - int32 QuestObjectiveID = fields[4].GetInt32(); - int32 QuestObjectID = fields[5].GetInt32(); - int32 MapID = fields[6].GetInt32(); - int32 WorldMapAreaId = fields[7].GetInt32(); - int32 Floor = fields[8].GetInt32(); - int32 Priority = fields[9].GetInt32(); - int32 Flags = fields[10].GetInt32(); - int32 WorldEffectID = fields[11].GetInt32(); - int32 PlayerConditionID = fields[12].GetInt32(); - int32 WoDUnk1 = fields[13].GetInt32(); - bool AlwaysAllowMergingBlobs = fields[14].GetBool(); - - if (!sObjectMgr->GetQuestTemplate(QuestID)) - TC_LOG_ERROR("sql.sql", "`quest_poi` quest id (%u) Idx1 (%u) does not exist in `quest_template`", QuestID, Idx1); - - QuestPOI POI(BlobIndex, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, WoDUnk1, AlwaysAllowMergingBlobs); - if (QuestID < int32(POIs.size()) && Idx1 < int32(POIs[QuestID].size())) - { - POI.points = POIs[QuestID][Idx1]; - _questPOIStore[QuestID].push_back(POI); + int32 questID = fields[0].GetInt32(); + int32 blobIndex = fields[1].GetInt32(); + int32 idx1 = fields[2].GetInt32(); + int32 objectiveIndex = fields[3].GetInt32(); + int32 questObjectiveID = fields[4].GetInt32(); + int32 questObjectID = fields[5].GetInt32(); + int32 mapID = fields[6].GetInt32(); + int32 uiMapID = fields[7].GetInt32(); + int32 priority = fields[8].GetInt32(); + int32 flags = fields[9].GetInt32(); + int32 worldEffectID = fields[10].GetInt32(); + int32 playerConditionID = fields[11].GetInt32(); + int32 spawnTrackingID = fields[12].GetInt32(); + bool alwaysAllowMergingBlobs = fields[13].GetBool(); + + if (!sObjectMgr->GetQuestTemplate(questID)) + TC_LOG_ERROR("sql.sql", "`quest_poi` quest id (%u) Idx1 (%u) does not exist in `quest_template`", questID, idx1); + + QuestPOI POI(blobIndex, objectiveIndex, questObjectiveID, questObjectID, mapID, uiMapID, priority, flags, worldEffectID, playerConditionID, spawnTrackingID, alwaysAllowMergingBlobs); + if (questID < int32(POIs.size()) && idx1 < int32(POIs[questID].size())) + { + POI.points = POIs[questID][idx1]; + _questPOIStore[questID].push_back(POI); } else - TC_LOG_ERROR("sql.sql", "Table quest_poi references unknown quest points for quest %i POI id %i", QuestID, BlobIndex); + TC_LOG_ERROR("sql.sql", "Table quest_poi references unknown quest points for quest %i POI id %i", questID, blobIndex); ++count; } while (result->NextRow()); @@ -10099,7 +10105,7 @@ void ObjectMgr::LoadPlayerChoices() uint32 oldMSTime = getMSTime(); _playerChoices.clear(); - QueryResult choices = WorldDatabase.Query("SELECT ChoiceId, UiTextureKitId, Question, HideWarboardHeader FROM playerchoice"); + QueryResult choices = WorldDatabase.Query("SELECT ChoiceId, UiTextureKitId, Question, HideWarboardHeader, KeepOpenAfterChoice FROM playerchoice"); if (!choices) { @@ -10124,10 +10130,11 @@ void ObjectMgr::LoadPlayerChoices() choice.UiTextureKitId = fields[1].GetInt32(); choice.Question = fields[2].GetString(); choice.HideWarboardHeader = fields[3].GetBool(); + choice.KeepOpenAfterChoice = fields[4].GetBool(); } while (choices->NextRow()); - if (QueryResult responses = WorldDatabase.Query("SELECT ChoiceId, ResponseId, ChoiceArtFileId, Header, Answer, Description, Confirmation FROM playerchoice_response ORDER BY `Index` ASC")) + if (QueryResult responses = WorldDatabase.Query("SELECT ChoiceId, ResponseId, ChoiceArtFileId, Flags, WidgetSetID, GroupID, Header, Answer, Description, Confirmation FROM playerchoice_response ORDER BY `Index` ASC")) { do { @@ -10148,10 +10155,13 @@ void ObjectMgr::LoadPlayerChoices() PlayerChoiceResponse& response = choice->Responses.back(); response.ResponseId = responseId; response.ChoiceArtFileId = fields[2].GetInt32(); - response.Header = fields[3].GetString(); - response.Answer = fields[4].GetString(); - response.Description = fields[5].GetString(); - response.Confirmation = fields[6].GetString(); + response.Flags = fields[3].GetInt32(); + response.WidgetSetID = fields[4].GetUInt32(); + response.GroupID = fields[5].GetUInt8(); + response.Header = fields[6].GetString(); + response.Answer = fields[7].GetString(); + response.Description = fields[8].GetString(); + response.Confirmation = fields[9].GetString(); ++responseCount; } while (responses->NextRow()); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 4be76f3cf8c..01ce6ee385d 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -710,20 +710,19 @@ struct QuestPOI int32 QuestObjectiveID; int32 QuestObjectID; int32 MapID; - int32 WorldMapAreaID; - int32 Floor; + int32 UiMapID; int32 Priority; int32 Flags; int32 WorldEffectID; int32 PlayerConditionID; - int32 UnkWoD1; + int32 SpawnTrackingID; std::vector points; bool AlwaysAllowMergingBlobs; - QuestPOI() : BlobIndex(0), ObjectiveIndex(0), QuestObjectiveID(0), QuestObjectID(0), MapID(0), WorldMapAreaID(0), Floor(0), Priority(0), Flags(0), WorldEffectID(0), PlayerConditionID(0), UnkWoD1(0), AlwaysAllowMergingBlobs(false){ } - QuestPOI(int32 _BlobIndex, int32 _ObjectiveIndex, int32 _QuestObjectiveID, int32 _QuestObjectID, int32 _MapID, int32 _WorldMapAreaID, int32 _Foor, int32 _Priority, int32 _Flags, int32 _WorldEffectID, int32 _PlayerConditionID, int32 _UnkWoD1, bool _AlwaysAllowMergingBlobs) : - BlobIndex(_BlobIndex), ObjectiveIndex(_ObjectiveIndex), QuestObjectiveID(_QuestObjectiveID), QuestObjectID(_QuestObjectID), MapID(_MapID), WorldMapAreaID(_WorldMapAreaID), - Floor(_Foor), Priority(_Priority), Flags(_Flags), WorldEffectID(_WorldEffectID), PlayerConditionID(_PlayerConditionID), UnkWoD1(_UnkWoD1), AlwaysAllowMergingBlobs(_AlwaysAllowMergingBlobs) { } + QuestPOI() : BlobIndex(0), ObjectiveIndex(0), QuestObjectiveID(0), QuestObjectID(0), MapID(0), UiMapID(0), Priority(0), Flags(0), WorldEffectID(0), PlayerConditionID(0), SpawnTrackingID(0), AlwaysAllowMergingBlobs(false){ } + QuestPOI(int32 blobIndex, int32 objectiveIndex, int32 questObjectiveID, int32 questObjectID, int32 mapID, int32 uiMapID, int32 priority, int32 flags, int32 worldEffectID, int32 playerConditionID, int32 spawnTrackingID, bool alwaysAllowMergingBlobs) : + BlobIndex(blobIndex), ObjectiveIndex(objectiveIndex), QuestObjectiveID(questObjectiveID), QuestObjectID(questObjectID), MapID(mapID), UiMapID(uiMapID), + Priority(priority), Flags(flags), WorldEffectID(worldEffectID), PlayerConditionID(playerConditionID), SpawnTrackingID(spawnTrackingID), AlwaysAllowMergingBlobs(alwaysAllowMergingBlobs) { } }; typedef std::vector QuestPOIVector; @@ -794,6 +793,9 @@ struct PlayerChoiceResponse { int32 ResponseId; int32 ChoiceArtFileId; + int32 Flags; + uint32 WidgetSetID; + uint8 GroupID; std::string Header; std::string Answer; std::string Description; @@ -808,6 +810,7 @@ struct PlayerChoice std::string Question; std::vector Responses; bool HideWarboardHeader; + bool KeepOpenAfterChoice; PlayerChoiceResponse const* GetResponse(int32 responseId) const { diff --git a/src/server/game/Handlers/AuthHandler.cpp b/src/server/game/Handlers/AuthHandler.cpp index 296bf506edc..251708cb48d 100644 --- a/src/server/game/Handlers/AuthHandler.cpp +++ b/src/server/game/Handlers/AuthHandler.cpp @@ -98,6 +98,9 @@ void WorldSession::SendFeatureSystemStatusGlueScreen() features.BpayStoreDisabledByParentalControls = false; features.CharUndeleteEnabled = sWorld->getBoolConfig(CONFIG_FEATURE_SYSTEM_CHARACTER_UNDELETE_ENABLED); features.BpayStoreEnabled = sWorld->getBoolConfig(CONFIG_FEATURE_SYSTEM_BPAY_STORE_ENABLED); + features.MaxCharactersPerRealm = sWorld->getIntConfig(CONFIG_CHARACTERS_PER_REALM); + features.MinimumExpansionLevel = EXPANSION_CLASSIC; + features.MaximumExpansionLevel = sWorld->getIntConfig(CONFIG_EXPANSION); SendPacket(features.Write()); } diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp index 887bc6b4742..43de963bda4 100644 --- a/src/server/game/Handlers/CalendarHandler.cpp +++ b/src/server/game/Handlers/CalendarHandler.cpp @@ -79,8 +79,7 @@ void WorldSession::HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGet WorldPackets::Calendar::CalendarSendCalendarEventInfo eventInfo; eventInfo.EventID = event->GetEventId(); eventInfo.Date = event->GetDate(); - Guild* guild = sGuildMgr->GetGuildById(event->GetGuildId()); - eventInfo.EventGuildID = guild ? guild->GetGUID() : ObjectGuid::Empty; + eventInfo.EventClubID = event->GetGuildId(); eventInfo.EventName = event->GetTitle(); eventInfo.EventType = event->GetType(); eventInfo.Flags = event->GetFlags(); diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index bc3fb563a57..c5b4e0487ff 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -349,6 +349,7 @@ void WorldSession::HandleCharEnum(PreparedQueryResult result) while (result->NextRow()); } + charEnum.IsTestDemonHunterCreationAllowed = canAlwaysCreateDemonHunter; charEnum.IsDemonHunterCreationAllowed = GetAccountExpansion() >= EXPANSION_LEGION || canAlwaysCreateDemonHunter; charEnum.IsAlliedRacesCreationAllowed = GetAccountExpansion() >= EXPANSION_BATTLE_FOR_AZEROTH; @@ -733,7 +734,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact LoginDatabase.CommitTransaction(trans); - SendCharCreate(CHAR_CREATE_SUCCESS); + SendCharCreate(CHAR_CREATE_SUCCESS, newChar.GetGUID()); TC_LOG_INFO("entities.player.character", "Account: %u (IP: %s) Create Character: %s %s", GetAccountId(), GetRemoteAddress().c_str(), createInfo->Name.c_str(), newChar.GetGUID().ToString().c_str()); sScriptMgr->OnPlayerCreate(&newChar); @@ -2476,10 +2477,11 @@ void WorldSession::HandleCharUndeleteOpcode(WorldPackets::Character::UndeleteCha })); } -void WorldSession::SendCharCreate(ResponseCodes result) +void WorldSession::SendCharCreate(ResponseCodes result, ObjectGuid const& guid /*= ObjectGuid::Empty*/) { WorldPackets::Character::CreateChar response; response.Code = result; + response.Guid = guid; SendPacket(response.Write()); } diff --git a/src/server/game/Handlers/DuelHandler.cpp b/src/server/game/Handlers/DuelHandler.cpp index 41892196367..c017617f507 100644 --- a/src/server/game/Handlers/DuelHandler.cpp +++ b/src/server/game/Handlers/DuelHandler.cpp @@ -49,7 +49,7 @@ void WorldSession::HandleCanDuel(WorldPackets::Duel::CanDuel& packet) void WorldSession::HandleDuelResponseOpcode(WorldPackets::Duel::DuelResponse& duelResponse) { - if (duelResponse.Accepted) + if (duelResponse.Accepted && !duelResponse.Forfeited) HandleDuelAccepted(); else HandleDuelCancelled(); diff --git a/src/server/game/Handlers/InspectHandler.cpp b/src/server/game/Handlers/InspectHandler.cpp index 598f00c519f..1121fd4647d 100644 --- a/src/server/game/Handlers/InspectHandler.cpp +++ b/src/server/game/Handlers/InspectHandler.cpp @@ -62,6 +62,10 @@ void WorldSession::HandleInspectOpcode(WorldPackets::Inspect::Inspect& inspect) if (v.second != PLAYERSPELL_REMOVED) inspectResult.Talents.push_back(v.first); } + + PlayerPvpTalentMap const& pvpTalents = player->GetPvpTalentMap(player->GetActiveTalentGroup()); + for (std::size_t i = 0; i < pvpTalents.size(); ++i) + inspectResult.PvpTalents[i] = pvpTalents[i]; } if (Guild* guild = sGuildMgr->GetGuildById(player->GetGuildId())) diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp index 273bf287821..0e0a9f4ac43 100644 --- a/src/server/game/Handlers/QueryHandler.cpp +++ b/src/server/game/Handlers/QueryHandler.cpp @@ -95,10 +95,22 @@ void WorldSession::HandleCreatureQuery(WorldPackets::Query::QueryCreature& packe for (uint32 i = 0; i < MAX_KILL_CREDIT; ++i) stats.ProxyCreatureID[i] = creatureInfo->KillCredit[i]; - stats.CreatureDisplayID[0] = creatureInfo->Modelid1; - stats.CreatureDisplayID[1] = creatureInfo->Modelid2; - stats.CreatureDisplayID[2] = creatureInfo->Modelid3; - stats.CreatureDisplayID[3] = creatureInfo->Modelid4; + // TEMPORARY, PR #22567 + auto addModel = [&](uint32 modelId) + { + if (modelId) + { + stats.Display.TotalProbability += 1.0f; + stats.Display.CreatureDisplay.emplace_back(); + WorldPackets::Query::CreatureXDisplay& display = stats.Display.CreatureDisplay.back(); + display.CreatureDisplayID = modelId; + } + }; + + addModel(creatureInfo->Modelid1); + addModel(creatureInfo->Modelid2); + addModel(creatureInfo->Modelid3); + addModel(creatureInfo->Modelid4); stats.HpMulti = creatureInfo->ModHealth; stats.EnergyMulti = creatureInfo->ModMana; @@ -107,14 +119,14 @@ void WorldSession::HandleCreatureQuery(WorldPackets::Query::QueryCreature& packe stats.RequiredExpansion = creatureInfo->RequiredExpansion; stats.HealthScalingExpansion = creatureInfo->HealthScalingExpansion; stats.VignetteID = creatureInfo->VignetteID; + stats.Class = creatureInfo->unit_class; stats.Title = creatureInfo->SubName; stats.TitleAlt = creatureInfo->TitleAlt; stats.CursorName = creatureInfo->IconName; if (std::vector const* items = sObjectMgr->GetCreatureQuestItemList(packet.CreatureID)) - for (uint32 item : *items) - stats.QuestItems.push_back(item); + stats.QuestItems.insert(stats.QuestItems.begin(), items->begin(), items->end()); LocaleConstant localeConstant = GetSessionDbLocaleIndex(); if (localeConstant != LOCALE_enUS) @@ -368,13 +380,12 @@ void WorldSession::HandleQuestPOIQuery(WorldPackets::Query::QuestPOIQuery& quest questPOIBlobData.QuestObjectiveID = data->QuestObjectiveID; questPOIBlobData.QuestObjectID = data->QuestObjectID; questPOIBlobData.MapID = data->MapID; - questPOIBlobData.WorldMapAreaID = data->WorldMapAreaID; - questPOIBlobData.Floor = data->Floor; + questPOIBlobData.UiMapID = data->UiMapID; questPOIBlobData.Priority = data->Priority; questPOIBlobData.Flags = data->Flags; questPOIBlobData.WorldEffectID = data->WorldEffectID; questPOIBlobData.PlayerConditionID = data->PlayerConditionID; - questPOIBlobData.UnkWoD1 = data->UnkWoD1; + questPOIBlobData.SpawnTrackingID = data->SpawnTrackingID; questPOIBlobData.AlwaysAllowMergingBlobs = data->AlwaysAllowMergingBlobs; for (QuestPOIPoint const& point : data->points) diff --git a/src/server/game/Handlers/SkillHandler.cpp b/src/server/game/Handlers/SkillHandler.cpp index d7af3a34737..1d95689d761 100644 --- a/src/server/game/Handlers/SkillHandler.cpp +++ b/src/server/game/Handlers/SkillHandler.cpp @@ -55,14 +55,14 @@ void WorldSession::HandleLearnPvpTalentsOpcode(WorldPackets::Talent::LearnPvpTal { WorldPackets::Talent::LearnPvpTalentsFailed learnPvpTalentsFailed; bool anythingLearned = false; - for (uint32 talentId : packet.Talents) + for (WorldPackets::Talent::PvPTalent pvpTalent : packet.Talents) { - if (TalentLearnResult result = _player->LearnPvpTalent(talentId, 0, &learnPvpTalentsFailed.SpellID)) + if (TalentLearnResult result = _player->LearnPvpTalent(pvpTalent.PvPTalentID, pvpTalent.Slot, &learnPvpTalentsFailed.SpellID)) { if (!learnPvpTalentsFailed.Reason) learnPvpTalentsFailed.Reason = result; - learnPvpTalentsFailed.Talents.push_back(talentId); + learnPvpTalentsFailed.Talents.push_back(pvpTalent); } else anythingLearned = true; diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index bb427b5903c..86e801d1b2a 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -994,6 +994,7 @@ enum CharacterFlags4 : uint32 { CHARACTER_FLAG_4_TRIAL_BOOST = 0x00000080, CHARACTER_FLAG_4_TRIAL_BOOST_LOCKED = 0x00040000, + CHARACTER_FLAG_4_EXPANSION_TRIAL = 0x00080000, }; #define PLAYER_CUSTOM_DISPLAY_SIZE 3 @@ -1048,11 +1049,17 @@ enum Language LANG_PANDAREN_NEUTRAL = 42, LANG_PANDAREN_ALLIANCE = 43, LANG_PANDAREN_HORDE = 44, - LANG_RIKKITUN = 168, - LANG_ADDON = 0xFFFFFFFF // used by addons, in 2.4.0 not exist, replaced by messagetype? + LANG_SPRITE = 168, + LANG_SHATH_YAR = 178, + LANG_NERGLISH = 179, + LANG_MOONKIN = 180, + LANG_SHALASSIAN = 181, + LANG_THALASSIAN_2 = 182, + LANG_ADDON = 183, + LANG_ADDON_LOGGED = 184 }; -#define LANGUAGES_COUNT 25 +#define LANGUAGES_COUNT 31 enum TeamId { @@ -2426,11 +2433,15 @@ enum GameobjectTypes : uint8 GAMEOBJECT_TYPE_UI_LINK = 48, GAMEOBJECT_TYPE_KEYSTONE_RECEPTACLE = 49, GAMEOBJECT_TYPE_GATHERING_NODE = 50, - GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD = 51 + GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD = 51, + GAMEOBJECT_TYPE_MULTI = 52, + GAMEOBJECT_TYPE_SIEGEABLE_MULTI = 53, + GAMEOBJECT_TYPE_SIEGEABLE_MO = 54, + GAMEOBJECT_TYPE_PVP_REWARD = 55, }; -#define MAX_GAMEOBJECT_TYPE 52 // sending to client this or greater value can crash client. -#define MAX_GAMEOBJECT_DATA 33 // Max number of uint32 vars in gameobject_template data field +#define MAX_GAMEOBJECT_TYPE 56 // sending to client this or greater value can crash client. +#define MAX_GAMEOBJECT_DATA 34 // Max number of uint32 vars in gameobject_template data field enum GameObjectFlags { @@ -4218,23 +4229,22 @@ enum SkillType SKILL_MACES = 54, SKILL_TWO_HANDED_SWORDS = 55, SKILL_DEFENSE = 95, - SKILL_LANG_COMMON = 98, + SKILL_LANGUAGE_COMMON = 98, SKILL_RACIAL_DWARF = 101, - SKILL_LANG_ORCISH = 109, - SKILL_LANG_DWARVEN = 111, - SKILL_LANG_DARNASSIAN = 113, - SKILL_LANG_TAURAHE = 115, + SKILL_LANGUAGE_ORCISH = 109, + SKILL_LANGUAGE_DWARVEN = 111, + SKILL_LANGUAGE_DARNASSIAN = 113, + SKILL_LANGUAGE_TAURAHE = 115, SKILL_DUAL_WIELD = 118, SKILL_RACIAL_TAUREN = 124, SKILL_RACIAL_ORC = 125, SKILL_RACIAL_NIGHT_ELF = 126, - SKILL_FIRST_AID = 129, SKILL_STAVES = 136, - SKILL_LANG_THALASSIAN = 137, - SKILL_LANG_DRACONIC = 138, - SKILL_LANG_DEMON_TONGUE = 139, - SKILL_LANG_TITAN = 140, - SKILL_LANG_OLD_TONGUE = 141, + SKILL_LANGUAGE_THALASSIAN = 137, + SKILL_LANGUAGE_DRACONIC = 138, + SKILL_LANGUAGE_DEMON_TONGUE = 139, + SKILL_LANGUAGE_TITAN = 140, + SKILL_LANGUAGE_OLD_TONGUE = 141, SKILL_SURVIVAL = 142, SKILL_HORSE_RIDING = 148, SKILL_WOLF_RIDING = 149, @@ -4279,8 +4289,8 @@ enum SkillType SKILL_PET_TURTLE = 251, SKILL_PET_GENERIC_HUNTER = 270, SKILL_PLATE_MAIL = 293, - SKILL_LANG_GNOMISH = 313, - SKILL_LANG_TROLL = 315, + SKILL_LANGUAGE_GNOMISH = 313, + SKILL_LANGUAGE_TROLL = 315, SKILL_ENCHANTING = 333, SKILL_FISHING = 356, SKILL_SKINNING = 393, @@ -4296,7 +4306,7 @@ enum SkillType SKILL_PET_HYENA = 654, SKILL_PET_BIRD_OF_PREY = 655, SKILL_PET_WIND_SERPENT = 656, - SKILL_LANG_FORSAKEN = 673, + SKILL_LANGUAGE_FORSAKEN = 673, SKILL_KODO_RIDING = 713, SKILL_RACIAL_TROLL = 733, SKILL_RACIAL_GNOME = 753, @@ -4304,7 +4314,7 @@ enum SkillType SKILL_JEWELCRAFTING = 755, SKILL_RACIAL_BLOOD_ELF = 756, SKILL_PET_EVENT_REMOTE_CONTROL = 758, - SKILL_LANG_DRAENEI = 759, + SKILL_LANGUAGE_DRAENEI = 759, SKILL_RACIAL_DRAENEI = 760, SKILL_PET_FELGUARD = 761, SKILL_RIDING = 762, @@ -4330,8 +4340,8 @@ enum SkillType SKILL_PET_EXOTIC_SPIRIT_BEAST = 788, SKILL_RACIAL_WORGEN = 789, SKILL_RACIAL_GOBLIN = 790, - SKILL_LANG_GILNEAN = 791, - SKILL_LANG_GOBLIN = 792, + SKILL_LANGUAGE_GILNEAN = 791, + SKILL_LANGUAGE_GOBLIN = 792, SKILL_ARCHAEOLOGY = 794, SKILL_HUNTER = 795, SKILL_DEATH_KNIGHT = 796, @@ -4343,7 +4353,7 @@ enum SkillType SKILL_ALL_GLYPHS = 810, SKILL_PET_DOG = 811, SKILL_PET_MONKEY = 815, - SKILL_PET_SHALE_SPIDER = 817, + SKILL_PET_EXOTIC_SHALE_SPIDER = 817, SKILL_BEETLE = 818, SKILL_ALL_GUILD_PERKS = 821, SKILL_PET_HYDRA = 824, @@ -4352,9 +4362,7 @@ enum SkillType SKILL_WARLOCK = 849, SKILL_RACIAL_PANDAREN = 899, SKILL_MAGE = 904, - SKILL_LANG_PANDAREN_NEUTRAL = 905, - SKILL_LANG_PANDAREN_ALLIANCE = 906, - SKILL_LANG_PANDAREN_HORDE = 907, + SKILL_LANGUAGE_PANDAREN_NEUTRAL = 905, SKILL_ROGUE = 921, SKILL_SHAMAN = 924, SKILL_FEL_IMP = 927, @@ -4374,17 +4382,16 @@ enum SkillType SKILL_WAY_OF_THE_BREW = 980, SKILL_APPRENTICE_COOKING = 981, SKILL_JOURNEYMAN_COOKBOOK = 982, - SKILL_PORCUPINE = 983, - SKILL_CRANE = 984, - SKILL_WATER_STRIDER = 985, + SKILL_PET_RODENT = 983, + SKILL_PET_CRANE = 984, + SKILL_PET_WATER_STRIDER = 985, SKILL_PET_EXOTIC_QUILEN = 986, SKILL_PET_GOAT = 987, - SKILL_BASILISK = 988, + SKILL_PET_BASILISK = 988, SKILL_NO_PLAYERS = 999, - SKILL_DIREHORN = 1305, + SKILL_PET_DIREHORN = 1305, SKILL_PET_PRIMAL_STORM_ELEMENTAL = 1748, SKILL_PET_WATER_ELEMENTAL_MINOR_TALENT_VERSION = 1777, - SKILL_PET_EXOTIC_RYLAK = 1818, SKILL_PET_RIVERBEAST = 1819, SKILL_UNUSED = 1830, SKILL_DEMON_HUNTER = 1848, @@ -4396,6 +4403,127 @@ enum SkillType SKILL_WARGLAIVES = 2152, SKILL_PET_MECHANICAL = 2189, SKILL_PET_ABOMINATION = 2216, + SKILL_PET_OXEN = 2279, + SKILL_PET_SCALEHIDE = 2280, + SKILL_PET_FEATHERMANE = 2361, + SKILL_RACIAL_NIGHTBORNE = 2419, + SKILL_RACIAL_HIGHMOUNTAIN_TAUREN = 2420, + SKILL_RACIAL_LIGHTFORGED_DRAENEI = 2421, + SKILL_RACIAL_VOID_ELF = 2423, + SKILL_KUL_TIRAN_BLACKSMITHING = 2437, + SKILL_LEGION_BLACKSMITHING = 2454, + SKILL_LANGUAGE_SHALASSIAN = 2464, + SKILL_LANGUAGE_THALASSIAN_2 = 2465, + SKILL_DRAENOR_BLACKSMITHING = 2472, + SKILL_PANDARIA_BLACKSMITHING = 2473, + SKILL_CATACLYSM_BLACKSMITHING = 2474, + SKILL_NORTHREND_BLACKSMITHING = 2475, + SKILL_OUTLAND_BLACKSMITHING = 2476, + SKILL_BLACKSMITHING_2 = 2477, + SKILL_KUL_TIRAN_ALCHEMY = 2478, + SKILL_LEGION_ALCHEMY = 2479, + SKILL_DRAENOR_ALCHEMY = 2480, + SKILL_PANDARIA_ALCHEMY = 2481, + SKILL_CATACLYSM_ALCHEMY = 2482, + SKILL_NORTHREND_ALCHEMY = 2483, + SKILL_OUTLAND_ALCHEMY = 2484, + SKILL_ALCHEMY_2 = 2485, + SKILL_KUL_TIRAN_ENCHANTING = 2486, + SKILL_LEGION_ENCHANTING = 2487, + SKILL_DRAENOR_ENCHANTING = 2488, + SKILL_PANDARIA_ENCHANTING = 2489, + SKILL_CATACLYSM_ENCHANTING = 2491, + SKILL_NORTHREND_ENCHANTING = 2492, + SKILL_OUTLAND_ENCHANTING = 2493, + SKILL_ENCHANTING_2 = 2494, + SKILL_KUL_TIRAN_ENGINEERING = 2499, + SKILL_LEGION_ENGINEERING = 2500, + SKILL_DRAENOR_ENGINEERING = 2501, + SKILL_PANDARIA_ENGINEERING = 2502, + SKILL_CATACLYSM_ENGINEERING = 2503, + SKILL_NORTHREND_ENGINEERING = 2504, + SKILL_OUTLAND_ENGINEERING = 2505, + SKILL_ENGINEERING_2 = 2506, + SKILL_KUL_TIRAN_INSCRIPTION = 2507, + SKILL_LEGION_INSCRIPTION = 2508, + SKILL_DRAENOR_INSCRIPTION = 2509, + SKILL_PANDARIA_INSCRIPTION = 2510, + SKILL_CATACLYSM_INSCRIPTION = 2511, + SKILL_NORTHREND_INSCRIPTION = 2512, + SKILL_OUTLAND_INSCRIPTION = 2513, + SKILL_INSCRIPTION_2 = 2514, + SKILL_KUL_TIRAN_JEWELCRAFTING = 2517, + SKILL_LEGION_JEWELCRAFTING = 2518, + SKILL_DRAENOR_JEWELCRAFTING = 2519, + SKILL_PANDARIA_JEWELCRAFTING = 2520, + SKILL_CATACLYSM_JEWELCRAFTING = 2521, + SKILL_NORTHREND_JEWELCRAFTING = 2522, + SKILL_OUTLAND_JEWELCRAFTING = 2523, + SKILL_JEWELCRAFTING_2 = 2524, + SKILL_KUL_TIRAN_LEATHERWORKING = 2525, + SKILL_LEGION_LEATHERWORKING = 2526, + SKILL_DRAENOR_LEATHERWORKING = 2527, + SKILL_PANDARIA_LEATHERWORKING = 2528, + SKILL_CATACLYSM_LEATHERWORKING = 2529, + SKILL_NORTHREND_LEATHERWORKING = 2530, + SKILL_OUTLAND_LEATHERWORKING = 2531, + SKILL_LEATHERWORKING_2 = 2532, + SKILL_KUL_TIRAN_TAILORING = 2533, + SKILL_LEGION_TAILORING = 2534, + SKILL_DRAENOR_TAILORING = 2535, + SKILL_PANDARIA_TAILORING = 2536, + SKILL_CATACLYSM_TAILORING = 2537, + SKILL_NORTHREND_TAILORING = 2538, + SKILL_OUTLAND_TAILORING = 2539, + SKILL_TAILORING_2 = 2540, + SKILL_KUL_TIRAN_COOKING = 2541, + SKILL_LEGION_COOKING = 2542, + SKILL_DRAENOR_COOKING = 2543, + SKILL_PANDARIA_COOKING = 2544, + SKILL_CATACLYSM_COOKING = 2545, + SKILL_NORTHREND_COOKING = 2546, + SKILL_OUTLAND_COOKING = 2547, + SKILL_COOKING_2 = 2548, + SKILL_KUL_TIRAN_HERBALISM = 2549, + SKILL_LEGION_HERBALISM = 2550, + SKILL_DRAENOR_HERBALISM = 2551, + SKILL_PANDARIA_HERBALISM = 2552, + SKILL_CATACLYSM_HERBALISM = 2553, + SKILL_NORTHREND_HERBALISM = 2554, + SKILL_OUTLAND_HERBALISM = 2555, + SKILL_HERBALISM_2 = 2556, + SKILL_KUL_TIRAN_SKINNING = 2557, + SKILL_LEGION_SKINNING = 2558, + SKILL_DRAENOR_SKINNING = 2559, + SKILL_PANDARIA_SKINNING = 2560, + SKILL_CATACLYSM_SKINNING = 2561, + SKILL_NORTHREND_SKINNING = 2562, + SKILL_OUTLAND_SKINNING = 2563, + SKILL_SKINNING_2 = 2564, + SKILL_KUL_TIRAN_MINING = 2565, + SKILL_LEGION_MINING = 2566, + SKILL_DRAENOR_MINING = 2567, + SKILL_PANDARIA_MINING = 2568, + SKILL_CATACLYSM_MINING = 2569, + SKILL_NORTHREND_MINING = 2570, + SKILL_OUTLAND_MINING = 2571, + SKILL_MINING_2 = 2572, + SKILL_KUL_TIRAN_FISHING = 2585, + SKILL_LEGION_FISHING = 2586, + SKILL_DRAENOR_FISHING = 2587, + SKILL_PANDARIA_FISHING = 2588, + SKILL_CATACLYSM_FISHING = 2589, + SKILL_NORTHREND_FISHING = 2590, + SKILL_OUTLAND_FISHING = 2591, + SKILL_FISHING_2 = 2592, + SKILL_RACIAL_DARK_IRON_DWARF = 2597, + SKILL_RACIAL_MAG_HAR_ORC = 2598, + SKILL_PET_LIZARD = 2703, + SKILL_PET_HORSE = 2704, + SKILL_PET_EXOTIC_PTERRORDAX = 2705, + SKILL_PET_TOAD = 2706, + SKILL_PET_EXOTIC_KROLUSK = 2707, + SKILL_SECOND_PET_HUNTER = 2716 }; inline SkillType SkillByLockType(LockType locktype) @@ -4425,7 +4553,6 @@ inline uint32 SkillByQuestSort(int32 QuestSort) case QUEST_SORT_ENGINEERING: return SKILL_ENGINEERING; case QUEST_SORT_TAILORING: return SKILL_TAILORING; case QUEST_SORT_COOKING: return SKILL_COOKING; - case QUEST_SORT_FIRST_AID: return SKILL_FIRST_AID; case QUEST_SORT_JEWELCRAFTING: return SKILL_JEWELCRAFTING; case QUEST_SORT_INSCRIPTION: return SKILL_INSCRIPTION; case QUEST_SORT_ARCHAEOLOGY: return SKILL_ARCHAEOLOGY; @@ -4772,52 +4899,54 @@ enum ResponseCodes CHAR_CREATE_THROTTLE = 49, CHAR_CREATE_ALLIED_RACE_ACHIEVEMENT = 50, CHAR_CREATE_LEVEL_REQUIREMENT_DEMON_HUNTER = 51, - - CHAR_DELETE_IN_PROGRESS = 52, - CHAR_DELETE_SUCCESS = 53, - CHAR_DELETE_FAILED = 54, - CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER = 55, - CHAR_DELETE_FAILED_GUILD_LEADER = 56, - CHAR_DELETE_FAILED_ARENA_CAPTAIN = 57, - CHAR_DELETE_FAILED_HAS_HEIRLOOM_OR_MAIL = 58, - CHAR_DELETE_FAILED_UPGRADE_IN_PROGRESS = 59, - CHAR_DELETE_FAILED_HAS_WOW_TOKEN = 60, - CHAR_DELETE_FAILED_VAS_TRANSACTION_IN_PROGRESS = 61, - - CHAR_LOGIN_IN_PROGRESS = 62, - CHAR_LOGIN_SUCCESS = 63, - CHAR_LOGIN_NO_WORLD = 64, - CHAR_LOGIN_DUPLICATE_CHARACTER = 65, - CHAR_LOGIN_NO_INSTANCES = 66, - CHAR_LOGIN_FAILED = 67, - CHAR_LOGIN_DISABLED = 68, - CHAR_LOGIN_NO_CHARACTER = 69, - CHAR_LOGIN_LOCKED_FOR_TRANSFER = 70, - CHAR_LOGIN_LOCKED_BY_BILLING = 71, - CHAR_LOGIN_LOCKED_BY_MOBILE_AH = 72, - CHAR_LOGIN_TEMPORARY_GM_LOCK = 73, - CHAR_LOGIN_LOCKED_BY_CHARACTER_UPGRADE = 74, - CHAR_LOGIN_LOCKED_BY_REVOKED_CHARACTER_UPGRADE = 75, - CHAR_LOGIN_LOCKED_BY_REVOKED_VAS_TRANSACTION = 76, - CHAR_LOGIN_LOCKED_BY_RESTRICTION = 77, - - CHAR_NAME_SUCCESS = 78, - CHAR_NAME_FAILURE = 79, - CHAR_NAME_NO_NAME = 80, - CHAR_NAME_TOO_SHORT = 81, - CHAR_NAME_TOO_LONG = 82, - CHAR_NAME_INVALID_CHARACTER = 83, - CHAR_NAME_MIXED_LANGUAGES = 84, - CHAR_NAME_PROFANE = 85, - CHAR_NAME_RESERVED = 86, - CHAR_NAME_INVALID_APOSTROPHE = 87, - CHAR_NAME_MULTIPLE_APOSTROPHES = 88, - CHAR_NAME_THREE_CONSECUTIVE = 89, - CHAR_NAME_INVALID_SPACE = 90, - CHAR_NAME_CONSECUTIVE_SPACES = 91, - CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 92, - CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 93, - CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 94 + CHAR_CREATE_CHARACTER_IN_COMMUNITY = 52, + + CHAR_DELETE_IN_PROGRESS = 53, + CHAR_DELETE_SUCCESS = 54, + CHAR_DELETE_FAILED = 55, + CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER = 56, + CHAR_DELETE_FAILED_GUILD_LEADER = 57, + CHAR_DELETE_FAILED_ARENA_CAPTAIN = 58, + CHAR_DELETE_FAILED_HAS_HEIRLOOM_OR_MAIL = 59, + CHAR_DELETE_FAILED_UPGRADE_IN_PROGRESS = 60, + CHAR_DELETE_FAILED_HAS_WOW_TOKEN = 61, + CHAR_DELETE_FAILED_VAS_TRANSACTION_IN_PROGRESS = 62, + CHAR_DELETE_FAILED_COMMUNITY_OWNER = 63, + + CHAR_LOGIN_IN_PROGRESS = 64, + CHAR_LOGIN_SUCCESS = 65, + CHAR_LOGIN_NO_WORLD = 66, + CHAR_LOGIN_DUPLICATE_CHARACTER = 67, + CHAR_LOGIN_NO_INSTANCES = 68, + CHAR_LOGIN_FAILED = 69, + CHAR_LOGIN_DISABLED = 70, + CHAR_LOGIN_NO_CHARACTER = 71, + CHAR_LOGIN_LOCKED_FOR_TRANSFER = 72, + CHAR_LOGIN_LOCKED_BY_BILLING = 73, + CHAR_LOGIN_LOCKED_BY_MOBILE_AH = 74, + CHAR_LOGIN_TEMPORARY_GM_LOCK = 75, + CHAR_LOGIN_LOCKED_BY_CHARACTER_UPGRADE = 76, + CHAR_LOGIN_LOCKED_BY_REVOKED_CHARACTER_UPGRADE = 77, + CHAR_LOGIN_LOCKED_BY_REVOKED_VAS_TRANSACTION = 78, + CHAR_LOGIN_LOCKED_BY_RESTRICTION = 79, + + CHAR_NAME_SUCCESS = 80, + CHAR_NAME_FAILURE = 81, + CHAR_NAME_NO_NAME = 82, + CHAR_NAME_TOO_SHORT = 83, + CHAR_NAME_TOO_LONG = 84, + CHAR_NAME_INVALID_CHARACTER = 85, + CHAR_NAME_MIXED_LANGUAGES = 86, + CHAR_NAME_PROFANE = 87, + CHAR_NAME_RESERVED = 88, + CHAR_NAME_INVALID_APOSTROPHE = 89, + CHAR_NAME_MULTIPLE_APOSTROPHES = 90, + CHAR_NAME_THREE_CONSECUTIVE = 91, + CHAR_NAME_INVALID_SPACE = 92, + CHAR_NAME_CONSECUTIVE_SPACES = 93, + CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 94, + CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 95, + CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 96 }; enum CharacterUndeleteResult diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index 6a71256a77b..1a6f95244a9 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -37,38 +37,40 @@ Quest::Quest(Field* questRecord) ID = questRecord[0].GetUInt32(); Type = questRecord[1].GetUInt8(); Level = questRecord[2].GetInt32(); - MaxScalingLevel = questRecord[3].GetInt32(); - PackageID = questRecord[4].GetUInt32(); - MinLevel = questRecord[5].GetInt32(); - QuestSortID = questRecord[6].GetInt16(); - QuestInfoID = questRecord[7].GetUInt16(); - SuggestedPlayers = questRecord[8].GetUInt8(); - NextQuestInChain = questRecord[9].GetUInt32(); - RewardXPDifficulty = questRecord[10].GetUInt32(); - RewardXPMultiplier = questRecord[11].GetFloat(); - RewardMoney = questRecord[12].GetUInt32(); - RewardMoneyDifficulty = questRecord[13].GetUInt32(); - RewardMoneyMultiplier = questRecord[14].GetFloat(); - RewardBonusMoney = questRecord[15].GetUInt32(); + ScalingFactionGroup = questRecord[3].GetInt32(); + MaxScalingLevel = questRecord[4].GetInt32(); + PackageID = questRecord[5].GetUInt32(); + MinLevel = questRecord[6].GetInt32(); + QuestSortID = questRecord[7].GetInt16(); + QuestInfoID = questRecord[8].GetUInt16(); + SuggestedPlayers = questRecord[9].GetUInt8(); + NextQuestInChain = questRecord[10].GetUInt32(); + RewardXPDifficulty = questRecord[11].GetUInt32(); + RewardXPMultiplier = questRecord[12].GetFloat(); + RewardMoney = questRecord[13].GetUInt32(); + RewardMoneyDifficulty = questRecord[14].GetUInt32(); + RewardMoneyMultiplier = questRecord[15].GetFloat(); + RewardBonusMoney = questRecord[16].GetUInt32(); for (uint32 i = 0; i < QUEST_REWARD_DISPLAY_SPELL_COUNT; ++i) - RewardDisplaySpell[i] = questRecord[16 + i].GetUInt32(); - - RewardSpell = questRecord[19].GetUInt32(); - RewardHonor = questRecord[20].GetUInt32(); - RewardKillHonor = questRecord[21].GetUInt32(); - SourceItemId = questRecord[22].GetUInt32(); - RewardArtifactXPDifficulty = questRecord[23].GetUInt32(); - RewardArtifactXPMultiplier = questRecord[24].GetFloat(); - RewardArtifactCategoryID = questRecord[25].GetUInt32(); - Flags = questRecord[26].GetUInt32(); - FlagsEx = questRecord[27].GetUInt32(); + RewardDisplaySpell[i] = questRecord[17 + i].GetUInt32(); + + RewardSpell = questRecord[20].GetUInt32(); + RewardHonor = questRecord[21].GetUInt32(); + RewardKillHonor = questRecord[22].GetUInt32(); + SourceItemId = questRecord[23].GetUInt32(); + RewardArtifactXPDifficulty = questRecord[24].GetUInt32(); + RewardArtifactXPMultiplier = questRecord[25].GetFloat(); + RewardArtifactCategoryID = questRecord[26].GetUInt32(); + Flags = questRecord[27].GetUInt32(); + FlagsEx = questRecord[28].GetUInt32(); + FlagsEx2 = questRecord[29].GetUInt32(); for (uint32 i = 0; i < QUEST_ITEM_DROP_COUNT; ++i) { - RewardItemId[i] = questRecord[28 + i * 4].GetUInt32(); - RewardItemCount[i] = questRecord[29 + i * 4].GetUInt32(); - ItemDrop[i] = questRecord[30 + i * 4].GetUInt32(); - ItemDropQuantity[i] = questRecord[31 + i * 4].GetUInt32(); + RewardItemId[i] = questRecord[30 + i * 4].GetUInt32(); + RewardItemCount[i] = questRecord[31 + i * 4].GetUInt32(); + ItemDrop[i] = questRecord[32 + i * 4].GetUInt32(); + ItemDropQuantity[i] = questRecord[33 + i * 4].GetUInt32(); if (RewardItemId[i]) ++_rewItemsCount; @@ -76,63 +78,64 @@ Quest::Quest(Field* questRecord) for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) { - RewardChoiceItemId[i] = questRecord[44 + i * 3].GetUInt32(); - RewardChoiceItemCount[i] = questRecord[45 + i * 3].GetUInt32(); - RewardChoiceItemDisplayId[i] = questRecord[46 + i * 3].GetUInt32(); + RewardChoiceItemId[i] = questRecord[46 + i * 3].GetUInt32(); + RewardChoiceItemCount[i] = questRecord[47 + i * 3].GetUInt32(); + RewardChoiceItemDisplayId[i] = questRecord[48 + i * 3].GetUInt32(); if (RewardChoiceItemId[i]) ++_rewChoiceItemsCount; } - POIContinent = questRecord[62].GetUInt32(); - POIx = questRecord[63].GetFloat(); - POIy = questRecord[64].GetFloat(); - POIPriority = questRecord[65].GetUInt32(); + POIContinent = questRecord[64].GetUInt32(); + POIx = questRecord[65].GetFloat(); + POIy = questRecord[66].GetFloat(); + POIPriority = questRecord[67].GetUInt32(); - RewardTitleId = questRecord[66].GetUInt32(); - RewardArenaPoints = questRecord[67].GetUInt32(); - RewardSkillId = questRecord[68].GetUInt32(); - RewardSkillPoints = questRecord[69].GetUInt32(); + RewardTitleId = questRecord[68].GetUInt32(); + RewardArenaPoints = questRecord[69].GetUInt32(); + RewardSkillId = questRecord[70].GetUInt32(); + RewardSkillPoints = questRecord[71].GetUInt32(); - QuestGiverPortrait = questRecord[70].GetUInt32(); - QuestTurnInPortrait = questRecord[71].GetUInt32(); + QuestGiverPortrait = questRecord[72].GetUInt32(); + QuestGiverPortraitMount = questRecord[73].GetUInt32(); + QuestTurnInPortrait = questRecord[74].GetUInt32(); for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i) { - RewardFactionId[i] = questRecord[72 + i * 4].GetUInt32(); - RewardFactionValue[i] = questRecord[73 + i * 4].GetInt32(); - RewardFactionOverride[i] = questRecord[74 + i * 4].GetInt32(); - RewardFactionCapIn[i] = questRecord[75 + i * 4].GetUInt32(); + RewardFactionId[i] = questRecord[75 + i * 4].GetUInt32(); + RewardFactionValue[i] = questRecord[76 + i * 4].GetInt32(); + RewardFactionOverride[i] = questRecord[77 + i * 4].GetInt32(); + RewardFactionCapIn[i] = questRecord[78 + i * 4].GetUInt32(); } - RewardReputationMask = questRecord[92].GetUInt32(); + RewardReputationMask = questRecord[95].GetUInt32(); for (uint32 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) { - RewardCurrencyId[i] = questRecord[93 + i * 2].GetUInt32(); - RewardCurrencyCount[i] = questRecord[94 + i * 2].GetUInt32(); + RewardCurrencyId[i] = questRecord[96 + i * 2].GetUInt32(); + RewardCurrencyCount[i] = questRecord[97 + i * 2].GetUInt32(); if (RewardCurrencyId[i]) ++_rewCurrencyCount; } - SoundAccept = questRecord[101].GetUInt32(); - SoundTurnIn = questRecord[102].GetUInt32(); - AreaGroupID = questRecord[103].GetUInt32(); - LimitTime = questRecord[104].GetUInt32(); - AllowableRaces = questRecord[105].GetUInt64(); - QuestRewardID = questRecord[106].GetUInt32(); - Expansion = questRecord[107].GetInt32(); - - LogTitle = questRecord[108].GetString(); - LogDescription = questRecord[109].GetString(); - QuestDescription = questRecord[110].GetString(); - AreaDescription = questRecord[111].GetString(); - PortraitGiverText = questRecord[112].GetString(); - PortraitGiverName = questRecord[113].GetString(); - PortraitTurnInText = questRecord[114].GetString(); - PortraitTurnInName = questRecord[115].GetString(); - QuestCompletionLog = questRecord[116].GetString(); + SoundAccept = questRecord[104].GetUInt32(); + SoundTurnIn = questRecord[105].GetUInt32(); + AreaGroupID = questRecord[106].GetUInt32(); + LimitTime = questRecord[107].GetUInt32(); + AllowableRaces = questRecord[108].GetUInt64(); + TreasurePickerID = questRecord[109].GetInt32(); + Expansion = questRecord[110].GetInt32(); + + LogTitle = questRecord[111].GetString(); + LogDescription = questRecord[112].GetString(); + QuestDescription = questRecord[113].GetString(); + AreaDescription = questRecord[114].GetString(); + PortraitGiverText = questRecord[115].GetString(); + PortraitGiverName = questRecord[116].GetString(); + PortraitTurnInText = questRecord[117].GetString(); + PortraitTurnInName = questRecord[118].GetString(); + QuestCompletionLog = questRecord[119].GetString(); for (uint32 i = 0; i < QUEST_EMOTE_COUNT; ++i) { @@ -255,20 +258,20 @@ void Quest::LoadQuestObjectiveVisualEffect(Field* fields) } } -uint32 Quest::XPValue(uint32 playerLevel) const +uint32 Quest::XPValue(Player const* player) const { - if (playerLevel) + if (player) { - uint32 questLevel = uint32(Level == -1 ? playerLevel : Level); + uint32 questLevel = player->GetQuestLevel(this); QuestXPEntry const* questXp = sQuestXPStore.LookupEntry(questLevel); if (!questXp || RewardXPDifficulty >= 10) return 0; float multiplier = 1.0f; - if (questLevel != playerLevel) - multiplier = sXpGameTable.GetRow(std::min(playerLevel, questLevel))->Divisor / sXpGameTable.GetRow(playerLevel)->Divisor; + if (questLevel != player->getLevel()) + multiplier = sXpGameTable.GetRow(std::min(player->getLevel(), questLevel))->Divisor / sXpGameTable.GetRow(player->getLevel())->Divisor; - int32 diffFactor = 2 * (questLevel - playerLevel) + 20; + int32 diffFactor = 2 * (questLevel + (Level == -1 ? 0 : 5) - player->getLevel()) + 10; if (diffFactor < 1) diffFactor = 1; else if (diffFactor > 10) @@ -290,11 +293,9 @@ uint32 Quest::XPValue(uint32 playerLevel) const return 0; } -uint32 Quest::MoneyValue(uint8 playerLevel) const +uint32 Quest::MoneyValue(Player const* player) const { - uint8 level = Level == -1 ? playerLevel : Level; - - if (QuestMoneyRewardEntry const* money = sQuestMoneyRewardStore.LookupEntry(level)) + if (QuestMoneyRewardEntry const* money = sQuestMoneyRewardStore.LookupEntry(player->GetQuestLevel(this))) return money->Difficulty[GetRewMoneyDifficulty()] * GetMoneyMultiplier(); else return 0; @@ -315,11 +316,11 @@ void Quest::BuildQuestRewards(WorldPackets::Quest::QuestRewards& rewards, Player rewards.SpellCompletionID = GetRewSpell(); rewards.SkillLineID = GetRewardSkillId(); rewards.NumSkillUps = GetRewardSkillPoints(); - rewards.RewardID = GetRewardId(); + rewards.TreasurePickerID = GetTreasurePickerId(); for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) { - rewards.ChoiceItems[i].ItemID = RewardChoiceItemId[i]; + rewards.ChoiceItems[i].Item.ItemID = RewardChoiceItemId[i]; rewards.ChoiceItems[i].Quantity = RewardChoiceItemCount[i]; } diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index adbec0efd6c..a8d2d5a701c 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -200,6 +200,11 @@ enum QuestFlagsEx : uint32 QUEST_FLAGS_EX_CLEAR_PROGRESS_OF_CRITERIA_TREE_OBJECTIVES_ON_ACCEPT = 0x1000000 }; +enum QuestFlagsEx2 : uint32 +{ + QUEST_FLAGS_EX2_NO_WAR_MODE_BONUS = 0x2 +}; + enum QuestSpecialFlags { QUEST_SPECIAL_FLAGS_NONE = 0x000, @@ -348,17 +353,16 @@ class TC_GAME_API Quest void LoadQuestObjective(Field* fields); void LoadQuestObjectiveVisualEffect(Field* fields); - uint32 XPValue(uint32 playerLevel) const; - uint32 MoneyValue(uint8 playerLevel) const; + uint32 XPValue(Player const* player) const; + uint32 MoneyValue(Player const* player) const; - bool HasFlag(uint32 flag) const { return (Flags & flag) != 0; } - void SetFlag(uint32 flag) { Flags |= flag; } + bool HasFlag(QuestFlags flag) const { return (Flags & uint32(flag)) != 0; } + bool HasFlagEx(QuestFlagsEx flag) const { return (FlagsEx & uint32(flag)) != 0; } + bool HasFlagEx2(QuestFlagsEx2 flag) const { return (FlagsEx2 & uint32(flag)) != 0; } bool HasSpecialFlag(uint32 flag) const { return (SpecialFlags & flag) != 0; } void SetSpecialFlag(uint32 flag) { SpecialFlags |= flag; } - bool HasFlagEx(QuestFlagsEx flag) const { return (FlagsEx & uint32(flag)) != 0; } - // table data accessors: uint32 GetQuestId() const { return ID; } uint32 GetQuestType() const { return Type; } @@ -367,6 +371,7 @@ class TC_GAME_API Quest int32 GetMinLevel() const { return MinLevel; } uint32 GetMaxLevel() const { return MaxLevel; } int32 GetQuestLevel() const { return Level; } + int32 GetQuestScalingFactionGroup() const { return ScalingFactionGroup; } int32 GetQuestMaxScalingLevel() const { return MaxScalingLevel; } uint32 GetQuestInfoID() const { return QuestInfoID; } uint32 GetAllowableClasses() const { return AllowableClasses; } @@ -427,15 +432,17 @@ class TC_GAME_API Quest bool IsAutoComplete() const; uint32 GetFlags() const { return Flags; } uint32 GetFlagsEx() const { return FlagsEx; } + uint32 GetFlagsEx2() const { return FlagsEx2; } uint32 GetSpecialFlags() const { return SpecialFlags; } uint32 GetScriptId() const { return ScriptId; } uint32 GetAreaGroupID() const { return AreaGroupID; } uint32 GetRewardSkillId() const { return RewardSkillId; } uint32 GetRewardSkillPoints() const { return RewardSkillPoints; } uint32 GetRewardReputationMask() const { return RewardReputationMask; } - uint32 GetRewardId() const { return QuestRewardID; } + int32 GetTreasurePickerId() const { return TreasurePickerID; } int32 GetExpansion() const { return Expansion; } uint32 GetQuestGiverPortrait() const { return QuestGiverPortrait; } + int32 GetQuestGiverPortraitMount() const { return QuestGiverPortraitMount; } uint32 GetQuestTurnInPortrait() const { return QuestTurnInPortrait; } bool IsDaily() const { return (Flags & QUEST_FLAGS_DAILY) != 0; } bool IsWeekly() const { return (Flags & QUEST_FLAGS_WEEKLY) != 0; } @@ -469,6 +476,7 @@ class TC_GAME_API Quest uint32 ID; uint32 Type; int32 Level; + int32 ScalingFactionGroup; int32 MaxScalingLevel; uint32 PackageID; int32 MinLevel; @@ -492,6 +500,7 @@ class TC_GAME_API Quest uint32 SourceItemId; uint32 Flags; uint32 FlagsEx; + uint32 FlagsEx2; uint32 RewardItemId[QUEST_REWARD_ITEM_COUNT]; uint32 RewardItemCount[QUEST_REWARD_ITEM_COUNT]; uint32 ItemDrop[QUEST_ITEM_DROP_COUNT]; @@ -508,6 +517,7 @@ class TC_GAME_API Quest uint32 RewardSkillId; uint32 RewardSkillPoints; uint32 QuestGiverPortrait; + int32 QuestGiverPortraitMount; uint32 QuestTurnInPortrait; uint32 RewardFactionId[QUEST_REWARD_REPUTATIONS_COUNT]; int32 RewardFactionValue[QUEST_REWARD_REPUTATIONS_COUNT]; @@ -521,7 +531,7 @@ class TC_GAME_API Quest uint32 AreaGroupID; uint32 LimitTime; uint64 AllowableRaces; - uint32 QuestRewardID; + int32 TreasurePickerID; int32 Expansion; QuestObjectives Objectives; std::string LogTitle; diff --git a/src/server/game/Scenarios/ScenarioMgr.cpp b/src/server/game/Scenarios/ScenarioMgr.cpp index c70e560efd7..1fb6dc4d18b 100644 --- a/src/server/game/Scenarios/ScenarioMgr.cpp +++ b/src/server/game/Scenarios/ScenarioMgr.cpp @@ -147,8 +147,8 @@ void ScenarioMgr::LoadScenarioPOI() uint32 count = 0; - // 0 1 2 6 7 8 9 10 11 12 - QueryResult result = WorldDatabase.Query("SELECT CriteriaTreeID, BlobIndex, Idx1, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID FROM scenario_poi ORDER BY CriteriaTreeID, Idx1"); + // 0 1 2 3 4 5 6 7 8 + QueryResult result = WorldDatabase.Query("SELECT CriteriaTreeID, BlobIndex, Idx1, MapID, UiMapID, Priority, Flags, WorldEffectID, PlayerConditionID FROM scenario_poi ORDER BY CriteriaTreeID, Idx1"); if (!result) { TC_LOG_ERROR("server.loading", ">> Loaded 0 scenario POI definitions. DB table `scenario_poi` is empty."); @@ -188,24 +188,23 @@ void ScenarioMgr::LoadScenarioPOI() { Field* fields = result->Fetch(); - int32 CriteriaTreeID = fields[0].GetInt32(); - int32 BlobIndex = fields[1].GetInt32(); - int32 Idx1 = fields[2].GetInt32(); - int32 MapID = fields[3].GetInt32(); - int32 WorldMapAreaId = fields[4].GetInt32(); - int32 Floor = fields[5].GetInt32(); - int32 Priority = fields[6].GetInt32(); - int32 Flags = fields[7].GetInt32(); - int32 WorldEffectID = fields[8].GetInt32(); - int32 PlayerConditionID = fields[9].GetInt32(); - - if (!sCriteriaMgr->GetCriteriaTree(CriteriaTreeID)) - TC_LOG_ERROR("sql.sql", "`scenario_poi` CriteriaTreeID (%u) Idx1 (%u) does not correspond to a valid criteria tree", CriteriaTreeID, Idx1); - - if (CriteriaTreeID < int32(POIs.size()) && Idx1 < int32(POIs[CriteriaTreeID].size())) - _scenarioPOIStore[CriteriaTreeID].emplace_back(BlobIndex, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, POIs[CriteriaTreeID][Idx1]); + int32 criteriaTreeID = fields[0].GetInt32(); + int32 blobIndex = fields[1].GetInt32(); + int32 idx1 = fields[2].GetInt32(); + int32 mapID = fields[3].GetInt32(); + int32 uiMapID = fields[4].GetInt32(); + int32 priority = fields[5].GetInt32(); + int32 flags = fields[6].GetInt32(); + int32 worldEffectID = fields[7].GetInt32(); + int32 playerConditionID = fields[8].GetInt32(); + + if (!sCriteriaMgr->GetCriteriaTree(criteriaTreeID)) + TC_LOG_ERROR("sql.sql", "`scenario_poi` CriteriaTreeID (%u) Idx1 (%u) does not correspond to a valid criteria tree", criteriaTreeID, idx1); + + if (criteriaTreeID < int32(POIs.size()) && idx1 < int32(POIs[criteriaTreeID].size())) + _scenarioPOIStore[criteriaTreeID].emplace_back(blobIndex, mapID, uiMapID, priority, flags, worldEffectID, playerConditionID, POIs[criteriaTreeID][idx1]); else - TC_LOG_ERROR("server.loading", "Table scenario_poi references unknown scenario poi points for criteria tree id %i POI id %i", CriteriaTreeID, BlobIndex); + TC_LOG_ERROR("server.loading", "Table scenario_poi references unknown scenario poi points for criteria tree id %i POI id %i", criteriaTreeID, blobIndex); ++count; } while (result->NextRow()); diff --git a/src/server/game/Scenarios/ScenarioMgr.h b/src/server/game/Scenarios/ScenarioMgr.h index 93a1f3a320f..932d4decce9 100644 --- a/src/server/game/Scenarios/ScenarioMgr.h +++ b/src/server/game/Scenarios/ScenarioMgr.h @@ -74,23 +74,22 @@ struct ScenarioPOI { int32 BlobIndex; int32 MapID; - int32 WorldMapAreaID; - int32 Floor; + int32 UiMapID; int32 Priority; int32 Flags; int32 WorldEffectID; int32 PlayerConditionID; std::vector Points; - ScenarioPOI() : BlobIndex(0), MapID(0), WorldMapAreaID(0), Floor(0), Priority(0), Flags(0), WorldEffectID(0), PlayerConditionID(0) { } + ScenarioPOI() : BlobIndex(0), MapID(0), UiMapID(0), Priority(0), Flags(0), WorldEffectID(0), PlayerConditionID(0) { } - ScenarioPOI(int32 _BlobIndex, int32 _MapID, int32 _WorldMapAreaID, int32 _Floor, int32 _Priority, int32 _Flags, int32 _WorldEffectID, - int32 _PlayerConditionID, std::vector points) : - BlobIndex(_BlobIndex), MapID(_MapID), WorldMapAreaID(_WorldMapAreaID), Floor(_Floor), Priority(_Priority), Flags(_Flags), WorldEffectID(_WorldEffectID), - PlayerConditionID(_PlayerConditionID), Points(std::move(points)) { } + ScenarioPOI(int32 blobIndex, int32 mapID, int32 uiMapID, int32 priority, int32 flags, int32 worldEffectID, + int32 playerConditionID, std::vector points) : + BlobIndex(blobIndex), MapID(mapID), UiMapID(uiMapID), Priority(priority), Flags(flags), WorldEffectID(worldEffectID), + PlayerConditionID(playerConditionID), Points(std::move(points)) { } ScenarioPOI(ScenarioPOI&& scenarioPOI) : - BlobIndex(scenarioPOI.BlobIndex), MapID(scenarioPOI.MapID), WorldMapAreaID(scenarioPOI.WorldMapAreaID), Floor(scenarioPOI.Floor), Priority(scenarioPOI.Priority), + BlobIndex(scenarioPOI.BlobIndex), MapID(scenarioPOI.MapID), UiMapID(scenarioPOI.UiMapID), Priority(scenarioPOI.Priority), Flags(scenarioPOI.Flags), WorldEffectID(scenarioPOI.WorldEffectID), PlayerConditionID(scenarioPOI.PlayerConditionID), Points(std::move(scenarioPOI.Points)) { } }; diff --git a/src/server/game/Server/Packets/AchievementPackets.h b/src/server/game/Server/Packets/AchievementPackets.h index b6e346aaefe..69262eae72f 100644 --- a/src/server/game/Server/Packets/AchievementPackets.h +++ b/src/server/game/Server/Packets/AchievementPackets.h @@ -101,7 +101,7 @@ namespace WorldPackets class AchievementDeleted final : public ServerPacket { public: - AchievementDeleted() : ServerPacket(SMSG_ACHIEVEMENT_DELETED, 4) { } + AchievementDeleted() : ServerPacket(SMSG_ACHIEVEMENT_DELETED, 8) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.cpp b/src/server/game/Server/Packets/AreaTriggerPackets.cpp index f99d9831f91..6b4047d0995 100644 --- a/src/server/game/Server/Packets/AreaTriggerPackets.cpp +++ b/src/server/game/Server/Packets/AreaTriggerPackets.cpp @@ -33,7 +33,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::AreaTrigger::AreaTriggerS ByteBuffer& operator<<(ByteBuffer& data, AreaTriggerCircularMovementInfo const& areaTriggerCircularMovement) { - data.WriteBit(areaTriggerCircularMovement.TargetGUID.is_initialized()); + data.WriteBit(areaTriggerCircularMovement.PathTarget.is_initialized()); data.WriteBit(areaTriggerCircularMovement.Center.is_initialized()); data.WriteBit(areaTriggerCircularMovement.CounterClockwise); data.WriteBit(areaTriggerCircularMovement.CanLoop); @@ -46,8 +46,8 @@ ByteBuffer& operator<<(ByteBuffer& data, AreaTriggerCircularMovementInfo const& data << float(areaTriggerCircularMovement.InitialAngle); data << float(areaTriggerCircularMovement.ZOffset); - if (areaTriggerCircularMovement.TargetGUID) - data << *areaTriggerCircularMovement.TargetGUID; + if (areaTriggerCircularMovement.PathTarget) + data << *areaTriggerCircularMovement.PathTarget; if (areaTriggerCircularMovement.Center) data << *areaTriggerCircularMovement.Center; @@ -72,14 +72,6 @@ WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerDenied::Write() } WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerRePath::Write() -{ - _worldPacket << TriggerGUID; - _worldPacket << AreaTriggerSpline; - - return &_worldPacket; -} - -WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerReShape::Write() { _worldPacket << TriggerGUID; diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.h b/src/server/game/Server/Packets/AreaTriggerPackets.h index e3872493481..b3abf08c5d9 100644 --- a/src/server/game/Server/Packets/AreaTriggerPackets.h +++ b/src/server/game/Server/Packets/AreaTriggerPackets.h @@ -68,18 +68,7 @@ namespace WorldPackets class AreaTriggerRePath final : public ServerPacket { public: - AreaTriggerRePath() : ServerPacket(SMSG_AREA_TRIGGER_RE_PATH, 50) { } - - WorldPacket const* Write() override; - - AreaTriggerSplineInfo AreaTriggerSpline; - ObjectGuid TriggerGUID; - }; - - class AreaTriggerReShape final : public ServerPacket - { - public: - AreaTriggerReShape() : ServerPacket(SMSG_AREA_TRIGGER_RE_SHAPE, 17) { } + AreaTriggerRePath() : ServerPacket(SMSG_AREA_TRIGGER_RE_PATH, 17) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index c28b8281ede..44e9608bddd 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -84,8 +84,6 @@ void WorldPackets::Auth::AuthSession::Read() uint32 realmJoinTicketSize; _worldPacket >> DosResponse; - _worldPacket >> Build; - _worldPacket >> BuildType; _worldPacket >> RegionID; _worldPacket >> BattlegroupID; _worldPacket >> RealmID; @@ -145,6 +143,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() _worldPacket.WriteBit(SuccessInfo->ForceCharacterTemplate); _worldPacket.WriteBit(SuccessInfo->NumPlayersHorde.is_initialized()); _worldPacket.WriteBit(SuccessInfo->NumPlayersAlliance.is_initialized()); + _worldPacket.WriteBit(SuccessInfo->ExpansionTrialExpiration.is_initialized()); _worldPacket.FlushBits(); { @@ -164,6 +163,9 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() if (SuccessInfo->NumPlayersAlliance) _worldPacket << uint16(*SuccessInfo->NumPlayersAlliance); + if (SuccessInfo->ExpansionTrialExpiration) + _worldPacket << int32(*SuccessInfo->ExpansionTrialExpiration); + for (VirtualRealmInfo const& virtualRealm : SuccessInfo->VirtualRealms) _worldPacket << virtualRealm; diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h index 97662944f09..7b0e50844bb 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -83,8 +83,6 @@ namespace WorldPackets Digest.fill(0); } - uint16 Build = 0; - int8 BuildType = 0; uint32 RegionID = 0; uint32 BattlegroupID = 0; uint32 RealmID = 0; @@ -159,6 +157,7 @@ namespace WorldPackets bool ForceCharacterTemplate = false; ///< forces the client to always use a character template when creating a new character. @see Templates. @todo implement Optional NumPlayersHorde; ///< number of horde players in this realm. @todo implement Optional NumPlayersAlliance; ///< number of alliance players in this realm. @todo implement + Optional ExpansionTrialExpiration; ///< expansion trial expiration unix timestamp }; AuthResponse(); diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp index 05851fb1dfd..14ae46e105a 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.cpp +++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp @@ -67,9 +67,11 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData: data << uint32(playerData.HealingDone); data << uint32(playerData.Stats.size()); data << int32(playerData.PrimaryTalentTree); - data << int32(playerData.PrimaryTalentTreeNameIndex); + data << int32(playerData.Sex); data << int32(playerData.Race); - data << uint32(playerData.Prestige); + data << int32(playerData.Class); + data << int32(playerData.CreatureID); + data << int32(playerData.HonorLevel); if (!playerData.Stats.empty()) data.append(playerData.Stats.data(), playerData.Stats.size()); @@ -89,13 +91,13 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData: data << uint32(*playerData.PreMatchRating); if (playerData.RatingChange) - data << uint32(*playerData.RatingChange); + data << int32(*playerData.RatingChange); if (playerData.PreMatchMMR) data << uint32(*playerData.PreMatchMMR); if (playerData.MmrChange) - data << uint32(*playerData.MmrChange); + data << int32(*playerData.MmrChange); return data; } diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h index 7340d8d7fc9..14ebc283cb5 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.h +++ b/src/server/game/Server/Packets/BattlegroundPackets.h @@ -122,9 +122,11 @@ namespace WorldPackets Optional MmrChange; std::vector Stats; int32 PrimaryTalentTree = 0; - int32 PrimaryTalentTreeNameIndex = 0; // controls which name field from ChrSpecialization.dbc will be sent to lua + int32 Sex = 0; int32 Race = 0; - uint32 Prestige = 0; + int32 Class = 0; + int32 CreatureID = 0; + int32 HonorLevel = 0; }; Optional Winner; diff --git a/src/server/game/Server/Packets/CalendarPackets.cpp b/src/server/game/Server/Packets/CalendarPackets.cpp index 45812c01ca6..7c82bd9d377 100644 --- a/src/server/game/Server/Packets/CalendarPackets.cpp +++ b/src/server/game/Server/Packets/CalendarPackets.cpp @@ -24,7 +24,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Calendar::CalendarSendCal data.AppendPackedTime(eventInfo.Date); data << uint32(eventInfo.Flags); data << int32(eventInfo.TextureID); - data << eventInfo.EventGuildID; + data << uint64(eventInfo.EventClubID); data << eventInfo.OwnerGuid; data.WriteBits(eventInfo.EventName.size(), 8); @@ -82,6 +82,7 @@ void WorldPackets::Calendar::CalendarGetEvent::Read() void WorldPackets::Calendar::CalendarCommunityFilter::Read() { + _worldPacket >> ClubID; _worldPacket >> MinLevel; _worldPacket >> MaxLevel; _worldPacket >> MaxRankOrder; @@ -92,26 +93,45 @@ ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Calendar::CalendarAddEv buffer >> invite.Guid; buffer >> invite.Status; buffer >> invite.Moderator; + if (buffer.ReadBit()) + invite.Unused_801_1 = boost::in_place(); + + if (buffer.ReadBit()) + invite.Unused_801_2 = boost::in_place(); + + if (buffer.ReadBit()) + invite.Unused_801_3 = boost::in_place(); + + if (invite.Unused_801_1) + buffer >> *invite.Unused_801_1; + + if (invite.Unused_801_2) + buffer >> *invite.Unused_801_2; + + if (invite.Unused_801_3) + buffer >> *invite.Unused_801_3; + return buffer; } ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Calendar::CalendarAddEventInfo& addEventInfo) { - uint8 titleLength = buffer.ReadBits(8); - uint16 descriptionLength = buffer.ReadBits(11); - + buffer >> addEventInfo.ClubID; buffer >> addEventInfo.EventType; buffer >> addEventInfo.TextureID; addEventInfo.Time = buffer.ReadPackedTime(); buffer >> addEventInfo.Flags; addEventInfo.Invites.resize(buffer.read()); - addEventInfo.Title = buffer.ReadString(titleLength); - addEventInfo.Description = buffer.ReadString(descriptionLength); + uint8 titleLength = buffer.ReadBits(8); + uint16 descriptionLength = buffer.ReadBits(11); for (WorldPackets::Calendar::CalendarAddEventInviteInfo& invite : addEventInfo.Invites) buffer >> invite; + addEventInfo.Title = buffer.ReadString(titleLength); + addEventInfo.Description = buffer.ReadString(descriptionLength); + return buffer; } @@ -121,20 +141,28 @@ void WorldPackets::Calendar::CalendarAddEvent::Read() _worldPacket >> MaxSize; } -void WorldPackets::Calendar::CalendarUpdateEvent::Read() +ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Calendar::CalendarUpdateEventInfo& updateEventInfo) { - _worldPacket >> EventInfo.EventID; - _worldPacket >> EventInfo.ModeratorID; - _worldPacket >> EventInfo.EventType; - _worldPacket >> EventInfo.TextureID; - EventInfo.Time = _worldPacket.ReadPackedTime(); - _worldPacket >> EventInfo.Flags; + buffer >> updateEventInfo.ClubID; + buffer >> updateEventInfo.EventID; + buffer >> updateEventInfo.ModeratorID; + buffer >> updateEventInfo.EventType; + buffer >> updateEventInfo.TextureID; + updateEventInfo.Time = buffer.ReadPackedTime(); + buffer >> updateEventInfo.Flags; - uint8 titleLen = _worldPacket.ReadBits(8); - uint16 descLen = _worldPacket.ReadBits(11); + uint8 titleLen = buffer.ReadBits(8); + uint16 descLen = buffer.ReadBits(11); - EventInfo.Title = _worldPacket.ReadString(titleLen); - EventInfo.Description = _worldPacket.ReadString(descLen); + updateEventInfo.Title = buffer.ReadString(titleLen); + updateEventInfo.Description = buffer.ReadString(descLen); + + return buffer; +} + +void WorldPackets::Calendar::CalendarUpdateEvent::Read() +{ + _worldPacket >> EventInfo; _worldPacket >> MaxSize; } @@ -142,6 +170,7 @@ void WorldPackets::Calendar::CalendarRemoveEvent::Read() { _worldPacket >> EventID; _worldPacket >> ModeratorID; + _worldPacket >> ClubID; _worldPacket >> Flags; } @@ -149,6 +178,7 @@ void WorldPackets::Calendar::CalendarCopyEvent::Read() { _worldPacket >> EventID; _worldPacket >> ModeratorID; + _worldPacket >> EventClubID; Date = _worldPacket.ReadPackedTime(); } @@ -163,6 +193,7 @@ void WorldPackets::Calendar::CalendarEventInvite::Read() { _worldPacket >> EventID; _worldPacket >> ModeratorID; + _worldPacket >> ClubID; uint16 nameLen = _worldPacket.ReadBits(9); Creating = _worldPacket.ReadBit(); @@ -174,6 +205,7 @@ void WorldPackets::Calendar::CalendarEventInvite::Read() void WorldPackets::Calendar::CalendarEventSignUp::Read() { _worldPacket >> EventID; + _worldPacket >> ClubID; Tentative = _worldPacket.ReadBit(); } @@ -255,7 +287,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarSendEvent::Write() _worldPacket << uint32(Flags); _worldPacket.AppendPackedTime(Date); _worldPacket << uint32(LockDate); - _worldPacket << EventGuildID; + _worldPacket << uint64(EventClubID); _worldPacket << uint32(Invites.size()); _worldPacket.WriteBits(EventName.size(), 8); _worldPacket.WriteBits(Description.size(), 11); @@ -277,7 +309,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarEventInviteAlert::Write() _worldPacket << uint32(Flags); _worldPacket << uint8(EventType); _worldPacket << int32(TextureID); - _worldPacket << EventGuildID; + _worldPacket << uint64(EventClubID); _worldPacket << uint64(InviteID); _worldPacket << uint8(Status); _worldPacket << uint8(ModeratorStatus); @@ -344,6 +376,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarEventInviteRemovedAlert::Writ WorldPacket const* WorldPackets::Calendar::CalendarEventUpdatedAlert::Write() { + _worldPacket << uint64(EventClubID); _worldPacket << uint64(EventID); _worldPacket.AppendPackedTime(OriginalDate); @@ -462,8 +495,8 @@ WorldPacket const* WorldPackets::Calendar::CalendarEventInviteNotes::Write() _worldPacket << InviteGuid; _worldPacket << uint64(EventID); - _worldPacket.WriteBits(Notes.size(), 8); _worldPacket.WriteBit(ClearPending); + _worldPacket.WriteBits(Notes.size(), 8); _worldPacket.FlushBits(); _worldPacket.WriteString(Notes); diff --git a/src/server/game/Server/Packets/CalendarPackets.h b/src/server/game/Server/Packets/CalendarPackets.h index 6219c1a6878..7757e51144b 100644 --- a/src/server/game/Server/Packets/CalendarPackets.h +++ b/src/server/game/Server/Packets/CalendarPackets.h @@ -52,6 +52,7 @@ namespace WorldPackets void Read() override; + uint64 ClubID = 0; uint8 MinLevel = 1; uint8 MaxLevel = 100; uint8 MaxRankOrder = 0; @@ -62,10 +63,14 @@ namespace WorldPackets ObjectGuid Guid; uint8 Status = 0; uint8 Moderator = 0; + Optional Unused_801_1; + Optional Unused_801_2; + Optional Unused_801_3; }; struct CalendarAddEventInfo { + uint64 ClubID = 0; std::string Title; std::string Description; uint8 EventType = 0; @@ -88,6 +93,7 @@ namespace WorldPackets struct CalendarUpdateEventInfo { + uint64 ClubID = 0; uint64 EventID = 0; uint64 ModeratorID = 0; std::string Title; @@ -118,6 +124,7 @@ namespace WorldPackets uint64 ModeratorID = 0; uint64 EventID = 0; + uint64 ClubID = 0; uint32 Flags = 0; }; @@ -130,6 +137,7 @@ namespace WorldPackets uint64 ModeratorID = 0; uint64 EventID = 0; + uint64 EventClubID = 0; time_t Date = time_t(0); }; @@ -176,7 +184,7 @@ namespace WorldPackets time_t Date = time_t(0); uint32 Flags = 0; int32 TextureID = 0; - ObjectGuid EventGuildID; + uint64 EventClubID = 0; ObjectGuid OwnerGuid; }; @@ -213,7 +221,7 @@ namespace WorldPackets WorldPacket const* Write() override; ObjectGuid OwnerGuid; - ObjectGuid EventGuildID; + uint64 EventClubID = 0; uint64 EventID = 0; time_t Date = time_t(0); time_t LockDate = time_t(0); @@ -234,7 +242,7 @@ namespace WorldPackets WorldPacket const* Write() override; ObjectGuid OwnerGuid; - ObjectGuid EventGuildID; + uint64 EventClubID = 0; ObjectGuid InvitedByGuid; uint64 InviteID = 0; uint64 EventID = 0; @@ -258,6 +266,7 @@ namespace WorldPackets bool IsSignUp = false; bool Creating = true; uint64 EventID = 0; + uint64 ClubID = 0; std::string Name; }; @@ -343,6 +352,7 @@ namespace WorldPackets WorldPacket const* Write() override; + uint64 EventClubID = 0; uint64 EventID = 0; time_t Date = time_t(0); uint32 Flags = 0; @@ -395,6 +405,7 @@ namespace WorldPackets bool Tentative = false; uint64 EventID = 0; + uint64 ClubID = 0; }; class CalendarRemoveInvite final : public ClientPacket diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 538a2c7e1d5..3973c55cf0e 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -140,6 +140,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharacters ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharactersResult::CharacterInfo const& charInfo) { data << charInfo.Guid; + data << uint64(charInfo.GuildClubMemberID); data << uint8(charInfo.ListPosition); data << uint8(charInfo.Race); data << uint8(charInfo.Class); @@ -201,9 +202,9 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write() _worldPacket.WriteBit(Success); _worldPacket.WriteBit(IsDeletedCharacters); - _worldPacket.WriteBit(IsDemonHunterCreationAllowed); + _worldPacket.WriteBit(IsTestDemonHunterCreationAllowed); _worldPacket.WriteBit(HasDemonHunterOnRealm); - _worldPacket.WriteBit(Unknown7x); + _worldPacket.WriteBit(IsDemonHunterCreationAllowed); _worldPacket.WriteBit(DisabledClassesMask.is_initialized()); _worldPacket.WriteBit(IsAlliedRacesCreationAllowed); _worldPacket << uint32(Characters.size()); @@ -227,6 +228,7 @@ void WorldPackets::Character::CreateCharacter::Read() CreateInfo.reset(new CharacterCreateInfo()); uint32 nameLength = _worldPacket.ReadBits(6); bool const hasTemplateSet = _worldPacket.ReadBit(); + CreateInfo->IsTrialBoost = _worldPacket.ReadBit(); _worldPacket >> CreateInfo->Race; _worldPacket >> CreateInfo->Class; @@ -246,6 +248,7 @@ void WorldPackets::Character::CreateCharacter::Read() WorldPacket const* WorldPackets::Character::CreateChar::Write() { _worldPacket << uint8(Code); + _worldPacket << Guid; return &_worldPacket; } diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 1f4ce11621a..fb5984efc8a 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -56,6 +56,7 @@ namespace WorldPackets std::array CustomDisplay = { }; uint8 OutfitId = 0; Optional TemplateSet; + bool IsTrialBoost = false; std::string Name; /// Server side data @@ -121,6 +122,7 @@ namespace WorldPackets CharacterInfo(Field* fields); ObjectGuid Guid; + uint64 GuildClubMemberID = 0; ///< same as bgs.protocol.club.v1.MemberId.unique_id, guessed basing on SMSG_QUERY_PLAYER_NAME_RESPONSE (that one is known) std::string Name; uint8 ListPosition = 0; ///< Order of the characters in list uint8 Race = 0; @@ -170,22 +172,22 @@ namespace WorldPackets struct RaceUnlock { - int32 RaceID; - bool HasExpansion; - bool HasAchievement; - bool HasHeritageArmor; + int32 RaceID = 0; + bool HasExpansion = false; + bool HasAchievement = false; + bool HasHeritageArmor = false; }; EnumCharactersResult() : ServerPacket(SMSG_ENUM_CHARACTERS_RESULT) { } WorldPacket const* Write() override; - bool Success = false; ///< - bool IsDeletedCharacters = false; ///< used for character undelete list - bool IsDemonHunterCreationAllowed = false; ///< used for demon hunter early access - bool HasDemonHunterOnRealm = false; - bool Unknown7x = false; - bool IsAlliedRacesCreationAllowed = false; + bool Success = false; ///< + bool IsDeletedCharacters = false; ///< used for character undelete list + bool IsTestDemonHunterCreationAllowed = false; ///< allows client to skip 1 per realm and level 70 requirements + bool HasDemonHunterOnRealm = false; + bool IsDemonHunterCreationAllowed = false; ///< used for demon hunter early access + bool IsAlliedRacesCreationAllowed = false; int32 MaxCharacterLevel = 1; Optional DisabledClassesMask; @@ -225,6 +227,7 @@ namespace WorldPackets WorldPacket const* Write() override; uint8 Code = 0; ///< Result code @see enum ResponseCodes + ObjectGuid Guid; }; class CharDelete final : public ClientPacket @@ -537,7 +540,7 @@ namespace WorldPackets class InitialSetup final : public ServerPacket { public: - InitialSetup() : ServerPacket(SMSG_INITIAL_SETUP, 1 + 1 + 4 + 4) { } + InitialSetup() : ServerPacket(SMSG_INITIAL_SETUP, 1 + 1) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp index 1200caaa1be..044fe086f48 100644 --- a/src/server/game/Server/Packets/ChatPackets.cpp +++ b/src/server/game/Server/Packets/ChatPackets.cpp @@ -70,6 +70,7 @@ void WorldPackets::Chat::ChatAddonMessageTargeted::Read() _worldPacket.ResetBitPos(); _worldPacket >> Params; + Target = _worldPacket.ReadString(targetLen); } void WorldPackets::Chat::ChatMessageDND::Read() @@ -159,17 +160,17 @@ void WorldPackets::Chat::Chat::SetReceiver(WorldObject const* receiver, LocaleCo WorldPacket const* WorldPackets::Chat::Chat::Write() { - _worldPacket << SlashCmd; - _worldPacket << _Language; + _worldPacket << uint8(SlashCmd); + _worldPacket << uint32(_Language); _worldPacket << SenderGUID; _worldPacket << SenderGuildGUID; _worldPacket << SenderAccountGUID; _worldPacket << TargetGUID; - _worldPacket << TargetVirtualAddress; - _worldPacket << SenderVirtualAddress; + _worldPacket << uint32(TargetVirtualAddress); + _worldPacket << uint32(SenderVirtualAddress); _worldPacket << PartyGUID; - _worldPacket << AchievementID; - _worldPacket << DisplayTime; + _worldPacket << uint32(AchievementID); + _worldPacket << float(DisplayTime); _worldPacket.WriteBits(SenderName.length(), 11); _worldPacket.WriteBits(TargetName.length(), 11); _worldPacket.WriteBits(Prefix.length(), 5); @@ -178,6 +179,7 @@ WorldPacket const* WorldPackets::Chat::Chat::Write() _worldPacket.WriteBits(_ChatFlags, 11); _worldPacket.WriteBit(HideChatLog); _worldPacket.WriteBit(FakeSenderName); + _worldPacket.WriteBit(Unused_801.is_initialized()); _worldPacket.FlushBits(); _worldPacket.WriteString(SenderName); @@ -186,6 +188,9 @@ WorldPacket const* WorldPackets::Chat::Chat::Write() _worldPacket.WriteString(_Channel); _worldPacket.WriteString(ChatText); + if (Unused_801) + _worldPacket << uint32(*Unused_801); + return &_worldPacket; } diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h index 9bc47589574..cbb9da156b0 100644 --- a/src/server/game/Server/Packets/ChatPackets.h +++ b/src/server/game/Server/Packets/ChatPackets.h @@ -53,7 +53,7 @@ namespace WorldPackets class ChatMessageWhisper final : public ClientPacket { public: - ChatMessageWhisper(WorldPacket&& packet) : ClientPacket(std::move(packet)) { } + ChatMessageWhisper(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_MESSAGE_WHISPER, std::move(packet)) { } void Read() override; @@ -66,7 +66,7 @@ namespace WorldPackets class ChatMessageChannel final : public ClientPacket { public: - ChatMessageChannel(WorldPacket&& packet) : ClientPacket(std::move(packet)) { } + ChatMessageChannel(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_MESSAGE_CHANNEL, std::move(packet)) { } void Read() override; @@ -150,7 +150,7 @@ namespace WorldPackets WorldPacket const* Write() override; uint8 SlashCmd = 0; ///< @see enum ChatMsg - uint8 _Language = LANG_UNIVERSAL; + uint32 _Language = LANG_UNIVERSAL; ObjectGuid SenderGUID; ObjectGuid SenderGuildGUID; ObjectGuid SenderAccountGUID; @@ -166,6 +166,7 @@ namespace WorldPackets uint32 AchievementID = 0; uint8 _ChatFlags = 0; ///< @see enum ChatFlags float DisplayTime = 0.0f; + Optional Unused_801; bool HideChatLog = false; bool FakeSenderName = false; }; diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp index 22196336960..243a7fd6e43 100644 --- a/src/server/game/Server/Packets/CombatLogPackets.cpp +++ b/src/server/game/Server/Packets/CombatLogPackets.cpp @@ -26,6 +26,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellNonMeleeDamageLog::Write() *this << int32(SpellID); *this << int32(SpellXSpellVisualID); *this << int32(Damage); + *this << int32(OriginalDamage); *this << int32(Overkill); *this << uint8(SchoolMask); *this << int32(Absorbed); @@ -35,11 +36,11 @@ WorldPacket const* WorldPackets::CombatLog::SpellNonMeleeDamageLog::Write() WriteBits(Flags, 7); WriteBit(false); // Debug info WriteLogDataBit(); - WriteBit(SandboxScaling.is_initialized()); + WriteBit(ContentTuning.is_initialized()); FlushBits(); WriteLogData(); - if (SandboxScaling) - *this << *SandboxScaling; + if (ContentTuning) + *this << *ContentTuning; return &_worldPacket; } @@ -61,12 +62,12 @@ WorldPacket const* WorldPackets::CombatLog::EnvironmentalDamageLog::Write() WorldPacket const* WorldPackets::CombatLog::SpellExecuteLog::Write() { *this << Caster; - *this << SpellID; + *this << int32(SpellID); *this << uint32(Effects.size()); for (SpellLogEffect const& effect : Effects) { - *this << effect.Effect; + *this << int32(effect.Effect); *this << uint32(effect.PowerDrainTargets.size()); *this << uint32(effect.ExtraAttacksTargets.size()); @@ -78,32 +79,32 @@ WorldPacket const* WorldPackets::CombatLog::SpellExecuteLog::Write() for (SpellLogEffectPowerDrainParams const& powerDrainTarget : effect.PowerDrainTargets) { *this << powerDrainTarget.Victim; - *this << powerDrainTarget.Points; - *this << powerDrainTarget.PowerType; - *this << powerDrainTarget.Amplitude; + *this << uint32(powerDrainTarget.Points); + *this << uint32(powerDrainTarget.PowerType); + *this << float(powerDrainTarget.Amplitude); } for (SpellLogEffectExtraAttacksParams const& extraAttacksTarget : effect.ExtraAttacksTargets) { *this << extraAttacksTarget.Victim; - *this << extraAttacksTarget.NumAttacks; + *this << uint32(extraAttacksTarget.NumAttacks); } for (SpellLogEffectDurabilityDamageParams const& durabilityDamageTarget : effect.DurabilityDamageTargets) { *this << durabilityDamageTarget.Victim; - *this << durabilityDamageTarget.ItemID; - *this << durabilityDamageTarget.Amount; + *this << int32(durabilityDamageTarget.ItemID); + *this << int32(durabilityDamageTarget.Amount); } for (SpellLogEffectGenericVictimParams const& genericVictimTarget : effect.GenericVictimTargets) *this << genericVictimTarget.Victim; for (SpellLogEffectTradeSkillItemParams const& tradeSkillTarget : effect.TradeSkillTargets) - *this << tradeSkillTarget.ItemID; + *this << int32(tradeSkillTarget.ItemID); for (SpellLogEffectFeedPetParams const& feedPetTarget : effect.FeedPetTargets) - *this << feedPetTarget.ItemID; + *this << int32(feedPetTarget.ItemID); } WriteLogDataBit(); @@ -119,13 +120,14 @@ WorldPacket const* WorldPackets::CombatLog::SpellHealLog::Write() *this << CasterGUID; *this << int32(SpellID); *this << int32(Health); + *this << int32(OriginalHeal); *this << int32(OverHeal); *this << int32(Absorbed); WriteBit(Crit); WriteBit(CritRollMade.is_initialized()); WriteBit(CritRollNeeded.is_initialized()); WriteLogDataBit(); - WriteBit(SandboxScaling.is_initialized()); + WriteBit(ContentTuning.is_initialized()); FlushBits(); WriteLogData(); @@ -136,8 +138,8 @@ WorldPacket const* WorldPackets::CombatLog::SpellHealLog::Write() if (CritRollNeeded) *this << *CritRollNeeded; - if (SandboxScaling) - *this << *SandboxScaling; + if (ContentTuning) + *this << *ContentTuning; return &_worldPacket; } @@ -155,24 +157,24 @@ WorldPacket const* WorldPackets::CombatLog::SpellPeriodicAuraLog::Write() { *this << int32(effect.Effect); *this << int32(effect.Amount); + *this << int32(effect.OriginalDamage); *this << int32(effect.OverHealOrKill); *this << int32(effect.SchoolMaskOrPower); *this << int32(effect.AbsorbedOrAmplitude); *this << int32(effect.Resisted); WriteBit(effect.Crit); WriteBit(effect.DebugInfo.is_initialized()); - WriteBit(effect.SandboxScaling.is_initialized()); + WriteBit(effect.ContentTuning.is_initialized()); FlushBits(); - if (effect.SandboxScaling) - *this << *effect.SandboxScaling; + if (effect.ContentTuning) + *this << *effect.ContentTuning; if (effect.DebugInfo) { *this << float(effect.DebugInfo->CritRollMade); *this << float(effect.DebugInfo->CritRollNeeded); } - } WriteLogData(); @@ -280,6 +282,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellDamageShield::Write() *this << Defender; *this << int32(SpellID); *this << int32(TotalDamage); + *this << int32(OriginalDamage); *this << int32(OverKill); *this << int32(SchoolMask); *this << int32(LogAbsorbed); @@ -297,6 +300,7 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write() attackRoundInfo << AttackerGUID; attackRoundInfo << VictimGUID; attackRoundInfo << int32(Damage); + attackRoundInfo << int32(OriginalDamage); attackRoundInfo << int32(OverDamage); attackRoundInfo << uint8(SubDmg.is_initialized()); if (SubDmg) @@ -338,15 +342,16 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write() if (HitInfo & (HITINFO_BLOCK | HITINFO_UNK12)) attackRoundInfo << float(Unk); - attackRoundInfo << uint8(SandboxScaling.Type); - attackRoundInfo << uint8(SandboxScaling.TargetLevel); - attackRoundInfo << uint8(SandboxScaling.Expansion); - attackRoundInfo << uint8(SandboxScaling.Class); - attackRoundInfo << uint8(SandboxScaling.TargetMinScalingLevel); - attackRoundInfo << uint8(SandboxScaling.TargetMaxScalingLevel); - attackRoundInfo << int16(SandboxScaling.PlayerLevelDelta); - attackRoundInfo << int8(SandboxScaling.TargetScalingLevelDelta); - attackRoundInfo << uint16(SandboxScaling.PlayerItemLevel); + attackRoundInfo << uint8(ContentTuning.Type); + attackRoundInfo << uint8(ContentTuning.TargetLevel); + attackRoundInfo << uint8(ContentTuning.Expansion); + attackRoundInfo << uint8(ContentTuning.TargetMinScalingLevel); + attackRoundInfo << uint8(ContentTuning.TargetMaxScalingLevel); + attackRoundInfo << int16(ContentTuning.PlayerLevelDelta); + attackRoundInfo << int8(ContentTuning.TargetScalingLevelDelta); + attackRoundInfo << uint16(ContentTuning.PlayerItemLevel); + attackRoundInfo << uint16(ContentTuning.ScalingHealthItemLevelCurveID); + attackRoundInfo << uint8(ContentTuning.ScalesWithItemLevel ? 1 : 0); WriteLogDataBit(); FlushBits(); diff --git a/src/server/game/Server/Packets/CombatLogPackets.h b/src/server/game/Server/Packets/CombatLogPackets.h index 88a427ac962..4f3d1361796 100644 --- a/src/server/game/Server/Packets/CombatLogPackets.h +++ b/src/server/game/Server/Packets/CombatLogPackets.h @@ -39,6 +39,7 @@ namespace WorldPackets int32 SpellID = 0; int32 SpellXSpellVisualID = 0; int32 Damage = 0; + int32 OriginalDamage = 0; int32 Overkill = -1; uint8 SchoolMask = 0; int32 ShieldBlock = 0; @@ -47,7 +48,7 @@ namespace WorldPackets int32 Absorbed = 0; int32 Flags = 0; // Optional DebugInfo; - Optional SandboxScaling; + Optional ContentTuning; }; class EnvironmentalDamageLog final : public CombatLogServerPacket @@ -99,12 +100,13 @@ namespace WorldPackets ObjectGuid TargetGUID; int32 SpellID = 0; int32 Health = 0; + int32 OriginalHeal = 0; int32 OverHeal = 0; int32 Absorbed = 0; bool Crit = false; Optional CritRollMade; Optional CritRollNeeded; - Optional SandboxScaling; + Optional ContentTuning; }; class SpellPeriodicAuraLog final : public CombatLogServerPacket @@ -120,13 +122,14 @@ namespace WorldPackets { int32 Effect = 0; int32 Amount = 0; + int32 OriginalDamage = 0; int32 OverHealOrKill = 0; int32 SchoolMaskOrPower = 0; int32 AbsorbedOrAmplitude = 0; int32 Resisted = 0; bool Crit = false; Optional DebugInfo; - Optional SandboxScaling; + Optional ContentTuning; }; SpellPeriodicAuraLog() : CombatLogServerPacket(SMSG_SPELL_PERIODIC_AURA_LOG, 16 + 16 + 4 + 4 + 1) { } @@ -267,6 +270,7 @@ namespace WorldPackets ObjectGuid Defender; int32 SpellID = 0; int32 TotalDamage = 0; + int32 OriginalDamage = 0; int32 OverKill = 0; int32 SchoolMask = 0; int32 LogAbsorbed = 0; @@ -308,6 +312,7 @@ namespace WorldPackets ObjectGuid AttackerGUID; ObjectGuid VictimGUID; int32 Damage = 0; + int32 OriginalDamage = 0; int32 OverDamage = -1; // (damage - health) or -1 if unit is still alive Optional SubDmg; uint8 VictimState = 0; @@ -317,7 +322,7 @@ namespace WorldPackets int32 RageGained = 0; UnkAttackerState UnkState; float Unk = 0.0f; - Spells::SandboxScalingData SandboxScaling; + Spells::ContentTuningParams ContentTuning; }; } } diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index 532779af445..b1e22a3746f 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -27,6 +27,7 @@ void WorldPackets::Spells::SpellCastLogData::Initialize(Unit const* unit) Health = unit->GetHealth(); AttackPower = unit->GetTotalAttackPowerValue(unit->getClass() == CLASS_HUNTER ? RANGED_ATTACK : BASE_ATTACK); SpellPower = unit->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_SPELL); + Armor = unit->GetArmor(); PowerData.emplace_back(int32(unit->GetPowerType()), unit->GetPower(unit->GetPowerType()), int32(0)); } @@ -35,6 +36,7 @@ void WorldPackets::Spells::SpellCastLogData::Initialize(Spell const* spell) Health = spell->GetCaster()->GetHealth(); AttackPower = spell->GetCaster()->GetTotalAttackPowerValue(spell->GetCaster()->getClass() == CLASS_HUNTER ? RANGED_ATTACK : BASE_ATTACK); SpellPower = spell->GetCaster()->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_SPELL); + Armor = spell->GetCaster()->GetArmor(); Powers primaryPowerType = spell->GetCaster()->GetPowerType(); bool primaryPowerAdded = false; for (SpellPowerCost const& cost : spell->GetPowerCost()) @@ -53,22 +55,22 @@ namespace WorldPackets namespace Spells { template - bool SandboxScalingData::GenerateDataForUnits(T* /*attacker*/, U* /*target*/) + bool ContentTuningParams::GenerateDataForUnits(T* /*attacker*/, U* /*target*/) { return false; } template<> - bool SandboxScalingData::GenerateDataForUnits(Creature* attacker, Player* target) + bool ContentTuningParams::GenerateDataForUnits(Creature* attacker, Player* target) { CreatureTemplate const* creatureTemplate = attacker->GetCreatureTemplate(); Type = TYPE_CREATURE_TO_PLAYER_DAMAGE; PlayerLevelDelta = target->GetInt32Value(ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); PlayerItemLevel = target->GetAverageItemLevel(); + ScalingHealthItemLevelCurveID = target->GetUInt32Value(UNIT_FIELD_SCALING_HEALTH_ITEM_LEVEL_CURVE_ID); TargetLevel = target->getLevel(); Expansion = creatureTemplate->RequiredExpansion; - Class = creatureTemplate->unit_class; TargetMinScalingLevel = uint8(creatureTemplate->levelScaling->MinLevel); TargetMaxScalingLevel = uint8(creatureTemplate->levelScaling->MaxLevel); TargetScalingLevelDelta = int8(attacker->GetInt32Value(UNIT_FIELD_SCALING_LEVEL_DELTA)); @@ -76,16 +78,16 @@ namespace WorldPackets } template<> - bool SandboxScalingData::GenerateDataForUnits(Player* attacker, Creature* target) + bool ContentTuningParams::GenerateDataForUnits(Player* attacker, Creature* target) { CreatureTemplate const* creatureTemplate = target->GetCreatureTemplate(); Type = TYPE_PLAYER_TO_CREATURE_DAMAGE; PlayerLevelDelta = attacker->GetInt32Value(ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); PlayerItemLevel = attacker->GetAverageItemLevel(); + ScalingHealthItemLevelCurveID = target->GetUInt32Value(UNIT_FIELD_SCALING_HEALTH_ITEM_LEVEL_CURVE_ID); TargetLevel = target->getLevel(); Expansion = creatureTemplate->RequiredExpansion; - Class = creatureTemplate->unit_class; TargetMinScalingLevel = uint8(creatureTemplate->levelScaling->MinLevel); TargetMaxScalingLevel = uint8(creatureTemplate->levelScaling->MaxLevel); TargetScalingLevelDelta = int8(target->GetInt32Value(UNIT_FIELD_SCALING_LEVEL_DELTA)); @@ -93,7 +95,7 @@ namespace WorldPackets } template<> - bool SandboxScalingData::GenerateDataForUnits(Creature* attacker, Creature* target) + bool ContentTuningParams::GenerateDataForUnits(Creature* attacker, Creature* target) { Creature* accessor = target->HasScalableLevels() ? target : attacker; CreatureTemplate const* creatureTemplate = accessor->GetCreatureTemplate(); @@ -103,7 +105,6 @@ namespace WorldPackets PlayerItemLevel = 0; TargetLevel = target->getLevel(); Expansion = creatureTemplate->RequiredExpansion; - Class = creatureTemplate->unit_class; TargetMinScalingLevel = uint8(creatureTemplate->levelScaling->MinLevel); TargetMaxScalingLevel = uint8(creatureTemplate->levelScaling->MaxLevel); TargetScalingLevelDelta = int8(accessor->GetInt32Value(UNIT_FIELD_SCALING_LEVEL_DELTA)); @@ -111,7 +112,7 @@ namespace WorldPackets } template<> - bool SandboxScalingData::GenerateDataForUnits(Unit* attacker, Unit* target) + bool ContentTuningParams::GenerateDataForUnits(Unit* attacker, Unit* target) { if (Player* playerAttacker = attacker->ToPlayer()) { @@ -152,6 +153,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData data << int64(spellCastLogData.Health); data << int32(spellCastLogData.AttackPower); data << int32(spellCastLogData.SpellPower); + data << int32(spellCastLogData.Armor); data.WriteBits(spellCastLogData.PowerData.size(), 9); data.FlushBits(); @@ -165,16 +167,18 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData return data; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SandboxScalingData const& sandboxScalingData) +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::ContentTuningParams const& contentTuningParams) { - data.WriteBits(sandboxScalingData.Type, 4); - data << int16(sandboxScalingData.PlayerLevelDelta); - data << uint16(sandboxScalingData.PlayerItemLevel); - data << uint8(sandboxScalingData.TargetLevel); - data << uint8(sandboxScalingData.Expansion); - data << uint8(sandboxScalingData.Class); - data << uint8(sandboxScalingData.TargetMinScalingLevel); - data << uint8(sandboxScalingData.TargetMaxScalingLevel); - data << int8(sandboxScalingData.TargetScalingLevelDelta); + data << int16(contentTuningParams.PlayerLevelDelta); + data << uint16(contentTuningParams.PlayerItemLevel); + data << uint16(contentTuningParams.ScalingHealthItemLevelCurveID); + data << uint8(contentTuningParams.TargetLevel); + data << uint8(contentTuningParams.Expansion); + data << uint8(contentTuningParams.TargetMinScalingLevel); + data << uint8(contentTuningParams.TargetMaxScalingLevel); + data << int8(contentTuningParams.TargetScalingLevelDelta); + data.WriteBits(contentTuningParams.Type, 4); + data.WriteBit(contentTuningParams.ScalesWithItemLevel); + data.FlushBits(); return data; } diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.h b/src/server/game/Server/Packets/CombatLogPacketsCommon.h index 172f94e7031..ea3589ce4f7 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.h +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.h @@ -41,31 +41,33 @@ namespace WorldPackets int64 Health = 0; int32 AttackPower = 0; int32 SpellPower = 0; + int32 Armor = 0; std::vector PowerData; void Initialize(Unit const* unit); void Initialize(Spell const* spell); }; - struct SandboxScalingData + struct ContentTuningParams { - enum SandboxScalingDataType : uint32 + enum ContentTuningType : uint32 { - TYPE_PLAYER_TO_PLAYER = 1, // NYI - TYPE_CREATURE_TO_PLAYER_DAMAGE = 2, - TYPE_PLAYER_TO_CREATURE_DAMAGE = 3, + TYPE_PLAYER_TO_PLAYER = 7, // NYI + TYPE_CREATURE_TO_PLAYER_DAMAGE = 1, + TYPE_PLAYER_TO_CREATURE_DAMAGE = 2, TYPE_CREATURE_TO_CREATURE_DAMAGE = 4 }; uint32 Type = 0; int16 PlayerLevelDelta = 0; uint16 PlayerItemLevel = 0; + uint16 ScalingHealthItemLevelCurveID = 0; uint8 TargetLevel = 0; uint8 Expansion = 0; - uint8 Class = 0; uint8 TargetMinScalingLevel = 0; uint8 TargetMaxScalingLevel = 0; int8 TargetScalingLevelDelta = 0; + bool ScalesWithItemLevel = false; template bool GenerateDataForUnits(T* attacker, U* target); @@ -126,6 +128,6 @@ namespace WorldPackets } ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData const& spellCastLogData); -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SandboxScalingData const& sandboxScalingData); +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::ContentTuningParams const& contentTuningParams); #endif // CombatLogPacketsCommon_h__ diff --git a/src/server/game/Server/Packets/CombatPackets.cpp b/src/server/game/Server/Packets/CombatPackets.cpp index 5048595314c..63fc4ac1ed1 100644 --- a/src/server/game/Server/Packets/CombatPackets.cpp +++ b/src/server/game/Server/Packets/CombatPackets.cpp @@ -96,7 +96,7 @@ WorldPacket const* WorldPackets::Combat::AIReaction::Write() WorldPacket const* WorldPackets::Combat::AttackSwingError::Write() { - _worldPacket.WriteBits(Reason, 2); + _worldPacket.WriteBits(Reason, 3); _worldPacket.FlushBits(); return &_worldPacket; } @@ -107,8 +107,8 @@ WorldPacket const* WorldPackets::Combat::PowerUpdate::Write() _worldPacket << uint32(Powers.size()); for (PowerUpdatePower const& power : Powers) { - _worldPacket << power.Power; - _worldPacket << power.PowerType; + _worldPacket << int32(power.Power); + _worldPacket << uint8(power.PowerType); } return &_worldPacket; diff --git a/src/server/game/Server/Packets/CombatPackets.h b/src/server/game/Server/Packets/CombatPackets.h index 446d9f5453b..313d573eae1 100644 --- a/src/server/game/Server/Packets/CombatPackets.h +++ b/src/server/game/Server/Packets/CombatPackets.h @@ -41,9 +41,9 @@ namespace WorldPackets public: enum AttackSwingErr : uint8 { - CantAttack = 0, + NotInRange = 0, BadFacing = 1, - NotInRange = 2, + CantAttack = 2, DeadTarget = 3 }; diff --git a/src/server/game/Server/Packets/DuelPackets.cpp b/src/server/game/Server/Packets/DuelPackets.cpp index f76ccecaa89..ccee13b731a 100644 --- a/src/server/game/Server/Packets/DuelPackets.cpp +++ b/src/server/game/Server/Packets/DuelPackets.cpp @@ -59,6 +59,7 @@ void WorldPackets::Duel::DuelResponse::Read() { _worldPacket >> ArbiterGUID; Accepted = _worldPacket.ReadBit(); + Forfeited = _worldPacket.ReadBit(); } WorldPacket const* WorldPackets::Duel::DuelWinner::Write() diff --git a/src/server/game/Server/Packets/DuelPackets.h b/src/server/game/Server/Packets/DuelPackets.h index b45a8b42ba7..efa2701741a 100644 --- a/src/server/game/Server/Packets/DuelPackets.h +++ b/src/server/game/Server/Packets/DuelPackets.h @@ -103,6 +103,7 @@ namespace WorldPackets ObjectGuid ArbiterGUID; bool Accepted = false; + bool Forfeited = false; }; class DuelWinner final : public ServerPacket diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.h b/src/server/game/Server/Packets/EquipmentSetPackets.h index 1dd7040ec32..5c17fdc3cae 100644 --- a/src/server/game/Server/Packets/EquipmentSetPackets.h +++ b/src/server/game/Server/Packets/EquipmentSetPackets.h @@ -28,7 +28,7 @@ namespace WorldPackets class EquipmentSetID final : public ServerPacket { public: - EquipmentSetID() : ServerPacket(SMSG_EQUIPMENT_SET_ID, 8 + 4) { } + EquipmentSetID() : ServerPacket(SMSG_EQUIPMENT_SET_ID, 8 + 4 + 4) { } WorldPacket const* Write() override; @@ -89,7 +89,7 @@ namespace WorldPackets class UseEquipmentSetResult final : public ServerPacket { public: - UseEquipmentSetResult() : ServerPacket(SMSG_USE_EQUIPMENT_SET_RESULT, 1) { } + UseEquipmentSetResult() : ServerPacket(SMSG_USE_EQUIPMENT_SET_RESULT, 8 + 1) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h index a7bd016909c..bf83f006b1e 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.h +++ b/src/server/game/Server/Packets/GarrisonPackets.h @@ -249,7 +249,7 @@ namespace WorldPackets class GarrisonLearnBlueprintResult final : public ServerPacket { public: - GarrisonLearnBlueprintResult() : ServerPacket(SMSG_GARRISON_LEARN_BLUEPRINT_RESULT, 4 + 4) { } + GarrisonLearnBlueprintResult() : ServerPacket(SMSG_GARRISON_LEARN_BLUEPRINT_RESULT, 4 + 4 + 4) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/GuildFinderPackets.cpp b/src/server/game/Server/Packets/GuildFinderPackets.cpp index ac8bcfea9df..2ce269fbdcb 100644 --- a/src/server/game/Server/Packets/GuildFinderPackets.cpp +++ b/src/server/game/Server/Packets/GuildFinderPackets.cpp @@ -108,7 +108,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::GuildFinder::GuildPostDat data << int32(post.Availability); data << int32(post.ClassRoles); data << int32(post.LevelRange); - data << uint32(post.SecondsRemaining); + data << int32(post.SecondsRemaining); data.WriteString(post.Comment); return data; } diff --git a/src/server/game/Server/Packets/GuildFinderPackets.h b/src/server/game/Server/Packets/GuildFinderPackets.h index 1fe3183156a..94084934fc1 100644 --- a/src/server/game/Server/Packets/GuildFinderPackets.h +++ b/src/server/game/Server/Packets/GuildFinderPackets.h @@ -157,7 +157,7 @@ namespace WorldPackets int32 Availability = 0; int32 ClassRoles = 0; int32 LevelRange = 0; - time_t SecondsRemaining = time_t(0); + int32 SecondsRemaining = 0; std::string Comment; }; diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index 777891b3cef..2a3739f2470 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -63,9 +63,9 @@ WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write() WorldPacket const* WorldPackets::Guild::GuildRoster::Write() { - _worldPacket << NumAccounts; + _worldPacket << int32(NumAccounts); _worldPacket.AppendPackedTime(CreateDate); - _worldPacket << GuildFlags; + _worldPacket << int32(GuildFlags); _worldPacket << uint32(MemberData.size()); _worldPacket.WriteBits(WelcomeText.length(), 10); _worldPacket.WriteBits(InfoText.length(), 11); @@ -98,8 +98,8 @@ void WorldPackets::Guild::GuildUpdateMotdText::Read() WorldPacket const* WorldPackets::Guild::GuildCommandResult::Write() { - _worldPacket << Result; - _worldPacket << Command; + _worldPacket << int32(Result); + _worldPacket << int32(Command); _worldPacket.WriteBits(Name.length(), 8); _worldPacket.FlushBits(); @@ -127,17 +127,17 @@ WorldPacket const* WorldPackets::Guild::GuildInvite::Write() _worldPacket.WriteBits(OldGuildName.length(), 7); _worldPacket.FlushBits(); - _worldPacket << InviterVirtualRealmAddress; - _worldPacket << GuildVirtualRealmAddress; + _worldPacket << uint32(InviterVirtualRealmAddress); + _worldPacket << uint32(GuildVirtualRealmAddress); _worldPacket << GuildGUID; - _worldPacket << OldGuildVirtualRealmAddress; + _worldPacket << uint32(OldGuildVirtualRealmAddress); _worldPacket << OldGuildGUID; - _worldPacket << EmblemStyle; - _worldPacket << EmblemColor; - _worldPacket << BorderStyle; - _worldPacket << BorderColor; - _worldPacket << Background; - _worldPacket << AchievementPoints; + _worldPacket << uint32(EmblemStyle); + _worldPacket << uint32(EmblemColor); + _worldPacket << uint32(BorderStyle); + _worldPacket << uint32(BorderColor); + _worldPacket << uint32(Background); + _worldPacket << int32(AchievementPoints); _worldPacket.WriteString(InviterName); _worldPacket.WriteString(GuildName); @@ -148,9 +148,9 @@ WorldPacket const* WorldPackets::Guild::GuildInvite::Write() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterProfessionData const& rosterProfessionData) { - data << rosterProfessionData.DbID; - data << rosterProfessionData.Rank; - data << rosterProfessionData.Step; + data << int32(rosterProfessionData.DbID); + data << int32(rosterProfessionData.Rank); + data << int32(rosterProfessionData.Step); return data; } @@ -158,20 +158,20 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterProfess ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberData const& rosterMemberData) { data << rosterMemberData.Guid; - data << rosterMemberData.RankID; - data << rosterMemberData.AreaID; - data << rosterMemberData.PersonalAchievementPoints; - data << rosterMemberData.GuildReputation; - data << rosterMemberData.LastSave; + data << int32(rosterMemberData.RankID); + data << int32(rosterMemberData.AreaID); + data << int32(rosterMemberData.PersonalAchievementPoints); + data << int32(rosterMemberData.GuildReputation); + data << float(rosterMemberData.LastSave); for (uint8 i = 0; i < 2; i++) data << rosterMemberData.Profession[i]; - data << rosterMemberData.VirtualRealmAddress; - data << rosterMemberData.Status; - data << rosterMemberData.Level; - data << rosterMemberData.ClassID; - data << rosterMemberData.Gender; + data << uint32(rosterMemberData.VirtualRealmAddress); + data << uint8(rosterMemberData.Status); + data << uint8(rosterMemberData.Level); + data << uint8(rosterMemberData.ClassID); + data << uint8(rosterMemberData.Gender); data.WriteBits(rosterMemberData.Name.length(), 6); data.WriteBits(rosterMemberData.Note.length(), 8); @@ -190,7 +190,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberD WorldPacket const* WorldPackets::Guild::GuildEventPresenceChange::Write() { _worldPacket << Guid; - _worldPacket << VirtualRealmAddress; + _worldPacket << uint32(VirtualRealmAddress); _worldPacket.WriteBits(Name.length(), 6); _worldPacket.WriteBit(LoggedOn); @@ -215,7 +215,7 @@ WorldPacket const* WorldPackets::Guild::GuildEventMotd::Write() WorldPacket const* WorldPackets::Guild::GuildEventPlayerJoined::Write() { _worldPacket << Guid; - _worldPacket << VirtualRealmAddress; + _worldPacket << uint32(VirtualRealmAddress); _worldPacket.WriteBits(Name.length(), 6); _worldPacket.FlushBits(); @@ -249,9 +249,9 @@ WorldPacket const* WorldPackets::Guild::GuildEventLogQueryResults::Write() { _worldPacket << entry.PlayerGUID; _worldPacket << entry.OtherGUID; - _worldPacket << entry.TransactionType; - _worldPacket << entry.RankID; - _worldPacket << entry.TransactionDate; + _worldPacket << uint8(entry.TransactionType); + _worldPacket << uint8(entry.RankID); + _worldPacket << uint32(entry.TransactionDate); } return &_worldPacket; @@ -269,12 +269,12 @@ WorldPacket const* WorldPackets::Guild::GuildEventPlayerLeft::Write() _worldPacket.FlushBits(); _worldPacket << RemoverGUID; - _worldPacket << RemoverVirtualRealmAddress; + _worldPacket << uint32(RemoverVirtualRealmAddress); _worldPacket.WriteString(RemoverName); } _worldPacket << LeaverGUID; - _worldPacket << LeaverVirtualRealmAddress; + _worldPacket << uint32(LeaverVirtualRealmAddress); _worldPacket.WriteString(LeaverName); return &_worldPacket; @@ -282,16 +282,16 @@ WorldPacket const* WorldPackets::Guild::GuildEventPlayerLeft::Write() WorldPacket const* WorldPackets::Guild::GuildPermissionsQueryResults::Write() { - _worldPacket << RankID; - _worldPacket << WithdrawGoldLimit; - _worldPacket << Flags; - _worldPacket << NumTabs; + _worldPacket << uint32(RankID); + _worldPacket << int32(WithdrawGoldLimit); + _worldPacket << int32(Flags); + _worldPacket << int32(NumTabs); _worldPacket << uint32(Tab.size()); for (GuildRankTabPermissions const& tab : Tab) { - _worldPacket << tab.Flags; - _worldPacket << tab.WithdrawItemLimit; + _worldPacket << int32(tab.Flags); + _worldPacket << int32(tab.WithdrawItemLimit); } return &_worldPacket; @@ -325,9 +325,9 @@ WorldPacket const* WorldPackets::Guild::GuildEventNewLeader::Write() _worldPacket.FlushBits(); _worldPacket << OldLeaderGUID; - _worldPacket << OldLeaderVirtualRealmAddress; + _worldPacket << uint32(OldLeaderVirtualRealmAddress); _worldPacket << NewLeaderGUID; - _worldPacket << NewLeaderVirtualRealmAddress; + _worldPacket << uint32(NewLeaderVirtualRealmAddress); _worldPacket.WriteString(OldLeaderName); _worldPacket.WriteString(NewLeaderName); @@ -337,7 +337,7 @@ WorldPacket const* WorldPackets::Guild::GuildEventNewLeader::Write() WorldPacket const* WorldPackets::Guild::GuildEventTabModified::Write() { - _worldPacket << Tab; + _worldPacket << int32(Tab); _worldPacket.WriteBits(Name.length(), 7); _worldPacket.WriteBits(Icon.length(), 9); @@ -358,15 +358,15 @@ WorldPacket const* WorldPackets::Guild::GuildEventTabTextChanged::Write() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRankData const& rankData) { - data << rankData.RankID; - data << rankData.RankOrder; - data << rankData.Flags; - data << rankData.WithdrawGoldLimit; + data << uint32(rankData.RankID); + data << uint32(rankData.RankOrder); + data << uint32(rankData.Flags); + data << uint32(rankData.WithdrawGoldLimit); for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; i++) { - data << rankData.TabFlags[i]; - data << rankData.TabWithdrawItemLimit[i]; + data << uint32(rankData.TabFlags[i]); + data << uint32(rankData.TabWithdrawItemLimit[i]); } data.WriteBits(rankData.RankName.length(), 7); @@ -416,7 +416,7 @@ WorldPacket const* WorldPackets::Guild::GuildSendRankChange::Write() { _worldPacket << Officer; _worldPacket << Other; - _worldPacket << RankID; + _worldPacket << uint32(RankID); _worldPacket.WriteBit(Promote); _worldPacket.FlushBits(); @@ -499,25 +499,25 @@ WorldPacket const* WorldPackets::Guild::GuildPartyState::Write() _worldPacket.WriteBit(InGuildParty); _worldPacket.FlushBits(); - _worldPacket << NumMembers; - _worldPacket << NumRequired; - _worldPacket << GuildXPEarnedMult; + _worldPacket << int32(NumMembers); + _worldPacket << int32(NumRequired); + _worldPacket << float(GuildXPEarnedMult); return &_worldPacket; } ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRewardItem const& rewardItem) { - data << rewardItem.ItemID; - data << rewardItem.Unk4; + data << uint32(rewardItem.ItemID); + data << uint32(rewardItem.Unk4); data << uint32(rewardItem.AchievementsRequired.size()); data << uint64(rewardItem.RaceMask); - data << rewardItem.MinGuildLevel; - data << rewardItem.MinGuildRep; - data << rewardItem.Cost; + data << int32(rewardItem.MinGuildLevel); + data << int32(rewardItem.MinGuildRep); + data << uint64(rewardItem.Cost); - for (uint8 i = 0; i < rewardItem.AchievementsRequired.size(); i++) - data << rewardItem.AchievementsRequired[i]; + for (std::size_t i = 0; i < rewardItem.AchievementsRequired.size(); i++) + data << uint32(rewardItem.AchievementsRequired[i]); return data; } @@ -529,7 +529,7 @@ void WorldPackets::Guild::RequestGuildRewardsList::Read() WorldPacket const* WorldPackets::Guild::GuildRewardList::Write() { - _worldPacket << Version; + _worldPacket << int32(Version); _worldPacket << uint32(RewardItems.size()); for (GuildRewardItem const& item : RewardItems) @@ -592,9 +592,9 @@ void WorldPackets::Guild::GuildBankWithdrawMoney::Read() WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write() { - _worldPacket << Money; - _worldPacket << Tab; - _worldPacket << WithdrawalsRemaining; + _worldPacket << uint64(Money); + _worldPacket << int32(Tab); + _worldPacket << int32(WithdrawalsRemaining); _worldPacket << uint32(TabInfo.size()); _worldPacket << uint32(ItemInfo.size()); _worldPacket.WriteBit(FullUpdate); @@ -602,7 +602,7 @@ WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write() for (GuildBankTabInfo const& tab : TabInfo) { - _worldPacket << tab.TabIndex; + _worldPacket << int32(tab.TabIndex); _worldPacket.WriteBits(tab.Name.length(), 7); _worldPacket.WriteBits(tab.Icon.length(), 9); _worldPacket.FlushBits(); @@ -613,12 +613,12 @@ WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write() for (GuildBankItemInfo const& item : ItemInfo) { - _worldPacket << item.Slot; - _worldPacket << item.Count; - _worldPacket << item.EnchantmentID; - _worldPacket << item.Charges; - _worldPacket << item.OnUseEnchantmentID; - _worldPacket << item.Flags; + _worldPacket << int32(item.Slot); + _worldPacket << int32(item.Count); + _worldPacket << int32(item.EnchantmentID); + _worldPacket << int32(item.Charges); + _worldPacket << int32(item.OnUseEnchantmentID); + _worldPacket << int32(item.Flags); _worldPacket << item.Item; _worldPacket.WriteBits(item.SocketEnchant.size(), 2); _worldPacket.WriteBit(item.Locked); @@ -658,7 +658,7 @@ void WorldPackets::Guild::GuildBankLogQuery::Read() WorldPacket const* WorldPackets::Guild::GuildBankLogQueryResults::Write() { - _worldPacket << Tab; + _worldPacket << int32(Tab); _worldPacket << uint32(Entry.size()); _worldPacket.WriteBit(WeeklyBonusMoney.is_initialized()); _worldPacket.FlushBits(); @@ -666,8 +666,8 @@ WorldPacket const* WorldPackets::Guild::GuildBankLogQueryResults::Write() for (GuildBankLogEntry const& logEntry : Entry) { _worldPacket << logEntry.PlayerGUID; - _worldPacket << logEntry.TimeOffset; - _worldPacket << logEntry.EntryType; + _worldPacket << uint32(logEntry.TimeOffset); + _worldPacket << int8(logEntry.EntryType); _worldPacket.WriteBit(logEntry.Money.is_initialized()); _worldPacket.WriteBit(logEntry.ItemID.is_initialized()); @@ -676,20 +676,20 @@ WorldPacket const* WorldPackets::Guild::GuildBankLogQueryResults::Write() _worldPacket.FlushBits(); if (logEntry.Money.is_initialized()) - _worldPacket << *logEntry.Money; + _worldPacket << uint64(*logEntry.Money); if (logEntry.ItemID.is_initialized()) - _worldPacket << *logEntry.ItemID; + _worldPacket << int32(*logEntry.ItemID); if (logEntry.Count.is_initialized()) - _worldPacket << *logEntry.Count; + _worldPacket << int32(*logEntry.Count); if (logEntry.OtherTab.is_initialized()) - _worldPacket << *logEntry.OtherTab; + _worldPacket << int8(*logEntry.OtherTab); } if (WeeklyBonusMoney) - _worldPacket << *WeeklyBonusMoney; + _worldPacket << uint64(*WeeklyBonusMoney); return &_worldPacket; } @@ -701,7 +701,7 @@ void WorldPackets::Guild::GuildBankTextQuery::Read() WorldPacket const* WorldPackets::Guild::GuildBankTextQueryResult::Write() { - _worldPacket << Tab; + _worldPacket << int32(Tab); _worldPacket.WriteBits(Text.length(), 14); _worldPacket.FlushBits(); @@ -724,13 +724,13 @@ void WorldPackets::Guild::GuildQueryNews::Read() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildNewsEvent const& newsEvent) { - data << newsEvent.Id; + data << int32(newsEvent.Id); data.AppendPackedTime(newsEvent.CompletedDate); - data << newsEvent.Type; - data << newsEvent.Flags; + data << int32(newsEvent.Type); + data << int32(newsEvent.Flags); - for (uint8 i = 0; i < 2; i++) - data << newsEvent.Data[i]; + for (std::size_t i = 0; i < newsEvent.Data.size(); ++i) + data << int32(newsEvent.Data[i]); data << newsEvent.MemberGuid; data << uint32(newsEvent.MemberList.size()); diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h index c68b76e5b95..844dba91f5c 100644 --- a/src/server/game/Server/Packets/GuildPackets.h +++ b/src/server/game/Server/Packets/GuildPackets.h @@ -432,11 +432,11 @@ namespace WorldPackets int32 RankID = 0; int32 RankOrder = 0; - int32 WithdrawGoldLimit = 0; + uint32 WithdrawGoldLimit = 0; uint32 Flags = 0; uint32 OldFlags = 0; - int32 TabFlags[GUILD_BANK_MAX_TABS]; - int32 TabWithdrawItemLimit[GUILD_BANK_MAX_TABS]; + uint32 TabFlags[GUILD_BANK_MAX_TABS]; + uint32 TabWithdrawItemLimit[GUILD_BANK_MAX_TABS]; std::string RankName; }; @@ -687,7 +687,7 @@ namespace WorldPackets WorldPacket const* Write() override; std::vector RewardItems; - uint32 Version = 0; + int32 Version = 0; }; class GuildBankActivate final : public ClientPacket @@ -918,9 +918,9 @@ namespace WorldPackets uint32 CompletedDate = 0; int32 Type = 0; int32 Flags = 0; - int32 Data[2]; + std::array Data; ObjectGuid MemberGuid; - GuidList MemberList; + std::vector MemberList; Optional Item; }; diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp index df9b540e164..04fc01ad669 100644 --- a/src/server/game/Server/Packets/InspectPackets.cpp +++ b/src/server/game/Server/Packets/InspectPackets.cpp @@ -35,6 +35,10 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectItemData { data << itemData.CreatorGUID; data << uint8(itemData.Index); + data << uint32(itemData.AzeritePowers.size()); + if (!itemData.AzeritePowers.empty()) + data.append(itemData.AzeritePowers.data(), itemData.AzeritePowers.size()); + data << itemData.Item; data.WriteBit(itemData.Usable); data.WriteBits(itemData.Enchants.size(), 4); @@ -76,10 +80,11 @@ WorldPackets::Inspect::InspectItemData::InspectItemData(::Item const* item, uint { if (gemData.ItemId) { - WorldPackets::Item::ItemGemData gem; + Gems.emplace_back(); + + WorldPackets::Item::ItemGemData& gem = Gems.back(); gem.Slot = i; gem.Item.Initialize(&gemData); - Gems.push_back(gem); } ++i; } @@ -103,6 +108,7 @@ WorldPacket const* WorldPackets::Inspect::InspectResult::Write() _worldPacket.append(PvpTalents.data(), PvpTalents.size()); _worldPacket.WriteBit(GuildData.is_initialized()); + _worldPacket.WriteBit(AzeriteLevel.is_initialized()); _worldPacket.FlushBits(); for (size_t i = 0; i < Items.size(); ++i) @@ -111,6 +117,9 @@ WorldPacket const* WorldPackets::Inspect::InspectResult::Write() if (GuildData) _worldPacket << *GuildData; + if (AzeriteLevel) + _worldPacket << int32(*AzeriteLevel); + return &_worldPacket; } @@ -138,6 +147,7 @@ void WorldPackets::Inspect::InspectPVPRequest::Read() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PVPBracketData const& bracket) { + data << uint8(bracket.Bracket); data << int32(bracket.Rating); data << int32(bracket.Rank); data << int32(bracket.WeeklyPlayed); @@ -146,7 +156,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PVPBracketData c data << int32(bracket.SeasonWon); data << int32(bracket.WeeklyBestRating); data << int32(bracket.Unk710); - data << uint8(bracket.Bracket); + data << int32(bracket.Unk801_1); + data.WriteBit(bracket.Unk801_2); + data.FlushBits(); return data; } diff --git a/src/server/game/Server/Packets/InspectPackets.h b/src/server/game/Server/Packets/InspectPackets.h index 7bf6b0baa2a..c6437f182f7 100644 --- a/src/server/game/Server/Packets/InspectPackets.h +++ b/src/server/game/Server/Packets/InspectPackets.h @@ -56,6 +56,7 @@ namespace WorldPackets bool Usable = false; std::vector Enchants; std::vector Gems; + std::vector AzeritePowers; }; struct InspectGuildData @@ -68,7 +69,10 @@ namespace WorldPackets class InspectResult final : public ServerPacket { public: - InspectResult() : ServerPacket(SMSG_INSPECT_RESULT, 45) { } + InspectResult() : ServerPacket(SMSG_INSPECT_RESULT, 45) + { + PvpTalents.fill(0); + } WorldPacket const* Write() override; @@ -76,11 +80,12 @@ namespace WorldPackets std::vector Items; std::vector Glyphs; std::vector Talents; - std::vector PvpTalents; + std::array PvpTalents; int32 ClassID = CLASS_NONE; int32 GenderID = GENDER_NONE; Optional GuildData; int32 SpecializationID = 0; + Optional AzeriteLevel; }; class RequestHonorStats final : public ClientPacket @@ -128,7 +133,9 @@ namespace WorldPackets int32 SeasonWon = 0; int32 WeeklyBestRating = 0; int32 Unk710 = 0; + int32 Unk801_1 = 0; uint8 Bracket = 0; + bool Unk801_2 = false; }; class InspectPVPResponse final : public ServerPacket diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp index 0a6e29e6838..258aa24bd1f 100644 --- a/src/server/game/Server/Packets/InstancePackets.cpp +++ b/src/server/game/Server/Packets/InstancePackets.cpp @@ -31,23 +31,13 @@ WorldPacket const* WorldPackets::Instance::UpdateInstanceOwnership::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::Instance::InstanceInfo::Write() -{ - _worldPacket << int32(LockList.size()); - - for (InstanceLockInfos const& lockInfos : LockList) - _worldPacket << lockInfos; - - return &_worldPacket; -} - -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLockInfos const& lockInfos) +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLock const& lockInfos) { - data << lockInfos.MapID; - data << lockInfos.DifficultyID; - data << lockInfos.InstanceID; - data << lockInfos.TimeRemaining; - data << lockInfos.CompletedMask; + data << uint32(lockInfos.MapID); + data << uint32(lockInfos.DifficultyID); + data << uint64(lockInfos.InstanceID); + data << uint32(lockInfos.TimeRemaining); + data << uint32(lockInfos.CompletedMask); data.WriteBit(lockInfos.Locked); data.WriteBit(lockInfos.Extended); @@ -57,6 +47,16 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLockInf return data; } +WorldPacket const* WorldPackets::Instance::InstanceInfo::Write() +{ + _worldPacket << int32(LockList.size()); + + for (InstanceLock const& instanceLock : LockList) + _worldPacket << instanceLock; + + return &_worldPacket; +} + WorldPacket const* WorldPackets::Instance::InstanceReset::Write() { _worldPacket << uint32(MapID); diff --git a/src/server/game/Server/Packets/InstancePackets.h b/src/server/game/Server/Packets/InstancePackets.h index f13e046906e..0869a137926 100644 --- a/src/server/game/Server/Packets/InstancePackets.h +++ b/src/server/game/Server/Packets/InstancePackets.h @@ -47,7 +47,7 @@ namespace WorldPackets // but it has been deperecated in favor of simply checking group leader, being inside an instance or using dungeon finder }; - struct InstanceLockInfos + struct InstanceLock { uint64 InstanceID = 0u; uint32 MapID = 0u; @@ -66,7 +66,7 @@ namespace WorldPackets WorldPacket const* Write() override; - std::vector LockList; + std::vector LockList; }; class ResetInstances final : public ClientPacket @@ -90,7 +90,7 @@ namespace WorldPackets class InstanceResetFailed final : public ServerPacket { public: - InstanceResetFailed() : ServerPacket(SMSG_INSTANCE_RESET_FAILED, 4 + 4) { } + InstanceResetFailed() : ServerPacket(SMSG_INSTANCE_RESET_FAILED, 4 + 1) { } WorldPacket const* Write() override; @@ -248,6 +248,4 @@ namespace WorldPackets } } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLockInfos const& lockInfos); - #endif // InstancePackets_h__ diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index 87599873de5..55f4274eefc 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -280,7 +280,7 @@ WorldPacket const* WorldPackets::Item::ReadItemResultFailed::Write() { _worldPacket << Item; _worldPacket << uint32(Delay); - _worldPacket.WriteBits(Subcode, 3); + _worldPacket.WriteBits(Subcode, 2); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp index 5b8d66afd6a..1ec2dec7804 100644 --- a/src/server/game/Server/Packets/LFGPackets.cpp +++ b/src/server/game/Server/Packets/LFGPackets.cpp @@ -311,10 +311,15 @@ WorldPacket const* WorldPackets::LFG::LFGQueueStatus::Write() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LFGPlayerRewards const& lfgPlayerRewards) { - data << int32(lfgPlayerRewards.RewardItem); - data << uint32(lfgPlayerRewards.RewardItemQuantity); - data << int32(lfgPlayerRewards.BonusCurrency); - data.WriteBit(lfgPlayerRewards.IsCurrency); + data.WriteBit(lfgPlayerRewards.RewardItem.is_initialized()); + data.WriteBit(lfgPlayerRewards.RewardCurrency.is_initialized()); + if (lfgPlayerRewards.RewardItem) + data << *lfgPlayerRewards.RewardItem; + + data << uint32(lfgPlayerRewards.Quantity); + data << int32(lfgPlayerRewards.BonusQuantity); + if (lfgPlayerRewards.RewardCurrency) + data << int32(*lfgPlayerRewards.RewardCurrency); return data; } diff --git a/src/server/game/Server/Packets/LFGPackets.h b/src/server/game/Server/Packets/LFGPackets.h index 9e1c513aece..2b31074094d 100644 --- a/src/server/game/Server/Packets/LFGPackets.h +++ b/src/server/game/Server/Packets/LFGPackets.h @@ -20,6 +20,7 @@ #include "Packet.h" #include "PacketUtilities.h" +#include "ItemPacketsCommon.h" #include "LFGPacketsCommon.h" #include "Optional.h" @@ -325,13 +326,24 @@ namespace WorldPackets struct LFGPlayerRewards { LFGPlayerRewards() { } - LFGPlayerRewards(int32 rewardItem, uint32 rewardItemQuantity, int32 bonusCurrency, bool isCurrency) - : RewardItem(rewardItem), RewardItemQuantity(rewardItemQuantity), BonusCurrency(bonusCurrency), IsCurrency(isCurrency) { } - - int32 RewardItem = 0; - uint32 RewardItemQuantity = 0; - int32 BonusCurrency = 0; - bool IsCurrency = false; + LFGPlayerRewards(int32 id, uint32 quantity, int32 bonusQuantity, bool isCurrency) + : Quantity(quantity), BonusQuantity(bonusQuantity) + { + if (!isCurrency) + { + RewardItem = boost::in_place(); + RewardItem->ItemID = id; + } + else + { + RewardCurrency = id; + } + } + + Optional RewardItem; + Optional RewardCurrency; + uint32 Quantity = 0; + int32 BonusQuantity = 0; }; class LFGPlayerReward final : public ServerPacket diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 4399b0d3924..9f98092d091 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -346,7 +346,8 @@ WorldPacket const* WorldPackets::Misc::LevelUpInfo::Write() for (int32 stat : StatDelta) _worldPacket << stat; - _worldPacket << int32(Cp); + _worldPacket << int32(NumNewTalents); + _worldPacket << int32(NumNewPvpTalentSlots); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 984e8444b3b..df9c99e063b 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -258,7 +258,7 @@ namespace WorldPackets void Read() override; - int32 DifficultyID = 0; + uint32 DifficultyID = 0; }; class SetRaidDifficulty final : public ClientPacket @@ -480,7 +480,8 @@ namespace WorldPackets int32 HealthDelta = 0; std::array PowerDelta = { }; std::array StatDelta = { }; - int32 Cp = 0; + int32 NumNewTalents = 0; + int32 NumNewPvpTalentSlots = 0; }; class PlayMusic final : public ServerPacket diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 38a7f8f68fd..3dd719f46b0 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -213,6 +213,16 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineSp data << uint32(spellEffectExtraData.SpellVisualID); data << uint32(spellEffectExtraData.ProgressCurveID); data << uint32(spellEffectExtraData.ParabolicCurveID); + data << float(spellEffectExtraData.JumpGravity); + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineJumpExtraData const& jumpExtraData) +{ + data << float(jumpExtraData.JumpGravity); + data << uint32(jumpExtraData.StartTime); + data << uint32(jumpExtraData.Duration); return data; } @@ -224,8 +234,7 @@ ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline data << uint32(movementSpline.TierTransStartTime); data << int32(movementSpline.Elapsed); data << uint32(movementSpline.MoveTime); - data << float(movementSpline.JumpGravity); - data << uint32(movementSpline.SpecialTime); + data << uint32(movementSpline.FadeObjectTime); data << uint8(movementSpline.Mode); data << uint8(movementSpline.VehicleExitVoluntary); data << movementSpline.TransportGUID; @@ -235,6 +244,7 @@ ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline data.WriteBits(movementSpline.PackedDeltas.size(), 16); data.WriteBit(movementSpline.SplineFilter.is_initialized()); data.WriteBit(movementSpline.SpellEffectExtraData.is_initialized()); + data.WriteBit(movementSpline.JumpExtraData.is_initialized()); data.FlushBits(); if (movementSpline.SplineFilter) @@ -262,6 +272,9 @@ ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline if (movementSpline.SpellEffectExtraData) data << *movementSpline.SpellEffectExtraData; + if (movementSpline.JumpExtraData) + data << *movementSpline.JumpExtraData; + return data; } @@ -300,12 +313,12 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(:: data << float(1.0f); // DurationModifier data << float(1.0f); // NextDurationModifier data.WriteBits(moveSpline.facing.type, 2); // Face - bool HasJumpGravity = data.WriteBit(moveSpline.splineflags.parabolic || moveSpline.splineflags.animation); // HasJumpGravity - bool HasSpecialTime = data.WriteBit(moveSpline.splineflags.parabolic && moveSpline.effect_start_time < moveSpline.Duration()); // HasSpecialTime + bool hasFadeObjectTime = data.WriteBit(moveSpline.splineflags.fadeObject && moveSpline.effect_start_time < moveSpline.Duration()); data.WriteBits(moveSpline.getPath().size(), 16); data.WriteBits(uint8(moveSpline.spline.mode()), 2); // Mode data.WriteBit(0); // HasSplineFilter data.WriteBit(moveSpline.spell_effect_extra.is_initialized()); // HasSpellEffectExtraData + data.WriteBit(moveSpline.splineflags.parabolic); // HasJumpExtraData data.FlushBits(); //if (HasSplineFilterKey) @@ -341,11 +354,8 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(:: break; } - if (HasJumpGravity) - data << float(moveSpline.vertical_acceleration); // JumpGravity - - if (HasSpecialTime) - data << uint32(moveSpline.effect_start_time); // SpecialTime + if (hasFadeObjectTime) + data << uint32(moveSpline.effect_start_time); // FadeObjectTime data.append(moveSpline.getPath().data(), moveSpline.getPath().size()); @@ -355,6 +365,14 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(:: data << uint32(moveSpline.spell_effect_extra->SpellVisualId); data << uint32(moveSpline.spell_effect_extra->ProgressCurveId); data << uint32(moveSpline.spell_effect_extra->ParabolicCurveId); + data << float(moveSpline.vertical_acceleration); + } + + if (moveSpline.splineflags.parabolic) + { + data << float(moveSpline.vertical_acceleration); + data << uint32(moveSpline.effect_start_time); + data << uint32(0); // Duration (override) } } } @@ -388,12 +406,13 @@ void WorldPackets::Movement::MonsterMove::InitializeSplineData(::Movement::MoveS if (splineFlags.parabolic) { - movementSpline.JumpGravity = moveSpline.vertical_acceleration; - movementSpline.SpecialTime = moveSpline.effect_start_time; + movementSpline.JumpExtraData = boost::in_place(); + movementSpline.JumpExtraData->JumpGravity = moveSpline.vertical_acceleration; + movementSpline.JumpExtraData->StartTime = moveSpline.effect_start_time; } if (splineFlags.fadeObject) - movementSpline.SpecialTime = moveSpline.effect_start_time; + movementSpline.FadeObjectTime = moveSpline.effect_start_time; if (moveSpline.spell_effect_extra) { @@ -402,6 +421,7 @@ void WorldPackets::Movement::MonsterMove::InitializeSplineData(::Movement::MoveS movementSpline.SpellEffectExtraData->SpellVisualID = moveSpline.spell_effect_extra->SpellVisualId; movementSpline.SpellEffectExtraData->ProgressCurveID = moveSpline.spell_effect_extra->ProgressCurveId; movementSpline.SpellEffectExtraData->ParabolicCurveID = moveSpline.spell_effect_extra->ParabolicCurveId; + movementSpline.SpellEffectExtraData->JumpGravity = moveSpline.vertical_acceleration; } ::Movement::Spline const& spline = moveSpline.spline; diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index aaa5f770535..e50a8cf6a71 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -75,6 +75,14 @@ namespace WorldPackets uint32 SpellVisualID = 0; uint32 ProgressCurveID = 0; uint32 ParabolicCurveID = 0; + float JumpGravity = 0.0f; + }; + + struct MonsterSplineJumpExtraData + { + float JumpGravity = 0.0f; + uint32 StartTime = 0; + uint32 Duration = 0; }; struct MovementSpline @@ -85,8 +93,7 @@ namespace WorldPackets uint32 TierTransStartTime = 0; int32 Elapsed = 0; uint32 MoveTime = 0; - float JumpGravity = 0.0f; - uint32 SpecialTime = 0; + uint32 FadeObjectTime = 0; std::vector> Points; // Spline path uint8 Mode = 0; // Spline mode - actually always 0 in this packet - Catmullrom mode appears only in SMSG_UPDATE_OBJECT. In this packet it is determined by flags uint8 VehicleExitVoluntary = 0; @@ -95,6 +102,7 @@ namespace WorldPackets std::vector> PackedDeltas; Optional SplineFilter; Optional SpellEffectExtraData; + Optional JumpExtraData; float FaceDirection = 0.0f; ObjectGuid FaceGUID; TaggedPosition FaceSpot; diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index 2b7f9ab7d18..749b4b9a330 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -96,19 +96,19 @@ WorldPacket const* WorldPackets::NPC::VendorInventory::Write() WorldPacket const* WorldPackets::NPC::TrainerList::Write() { _worldPacket << TrainerGUID; - _worldPacket << TrainerType; - _worldPacket << TrainerID; + _worldPacket << uint32(TrainerType); + _worldPacket << uint32(TrainerID); - _worldPacket << int32(Spells.size()); + _worldPacket << uint32(Spells.size()); for (TrainerListSpell const& spell : Spells) { - _worldPacket << spell.SpellID; - _worldPacket << spell.MoneyCost; - _worldPacket << spell.ReqSkillLine; - _worldPacket << spell.ReqSkillRank; + _worldPacket << int32(spell.SpellID); + _worldPacket << uint32(spell.MoneyCost); + _worldPacket << uint32(spell.ReqSkillLine); + _worldPacket << uint32(spell.ReqSkillRank); _worldPacket.append(spell.ReqAbility.data(), spell.ReqAbility.size()); - _worldPacket << spell.Usable; - _worldPacket << spell.ReqLevel; + _worldPacket << uint8(spell.Usable); + _worldPacket << uint8(spell.ReqLevel); } _worldPacket.WriteBits(Greeting.length(), 11); @@ -144,11 +144,13 @@ WorldPacket const* WorldPackets::NPC::PlayerTabardVendorActivate::Write() WorldPacket const* WorldPackets::NPC::GossipPOI::Write() { - _worldPacket.WriteBits(Flags, 14); - _worldPacket.WriteBits(Name.length(), 6); + _worldPacket << int32(ID); _worldPacket << Pos; _worldPacket << int32(Icon); _worldPacket << int32(Importance); + _worldPacket.WriteBits(Flags, 14); + _worldPacket.WriteBits(Name.length(), 6); + _worldPacket.FlushBits(); _worldPacket.WriteString(Name); return &_worldPacket; diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h index a094f25dc22..8148e3aff60 100644 --- a/src/server/game/Server/Packets/NPCPackets.h +++ b/src/server/game/Server/Packets/NPCPackets.h @@ -131,9 +131,9 @@ namespace WorldPackets struct TrainerListSpell { int32 SpellID = 0; - int32 MoneyCost = 0; - int32 ReqSkillLine = 0; - int32 ReqSkillRank = 0; + uint32 MoneyCost = 0; + uint32 ReqSkillLine = 0; + uint32 ReqSkillRank = 0; std::array ReqAbility = { }; uint8 Usable = 0; uint8 ReqLevel = 0; @@ -180,6 +180,7 @@ namespace WorldPackets WorldPacket const* Write() override; + int32 ID = 0; uint32 Flags = 0; TaggedPosition Pos; int32 Icon = 0; diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h index f7913b9c51d..99b214aab36 100644 --- a/src/server/game/Server/Packets/PacketUtilities.h +++ b/src/server/game/Server/Packets/PacketUtilities.h @@ -42,6 +42,8 @@ namespace WorldPackets typedef typename storage_type::value_type value_type; typedef typename storage_type::size_type size_type; + typedef typename storage_type::pointer pointer; + typedef typename storage_type::const_pointer const_pointer; typedef typename storage_type::reference reference; typedef typename storage_type::const_reference const_reference; typedef typename storage_type::iterator iterator; @@ -55,6 +57,9 @@ namespace WorldPackets iterator end() { return _storage.end(); } const_iterator end() const { return _storage.end(); } + pointer data() { return _storage.data(); } + const_pointer data() const { return _storage.data(); } + size_type size() const { return _storage.size(); } bool empty() const { return _storage.empty(); } diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index 939f0a65db1..9251addde38 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -33,7 +33,7 @@ WorldPacket const* WorldPackets::Party::PartyCommandResult::Write() _worldPacket.WriteBits(Command, 4); _worldPacket.WriteBits(Result, 6); - _worldPacket << ResultData; + _worldPacket << uint32(ResultData); _worldPacket << ResultGUID; _worldPacket.WriteString(Name); @@ -78,12 +78,12 @@ WorldPacket const* WorldPackets::Party::PartyInvite::Write() _worldPacket << InviterBNetAccountId; _worldPacket << uint16(Unk1); _worldPacket << uint32(ProposedRoles); - _worldPacket << int32(LfgSlots.size()); - _worldPacket << LfgCompletedMask; + _worldPacket << uint32(LfgSlots.size()); + _worldPacket << uint32(LfgCompletedMask); _worldPacket.WriteString(InviterName); - for (int32 LfgSlot : LfgSlots) + for (uint32 LfgSlot : LfgSlots) _worldPacket << LfgSlot; return &_worldPacket; @@ -212,7 +212,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyMemberStats c data << int16(memberStats.PositionY); data << int16(memberStats.PositionZ); data << int32(memberStats.VehicleSeat); - data << int32(memberStats.Auras.size()); + data << uint32(memberStats.Auras.size()); data << memberStats.Phases; for (WorldPackets::Party::PartyMemberAuraStates const& aura : memberStats.Auras) @@ -318,15 +318,13 @@ WorldPacket const* WorldPackets::Party::SendRaidTargetUpdateSingle::Write() WorldPacket const* WorldPackets::Party::SendRaidTargetUpdateAll::Write() { - _worldPacket << PartyIndex; - - _worldPacket << int32(TargetIcons.size()); + _worldPacket << uint8(PartyIndex); + _worldPacket << uint32(TargetIcons.size()); - std::map::const_iterator itr; - for (itr = TargetIcons.begin(); itr != TargetIcons.end(); itr++) + for (auto itr = TargetIcons.begin(); itr != TargetIcons.end(); ++itr) { _worldPacket << itr->second; - _worldPacket << itr->first; + _worldPacket << uint8(itr->first); } return &_worldPacket; @@ -420,7 +418,9 @@ WorldPacket const* WorldPackets::Party::GroupNewLeader::Write() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyPlayerInfo const& playerInfo) { data.WriteBits(playerInfo.Name.size(), 6); + data.WriteBits(playerInfo.VoiceStateID.size(), 6); data.WriteBit(playerInfo.FromSocialQueue); + data.WriteBit(playerInfo.VoiceChatSilenced); data << playerInfo.GUID; data << uint8(playerInfo.Status); data << uint8(playerInfo.Subgroup); @@ -428,6 +428,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyPlayerInfo co data << uint8(playerInfo.RolesAssigned); data << uint8(playerInfo.Class); data.WriteString(playerInfo.Name); + data.WriteString(playerInfo.VoiceStateID); return data; } @@ -524,8 +525,8 @@ void WorldPackets::Party::ClearRaidMarker::Read() WorldPacket const* WorldPackets::Party::RaidMarkersChanged::Write() { - _worldPacket << PartyIndex; - _worldPacket << ActiveMarkers; + _worldPacket << uint8(PartyIndex); + _worldPacket << uint32(ActiveMarkers); _worldPacket.WriteBits(RaidMarkers.size(), 4); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h index f62e61d0990..d0b689ffb04 100644 --- a/src/server/game/Server/Packets/PartyPackets.h +++ b/src/server/game/Server/Packets/PartyPackets.h @@ -48,8 +48,8 @@ namespace WorldPackets void Read() override; - int8 PartyIndex = 0; - int32 ProposedRoles = 0; + uint8 PartyIndex = 0; + uint32 ProposedRoles = 0; std::string TargetName; std::string TargetRealm; ObjectGuid TargetGUID; @@ -85,9 +85,9 @@ namespace WorldPackets std::string InviterRealmNameNormalized; // Lfg - int32 ProposedRoles = 0; - int32 LfgCompletedMask = 0; - std::vector LfgSlots; + uint32 ProposedRoles = 0; + uint32 LfgCompletedMask = 0; + std::vector LfgSlots; }; class PartyInviteResponse final : public ClientPacket @@ -97,9 +97,9 @@ namespace WorldPackets void Read() override; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; bool Accept = false; - Optional RolesDesired; + Optional RolesDesired; }; class PartyUninvite final : public ClientPacket @@ -109,7 +109,7 @@ namespace WorldPackets void Read() override; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; ObjectGuid TargetGUID; std::string Reason; }; @@ -327,7 +327,7 @@ namespace WorldPackets WorldPacket const* Write() override; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; std::map TargetIcons; }; @@ -359,7 +359,7 @@ namespace WorldPackets void Read() override; ObjectGuid Target; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; bool Apply = false; }; @@ -405,7 +405,7 @@ namespace WorldPackets void Read() override; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; bool IsReady = false; }; @@ -486,13 +486,14 @@ namespace WorldPackets { ObjectGuid GUID; std::string Name; + std::string VoiceStateID; // same as bgs.protocol.club.v1.MemberVoiceState.id uint8 Class = 0; - uint8 Status = 0u; uint8 Subgroup = 0u; uint8 Flags = 0u; uint8 RolesAssigned = 0u; bool FromSocialQueue = false; + bool VoiceChatSilenced = false; }; struct PartyLFGInfo @@ -554,7 +555,7 @@ namespace WorldPackets void Read() override; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; bool EveryoneIsAssistant = false; }; @@ -599,7 +600,7 @@ namespace WorldPackets WorldPacket const* Write() override; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; uint32 ActiveMarkers = 0u; std::vector RaidMarkers; diff --git a/src/server/game/Server/Packets/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp index 06182856bb4..d62ce6840cb 100644 --- a/src/server/game/Server/Packets/PetPackets.cpp +++ b/src/server/game/Server/Packets/PetPackets.cpp @@ -65,9 +65,8 @@ WorldPacket const* WorldPackets::Pet::PetStableList::Write() _worldPacket << int32(pet.CreatureID); _worldPacket << int32(pet.DisplayID); _worldPacket << int32(pet.ExperienceLevel); - _worldPacket << int32(pet.PetFlags); - - _worldPacket << int8(pet.PetName.length()); + _worldPacket << uint8(pet.PetFlags); + _worldPacket.WriteBits(pet.PetName.length(), 8); _worldPacket.WriteString(pet.PetName); } @@ -92,21 +91,18 @@ WorldPacket const* WorldPackets::Pet::PetUnlearnedSpells::Write() WorldPacket const* WorldPackets::Pet::PetNameInvalid::Write() { + _worldPacket << uint8(Result); _worldPacket << RenameData.PetGUID; _worldPacket << int32(RenameData.PetNumber); _worldPacket << uint8(RenameData.NewName.length()); _worldPacket.WriteBit(RenameData.DeclinedNames.is_initialized()); - _worldPacket.FlushBits(); if (RenameData.DeclinedNames) { for (int32 i = 0; i < MAX_DECLINED_NAME_CASES; i++) - { _worldPacket.WriteBits(RenameData.DeclinedNames->name[i].length(), 7); - _worldPacket.FlushBits(); - } for (int32 i = 0; i < MAX_DECLINED_NAME_CASES; i++) _worldPacket << RenameData.DeclinedNames->name[i]; @@ -121,8 +117,7 @@ void WorldPackets::Pet::PetRename::Read() _worldPacket >> RenameData.PetGUID; _worldPacket >> RenameData.PetNumber; - int8 nameLen = 0; - _worldPacket >> nameLen; + uint8 nameLen = _worldPacket.ReadBits(8); if (_worldPacket.ReadBit()) { diff --git a/src/server/game/Server/Packets/PetPackets.h b/src/server/game/Server/Packets/PetPackets.h index 965dc0b60c4..3f57f0360c9 100644 --- a/src/server/game/Server/Packets/PetPackets.h +++ b/src/server/game/Server/Packets/PetPackets.h @@ -125,7 +125,7 @@ namespace WorldPackets uint32 CreatureID = 0; uint32 DisplayID = 0; uint32 ExperienceLevel = 0; - uint32 PetFlags = 0; + uint8 PetFlags = 0; std::string PetName; }; diff --git a/src/server/game/Server/Packets/PetitionPackets.cpp b/src/server/game/Server/Packets/PetitionPackets.cpp index 132494aed46..06823e15204 100644 --- a/src/server/game/Server/Packets/PetitionPackets.cpp +++ b/src/server/game/Server/Packets/PetitionPackets.cpp @@ -25,32 +25,31 @@ void WorldPackets::Petition::QueryPetition::Read() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Petition::PetitionInfo const& petitionInfo) { - data << petitionInfo.PetitionID; + data << int32(petitionInfo.PetitionID); data << petitionInfo.Petitioner; - - data << petitionInfo.MinSignatures; - data << petitionInfo.MaxSignatures; - data << petitionInfo.DeadLine; - data << petitionInfo.IssueDate; - data << petitionInfo.AllowedGuildID; - data << petitionInfo.AllowedClasses; - data << petitionInfo.AllowedRaces; - data << petitionInfo.AllowedGender; - data << petitionInfo.AllowedMinLevel; - data << petitionInfo.AllowedMaxLevel; - data << petitionInfo.NumChoices; - data << petitionInfo.StaticType; - data << petitionInfo.Muid; + data << int32(petitionInfo.MinSignatures); + data << int32(petitionInfo.MaxSignatures); + data << int32(petitionInfo.DeadLine); + data << int32(petitionInfo.IssueDate); + data << int32(petitionInfo.AllowedGuildID); + data << int32(petitionInfo.AllowedClasses); + data << int32(petitionInfo.AllowedRaces); + data << int16(petitionInfo.AllowedGender); + data << int32(petitionInfo.AllowedMinLevel); + data << int32(petitionInfo.AllowedMaxLevel); + data << int32(petitionInfo.NumChoices); + data << int32(petitionInfo.StaticType); + data << uint32(petitionInfo.Muid); data.WriteBits(petitionInfo.Title.length(), 7); data.WriteBits(petitionInfo.BodyText.length(), 12); - for (uint8 i = 0; i < 10; i++) + for (std::size_t i = 0; i < petitionInfo.Choicetext.size(); ++i) data.WriteBits(petitionInfo.Choicetext[i].length(), 6); data.FlushBits(); - for (uint8 i = 0; i < 10; i++) + for (std::size_t i = 0; i < petitionInfo.Choicetext.size(); ++i) data.WriteString(petitionInfo.Choicetext[i]); data.WriteString(petitionInfo.Title); @@ -61,7 +60,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Petition::PetitionInfo co WorldPacket const* WorldPackets::Petition::QueryPetitionResponse::Write() { - _worldPacket << PetitionID; + _worldPacket << uint32(PetitionID); _worldPacket.WriteBit(Allow); _worldPacket.FlushBits(); @@ -102,13 +101,13 @@ WorldPacket const* WorldPackets::Petition::ServerPetitionShowSignatures::Write() _worldPacket << Item; _worldPacket << Owner; _worldPacket << OwnerAccountID; - _worldPacket << PetitionID; + _worldPacket << int32(PetitionID); _worldPacket << uint32(Signatures.size()); - for (PetitionSignature signature : Signatures) + for (PetitionSignature const& signature : Signatures) { _worldPacket << signature.Signer; - _worldPacket << signature.Choice; + _worldPacket << int32(signature.Choice); } return &_worldPacket; diff --git a/src/server/game/Server/Packets/PetitionPackets.h b/src/server/game/Server/Packets/PetitionPackets.h index a5b4e8dca6f..c378c053d84 100644 --- a/src/server/game/Server/Packets/PetitionPackets.h +++ b/src/server/game/Server/Packets/PetitionPackets.h @@ -56,7 +56,7 @@ namespace WorldPackets int32 NumChoices = 0; int32 StaticType = 0; uint32 Muid = 0; - std::string Choicetext[10]; + std::array Choicetext; }; class QueryPetitionResponse final : public ServerPacket diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp index c640394be93..f941c895722 100644 --- a/src/server/game/Server/Packets/QueryPackets.cpp +++ b/src/server/game/Server/Packets/QueryPackets.cpp @@ -29,7 +29,7 @@ void WorldPackets::Query::QueryCreature::Read() WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write() { - _worldPacket << CreatureID; + _worldPacket << uint32(CreatureID); _worldPacket.WriteBit(Allow); _worldPacket.FlushBits(); @@ -61,7 +61,16 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write() _worldPacket << int32(Stats.CreatureFamily); _worldPacket << int32(Stats.Classification); _worldPacket.append(Stats.ProxyCreatureID.data(), Stats.ProxyCreatureID.size()); - _worldPacket.append(Stats.CreatureDisplayID.data(), Stats.CreatureDisplayID.size()); + _worldPacket << uint32(Stats.Display.CreatureDisplay.size()); + _worldPacket << float(Stats.Display.TotalProbability); + + for (CreatureXDisplay const& display : Stats.Display.CreatureDisplay) + { + _worldPacket << uint32(display.CreatureDisplayID); + _worldPacket << float(display.Scale); + _worldPacket << float(display.Probability); + } + _worldPacket << float(Stats.HpMulti); _worldPacket << float(Stats.EnergyMulti); _worldPacket << uint32(Stats.QuestItems.size()); @@ -69,6 +78,7 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write() _worldPacket << int32(Stats.HealthScalingExpansion); _worldPacket << int32(Stats.RequiredExpansion); _worldPacket << int32(Stats.VignetteID); + _worldPacket << int32(Stats.Class); if (!Stats.Title.empty()) _worldPacket << Stats.Title; @@ -79,8 +89,8 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write() if (!Stats.CursorName.empty()) _worldPacket << Stats.CursorName; - for (int32 questItem : Stats.QuestItems) - _worldPacket << questItem; + if (!Stats.QuestItems.empty()) + _worldPacket.append(Stats.QuestItems.data(), Stats.QuestItems.size()); } return &_worldPacket; @@ -162,6 +172,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupDa data << lookupData.AccountID; data << lookupData.BnetAccountID; data << lookupData.GuidActual; + data << uint64(lookupData.GuildClubMemberID); data << uint32(lookupData.VirtualRealmAddress); data << uint8(lookupData.Race); data << uint8(lookupData.Sex); @@ -174,7 +185,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupDa WorldPacket const* WorldPackets::Query::QueryPlayerNameResponse::Write() { - _worldPacket << Result; + _worldPacket << uint8(Result); _worldPacket << Player; if (Result == RESPONSE_SUCCESS) @@ -206,7 +217,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::QueryPageTextRespo WorldPacket const* WorldPackets::Query::QueryPageTextResponse::Write() { - _worldPacket << PageTextID; + _worldPacket << uint32(PageTextID); _worldPacket.WriteBit(Allow); _worldPacket.FlushBits(); @@ -229,7 +240,7 @@ void WorldPackets::Query::QueryNPCText::Read() WorldPacket const* WorldPackets::Query::QueryNPCTextResponse::Write() { - _worldPacket << TextID; + _worldPacket << uint32(TextID); _worldPacket.WriteBit(Allow); _worldPacket.FlushBits(); @@ -238,10 +249,8 @@ WorldPacket const* WorldPackets::Query::QueryNPCTextResponse::Write() if (Allow) { - for (uint32 i = 0; i < MAX_NPC_TEXT_OPTIONS; ++i) - _worldPacket << Probabilities[i]; - for (uint32 i = 0; i < MAX_NPC_TEXT_OPTIONS; ++i) - _worldPacket << BroadcastTextID[i]; + _worldPacket.append(Probabilities.data(), Probabilities.size()); + _worldPacket.append(BroadcastTextID.data(), BroadcastTextID.size()); } return &_worldPacket; @@ -276,8 +285,8 @@ WorldPacket const* WorldPackets::Query::QueryGameObjectResponse::Write() statsData << float(Stats.Size); statsData << uint8(Stats.QuestItems.size()); - for (int32 questItem : Stats.QuestItems) - statsData << int32(questItem); + if (!Stats.QuestItems.empty()) + statsData.append(Stats.QuestItems.data(), Stats.QuestItems.size()); statsData << int32(Stats.RequiredLevel); } @@ -334,7 +343,7 @@ void WorldPackets::Query::QuestPOIQuery::Read() { _worldPacket >> MissingQuestCount; - for (uint8 i = 0; i < 50; ++i) + for (std::size_t i = 0; i < MissingQuestPOIs.size(); ++i) _worldPacket >> MissingQuestPOIs[i]; } @@ -356,13 +365,12 @@ WorldPacket const* WorldPackets::Query::QuestPOIQueryResponse::Write() _worldPacket << int32(questPOIBlobData.QuestObjectiveID); _worldPacket << int32(questPOIBlobData.QuestObjectID); _worldPacket << int32(questPOIBlobData.MapID); - _worldPacket << int32(questPOIBlobData.WorldMapAreaID); - _worldPacket << int32(questPOIBlobData.Floor); + _worldPacket << int32(questPOIBlobData.UiMapID); _worldPacket << int32(questPOIBlobData.Priority); _worldPacket << int32(questPOIBlobData.Flags); _worldPacket << int32(questPOIBlobData.WorldEffectID); _worldPacket << int32(questPOIBlobData.PlayerConditionID); - _worldPacket << int32(questPOIBlobData.UnkWoD1); + _worldPacket << int32(questPOIBlobData.SpawnTrackingID); _worldPacket << int32(questPOIBlobData.QuestPOIBlobPointStats.size()); for (QuestPOIBlobPoint const& questPOIBlobPoint : questPOIBlobData.QuestPOIBlobPointStats) @@ -381,13 +389,9 @@ WorldPacket const* WorldPackets::Query::QuestPOIQueryResponse::Write() void WorldPackets::Query::QueryQuestCompletionNPCs::Read() { - uint32 questCount = 0; - - _worldPacket >> questCount; - QuestCompletionNPCs.resize(questCount); - - for (int32& QuestID : QuestCompletionNPCs) - _worldPacket >> QuestID; + QuestCompletionNPCs.resize(_worldPacket.read()); + if (!QuestCompletionNPCs.empty()) + _worldPacket.read(QuestCompletionNPCs.data(), QuestCompletionNPCs.size()); } WorldPacket const* WorldPackets::Query::QuestCompletionNPCResponse::Write() @@ -396,10 +400,9 @@ WorldPacket const* WorldPackets::Query::QuestCompletionNPCResponse::Write() for (auto& quest : QuestCompletionNPCs) { _worldPacket << int32(quest.QuestID); - _worldPacket << uint32(quest.NPCs.size()); - for (int32 const& npc : quest.NPCs) - _worldPacket << int32(npc); + if (!quest.NPCs.empty()) + _worldPacket.append(quest.NPCs.data(), quest.NPCs.size()); } return &_worldPacket; @@ -453,6 +456,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::ItemTextCache cons WorldPacket const* WorldPackets::Query::QueryItemTextResponse::Write() { _worldPacket.WriteBit(Valid); + _worldPacket.FlushBits(); _worldPacket << Item; _worldPacket << Id; diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h index 7639f165dae..dfdf3d437a0 100644 --- a/src/server/game/Server/Packets/QueryPackets.h +++ b/src/server/game/Server/Packets/QueryPackets.h @@ -23,6 +23,7 @@ #include "NPCHandler.h" #include "ObjectGuid.h" #include "Position.h" +#include "QuestDef.h" #include "SharedDefines.h" #include "UnitDefines.h" #include @@ -43,13 +44,25 @@ namespace WorldPackets uint32 CreatureID = 0; }; + struct CreatureXDisplay + { + uint32 CreatureDisplayID = 0; + float Scale = 1.0f; + float Probability = 1.0f; + }; + + struct CreatureDisplayStats + { + float TotalProbability = 0.0f; + std::vector CreatureDisplay; + }; + struct CreatureStats { CreatureStats() { Flags.fill(0); ProxyCreatureID.fill(0); - CreatureDisplayID.fill(0); } std::string Title; @@ -58,6 +71,7 @@ namespace WorldPackets int32 CreatureType = 0; int32 CreatureFamily = 0; int32 Classification = 0; + CreatureDisplayStats Display; float HpMulti = 0.0f; float EnergyMulti = 0.0f; bool Leader = false; @@ -66,9 +80,9 @@ namespace WorldPackets int32 HealthScalingExpansion = 0; uint32 RequiredExpansion = 0; uint32 VignetteID = 0; + int32 Class = 0; std::array Flags; std::array ProxyCreatureID; - std::array CreatureDisplayID; std::array Name; std::array NameAlt; }; @@ -110,6 +124,7 @@ namespace WorldPackets ObjectGuid BnetAccountID; ObjectGuid GuidActual; std::string Name; + uint64 GuildClubMemberID = 0; // same as bgs.protocol.club.v1.MemberId.unique_id uint32 VirtualRealmAddress = 0; uint8 Race = RACE_NONE; uint8 Sex = GENDER_NONE; @@ -182,8 +197,8 @@ namespace WorldPackets uint32 TextID = 0; bool Allow = false; - float Probabilities[MAX_NPC_TEXT_OPTIONS]; - uint32 BroadcastTextID[MAX_NPC_TEXT_OPTIONS]; + std::array Probabilities; + std::array BroadcastTextID; }; class QueryGameObject final : public ClientPacket @@ -297,7 +312,7 @@ namespace WorldPackets void Read() override; int32 MissingQuestCount = 0; - int32 MissingQuestPOIs[50]; + std::array MissingQuestPOIs; }; struct QuestPOIBlobPoint @@ -313,13 +328,12 @@ namespace WorldPackets int32 QuestObjectiveID = 0; int32 QuestObjectID = 0; int32 MapID = 0; - int32 WorldMapAreaID = 0; - int32 Floor = 0; + int32 UiMapID = 0; int32 Priority = 0; int32 Flags = 0; int32 WorldEffectID = 0; int32 PlayerConditionID = 0; - int32 UnkWoD1 = 0; + int32 SpawnTrackingID = 0; std::vector QuestPOIBlobPointStats; bool AlwaysAllowMergingBlobs = false; }; @@ -347,7 +361,7 @@ namespace WorldPackets void Read() override; - std::vector QuestCompletionNPCs; + Array QuestCompletionNPCs; }; struct QuestCompletionNPC diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 20a6539ae1d..0468e170d7c 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -65,6 +65,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket << int32(Info.QuestID); _worldPacket << int32(Info.QuestType); _worldPacket << int32(Info.QuestLevel); + _worldPacket << int32(Info.QuestScalingFactionGroup); _worldPacket << int32(Info.QuestMaxScalingLevel); _worldPacket << int32(Info.QuestPackageID); _worldPacket << int32(Info.QuestMinLevel); @@ -88,6 +89,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket << int32(Info.StartItem); _worldPacket << uint32(Info.Flags); _worldPacket << uint32(Info.FlagsEx); + _worldPacket << uint32(Info.FlagsEx2); for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i) { @@ -115,6 +117,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket << int32(Info.RewardNumSkillUps); _worldPacket << int32(Info.PortraitGiver); + _worldPacket << int32(Info.PortraitGiverMount); _worldPacket << int32(Info.PortraitTurnIn); for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i) @@ -141,7 +144,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket << uint32(Info.Objectives.size()); _worldPacket << uint64(Info.AllowableRaces); - _worldPacket << int32(Info.QuestRewardID); + _worldPacket << int32(Info.TreasurePickerID); _worldPacket << int32(Info.Expansion); _worldPacket.WriteBits(Info.LogTitle.size(), 9); @@ -222,13 +225,6 @@ WorldPacket const* WorldPackets::Quest::QuestUpdateAddPvPCredit::Write() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const& questRewards) { data << int32(questRewards.ChoiceItemCount); - - for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) - { - data << int32(questRewards.ChoiceItems[i].ItemID); - data << int32(questRewards.ChoiceItems[i].Quantity); - } - data << int32(questRewards.ItemCount); for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i) @@ -266,7 +262,13 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const data << int32(questRewards.SkillLineID); data << int32(questRewards.NumSkillUps); - data << int32(questRewards.RewardID); + data << int32(questRewards.TreasurePickerID); + + for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) + { + data << questRewards.ChoiceItems[i].Item; + data << int32(questRewards.ChoiceItems[i].Quantity); + } data.WriteBit(questRewards.IsBoostSpell); data.FlushBits(); @@ -302,6 +304,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverOfferRewardMessage::Write() _worldPacket << QuestData; // WorldPackets::Quest::QuestGiverOfferReward _worldPacket << int32(QuestPackageID); _worldPacket << int32(PortraitGiver); + _worldPacket << int32(PortraitGiverMount); _worldPacket << int32(PortraitTurnIn); _worldPacket.WriteBits(QuestTitle.size(), 9); @@ -360,6 +363,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write() _worldPacket << int32(QuestID); _worldPacket << int32(QuestPackageID); _worldPacket << int32(PortraitGiver); + _worldPacket << int32(PortraitGiverMount); _worldPacket << int32(PortraitTurnIn); _worldPacket << uint32(QuestFlags[0]); // Flags _worldPacket << uint32(QuestFlags[1]); // FlagsEx @@ -643,6 +647,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::PlayerChoiceRespon { data << int32(playerChoiceResponse.ResponseID); data << int32(playerChoiceResponse.ChoiceArtFileID); + data << int32(playerChoiceResponse.Flags); + data << uint32(playerChoiceResponse.WidgetSetID); + data << uint8(playerChoiceResponse.GroupID); data.WriteBits(playerChoiceResponse.Answer.length(), 9); data.WriteBits(playerChoiceResponse.Header.length(), 9); @@ -670,6 +677,7 @@ WorldPacket const* WorldPackets::Quest::DisplayPlayerChoice::Write() _worldPacket.WriteBits(Question.length(), 8); _worldPacket.WriteBit(CloseChoiceFrame); _worldPacket.WriteBit(HideWarboardHeader); + _worldPacket.WriteBit(KeepOpenAfterChoice); _worldPacket.FlushBits(); for (PlayerChoiceResponse const& response : Responses) diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index 1dd40e1ccc2..1315a57949c 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -109,6 +109,7 @@ namespace WorldPackets int32 QuestID = 0; int32 QuestType = 0; // Accepted values: 0, 1 or 2. 0 == IsAutoComplete() (skip objectives/details) int32 QuestLevel = 0; // may be -1, static data, in other cases must be used dynamic level: Player::GetQuestLevel (0 is not known, but assuming this is no longer valid for quest intended for client) + int32 QuestScalingFactionGroup = 0; int32 QuestMaxScalingLevel = 255; int32 QuestPackageID = 0; int32 QuestMinLevel = 0; @@ -132,6 +133,7 @@ namespace WorldPackets int32 StartItem = 0; uint32 Flags = 0; uint32 FlagsEx = 0; + uint32 FlagsEx2 = 0; int32 POIContinent = 0; float POIx = 0.0f; float POIy = 0.0f; @@ -146,6 +148,7 @@ namespace WorldPackets int32 RewardSkillLineID = 0; // reward skill id int32 RewardNumSkillUps = 0; // reward skill points int32 PortraitGiver = 0; // quest giver entry ? + int32 PortraitGiverMount = 0; int32 PortraitTurnIn = 0; // quest turn in entry ? std::string PortraitGiverText; std::string PortraitGiverName; @@ -157,7 +160,7 @@ namespace WorldPackets int32 CompleteSoundKitID = 0; int32 AreaGroupID = 0; int32 TimeAllowed = 0; - int32 QuestRewardID = 0; + int32 TreasurePickerID = 0; int32 Expansion = 0; std::vector Objectives; int32 RewardItems[QUEST_REWARD_ITEM_COUNT] = { }; @@ -225,7 +228,7 @@ namespace WorldPackets struct QuestChoiceItem { - int32 ItemID = 0; + Item::ItemInstance Item; int32 Quantity = 0; }; @@ -244,7 +247,7 @@ namespace WorldPackets int32 SpellCompletionID = 0; int32 SkillLineID = 0; int32 NumSkillUps = 0; - int32 RewardID = 0; + int32 TreasurePickerID = 0; QuestChoiceItem ChoiceItems[QUEST_REWARD_CHOICES_COUNT]; int32 ItemID[QUEST_REWARD_ITEM_COUNT] = { }; int32 ItemQty[QUEST_REWARD_ITEM_COUNT] = { }; @@ -285,6 +288,7 @@ namespace WorldPackets int32 PortraitTurnIn = 0; int32 PortraitGiver = 0; + int32 PortraitGiverMount = 0; std::string QuestTitle; std::string RewardText; std::string PortraitGiverText; @@ -365,6 +369,7 @@ namespace WorldPackets std::vector LearnSpells; int32 PortraitTurnIn = 0; int32 PortraitGiver = 0; + int32 PortraitGiverMount = 0; int32 QuestStartItemID = 0; std::string PortraitGiverText; std::string PortraitGiverName; @@ -663,6 +668,9 @@ namespace WorldPackets { int32 ResponseID = 0; int32 ChoiceArtFileID = 0; + int32 Flags = 0; + uint32 WidgetSetID = 0; + uint8 GroupID = 0; std::string Answer; std::string Header; std::string Description; @@ -684,6 +692,7 @@ namespace WorldPackets std::vector Responses; bool CloseChoiceFrame = false; bool HideWarboardHeader = false; + bool KeepOpenAfterChoice = false; }; class ChoiceResponse final : public ClientPacket diff --git a/src/server/game/Server/Packets/ReputationPackets.cpp b/src/server/game/Server/Packets/ReputationPackets.cpp index 314dac85c5e..5e4eb54a918 100644 --- a/src/server/game/Server/Packets/ReputationPackets.cpp +++ b/src/server/game/Server/Packets/ReputationPackets.cpp @@ -46,8 +46,6 @@ WorldPacket const* WorldPackets::Reputation::SetForcedReactions::Write() for (ForcedReaction const& reaction : Reactions) _worldPacket << reaction; - _worldPacket.FlushBits(); - return &_worldPacket; } diff --git a/src/server/game/Server/Packets/ReputationPackets.h b/src/server/game/Server/Packets/ReputationPackets.h index 0156d504491..2046e169ab5 100644 --- a/src/server/game/Server/Packets/ReputationPackets.h +++ b/src/server/game/Server/Packets/ReputationPackets.h @@ -30,7 +30,7 @@ namespace WorldPackets class InitializeFactions final : public ServerPacket { public: - InitializeFactions() : ServerPacket(SMSG_INITIALIZE_FACTIONS, 1312) + InitializeFactions() : ServerPacket(SMSG_INITIALIZE_FACTIONS, FactionCount * (4 + 1) + FactionCount / 8) { FactionStandings.fill(0); FactionHasBonus.fill(false); diff --git a/src/server/game/Server/Packets/ScenarioPackets.cpp b/src/server/game/Server/Packets/ScenarioPackets.cpp index 38a667980a1..73f5120ee8d 100644 --- a/src/server/game/Server/Packets/ScenarioPackets.cpp +++ b/src/server/game/Server/Packets/ScenarioPackets.cpp @@ -109,8 +109,7 @@ WorldPacket const* WorldPackets::Scenario::ScenarioPOIs::Write() { _worldPacket << int32(scenarioPOI.BlobIndex); _worldPacket << int32(scenarioPOI.MapID); - _worldPacket << int32(scenarioPOI.WorldMapAreaID); - _worldPacket << int32(scenarioPOI.Floor); + _worldPacket << int32(scenarioPOI.UiMapID); _worldPacket << int32(scenarioPOI.Priority); _worldPacket << int32(scenarioPOI.Flags); _worldPacket << int32(scenarioPOI.WorldEffectID); diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index ec6d57f2748..7b3117156fc 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -33,6 +33,7 @@ void WorldPackets::Spells::PetCancelAura::Read() void WorldPackets::Spells::CancelChannelling::Read() { _worldPacket >> ChannelSpell; + _worldPacket >> Reason; } WorldPacket const* WorldPackets::Spells::CategoryCooldown::Write() @@ -99,16 +100,17 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::AuraDataInfo cons data << uint32(auraData.ActiveFlags); data << uint16(auraData.CastLevel); data << uint8(auraData.Applications); + data << int32(auraData.ContentTuningID); data.WriteBit(auraData.CastUnit.is_initialized()); data.WriteBit(auraData.Duration.is_initialized()); data.WriteBit(auraData.Remaining.is_initialized()); data.WriteBit(auraData.TimeMod.is_initialized()); data.WriteBits(auraData.Points.size(), 6); data.WriteBits(auraData.EstimatedPoints.size(), 6); - data.WriteBit(auraData.SandboxScaling.is_initialized()); + data.WriteBit(auraData.ContentTuning.is_initialized()); - if (auraData.SandboxScaling) - data << *auraData.SandboxScaling; + if (auraData.ContentTuning) + data << *auraData.ContentTuning; if (auraData.CastUnit) data << *auraData.CastUnit; @@ -211,7 +213,7 @@ ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Spells::SpellCastReques buffer >> request.SpellID; buffer >> request.SpellXSpellVisualID; buffer >> request.MissileTrajectory; - buffer >> request.Charmer; + buffer >> request.CraftingNPC; request.SendCastFlags = buffer.ReadBits(5); bool hasMoveUpdate = buffer.ReadBit(); request.Weight.resize(buffer.ReadBits(2)); @@ -366,13 +368,13 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastData con data << int32(spellCastData.SpellID); data << uint32(spellCastData.SpellXSpellVisualID); data << uint32(spellCastData.CastFlags); + data << uint32(spellCastData.CastFlagsEx); data << uint32(spellCastData.CastTime); data << spellCastData.MissileTrajectory; data << int32(spellCastData.Ammo.DisplayID); data << uint8(spellCastData.DestLocSpellCastIndex); data << spellCastData.Immunities; data << spellCastData.Predict; - data.WriteBits(spellCastData.CastFlagsEx, 23); data.WriteBits(spellCastData.HitTargets.size(), 16); data.WriteBits(spellCastData.MissTargets.size(), 16); data.WriteBits(spellCastData.MissStatus.size(), 16); @@ -716,6 +718,7 @@ WorldPacket const* WorldPackets::Spells::PlayOrphanSpellVisual::Write() _worldPacket << int32(SpellVisualID); _worldPacket << float(TravelSpeed); _worldPacket << float(UnkZero); + _worldPacket << float(Unk801); _worldPacket.WriteBit(SpeedAsTime); _worldPacket.FlushBits(); @@ -726,12 +729,14 @@ WorldPacket const* WorldPackets::Spells::PlaySpellVisual::Write() { _worldPacket << Source; _worldPacket << Target; + _worldPacket << Unk801_1; _worldPacket << TargetPosition; - _worldPacket << SpellVisualID; - _worldPacket << TravelSpeed; - _worldPacket << MissReason; - _worldPacket << ReflectStatus; - _worldPacket << Orientation; + _worldPacket << uint32(SpellVisualID); + _worldPacket << float(TravelSpeed); + _worldPacket << uint16(MissReason); + _worldPacket << uint16(ReflectStatus); + _worldPacket << float(Orientation); + _worldPacket << float(Unk801_2); _worldPacket.WriteBit(SpeedAsTime); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index b1230459627..1df8e8772c0 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -57,6 +57,8 @@ namespace WorldPackets void Read() override; int32 ChannelSpell = 0; + int32 Reason = 0; // 40 = /run SpellStopCasting(), 16 = movement/AURA_INTERRUPT_FLAG_MOVE, 41 = turning/AURA_INTERRUPT_FLAG_TURNING + // does not match SpellCastResult enum }; class CancelGrowthAura final : public ClientPacket @@ -177,7 +179,8 @@ namespace WorldPackets uint32 ActiveFlags = 0; uint16 CastLevel = 1; uint8 Applications = 1; - Optional SandboxScaling; + int32 ContentTuningID = 0; + Optional ContentTuning; Optional CastUnit; Optional Duration; Optional Remaining; @@ -245,7 +248,7 @@ namespace WorldPackets MissileTrajectoryRequest MissileTrajectory; Optional MoveUpdate; std::vector Weight; - ObjectGuid Charmer; + ObjectGuid CraftingNPC; int32 Misc[2] = { }; }; @@ -613,7 +616,7 @@ namespace WorldPackets class SetSpellCharges final : public ServerPacket { public: - SetSpellCharges() : ServerPacket(SMSG_SET_SPELL_CHARGES, 1 + 4 + 4) { } + SetSpellCharges() : ServerPacket(SMSG_SET_SPELL_CHARGES, 4 + 4 + 1 + 4 + 1) { } WorldPacket const* Write() override; @@ -697,6 +700,7 @@ namespace WorldPackets bool SpeedAsTime = false; float TravelSpeed = 0.0f; float UnkZero = 0.0f; // Always zero + float Unk801 = 0.0f; TaggedPosition SourceRotation; // Vector of rotations, Orientation is z TaggedPosition TargetLocation; // Exclusive with Target }; @@ -710,6 +714,7 @@ namespace WorldPackets ObjectGuid Source; ObjectGuid Target; // Exclusive with TargetPosition + ObjectGuid Unk801_1; uint16 MissReason = 0; uint32 SpellVisualID = 0; bool SpeedAsTime = false; @@ -717,6 +722,7 @@ namespace WorldPackets float TravelSpeed = 0.0f; TaggedPosition TargetPosition; // Exclusive with Target float Orientation = 0.0f; + float Unk801_2 = 0.0f; }; class PlaySpellVisualKit final : public ServerPacket diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index da674178456..71dbce750e7 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -37,6 +37,8 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write() _worldPacket << uint32(BpayStoreProductDeliveryDelay); + _worldPacket << uint32(ClubsPresenceUpdateTimer); + _worldPacket.WriteBit(VoiceEnabled); _worldPacket.WriteBit(EuropaTicketSystemStatus.is_initialized()); _worldPacket.WriteBit(ScrollOfResurrectionEnabled); @@ -49,16 +51,22 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write() _worldPacket.WriteBit(RecruitAFriendSendingEnabled); _worldPacket.WriteBit(CharUndeleteEnabled); _worldPacket.WriteBit(RestrictedAccount); + _worldPacket.WriteBit(CommerceSystemEnabled); _worldPacket.WriteBit(TutorialsEnabled); _worldPacket.WriteBit(NPETutorialsEnabled); _worldPacket.WriteBit(TwitterEnabled); - _worldPacket.WriteBit(CommerceSystemEnabled); _worldPacket.WriteBit(Unk67); _worldPacket.WriteBit(WillKickFromWorld); _worldPacket.WriteBit(KioskModeEnabled); _worldPacket.WriteBit(CompetitiveModeEnabled); _worldPacket.WriteBit(RaceClassExpansionLevels.is_initialized()); _worldPacket.WriteBit(TokenBalanceEnabled); + _worldPacket.WriteBit(WarModeFeatureEnabled); + _worldPacket.WriteBit(ClubsEnabled); + _worldPacket.WriteBit(ClubsBattleNetClubTypeAllowed); + _worldPacket.WriteBit(ClubsCharacterClubTypeAllowed); + _worldPacket.WriteBit(VoiceChatDisabledByParentalControl); + _worldPacket.WriteBit(VoiceChatMutedByParentalControl); _worldPacket.FlushBits(); @@ -102,6 +110,12 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write() _worldPacket.append(RaceClassExpansionLevels->data(), RaceClassExpansionLevels->size()); } + { + _worldPacket.WriteBit(VoiceChatManagerSettings.Enabled); + _worldPacket << VoiceChatManagerSettings.Unused_801_1; + _worldPacket << VoiceChatManagerSettings.Unused_801_2; + } + if (EuropaTicketSystemStatus) { _worldPacket.WriteBit(EuropaTicketSystemStatus->TicketsEnabled); @@ -141,7 +155,12 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatusGlueScreen::Write() _worldPacket << int32(TokenPollTimeSeconds); _worldPacket << int32(TokenRedeemIndex); _worldPacket << int64(TokenBalanceAmount); + _worldPacket << int32(MaxCharactersPerRealm); _worldPacket << uint32(BpayStoreProductDeliveryDelay); + _worldPacket << int32(ActiveCharacterUpgradeBoostType); + _worldPacket << int32(ActiveClassTrialBoostType); + _worldPacket << int32(MinimumExpansionLevel); + _worldPacket << int32(MaximumExpansionLevel); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 74d40bf4e05..8fe1f515590 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -80,6 +80,13 @@ namespace WorldPackets float ThrottleDfBestPriority = 0.0f; }; + struct VoiceChatProxySettings + { + bool Enabled = false; + ObjectGuid Unused_801_1; + ObjectGuid Unused_801_2; + }; + FeatureSystemStatus() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS, 48) { } WorldPacket const* Write() override; @@ -103,6 +110,7 @@ namespace WorldPackets uint32 TokenRedeemIndex = 0; int64 TokenBalanceAmount = 0; uint32 BpayStoreProductDeliveryDelay = 0; + uint32 ClubsPresenceUpdateTimer = 0; bool ItemRestorationButtonEnabled = false; bool CharUndeleteEnabled = false; ///< Implemented bool BpayStoreDisabledByParentalControls = false; @@ -110,16 +118,22 @@ namespace WorldPackets bool CommerceSystemEnabled = false; bool Unk67 = false; bool WillKickFromWorld = false; - bool RestrictedAccount = false; bool TutorialsEnabled = false; bool NPETutorialsEnabled = false; bool KioskModeEnabled = false; bool CompetitiveModeEnabled = false; bool TokenBalanceEnabled = false; + bool WarModeFeatureEnabled = false; + bool ClubsEnabled = false; + bool ClubsBattleNetClubTypeAllowed = false; + bool ClubsCharacterClubTypeAllowed = false; + bool VoiceChatDisabledByParentalControl = false; + bool VoiceChatMutedByParentalControl = false; Optional> RaceClassExpansionLevels; SocialQueueConfig QuickJoinConfig; + VoiceChatProxySettings VoiceChatManagerSettings; }; class FeatureSystemStatusGlueScreen final : public ServerPacket @@ -147,7 +161,12 @@ namespace WorldPackets int32 TokenPollTimeSeconds = 0; // NYI int32 TokenRedeemIndex = 0; // NYI int64 TokenBalanceAmount = 0; // NYI + int32 MaxCharactersPerRealm = 0; uint32 BpayStoreProductDeliveryDelay = 0; // NYI + int32 ActiveCharacterUpgradeBoostType = 0; // NYI + int32 ActiveClassTrialBoostType = 0; // NYI + int32 MinimumExpansionLevel = 0; + int32 MaximumExpansionLevel = 0; }; class MOTD final : public ServerPacket diff --git a/src/server/game/Server/Packets/TalentPackets.cpp b/src/server/game/Server/Packets/TalentPackets.cpp index c5cbb0769a5..3344ef292fc 100644 --- a/src/server/game/Server/Packets/TalentPackets.cpp +++ b/src/server/game/Server/Packets/TalentPackets.cpp @@ -17,6 +17,20 @@ #include "TalentPackets.h" +ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Talent::PvPTalent& pvpTalent) +{ + data >> pvpTalent.PvPTalentID; + data >> pvpTalent.Slot; + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Talent::PvPTalent const& pvpTalent) +{ + data << uint16(pvpTalent.PvPTalentID); + data << uint8(pvpTalent.Slot); + return data; +} + WorldPacket const* WorldPackets::Talent::UpdateTalentData::Write() { _worldPacket << uint8(Info.ActiveGroup); @@ -27,13 +41,13 @@ WorldPacket const* WorldPackets::Talent::UpdateTalentData::Write() { _worldPacket << uint32(talentGroupInfo.SpecID); _worldPacket << uint32(talentGroupInfo.TalentIDs.size()); - _worldPacket << uint32(talentGroupInfo.PvPTalentIDs.size()); + _worldPacket << uint32(talentGroupInfo.PvPTalents.size()); - for (uint16 talentID : talentGroupInfo.TalentIDs) - _worldPacket << uint16(talentID); + for (uint16 talent : talentGroupInfo.TalentIDs) + _worldPacket << uint16(talent); - for (uint16 talentID : talentGroupInfo.PvPTalentIDs) - _worldPacket << uint16(talentID); + for (PvPTalent talent : talentGroupInfo.PvPTalents) + _worldPacket << talent; } return &_worldPacket; @@ -92,7 +106,7 @@ WorldPacket const* WorldPackets::Talent::ActiveGlyphs::Write() void WorldPackets::Talent::LearnPvpTalents::Read() { - Talents.resize(_worldPacket.ReadBits(6)); + Talents.resize(_worldPacket.read()); for (uint32 i = 0; i < Talents.size(); ++i) _worldPacket >> Talents[i]; } @@ -102,8 +116,8 @@ WorldPacket const* WorldPackets::Talent::LearnPvpTalentsFailed::Write() _worldPacket.WriteBits(Reason, 4); _worldPacket << int32(SpellID); _worldPacket << uint32(Talents.size()); - if (!Talents.empty()) - _worldPacket.append(Talents.data(), Talents.size()); + for (PvPTalent pvpTalent : Talents) + _worldPacket << pvpTalent; return &_worldPacket; } diff --git a/src/server/game/Server/Packets/TalentPackets.h b/src/server/game/Server/Packets/TalentPackets.h index 27db9f99eb5..6cbc8aca057 100644 --- a/src/server/game/Server/Packets/TalentPackets.h +++ b/src/server/game/Server/Packets/TalentPackets.h @@ -27,11 +27,17 @@ namespace WorldPackets { namespace Talent { + struct PvPTalent + { + uint16 PvPTalentID = 0; + uint8 Slot = 0; + }; + struct TalentGroupInfo { uint32 SpecID = 0; std::vector TalentIDs; - std::vector PvPTalentIDs; + std::vector PvPTalents; }; struct TalentInfoUpdate @@ -121,7 +127,7 @@ namespace WorldPackets void Read() override; - Array Talents; + Array Talents; }; class LearnPvpTalentsFailed final : public ServerPacket @@ -133,7 +139,7 @@ namespace WorldPackets uint32 Reason = 0; int32 SpellID = 0; - std::vector Talents; + std::vector Talents; }; } } diff --git a/src/server/game/Server/Packets/TaxiPackets.h b/src/server/game/Server/Packets/TaxiPackets.h index 098ed293fbb..9e10f7bd442 100644 --- a/src/server/game/Server/Packets/TaxiPackets.h +++ b/src/server/game/Server/Packets/TaxiPackets.h @@ -110,7 +110,7 @@ namespace WorldPackets class ActivateTaxiReply final : public ServerPacket { public: - ActivateTaxiReply() : ServerPacket(SMSG_ACTIVATE_TAXI_REPLY, 4) { } + ActivateTaxiReply() : ServerPacket(SMSG_ACTIVATE_TAXI_REPLY, 1) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp index cafb723c062..fe74550c77f 100644 --- a/src/server/game/Server/Packets/TicketPackets.cpp +++ b/src/server/game/Server/Packets/TicketPackets.cpp @@ -201,9 +201,17 @@ void WorldPackets::Ticket::SupportTicketSubmitComplaint::Read() bool hasGuildInfo = _worldPacket.ReadBit(); bool hasLFGListSearchResult = _worldPacket.ReadBit(); bool hasLFGListApplicant = _worldPacket.ReadBit(); + bool hasClubMessage = _worldPacket.ReadBit(); _worldPacket.ResetBitPos(); + if (hasClubMessage) + { + CommunityMessage = boost::in_place(); + CommunityMessage->IsPlayerUsingVoice = _worldPacket.ReadBit(); + _worldPacket.ResetBitPos(); + } + if (hasMailInfo) _worldPacket >> MailInfo; diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h index 6e25f3da4a9..5e7fc20f2eb 100644 --- a/src/server/game/Server/Packets/TicketPackets.h +++ b/src/server/game/Server/Packets/TicketPackets.h @@ -178,6 +178,11 @@ namespace WorldPackets std::string Comment; }; + struct SupportTicketCommunityMessage + { + bool IsPlayerUsingVoice = false; + }; + SupportTicketSubmitComplaint(WorldPacket&& packet) : ClientPacket(CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT, std::move(packet)) { } void Read() override; @@ -193,7 +198,7 @@ namespace WorldPackets Optional GuildInfo; Optional LFGListSearchResult; Optional LFGListApplicant; - + Optional CommunityMessage; }; class Complaint final : public ClientPacket diff --git a/src/server/game/Server/Packets/TotemPackets.cpp b/src/server/game/Server/Packets/TotemPackets.cpp index 1bd8f1c915e..a7b042ca19a 100644 --- a/src/server/game/Server/Packets/TotemPackets.cpp +++ b/src/server/game/Server/Packets/TotemPackets.cpp @@ -25,7 +25,7 @@ void WorldPackets::Totem::TotemDestroyed::Read() WorldPacket const* WorldPackets::Totem::TotemCreated::Write() { - _worldPacket << Slot; + _worldPacket << uint8(Slot); _worldPacket << Totem; _worldPacket << int32(Duration); _worldPacket << int32(SpellID); diff --git a/src/server/game/Server/Packets/TotemPackets.h b/src/server/game/Server/Packets/TotemPackets.h index b438109825c..232b26f1cbb 100644 --- a/src/server/game/Server/Packets/TotemPackets.h +++ b/src/server/game/Server/Packets/TotemPackets.h @@ -46,7 +46,7 @@ namespace WorldPackets ObjectGuid Totem; int32 SpellID = 0; int32 Duration = 0; - int8 Slot = 0; + uint8 Slot = 0; float TimeMod = 1.0f; bool CannotDismiss = false; }; diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.cpp b/src/server/game/Server/Packets/TransmogrificationPackets.cpp index 7d50891bc3e..da2c3972b12 100644 --- a/src/server/game/Server/Packets/TransmogrificationPackets.cpp +++ b/src/server/game/Server/Packets/TransmogrificationPackets.cpp @@ -41,8 +41,8 @@ WorldPacket const* WorldPackets::Transmogrification::TransmogCollectionUpdate::W _worldPacket.WriteBit(IsFullUpdate); _worldPacket.WriteBit(IsSetFavorite); _worldPacket << uint32(FavoriteAppearances.size()); - for (uint32 itemModifiedAppearanceId : FavoriteAppearances) - _worldPacket << uint32(itemModifiedAppearanceId); + if (!FavoriteAppearances.empty()) + _worldPacket.append(FavoriteAppearances.data(), FavoriteAppearances.size()); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/WhoPackets.cpp b/src/server/game/Server/Packets/WhoPackets.cpp index afc6c3bdd28..9cfbc04e488 100644 --- a/src/server/game/Server/Packets/WhoPackets.cpp +++ b/src/server/game/Server/Packets/WhoPackets.cpp @@ -117,8 +117,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Who::WhoResponse const& r data.WriteBits(response.Entries.size(), 6); data.FlushBits(); - for (size_t i = 0; i < response.Entries.size(); ++i) - data << response.Entries[i]; + for (WorldPackets::Who::WhoEntry const& whoEntry : response.Entries) + data << whoEntry; return data; } diff --git a/src/server/game/Server/Packets/WorldStatePackets.cpp b/src/server/game/Server/Packets/WorldStatePackets.cpp index 0c202978de8..8129e2e8af0 100644 --- a/src/server/game/Server/Packets/WorldStatePackets.cpp +++ b/src/server/game/Server/Packets/WorldStatePackets.cpp @@ -24,14 +24,14 @@ WorldPacket const* WorldPackets::WorldState::InitWorldStates::Write() { _worldPacket.reserve(16 + Worldstates.size() * 8); - _worldPacket << uint32(MapID); - _worldPacket << uint32(AreaID); - _worldPacket << uint32(SubareaID); + _worldPacket << int32(MapID); + _worldPacket << int32(AreaID); + _worldPacket << int32(SubareaID); _worldPacket << uint32(Worldstates.size()); for (WorldStateInfo const& wsi : Worldstates) { - _worldPacket << uint32(wsi.VariableID); + _worldPacket << int32(wsi.VariableID); _worldPacket << int32(wsi.Value); } diff --git a/src/server/game/Server/Packets/WorldStatePackets.h b/src/server/game/Server/Packets/WorldStatePackets.h index ba7aa8fe282..766725fcf66 100644 --- a/src/server/game/Server/Packets/WorldStatePackets.h +++ b/src/server/game/Server/Packets/WorldStatePackets.h @@ -29,10 +29,10 @@ namespace WorldPackets public: struct WorldStateInfo { - WorldStateInfo(uint32 variableID, int32 value) + WorldStateInfo(int32 variableID, int32 value) : VariableID(variableID), Value(value) { } - uint32 VariableID; + int32 VariableID; int32 Value; }; @@ -40,9 +40,9 @@ namespace WorldPackets WorldPacket const* Write() override; - uint32 AreaID = 0; ///< ZoneId - uint32 SubareaID = 0; ///< AreaId - uint32 MapID = 0; ///< MapId + int32 AreaID = 0; ///< ZoneId + int32 SubareaID = 0; ///< AreaId + int32 MapID = 0; ///< MapId std::vector Worldstates; }; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index ec0efbf4446..2f75b82ec74 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -898,7 +898,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_DENIED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_NO_CORPSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_PATH, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_SHAPE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_SHAPE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_CROWD_CONTROL_SPELLS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1008,7 +1008,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_BROADCAST_ACHIEVEMENT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BUY_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BUY_SUCCEEDED, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CACHE_INFO, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CACHE_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CACHE_VERSION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_CLEAR_PENDING_ACTION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1237,6 +1237,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_POI, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_TEXT_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_ACTION_THROTTLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DECLINE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DESTROYED, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1520,7 +1521,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_INVITE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_KILL_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_UPDATE, STATUS_NEVER, 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); @@ -1656,7 +1657,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_PVP_BRAWL_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_PVP_REWARDS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESEARCH_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_AREA_TRIGGER, 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_RANGED_COMBAT_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index bdf5bc3b9fa..9164e453ad7 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -797,8 +797,8 @@ enum OpcodeServer : uint16 SMSG_AREA_SPIRIT_HEALER_TIME = 0x278A, SMSG_AREA_TRIGGER_DENIED = 0x26A2, SMSG_AREA_TRIGGER_NO_CORPSE = 0x275E, - SMSG_AREA_TRIGGER_RE_PATH = 0x2641, - SMSG_AREA_TRIGGER_RE_SHAPE = 0x263E, + SMSG_AREA_TRIGGER_RE_PATH = 0x263E, + SMSG_AREA_TRIGGER_RE_SHAPE = 0x2642, SMSG_ARENA_CROWD_CONTROL_SPELLS = 0x2650, SMSG_ARENA_ERROR = 0x271A, SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2667, @@ -1136,6 +1136,7 @@ enum OpcodeServer : uint16 SMSG_GOSSIP_COMPLETE = 0x2A96, SMSG_GOSSIP_MESSAGE = 0x2A97, SMSG_GOSSIP_POI = 0x27E4, + SMSG_GOSSIP_TEXT_UPDATE = 0x2A98, SMSG_GROUP_ACTION_THROTTLED = 0x259C, SMSG_GROUP_DECLINE = 0x27DF, SMSG_GROUP_DESTROYED = 0x27E1, @@ -1557,7 +1558,6 @@ enum OpcodeServer : uint16 SMSG_REQUEST_PVP_BRAWL_INFO_RESPONSE = 0x25D5, SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x25D4, SMSG_RESEARCH_COMPLETE = 0x2585, - SMSG_RESET_AREA_TRIGGER = 0x2642, SMSG_RESET_COMPRESSION_CONTEXT = 0x304F, SMSG_RESET_FAILED_NOTIFY = 0x26E9, SMSG_RESET_RANGED_COMBAT_TIMER = 0x271C, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 4442a41a0a2..ecf3dcf5819 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -1127,7 +1127,7 @@ class TC_GAME_API WorldSession void HandleUndeleteCooldownStatusCallback(PreparedQueryResult result); void HandleCharUndeleteOpcode(WorldPackets::Character::UndeleteCharacter& undeleteInfo); - void SendCharCreate(ResponseCodes result); + void SendCharCreate(ResponseCodes result, ObjectGuid const& guid = ObjectGuid::Empty); void SendCharDelete(ResponseCodes result); void SendCharRename(ResponseCodes result, WorldPackets::Character::CharacterRenameInfo const* renameInfo); void SendCharCustomize(ResponseCodes result, WorldPackets::Character::CharCustomizeInfo const* customizeInfo); diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 974fb7879dc..dd4a75865ac 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -70,8 +70,7 @@ uint8 const WorldSocket::AuthCheckSeed[16] = { 0xC5, 0xC6, 0x98, 0x95, 0x76, 0x3 uint8 const WorldSocket::SessionKeySeed[16] = { 0x58, 0xCB, 0xCF, 0x40, 0xFE, 0x2E, 0xCE, 0xA6, 0x5A, 0x90, 0xB8, 0x01, 0x68, 0x6C, 0x28, 0x0B }; uint8 const WorldSocket::ContinuedSessionSeed[16] = { 0x16, 0xAD, 0x0C, 0xD4, 0x46, 0xF9, 0x4F, 0xB2, 0xEF, 0x7D, 0xEA, 0x2A, 0x17, 0x66, 0x4D, 0x2F }; -uint8 const ClientTypeSeed_Win[16] = { 0x79, 0x7E, 0xCC, 0x19, 0x66, 0x2D, 0xCB, 0xD5, 0x09, 0x0A, 0x44, 0x81, 0x17, 0x3F, 0x1D, 0x26 }; -uint8 const ClientTypeSeed_Wn64[16] = { 0x6E, 0x21, 0x2D, 0xEF, 0x6A, 0x01, 0x24, 0xA3, 0xD9, 0xAD, 0x07, 0xF5, 0xE3, 0x22, 0xF7, 0xAE }; +uint8 const ClientTypeSeed_Wn64[16] = { 0xDD, 0x62, 0x65, 0x17, 0xCC, 0x6D, 0x31, 0x93, 0x2B, 0x47, 0x99, 0x34, 0xCC, 0xDC, 0x0A, 0xBF }; uint8 const ClientTypeSeed_Mc64[16] = { 0x34, 0x1C, 0xFE, 0xFE, 0x3D, 0x72, 0xAC, 0xA9, 0xA4, 0x40, 0x7D, 0xC5, 0x35, 0xDE, 0xD6, 0x6A }; WorldSocket::WorldSocket(tcp::socket&& socket) : Socket(std::move(socket)), @@ -670,9 +669,7 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptrDealDamage(target, damage, &cleanDamage, DOT, GetSpellInfo()->GetSchoolMask(), GetSpellInfo(), true); @@ -5657,6 +5657,7 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c // SendSpellNonMeleeDamageLog expects non-absorbed/non-resisted damage SpellNonMeleeDamage log(caster, target, GetId(), GetBase()->GetSpellXSpellVisualId(), GetSpellInfo()->GetSchoolMask(), GetBase()->GetCastGUID()); log.damage = damage; + log.originalDamage = dmg; log.absorb = absorb; log.resist = resist; log.periodicLog = true; @@ -5805,7 +5806,7 @@ void AuraEffect::HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const caster->CalcHealAbsorb(healInfo); caster->DealHeal(healInfo); - SpellPeriodicAuraLogInfo pInfo(this, heal, heal - healInfo.GetEffectiveHeal(), healInfo.GetAbsorb(), 0, 0.0f, crit); + SpellPeriodicAuraLogInfo pInfo(this, heal, damage, heal - healInfo.GetEffectiveHeal(), healInfo.GetAbsorb(), 0, 0.0f, crit); target->SendPeriodicAuraLog(&pInfo); target->getHostileRefManager().threatAssist(caster, float(healInfo.GetEffectiveHeal()) * 0.5f, GetSpellInfo()); @@ -5849,7 +5850,7 @@ void AuraEffect::HandlePeriodicManaLeechAuraTick(Unit* target, Unit* caster) con float gainMultiplier = GetSpellEffectInfo()->CalcValueMultiplier(caster); - SpellPeriodicAuraLogInfo pInfo(this, drainedAmount, 0, 0, 0, gainMultiplier, false); + SpellPeriodicAuraLogInfo pInfo(this, drainedAmount, drainAmount, 0, 0, 0, gainMultiplier, false); int32 gainAmount = int32(drainedAmount * gainMultiplier); int32 gainedAmount = 0; @@ -5903,7 +5904,7 @@ void AuraEffect::HandleObsModPowerAuraTick(Unit* target, Unit* caster) const TC_LOG_DEBUG("spells.periodic", "PeriodicTick: %s energize %s for %u dmg inflicted by %u", GetCasterGUID().ToString().c_str(), target->GetGUID().ToString().c_str(), amount, GetId()); - SpellPeriodicAuraLogInfo pInfo(this, amount, 0, 0, 0, 0.0f, false); + SpellPeriodicAuraLogInfo pInfo(this, amount, amount, 0, 0, 0, 0.0f, false); int32 gain = target->ModifyPower(powerType, amount); if (caster) @@ -5931,7 +5932,7 @@ void AuraEffect::HandlePeriodicEnergizeAuraTick(Unit* target, Unit* caster) cons // ignore negative values (can be result apply spellmods to aura damage int32 amount = std::max(m_amount, 0); - SpellPeriodicAuraLogInfo pInfo(this, amount, 0, 0, 0, 0.0f, false); + SpellPeriodicAuraLogInfo pInfo(this, amount, amount, 0, 0, 0, 0.0f, false); TC_LOG_DEBUG("spells.periodic", "PeriodicTick: %s energize %s for %u dmg inflicted by %u", GetCasterGUID().ToString().c_str(), target->GetGUID().ToString().c_str(), amount, GetId()); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index b6f009b971e..6cfb2764f08 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -410,7 +410,8 @@ void Spell::EffectEnvironmentalDMG(SpellEffIndex /*effIndex*/) m_caster->CalcAbsorbResist(damageInfo); SpellNonMeleeDamage log(m_caster, unitTarget, m_spellInfo->Id, m_SpellVisual, m_spellInfo->GetSchoolMask(), m_castId); - log.damage = damage; + log.damage = damageInfo.GetDamage(); + log.originalDamage = damage; log.absorb = damageInfo.GetAbsorb(); log.resist = damageInfo.GetResist(); diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index 50720cb53a6..690edb8f508 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -561,7 +561,7 @@ bool IsWeaponSkill(uint32 skill); inline bool IsProfessionSkill(uint32 skill) { - return IsPrimaryProfessionSkill(skill) || skill == SKILL_FISHING || skill == SKILL_COOKING || skill == SKILL_FIRST_AID; + return IsPrimaryProfessionSkill(skill) || skill == SKILL_FISHING || skill == SKILL_COOKING; } inline bool IsProfessionOrRidingSkill(uint32 skill) diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index fdd3667a3a6..c7009028e9c 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -123,9 +123,10 @@ class TC_SHARED_API ByteBuffer _storage.clear(); } - template void append(T value) + template + void append(T value) { - static_assert(std::is_fundamental::value, "append(compound)"); + static_assert(std::is_trivially_copyable::value, "append(T) must be used with trivially copyable types"); EndianConvert(value); append((uint8 *)&value, sizeof(value)); } @@ -210,7 +211,7 @@ class TC_SHARED_API ByteBuffer template void put(std::size_t pos, T value) { - static_assert(std::is_fundamental::value, "append(compound)"); + static_assert(std::is_trivially_copyable::value, "put(size_t, T) must be used with trivially copyable types"); EndianConvert(value); put(pos, (uint8 *)&value, sizeof(value)); } @@ -435,7 +436,8 @@ class TC_SHARED_API ByteBuffer _rpos += skip; } - template T read() + template + T read() { ResetBitPos(); T r = read(_rpos); @@ -443,7 +445,8 @@ class TC_SHARED_API ByteBuffer return r; } - template T read(size_t pos) const + template + T read(size_t pos) const { if (pos + sizeof(T) > size()) throw ByteBufferPositionException(pos, sizeof(T), size()); @@ -452,6 +455,13 @@ class TC_SHARED_API ByteBuffer return val; } + template + void read(T* dest, size_t count) + { + static_assert(std::is_trivially_copyable::value, "read(T*, size_t) must be used with trivially copyable types"); + return read(reinterpret_cast(dest), count * sizeof(T)); + } + void read(uint8 *dest, size_t len) { if (_rpos + len > size()) @@ -540,7 +550,8 @@ class TC_SHARED_API ByteBuffer return append((const uint8 *)src, cnt); } - template void append(const T *src, size_t cnt) + template + void append(const T *src, size_t cnt) { return append((const uint8 *)src, cnt * sizeof(T)); } -- cgit v1.2.3 From 9d210476e57949094fdd286001ef4900564edca5 Mon Sep 17 00:00:00 2001 From: Traesh Date: Wed, 7 Nov 2018 20:23:30 +0100 Subject: Core/Creatures: Update creature model handling with new display scale (#22567) --- sql/updates/world/master/2018_11_05_00_world.sql | 23 ++ .../Database/Implementation/WorldDatabase.cpp | 2 +- src/server/game/AI/SmartScripts/SmartScript.cpp | 8 +- src/server/game/Entities/Creature/Creature.cpp | 144 +++++----- src/server/game/Entities/Creature/Creature.h | 3 +- src/server/game/Entities/Creature/CreatureData.h | 31 +- src/server/game/Entities/Pet/Pet.cpp | 4 +- src/server/game/Entities/Pet/Pet.h | 2 +- src/server/game/Entities/Unit/Unit.cpp | 8 +- src/server/game/Entities/Unit/Unit.h | 5 +- src/server/game/Globals/ObjectMgr.cpp | 320 ++++++++++----------- src/server/game/Globals/ObjectMgr.h | 5 +- src/server/game/Handlers/QueryHandler.cpp | 20 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 13 +- src/server/scripts/Commands/cs_modify.cpp | 5 +- .../MagistersTerrace/boss_vexallus.cpp | 2 +- .../EasternKingdoms/ScarletEnclave/chapter1.cpp | 4 +- .../EasternKingdoms/SunwellPlateau/boss_muru.cpp | 2 +- .../scripts/EasternKingdoms/ZulAman/zulaman.cpp | 2 +- .../EasternKingdoms/zone_redridge_mountains.cpp | 1 - .../scripts/Kalimdor/zone_bloodmyst_isle.cpp | 2 +- .../AzjolNerub/Ahnkahet/boss_amanitar.cpp | 2 +- .../TrialOfTheCrusader/boss_anubarak_trial.cpp | 6 +- .../TrialOfTheCrusader/boss_northrend_beasts.cpp | 2 +- .../TrialOfTheCrusader/trial_of_the_crusader.cpp | 6 +- .../HallsOfReflection/halls_of_reflection.cpp | 2 +- .../FrozenHalls/PitOfSaron/pit_of_saron.cpp | 2 +- .../Northrend/Nexus/Nexus/boss_anomalus.cpp | 2 +- .../Ulduar/Ulduar/boss_flame_leviathan.cpp | 2 +- .../scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp | 10 +- .../Northrend/Ulduar/Ulduar/boss_razorscale.cpp | 2 +- src/server/scripts/World/npcs_special.cpp | 4 +- 32 files changed, 340 insertions(+), 306 deletions(-) create mode 100644 sql/updates/world/master/2018_11_05_00_world.sql (limited to 'src/server/database/Database/Implementation') diff --git a/sql/updates/world/master/2018_11_05_00_world.sql b/sql/updates/world/master/2018_11_05_00_world.sql new file mode 100644 index 00000000000..934627d98fb --- /dev/null +++ b/sql/updates/world/master/2018_11_05_00_world.sql @@ -0,0 +1,23 @@ +DROP TABLE IF EXISTS `creature_template_model`; +CREATE TABLE `creature_template_model`( + `CreatureID` int(10) unsigned NOT NULL, + `Idx` int(10) unsigned NOT NULL DEFAULT '0', + `CreatureDisplayID` int(10) unsigned NOT NULL, + `DisplayScale` float NOT NULL DEFAULT '1', + `Probability` float NOT NULL DEFAULT '0', + `VerifiedBuild` smallint(5) unsigned NOT NULL, + PRIMARY KEY (`CreatureID`,`CreatureDisplayID`) +) ENGINE=MYISAM CHARSET=utf8mb4; + +INSERT IGNORE INTO `creature_template_model` (`CreatureID`,`Idx`,`CreatureDisplayID`,`DisplayScale`,`Probability`,`VerifiedBuild`) SELECT `entry`,0,`modelid1`,`scale`,1,`VerifiedBuild` FROM `creature_template` WHERE `modelid1`!=0; +INSERT IGNORE INTO `creature_template_model` (`CreatureID`,`Idx`,`CreatureDisplayID`,`DisplayScale`,`Probability`,`VerifiedBuild`) SELECT `entry`,1,`modelid2`,`scale`,1,`VerifiedBuild` FROM `creature_template` WHERE `modelid2`!=0; +INSERT IGNORE INTO `creature_template_model` (`CreatureID`,`Idx`,`CreatureDisplayID`,`DisplayScale`,`Probability`,`VerifiedBuild`) SELECT `entry`,2,`modelid3`,`scale`,1,`VerifiedBuild` FROM `creature_template` WHERE `modelid3`!=0; +INSERT IGNORE INTO `creature_template_model` (`CreatureID`,`Idx`,`CreatureDisplayID`,`DisplayScale`,`Probability`,`VerifiedBuild`) SELECT `entry`,3,`modelid4`,`scale`,1,`VerifiedBuild` FROM `creature_template` WHERE `modelid4`!=0; + +UPDATE `creature_template` SET `scale`=1; + +ALTER TABLE `creature_template` + DROP `modelid1`, + DROP `modelid2`, + DROP `modelid3`, + DROP `modelid4`; diff --git a/src/server/database/Database/Implementation/WorldDatabase.cpp b/src/server/database/Database/Implementation/WorldDatabase.cpp index 01cb3023c29..a66132121a9 100644 --- a/src/server/database/Database/Implementation/WorldDatabase.cpp +++ b/src/server/database/Database/Implementation/WorldDatabase.cpp @@ -77,7 +77,7 @@ void WorldDatabaseConnection::DoPrepareStatements() PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_ID_BY_GUID, "SELECT id FROM waypoint_scripts WHERE guid = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_DEL_CREATURE, "DELETE FROM creature WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(WORLD_SEL_COMMANDS, "SELECT name, permission, help FROM command", CONNECTION_SYNCH); - PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, modelid4, name, femaleName, subname, TitleAlt, IconName, gossip_menu_id, minlevel, maxlevel, HealthScalingExpansion, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, rank, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, dynamicflags, family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, flags_extra, ScriptName FROM creature_template WHERE entry = ?", CONNECTION_SYNCH); + PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, name, femaleName, subname, TitleAlt, IconName, gossip_menu_id, minlevel, maxlevel, HealthScalingExpansion, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, rank, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, dynamicflags, family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, flags_extra, ScriptName FROM creature_template WHERE entry = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_BY_ID, "SELECT guid, delay, command, datalong, datalong2, dataint, x, y, z, o FROM waypoint_scripts WHERE id = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_SEL_CREATURE_BY_ID, "SELECT guid FROM creature WHERE id = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_SEL_GAMEOBJECT_NEAREST, "SELECT guid, id, position_x, position_y, position_z, map, (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) AS order_ FROM gameobject WHERE map = ? AND (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) <= ? ORDER BY order_", CONNECTION_SYNCH); diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 79af3ea66b9..17851adc4de 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -412,10 +412,10 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u { if (CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(e.action.morphOrMount.creature)) { - uint32 displayId = ObjectMgr::ChooseDisplayId(ci); - (*itr)->ToCreature()->SetDisplayId(displayId); + CreatureModel const* model = ObjectMgr::ChooseDisplayId(ci); + (*itr)->ToCreature()->SetDisplayId(model->CreatureDisplayID, model->DisplayScale); TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_MORPH_TO_ENTRY_OR_MODEL: Creature entry %u, %s set displayid to %u", - (*itr)->GetEntry(), (*itr)->GetGUID().ToString().c_str(), displayId); + (*itr)->GetEntry(), (*itr)->GetGUID().ToString().c_str(), model->CreatureDisplayID); } } //if no param1, then use value from param2 (modelId) @@ -1291,7 +1291,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (e.action.morphOrMount.creature > 0) { if (CreatureTemplate const* cInfo = sObjectMgr->GetCreatureTemplate(e.action.morphOrMount.creature)) - (*itr)->ToUnit()->Mount(ObjectMgr::ChooseDisplayId(cInfo)); + (*itr)->ToUnit()->Mount(ObjectMgr::ChooseDisplayId(cInfo)->CreatureDisplayID); } else (*itr)->ToUnit()->Mount(e.action.morphOrMount.model); diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index b6d6e44a3fe..f521cdfd3b0 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -77,68 +77,67 @@ VendorItem const* VendorItemData::FindItemCostPair(uint32 item_id, uint32 extend return nullptr; } -uint32 CreatureTemplate::GetRandomValidModelId() const -{ - uint8 c = 0; - uint32 modelIDs[4]; - - if (Modelid1) modelIDs[c++] = Modelid1; - if (Modelid2) modelIDs[c++] = Modelid2; - if (Modelid3) modelIDs[c++] = Modelid3; - if (Modelid4) modelIDs[c++] = Modelid4; +CreatureModel const CreatureModel::DefaultInvisibleModel(11686, 1.0f, 1.0f); +CreatureModel const CreatureModel::DefaultVisibleModel(17519, 1.0f, 1.0f); - return ((c>0) ? modelIDs[urand(0, c-1)] : 0); -} - -uint32 CreatureTemplate::GetFirstValidModelId() const +CreatureModel const* CreatureTemplate::GetModelByIdx(uint32 idx) const { - if (Modelid1) return Modelid1; - if (Modelid2) return Modelid2; - if (Modelid3) return Modelid3; - if (Modelid4) return Modelid4; - return 0; + return idx < Models.size() ? &Models[idx] : nullptr; } -uint32 CreatureTemplate::GetFirstInvisibleModel() const +CreatureModel const* CreatureTemplate::GetRandomValidModel() const { - CreatureModelInfo const* modelInfo = sObjectMgr->GetCreatureModelInfo(Modelid1); - if (modelInfo && modelInfo->is_trigger) - return Modelid1; + if (!Models.size()) + return nullptr; - modelInfo = sObjectMgr->GetCreatureModelInfo(Modelid2); - if (modelInfo && modelInfo->is_trigger) - return Modelid2; + // If only one element, ignore the Probability (even if 0) + if (Models.size() == 1) + return &Models[0]; - modelInfo = sObjectMgr->GetCreatureModelInfo(Modelid3); - if (modelInfo && modelInfo->is_trigger) - return Modelid3; + auto selectedItr = Trinity::Containers::SelectRandomWeightedContainerElement(Models, [](CreatureModel const& model) + { + return model.Probability; + }); - modelInfo = sObjectMgr->GetCreatureModelInfo(Modelid4); - if (modelInfo && modelInfo->is_trigger) - return Modelid4; + return &(*selectedItr); +} + +CreatureModel const* CreatureTemplate::GetFirstValidModel() const +{ + for (CreatureModel const& model : Models) + if (model.CreatureDisplayID) + return &model; - return 11686; + return nullptr; } -uint32 CreatureTemplate::GetFirstVisibleModel() const +CreatureModel const* CreatureTemplate::GetModelWithDisplayId(uint32 displayId) const { - CreatureModelInfo const* modelInfo = sObjectMgr->GetCreatureModelInfo(Modelid1); - if (modelInfo && !modelInfo->is_trigger) - return Modelid1; + for (CreatureModel const& model : Models) + if (displayId == model.CreatureDisplayID) + return &model; - modelInfo = sObjectMgr->GetCreatureModelInfo(Modelid2); - if (modelInfo && !modelInfo->is_trigger) - return Modelid2; + return nullptr; +} + +CreatureModel const* CreatureTemplate::GetFirstInvisibleModel() const +{ + for (CreatureModel const& model : Models) + if (CreatureModelInfo const* modelInfo = sObjectMgr->GetCreatureModelInfo(model.CreatureDisplayID)) + if (modelInfo && modelInfo->is_trigger) + return &model; - modelInfo = sObjectMgr->GetCreatureModelInfo(Modelid3); - if (modelInfo && !modelInfo->is_trigger) - return Modelid3; + return &CreatureModel::DefaultInvisibleModel; +} - modelInfo = sObjectMgr->GetCreatureModelInfo(Modelid4); - if (modelInfo && !modelInfo->is_trigger) - return Modelid4; +CreatureModel const* CreatureTemplate::GetFirstVisibleModel() const +{ + for (CreatureModel const& model : Models) + if (CreatureModelInfo const* modelInfo = sObjectMgr->GetCreatureModelInfo(model.CreatureDisplayID)) + if (modelInfo && !modelInfo->is_trigger) + return &model; - return 17519; + return &CreatureModel::DefaultVisibleModel; } bool AssistDelayEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) @@ -343,22 +342,22 @@ bool Creature::InitEntry(uint32 entry, CreatureData const* data /*= nullptr*/) SetByteValue(UNIT_FIELD_BYTES_0, UNIT_BYTES_0_OFFSET_CLASS, uint8(cinfo->unit_class)); // Cancel load if no model defined - if (!(cinfo->GetFirstValidModelId())) + if (!(cinfo->GetFirstValidModel())) { TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) has no model defined in table `creature_template`, can't load. ", entry); return false; } - uint32 displayID = ObjectMgr::ChooseDisplayId(GetCreatureTemplate(), data); - CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelRandomGender(&displayID); + CreatureModel model = *ObjectMgr::ChooseDisplayId(cinfo, data); + CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelRandomGender(&model, cinfo); if (!minfo) // Cancel load if no model defined { - TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) has invalid model %u defined in table `creature_template`, can't load.", entry, displayID); + TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) has invalid model %u defined in table `creature_template`, can't load.", entry, model.CreatureDisplayID); return false; } - SetDisplayId(displayID); - SetNativeDisplayId(displayID); + SetDisplayId(model.CreatureDisplayID, model.DisplayScale); + SetNativeDisplayId(model.CreatureDisplayID, model.DisplayScale); SetByteValue(UNIT_FIELD_BYTES_0, UNIT_BYTES_0_OFFSET_GENDER, minfo->gender); // Load creature equipment @@ -384,7 +383,7 @@ bool Creature::InitEntry(uint32 entry, CreatureData const* data /*= nullptr*/) SetSpeedRate(MOVE_SWIM, 1.0f); // using 1.0 rate SetSpeedRate(MOVE_FLIGHT, 1.0f); // using 1.0 rate - // Will set UNIT_FIELD_BOUNDINGRADIUS and UNIT_FIELD_COMBATREACH + // Will set UNIT_FIELD_BOUNDINGRADIUS, UNIT_FIELD_COMBATREACH and UNIT_FIELD_DISPLAYSCALE SetObjectScale(cinfo->scale); SetFloatValue(UNIT_FIELD_HOVERHEIGHT, cinfo->HoverHeight); @@ -892,7 +891,8 @@ bool Creature::Create(ObjectGuid::LowType guidlow, Map* map, uint32 entry, float if (!CreateFromProto(guidlow, entry, data, vehId)) return false; - switch (GetCreatureTemplate()->rank) + cinfo = GetCreatureTemplate(); // might be different than initially requested + switch (cinfo->rank) { case CREATURE_ELITE_RARE: m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_RARE); @@ -922,12 +922,12 @@ bool Creature::Create(ObjectGuid::LowType guidlow, Map* map, uint32 entry, float Relocate(x, y, z, ang); } - uint32 displayID = GetNativeDisplayId(); - CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelRandomGender(&displayID); + CreatureModel display(GetNativeDisplayId(), GetNativeDisplayScale(), 1.0f); + CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelRandomGender(&display, cinfo); if (minfo && !IsTotem()) // Cancel load if no model defined or if totem { - SetDisplayId(displayID); - SetNativeDisplayId(displayID); + SetDisplayId(display.CreatureDisplayID, display.DisplayScale); + SetNativeDisplayId(display.CreatureDisplayID, display.DisplayScale); SetByteValue(UNIT_FIELD_BYTES_0, UNIT_BYTES_0_OFFSET_GENDER, minfo->gender); } @@ -940,10 +940,10 @@ bool Creature::Create(ObjectGuid::LowType guidlow, Map* map, uint32 entry, float m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_GHOST); } - if (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING) + if (cinfo->flags_extra & CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING) AddUnitState(UNIT_STATE_IGNORE_PATHFINDING); - if (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK) + if (cinfo->flags_extra & CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK) { ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK_DEST, true); @@ -1127,9 +1127,9 @@ void Creature::SaveToDB(uint32 mapid, std::vector const& spawnDiffic CreatureTemplate const* cinfo = GetCreatureTemplate(); if (cinfo) { - if (displayId == cinfo->Modelid1 || displayId == cinfo->Modelid2 || - displayId == cinfo->Modelid3 || displayId == cinfo->Modelid4) - displayId = 0; + for (CreatureModel model : cinfo->Models) + if (displayId && displayId == model.CreatureDisplayID) + displayId = 0; if (npcflag == cinfo->npcflag) npcflag = 0; @@ -1842,12 +1842,12 @@ void Creature::Respawn(bool force) setDeathState(JUST_RESPAWNED); - uint32 displayID = GetNativeDisplayId(); - CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelRandomGender(&displayID); + CreatureModel display(GetNativeDisplayId(), GetNativeDisplayScale(), 1.0f); + CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelRandomGender(&display, GetCreatureTemplate()); if (minfo) // Cancel load if no model defined { - SetDisplayId(displayID); - SetNativeDisplayId(displayID); + SetDisplayId(display.CreatureDisplayID, display.DisplayScale); + SetNativeDisplayId(display.CreatureDisplayID, display.DisplayScale); SetByteValue(UNIT_FIELD_BYTES_0, UNIT_BYTES_0_OFFSET_GENDER, minfo->gender); } @@ -2847,9 +2847,9 @@ void Creature::SetObjectScale(float scale) } } -void Creature::SetDisplayId(uint32 modelId) +void Creature::SetDisplayId(uint32 modelId, float displayScale /*= 1.f*/) { - Unit::SetDisplayId(modelId); + Unit::SetDisplayId(modelId, displayScale); if (CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelInfo(modelId)) { @@ -2858,6 +2858,12 @@ void Creature::SetDisplayId(uint32 modelId) } } +void Creature::SetDisplayFromModel(uint32 modelIdx) +{ + if (CreatureModel const* model = GetCreatureTemplate()->GetModelByIdx(modelIdx)) + SetDisplayId(model->CreatureDisplayID, model->DisplayScale); +} + void Creature::SetTarget(ObjectGuid const& guid) { if (IsFocusing(nullptr, true)) diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 90c84fb843a..b56fe8c9137 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -69,7 +69,8 @@ class TC_GAME_API Creature : public Unit, public GridObject, public Ma void RemoveFromWorld() override; void SetObjectScale(float scale) override; - void SetDisplayId(uint32 modelId) override; + void SetDisplayId(uint32 displayId, float displayScale = 1.f) override; + void SetDisplayFromModel(uint32 modelIdx); void DisappearAndDie(); diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h index 45a13c6f603..813aaa27e27 100644 --- a/src/server/game/Entities/Creature/CreatureData.h +++ b/src/server/game/Entities/Creature/CreatureData.h @@ -300,16 +300,29 @@ struct CreatureLevelScaling int16 DeltaLevelMax; }; +struct CreatureModel +{ + static CreatureModel const DefaultInvisibleModel; + static CreatureModel const DefaultVisibleModel; + + CreatureModel() : + CreatureDisplayID(0), DisplayScale(0.0f), Probability(0.0f) { } + + CreatureModel(uint32 creatureDisplayID, float displayScale, float probability) : + CreatureDisplayID(creatureDisplayID), DisplayScale(displayScale), Probability(probability) { } + + uint32 CreatureDisplayID; + float DisplayScale; + float Probability; +}; + // from `creature_template` table struct TC_GAME_API CreatureTemplate { uint32 Entry; uint32 DifficultyEntry[MAX_CREATURE_DIFFICULTIES]; uint32 KillCredit[MAX_KILL_CREDIT]; - uint32 Modelid1; - uint32 Modelid2; - uint32 Modelid3; - uint32 Modelid4; + std::vector Models; std::string Name; std::string FemaleName; std::string SubName; @@ -368,10 +381,12 @@ struct TC_GAME_API CreatureTemplate uint32 MechanicImmuneMask; uint32 flags_extra; uint32 ScriptID; - uint32 GetRandomValidModelId() const; - uint32 GetFirstValidModelId() const; - uint32 GetFirstInvisibleModel() const; - uint32 GetFirstVisibleModel() const; + CreatureModel const* GetModelByIdx(uint32 idx) const; + CreatureModel const* GetRandomValidModel() const; + CreatureModel const* GetFirstValidModel() const; + CreatureModel const* GetModelWithDisplayId(uint32 displayId) const; + CreatureModel const* GetFirstInvisibleModel() const; + CreatureModel const* GetFirstVisibleModel() const; // helpers SkillType GetRequiredLootSkill() const diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 67fa6c00554..d8ab46e6b07 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -1778,9 +1778,9 @@ Player* Pet::GetOwner() const return Minion::GetOwner()->ToPlayer(); } -void Pet::SetDisplayId(uint32 modelId) +void Pet::SetDisplayId(uint32 modelId, float displayScale /*= 1.f*/) { - Guardian::SetDisplayId(modelId); + Guardian::SetDisplayId(modelId, displayScale); if (!isControlled()) return; diff --git a/src/server/game/Entities/Pet/Pet.h b/src/server/game/Entities/Pet/Pet.h index e411d2251af..f82c88e6b44 100644 --- a/src/server/game/Entities/Pet/Pet.h +++ b/src/server/game/Entities/Pet/Pet.h @@ -52,7 +52,7 @@ class TC_GAME_API Pet : public Guardian void AddToWorld() override; void RemoveFromWorld() override; - void SetDisplayId(uint32 modelId) override; + void SetDisplayId(uint32 modelId, float displayScale = 1.f) override; PetType getPetType() const { return m_petType; } void setPetType(PetType type) { m_petType = type; } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index bb6a3e9dc5d..87d8bad3de6 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -10317,9 +10317,11 @@ bool Unit::IsPolymorphed() const return spellInfo->GetSpellSpecific() == SPELL_SPECIFIC_MAGE_POLYMORPH; } -void Unit::SetDisplayId(uint32 modelId) +void Unit::SetDisplayId(uint32 modelId, float displayScale /*= 1.f*/) { SetUInt32Value(UNIT_FIELD_DISPLAYID, modelId); + SetFloatValue(UNIT_FIELD_DISPLAY_SCALE, displayScale); + // Set Gender by modelId if (CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelInfo(modelId)) SetByteValue(UNIT_FIELD_BYTES_0, UNIT_BYTES_0_OFFSET_GENDER, minfo->gender); @@ -10342,7 +10344,7 @@ void Unit::RestoreDisplayId(bool ignorePositiveAurasPreventingMounting /*= false if (!ignorePositiveAurasPreventingMounting) handledAura = (*i); else if (CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate((*i)->GetMiscValue())) - if (!IsDisallowedMountForm((*i)->GetId(), FORM_NONE, sObjectMgr->ChooseDisplayId(ci))) + if (!IsDisallowedMountForm((*i)->GetId(), FORM_NONE, ObjectMgr::ChooseDisplayId(ci)->CreatureDisplayID)) handledAura = (*i); } // prefer negative auras @@ -13732,7 +13734,7 @@ void Unit::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* target) if (cinfo->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER) if (target->IsGameMaster()) - displayId = cinfo->GetFirstVisibleModel(); + displayId = cinfo->GetFirstVisibleModel()->CreatureDisplayID; } *data << uint32(displayId); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 77e23462cd8..ad8ecf37733 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1684,10 +1684,11 @@ class TC_GAME_API Unit : public WorldObject void UpdateInterruptMask(); uint32 GetDisplayId() const { return GetUInt32Value(UNIT_FIELD_DISPLAYID); } - virtual void SetDisplayId(uint32 modelId); + virtual void SetDisplayId(uint32 modelId, float displayScale = 1.f); uint32 GetNativeDisplayId() const { return GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID); } + float GetNativeDisplayScale() const { return GetFloatValue(UNIT_FIELD_NATIVE_X_DISPLAY_SCALE); } void RestoreDisplayId(bool ignorePositiveAurasPreventingMounting = false); - void SetNativeDisplayId(uint32 modelId) { SetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID, modelId); } + void SetNativeDisplayId(uint32 displayId, float displayScale = 1.f) { SetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID, displayId); SetFloatValue(UNIT_FIELD_NATIVE_X_DISPLAY_SCALE, displayScale); } void setTransForm(uint32 spellid) { m_transform = spellid;} uint32 getTransForm() const { return m_transform;} diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index af49f29b3c1..78d7d263755 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -54,6 +54,7 @@ #include "VMapFactory.h" #include "World.h" #include +#include ScriptMapMap sSpellScripts; ScriptMapMap sEventScripts; @@ -411,21 +412,21 @@ void ObjectMgr::LoadCreatureTemplates() { uint32 oldMSTime = getMSTime(); - // 0 1 2 3 4 5 6 7 8 - QueryResult result = WorldDatabase.Query("SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, " - // 9 10 11 12 13 14 15 16 17 18 19 20 - "modelid4, name, femaleName, subname, TitleAlt, IconName, gossip_menu_id, minlevel, maxlevel, HealthScalingExpansion, RequiredExpansion, VignetteID, " - // 21 22 23 24 25 26 27 28 29 30 31 + // 0 1 2 3 4 5 6 7 8 + QueryResult result = WorldDatabase.Query("SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, name, femaleName, subname, " + // 9 10 11 12 13 14 15 16 + "TitleAlt, IconName, gossip_menu_id, minlevel, maxlevel, HealthScalingExpansion, RequiredExpansion, VignetteID, " + // 17 18 19 20 21 22 23 24 25 26 27 "faction, npcflag, speed_walk, speed_run, scale, rank, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, " - // 32 33 34 35 36 37 38 39 + // 28 29 30 31 32 33 34 35 "unit_class, unit_flags, unit_flags2, unit_flags3, dynamicflags, family, trainer_class, type, " - // 40 41 42 43 44 45 46 47 48 49 50 + // 36 37 38 39 40 41 42 43 44 45 46 "type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, " - // 51 52 53 54 55 56 57 58 59 60 61 62 63 + // 47 48 49 50 51 52 53 54 55 56 57 58 59 "spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, VehicleId, mingold, maxgold, AIName, MovementType, " - // 64 65 66 67 68 69 70 71 72 + // 60 61 62 63 64 65 66 67 68 "InhabitType, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, " - // 73 74 75 76 77 78 + // 69 70 71 72 73 74 "RacialLeader, movementId, RegenHealth, mechanic_immune_mask, flags_extra, ScriptName FROM creature_template"); if (!result) @@ -442,6 +443,9 @@ void ObjectMgr::LoadCreatureTemplates() } while (result->NextRow()); + // We load the creature models after loading but before checking + LoadCreatureTemplateModels(); + // Checking needs to be done after loading because of the difficulty self referencing for (CreatureTemplateContainer::const_iterator itr = _creatureTemplateStore.begin(); itr != _creatureTemplateStore.end(); ++itr) CheckCreatureTemplate(&itr->second); @@ -463,72 +467,121 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields) for (uint8 i = 0; i < MAX_KILL_CREDIT; ++i) creatureTemplate.KillCredit[i] = fields[4 + i].GetUInt32(); - creatureTemplate.Modelid1 = fields[6].GetUInt32(); - creatureTemplate.Modelid2 = fields[7].GetUInt32(); - creatureTemplate.Modelid3 = fields[8].GetUInt32(); - creatureTemplate.Modelid4 = fields[9].GetUInt32(); - creatureTemplate.Name = fields[10].GetString(); - creatureTemplate.FemaleName = fields[11].GetString(); - creatureTemplate.SubName = fields[12].GetString(); - creatureTemplate.TitleAlt = fields[13].GetString(); - creatureTemplate.IconName = fields[14].GetString(); - creatureTemplate.GossipMenuId = fields[15].GetUInt32(); - creatureTemplate.minlevel = fields[16].GetInt16(); - creatureTemplate.maxlevel = fields[17].GetInt16(); - creatureTemplate.HealthScalingExpansion = fields[18].GetInt32(); - creatureTemplate.RequiredExpansion = fields[19].GetUInt32(); - creatureTemplate.VignetteID = fields[20].GetUInt32(); - creatureTemplate.faction = fields[21].GetUInt16(); - creatureTemplate.npcflag = fields[22].GetUInt64(); - creatureTemplate.speed_walk = fields[23].GetFloat(); - creatureTemplate.speed_run = fields[24].GetFloat(); - creatureTemplate.scale = fields[25].GetFloat(); - creatureTemplate.rank = uint32(fields[26].GetUInt8()); - creatureTemplate.dmgschool = uint32(fields[27].GetInt8()); - creatureTemplate.BaseAttackTime = fields[28].GetUInt32(); - creatureTemplate.RangeAttackTime = fields[29].GetUInt32(); - creatureTemplate.BaseVariance = fields[30].GetFloat(); - creatureTemplate.RangeVariance = fields[31].GetFloat(); - creatureTemplate.unit_class = uint32(fields[32].GetUInt8()); - creatureTemplate.unit_flags = fields[33].GetUInt32(); - creatureTemplate.unit_flags2 = fields[34].GetUInt32(); - creatureTemplate.unit_flags3 = fields[35].GetUInt32(); - creatureTemplate.dynamicflags = fields[36].GetUInt32(); - creatureTemplate.family = CreatureFamily(fields[37].GetUInt8()); - creatureTemplate.trainer_class = uint32(fields[38].GetUInt8()); - creatureTemplate.type = uint32(fields[39].GetUInt8()); - creatureTemplate.type_flags = fields[40].GetUInt32(); - creatureTemplate.type_flags2 = fields[41].GetUInt32(); - creatureTemplate.lootid = fields[42].GetUInt32(); - creatureTemplate.pickpocketLootId = fields[43].GetUInt32(); - creatureTemplate.SkinLootId = fields[44].GetUInt32(); + creatureTemplate.Name = fields[6].GetString(); + creatureTemplate.FemaleName = fields[7].GetString(); + creatureTemplate.SubName = fields[8].GetString(); + creatureTemplate.TitleAlt = fields[9].GetString(); + creatureTemplate.IconName = fields[10].GetString(); + creatureTemplate.GossipMenuId = fields[11].GetUInt32(); + creatureTemplate.minlevel = fields[12].GetInt16(); + creatureTemplate.maxlevel = fields[13].GetInt16(); + creatureTemplate.HealthScalingExpansion = fields[14].GetInt32(); + creatureTemplate.RequiredExpansion = fields[15].GetUInt32(); + creatureTemplate.VignetteID = fields[16].GetUInt32(); + creatureTemplate.faction = fields[17].GetUInt16(); + creatureTemplate.npcflag = fields[18].GetUInt64(); + creatureTemplate.speed_walk = fields[19].GetFloat(); + creatureTemplate.speed_run = fields[20].GetFloat(); + creatureTemplate.scale = fields[21].GetFloat(); + creatureTemplate.rank = uint32(fields[22].GetUInt8()); + creatureTemplate.dmgschool = uint32(fields[23].GetInt8()); + creatureTemplate.BaseAttackTime = fields[24].GetUInt32(); + creatureTemplate.RangeAttackTime = fields[25].GetUInt32(); + creatureTemplate.BaseVariance = fields[26].GetFloat(); + creatureTemplate.RangeVariance = fields[27].GetFloat(); + creatureTemplate.unit_class = uint32(fields[28].GetUInt8()); + creatureTemplate.unit_flags = fields[29].GetUInt32(); + creatureTemplate.unit_flags2 = fields[30].GetUInt32(); + creatureTemplate.unit_flags3 = fields[31].GetUInt32(); + creatureTemplate.dynamicflags = fields[32].GetUInt32(); + creatureTemplate.family = CreatureFamily(fields[33].GetUInt8()); + creatureTemplate.trainer_class = uint32(fields[34].GetUInt8()); + creatureTemplate.type = uint32(fields[35].GetUInt8()); + creatureTemplate.type_flags = fields[36].GetUInt32(); + creatureTemplate.type_flags2 = fields[37].GetUInt32(); + creatureTemplate.lootid = fields[38].GetUInt32(); + creatureTemplate.pickpocketLootId = fields[39].GetUInt32(); + creatureTemplate.SkinLootId = fields[40].GetUInt32(); for (uint8 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) - creatureTemplate.resistance[i] = fields[45 + i - 1].GetInt16(); + creatureTemplate.resistance[i] = fields[41 + i - 1].GetInt16(); for (uint8 i = 0; i < MAX_CREATURE_SPELLS; ++i) - creatureTemplate.spells[i] = fields[51 + i].GetUInt32(); - - creatureTemplate.VehicleId = fields[59].GetUInt32(); - creatureTemplate.mingold = fields[60].GetUInt32(); - creatureTemplate.maxgold = fields[61].GetUInt32(); - creatureTemplate.AIName = fields[62].GetString(); - creatureTemplate.MovementType = uint32(fields[63].GetUInt8()); - creatureTemplate.InhabitType = uint32(fields[64].GetUInt8()); - creatureTemplate.HoverHeight = fields[65].GetFloat(); - creatureTemplate.ModHealth = fields[66].GetFloat(); - creatureTemplate.ModHealthExtra = fields[67].GetFloat(); - creatureTemplate.ModMana = fields[68].GetFloat(); - creatureTemplate.ModManaExtra = fields[69].GetFloat(); - creatureTemplate.ModArmor = fields[70].GetFloat(); - creatureTemplate.ModDamage = fields[71].GetFloat(); - creatureTemplate.ModExperience = fields[72].GetFloat(); - creatureTemplate.RacialLeader = fields[73].GetBool(); - creatureTemplate.movementId = fields[74].GetUInt32(); - creatureTemplate.RegenHealth = fields[75].GetBool(); - creatureTemplate.MechanicImmuneMask = fields[76].GetUInt32(); - creatureTemplate.flags_extra = fields[77].GetUInt32(); - creatureTemplate.ScriptID = GetScriptId(fields[78].GetString()); + creatureTemplate.spells[i] = fields[47 + i].GetUInt32(); + + creatureTemplate.VehicleId = fields[55].GetUInt32(); + creatureTemplate.mingold = fields[56].GetUInt32(); + creatureTemplate.maxgold = fields[57].GetUInt32(); + creatureTemplate.AIName = fields[58].GetString(); + creatureTemplate.MovementType = uint32(fields[59].GetUInt8()); + creatureTemplate.InhabitType = uint32(fields[60].GetUInt8()); + creatureTemplate.HoverHeight = fields[61].GetFloat(); + creatureTemplate.ModHealth = fields[62].GetFloat(); + creatureTemplate.ModHealthExtra = fields[63].GetFloat(); + creatureTemplate.ModMana = fields[64].GetFloat(); + creatureTemplate.ModManaExtra = fields[65].GetFloat(); + creatureTemplate.ModArmor = fields[66].GetFloat(); + creatureTemplate.ModDamage = fields[67].GetFloat(); + creatureTemplate.ModExperience = fields[68].GetFloat(); + creatureTemplate.RacialLeader = fields[69].GetBool(); + creatureTemplate.movementId = fields[70].GetUInt32(); + creatureTemplate.RegenHealth = fields[71].GetBool(); + creatureTemplate.MechanicImmuneMask = fields[72].GetUInt32(); + creatureTemplate.flags_extra = fields[73].GetUInt32(); + creatureTemplate.ScriptID = GetScriptId(fields[74].GetString()); +} + +void ObjectMgr::LoadCreatureTemplateModels() +{ + uint32 oldMSTime = getMSTime(); + + // 0 1 2 3 + QueryResult result = WorldDatabase.Query("SELECT CreatureID, CreatureDisplayID, DisplayScale, Probability FROM creature_template_model ORDER BY Idx ASC"); + + if (!result) + { + TC_LOG_INFO("server.loading", ">> Loaded 0 creature template model definitions. DB table `creature_template_model` is empty."); + return; + } + + uint32 count = 0; + do + { + Field* fields = result->Fetch(); + + uint32 creatureId = fields[0].GetUInt32(); + uint32 creatureDisplayId = fields[1].GetUInt32(); + float displayScale = fields[2].GetFloat(); + float probability = fields[3].GetFloat(); + + CreatureTemplate const* cInfo = GetCreatureTemplate(creatureId); + if (!cInfo) + { + TC_LOG_ERROR("sql.sql", "Creature template (Entry: %u) does not exist but has a record in `creature_template_model`", creatureId); + continue; + } + + CreatureDisplayInfoEntry const* displayEntry = sCreatureDisplayInfoStore.LookupEntry(creatureDisplayId); + if (!displayEntry) + { + TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) lists non-existing CreatureDisplayID id (%u), this can crash the client.", creatureId, creatureDisplayId); + continue; + } + + CreatureModelInfo const* modelInfo = GetCreatureModelInfo(creatureDisplayId); + if (!modelInfo) + TC_LOG_ERROR("sql.sql", "No model data exist for `CreatureDisplayID` = %u listed by creature (Entry: %u).", creatureDisplayId, creatureId); + + if (displayScale <= 0.0f) + displayScale = 1.0f; + + const_cast(cInfo)->Models.emplace_back(creatureDisplayId, displayScale, probability); + + ++count; + } + while (result->NextRow()); + + TC_LOG_INFO("server.loading", ">> Loaded %u creature template models in %u ms", count, GetMSTimeDiffToNow(oldMSTime)); } void ObjectMgr::LoadCreatureTemplateAddons() @@ -867,76 +920,6 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo) const_cast(cInfo)->faction = sFactionTemplateStore.AssertEntry(35)->ID; // this might seem stupid but all shit will would break if faction 35 did not exist } - // used later for scale - CreatureDisplayInfoEntry const* displayScaleEntry = nullptr; - - if (cInfo->Modelid1) - { - CreatureDisplayInfoEntry const* displayEntry = sCreatureDisplayInfoStore.LookupEntry(cInfo->Modelid1); - if (!displayEntry) - { - TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) lists non-existing Modelid1 id (%u), this can crash the client.", cInfo->Entry, cInfo->Modelid1); - const_cast(cInfo)->Modelid1 = 0; - } - else - displayScaleEntry = displayEntry; - - CreatureModelInfo const* modelInfo = GetCreatureModelInfo(cInfo->Modelid1); - if (!modelInfo) - TC_LOG_ERROR("sql.sql", "No model data exist for `Modelid1` = %u listed by creature (Entry: %u).", cInfo->Modelid1, cInfo->Entry); - } - - if (cInfo->Modelid2) - { - CreatureDisplayInfoEntry const* displayEntry = sCreatureDisplayInfoStore.LookupEntry(cInfo->Modelid2); - if (!displayEntry) - { - TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) lists non-existing Modelid2 id (%u), this can crash the client.", cInfo->Entry, cInfo->Modelid2); - const_cast(cInfo)->Modelid2 = 0; - } - else if (!displayScaleEntry) - displayScaleEntry = displayEntry; - - CreatureModelInfo const* modelInfo = GetCreatureModelInfo(cInfo->Modelid2); - if (!modelInfo) - TC_LOG_ERROR("sql.sql", "No model data exist for `Modelid2` = %u listed by creature (Entry: %u).", cInfo->Modelid2, cInfo->Entry); - } - - if (cInfo->Modelid3) - { - CreatureDisplayInfoEntry const* displayEntry = sCreatureDisplayInfoStore.LookupEntry(cInfo->Modelid3); - if (!displayEntry) - { - TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) lists non-existing Modelid3 id (%u), this can crash the client.", cInfo->Entry, cInfo->Modelid3); - const_cast(cInfo)->Modelid3 = 0; - } - else if (!displayScaleEntry) - displayScaleEntry = displayEntry; - - CreatureModelInfo const* modelInfo = GetCreatureModelInfo(cInfo->Modelid3); - if (!modelInfo) - TC_LOG_ERROR("sql.sql", "No model data exist for `Modelid3` = %u listed by creature (Entry: %u).", cInfo->Modelid3, cInfo->Entry); - } - - if (cInfo->Modelid4) - { - CreatureDisplayInfoEntry const* displayEntry = sCreatureDisplayInfoStore.LookupEntry(cInfo->Modelid4); - if (!displayEntry) - { - TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) lists non-existing Modelid4 id (%u), this can crash the client.", cInfo->Entry, cInfo->Modelid4); - const_cast(cInfo)->Modelid4 = 0; - } - else if (!displayScaleEntry) - displayScaleEntry = displayEntry; - - CreatureModelInfo const* modelInfo = GetCreatureModelInfo(cInfo->Modelid4); - if (!modelInfo) - TC_LOG_ERROR("sql.sql", "No model data exist for `Modelid4` = %u listed by creature (Entry: %u).", cInfo->Modelid4, cInfo->Entry); - } - - if (!displayScaleEntry) - TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) does not have any existing display id in Modelid1/Modelid2/Modelid3/Modelid4.", cInfo->Entry); - for (uint8 k = 0; k < MAX_KILL_CREDIT; ++k) { if (cInfo->KillCredit[k]) @@ -949,6 +932,11 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo) } } + if (!cInfo->Models.size()) + TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) does not have any existing display id in creature_template_model.", cInfo->Entry); + else if (std::accumulate(cInfo->Models.begin(), cInfo->Models.end(), 0.0f, [](float sum, CreatureModel const& model) { return sum + model.Probability; }) <= 0.0f) + TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) has zero total chance for all models in creature_template_model.", cInfo->Entry); + if (!cInfo->unit_class || ((1 << (cInfo->unit_class-1)) & CLASSMASK_ALL_CREATURES) == 0) { TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) has invalid unit_class (%u) in creature_template. Set to 1 (UNIT_CLASS_WARRIOR).", cInfo->Entry, cInfo->unit_class); @@ -1029,15 +1017,6 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo) const_cast(cInfo)->MovementType = IDLE_MOTION_TYPE; } - /// if not set custom creature scale then load scale from CreatureDisplayInfo.dbc - if (cInfo->scale <= 0.0f) - { - if (displayScaleEntry) - const_cast(cInfo)->scale = displayScaleEntry->CreatureModelScale; - else - const_cast(cInfo)->scale = 1.0f; - } - if (cInfo->HealthScalingExpansion < EXPANSION_LEVEL_CURRENT || cInfo->HealthScalingExpansion > (MAX_EXPANSIONS - 1)) { TC_LOG_ERROR("sql.sql", "Table `creature_template` lists creature (ID: %u) with invalid `HealthScalingExpansion` %i. Ignored and set to 0.", cInfo->Entry, cInfo->HealthScalingExpansion); @@ -1409,14 +1388,16 @@ CreatureModelInfo const* ObjectMgr::GetCreatureModelInfo(uint32 modelId) const return nullptr; } -uint32 ObjectMgr::ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data /*= nullptr*/) +CreatureModel const* ObjectMgr::ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data /*= nullptr*/) { // Load creature model (display id) if (data && data->displayid) - return data->displayid; + if (CreatureModel const* model = cinfo->GetModelWithDisplayId(data->displayid)) + return model; if (!(cinfo->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER)) - return cinfo->GetRandomValidModelId(); + if (CreatureModel const* model = cinfo->GetRandomValidModel()) + return model; // Triggers by default receive the invisible model return cinfo->GetFirstInvisibleModel(); @@ -1449,9 +1430,9 @@ void ObjectMgr::ChooseCreatureFlags(CreatureTemplate const* cInfo, uint64& npcFl } } -CreatureModelInfo const* ObjectMgr::GetCreatureModelRandomGender(uint32* displayID) const +CreatureModelInfo const* ObjectMgr::GetCreatureModelRandomGender(CreatureModel* model, CreatureTemplate const* creatureTemplate) const { - CreatureModelInfo const* modelInfo = GetCreatureModelInfo(*displayID); + CreatureModelInfo const* modelInfo = GetCreatureModelInfo(model->CreatureDisplayID); if (!modelInfo) return nullptr; @@ -1460,11 +1441,20 @@ CreatureModelInfo const* ObjectMgr::GetCreatureModelRandomGender(uint32* display { CreatureModelInfo const* minfo_tmp = GetCreatureModelInfo(modelInfo->displayId_other_gender); if (!minfo_tmp) - TC_LOG_ERROR("sql.sql", "Model (Entry: %u) has modelid_other_gender %u not found in table `creature_model_info`. ", *displayID, modelInfo->displayId_other_gender); + TC_LOG_ERROR("sql.sql", "Model (Entry: %u) has modelid_other_gender %u not found in table `creature_model_info`. ", model->CreatureDisplayID, modelInfo->displayId_other_gender); else { // DisplayID changed - *displayID = modelInfo->displayId_other_gender; + model->CreatureDisplayID = modelInfo->displayId_other_gender; + if (creatureTemplate) + { + auto itr = std::find_if(creatureTemplate->Models.begin(), creatureTemplate->Models.end(), [&](CreatureModel const& templateModel) + { + return templateModel.CreatureDisplayID == modelInfo->displayId_other_gender; + }); + if (itr != creatureTemplate->Models.end()) + *model = *itr; + } return minfo_tmp; } } @@ -6234,7 +6224,8 @@ void ObjectMgr::GetTaxiPath(uint32 source, uint32 destination, uint32 &path, uin uint32 ObjectMgr::GetTaxiMountDisplayId(uint32 id, uint32 team, bool allowed_alt_team /* = false */) { - uint32 mount_id = 0; + CreatureModel mountModel; + CreatureTemplate const* mount_info = nullptr; // select mount creature id TaxiNodesEntry const* node = sTaxiNodesStore.LookupEntry(id); @@ -6254,22 +6245,23 @@ uint32 ObjectMgr::GetTaxiMountDisplayId(uint32 id, uint32 team, bool allowed_alt mount_entry = team == ALLIANCE ? node->MountCreatureID[0] : node->MountCreatureID[1]; } - CreatureTemplate const* mount_info = GetCreatureTemplate(mount_entry); + mount_info = GetCreatureTemplate(mount_entry); if (mount_info) { - mount_id = mount_info->GetRandomValidModelId(); - if (!mount_id) + CreatureModel const* model = mount_info->GetRandomValidModel(); + if (!model) { TC_LOG_ERROR("sql.sql", "No displayid found for the taxi mount with the entry %u! Can't load it!", mount_entry); return 0; } + mountModel = *model; } } // minfo is not actually used but the mount_id was updated - GetCreatureModelRandomGender(&mount_id); + GetCreatureModelRandomGender(&mountModel, mount_info); - return mount_id; + return mountModel.CreatureDisplayID; } void ObjectMgr::LoadGraveyardZones() diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 01ce6ee385d..7052bc790ca 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -962,8 +962,8 @@ class TC_GAME_API ObjectMgr CreatureTemplate const* GetCreatureTemplate(uint32 entry) const; CreatureTemplateContainer const* GetCreatureTemplates() const { return &_creatureTemplateStore; } CreatureModelInfo const* GetCreatureModelInfo(uint32 modelId) const; - CreatureModelInfo const* GetCreatureModelRandomGender(uint32* displayID) const; - static uint32 ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data = nullptr); + CreatureModelInfo const* GetCreatureModelRandomGender(CreatureModel* mode, CreatureTemplate const* creatureTemplate) const; + static CreatureModel const* ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data = nullptr); static void ChooseCreatureFlags(CreatureTemplate const* cInfo, uint64& npcFlags, uint32& unitFlags, uint32& unitFlags2, uint32& unitFlags3, uint32& dynamicFlags, CreatureData const* data = nullptr); EquipmentInfo const* GetEquipmentInfo(uint32 entry, int8& id) const; CreatureAddon const* GetCreatureAddon(ObjectGuid::LowType lowguid) const; @@ -1185,6 +1185,7 @@ class TC_GAME_API ObjectMgr void LoadCreatureClassLevelStats(); void LoadCreatureLocales(); void LoadCreatureTemplates(); + void LoadCreatureTemplateModels(); void LoadCreatureTemplateAddons(); void LoadCreatureTemplate(Field* fields); void LoadCreatureScalingData(); diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp index 0e0a9f4ac43..48bb45581fa 100644 --- a/src/server/game/Handlers/QueryHandler.cpp +++ b/src/server/game/Handlers/QueryHandler.cpp @@ -95,22 +95,12 @@ void WorldSession::HandleCreatureQuery(WorldPackets::Query::QueryCreature& packe for (uint32 i = 0; i < MAX_KILL_CREDIT; ++i) stats.ProxyCreatureID[i] = creatureInfo->KillCredit[i]; - // TEMPORARY, PR #22567 - auto addModel = [&](uint32 modelId) + std::transform(creatureInfo->Models.begin(), creatureInfo->Models.end(), std::back_inserter(stats.Display.CreatureDisplay), + [&stats](CreatureModel const& model) -> WorldPackets::Query::CreatureXDisplay { - if (modelId) - { - stats.Display.TotalProbability += 1.0f; - stats.Display.CreatureDisplay.emplace_back(); - WorldPackets::Query::CreatureXDisplay& display = stats.Display.CreatureDisplay.back(); - display.CreatureDisplayID = modelId; - } - }; - - addModel(creatureInfo->Modelid1); - addModel(creatureInfo->Modelid2); - addModel(creatureInfo->Modelid3); - addModel(creatureInfo->Modelid4); + stats.Display.TotalProbability += model.Probability; + return { model.CreatureDisplayID, model.DisplayScale, model.Probability }; + }); stats.HpMulti = creatureInfo->ModHealth; stats.EnergyMulti = creatureInfo->ModMana; diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index c663a16c270..a45c8a84ab4 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -2011,7 +2011,7 @@ void AuraEffect::HandleAuraTransform(AuraApplication const* aurApp, uint8 mode, uint32 model_id = 0; // choose a model, based on trigger flag - if (uint32 modelid = sObjectMgr->ChooseDisplayId(ci)) + if (uint32 modelid = ObjectMgr::ChooseDisplayId(ci)->CreatureDisplayID) model_id = modelid; target->SetDisplayId(model_id); @@ -2052,10 +2052,10 @@ void AuraEffect::HandleAuraTransform(AuraApplication const* aurApp, uint8 mode, uint32 cr_id = target->GetAuraEffectsByType(SPELL_AURA_MOUNTED).front()->GetMiscValue(); if (CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(cr_id)) { - uint32 displayID = ObjectMgr::ChooseDisplayId(ci); - sObjectMgr->GetCreatureModelRandomGender(&displayID); + CreatureModel model = *ObjectMgr::ChooseDisplayId(ci); + sObjectMgr->GetCreatureModelRandomGender(&model, ci); - target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, displayID); + target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, model.CreatureDisplayID); } } } @@ -2553,8 +2553,9 @@ void AuraEffect::HandleAuraMounted(AuraApplication const* aurApp, uint8 mode, bo if (!displayId) { - displayId = ObjectMgr::ChooseDisplayId(creatureInfo); - sObjectMgr->GetCreatureModelRandomGender(&displayId); + CreatureModel model = *ObjectMgr::ChooseDisplayId(creatureInfo); + sObjectMgr->GetCreatureModelRandomGender(&model, creatureInfo); + displayId = model.CreatureDisplayID; } //some spell has one aura of mount and one of vehicle diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp index a17824a0127..6dc2d9b84f2 100644 --- a/src/server/scripts/Commands/cs_modify.cpp +++ b/src/server/scripts/Commands/cs_modify.cpp @@ -493,7 +493,10 @@ public: if (CheckModifySpeed(handler, args, target, Scale, 0.1f, 10.0f, false)) { NotifyModification(handler, target, LANG_YOU_CHANGE_SIZE, LANG_YOURS_SIZE_CHANGED, Scale); - target->SetObjectScale(Scale); + if (Creature* creatureTarget = target->ToCreature()) + creatureTarget->SetFloatValue(UNIT_FIELD_DISPLAY_SCALE, Scale); + else + target->SetObjectScale(Scale); return true; } return false; diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp index 8bd6650b1ad..e0963b46057 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp @@ -203,7 +203,7 @@ class npc_pure_energy : public CreatureScript { npc_pure_energyAI(Creature* creature) : ScriptedAI(creature) { - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); } void JustDied(Unit* killer) override diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 9c1ff991279..c69a3287134 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -370,7 +370,7 @@ class npc_eye_of_acherus : public CreatureScript { npc_eye_of_acherusAI(Creature* creature) : ScriptedAI(creature) { - me->SetDisplayId(me->GetCreatureTemplate()->Modelid1); + me->SetDisplayFromModel(0); if (Player* owner = me->GetCharmerOrOwner()->ToPlayer()) { me->GetCharmInfo()->InitPossessCreateSpells(); @@ -1023,7 +1023,7 @@ class npc_scarlet_miner_cart : public CreatureScript { npc_scarlet_miner_cartAI(Creature* creature) : PassiveAI(creature) { - me->SetDisplayId(me->GetCreatureTemplate()->Modelid1); // Modelid2 is a horse. + me->SetDisplayFromModel(0); // Modelid2 } void JustSummoned(Creature* summon) override diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp index 33c745c63c2..e36fb0ac437 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp @@ -402,7 +402,7 @@ public: void Initialize() { - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); me->SetReactState(REACT_PASSIVE); DoCast(me, SPELL_DARKFIEND_SKIN, true); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index fca2d98002a..4822c5138e5 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -91,7 +91,7 @@ class npc_voljin_zulaman : public CreatureScript { npc_voljin_zulamanAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { - me->SetDisplayId(me->GetCreatureTemplate()->Modelid1); + me->SetDisplayFromModel(0); if (_instance->GetData(DATA_ZULAMAN_STATE) == NOT_STARTED) me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); } diff --git a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp index d437ec8dba9..82282ed3613 100644 --- a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp +++ b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp @@ -324,7 +324,6 @@ public: { _events.Reset(); _events.ScheduleEvent(EVENT_DETERMINE_EVENT, Seconds(2)); - me->SetDisplayId(me->GetCreatureTemplate()->GetRandomValidModelId()); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp index 705c82b799b..8e5dc67299e 100644 --- a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp @@ -248,7 +248,7 @@ public: void Reset() override { _events.Reset(); - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); } void EnterCombat(Unit* /*who*/) override diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp index 934143da40e..69f6d3ce2c1 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp @@ -173,7 +173,7 @@ public: events.Reset(); events.ScheduleEvent(EVENT_AURA, 1 * IN_MILLISECONDS); - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); DoCast(SPELL_PUTRID_MUSHROOM); if (me->GetEntry() == NPC_POISONOUS_MUSHROOM) diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp index ce900cef73c..2be65088628 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp @@ -254,10 +254,10 @@ class boss_anubarak_trial : public CreatureScript _burrowGUID.push_back(summoned->GetGUID()); summoned->SetReactState(REACT_PASSIVE); summoned->CastSpell(summoned, SPELL_CHURNING_GROUND, false); - summoned->SetDisplayId(summoned->GetCreatureTemplate()->Modelid2); + summoned->SetDisplayFromModel(1); break; case NPC_SPIKE: - summoned->SetDisplayId(summoned->GetCreatureTemplate()->Modelid1); + summoned->SetDisplayFromModel(0); if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) { summoned->CombatStart(target); @@ -620,7 +620,7 @@ class npc_frost_sphere : public CreatureScript { me->SetReactState(REACT_PASSIVE); DoCast(SPELL_FROST_SPHERE); - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); me->GetMotionMaster()->MoveRandom(20.0f); } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp index 8cb3f23d346..165e15c61c4 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp @@ -489,7 +489,7 @@ class npc_firebomb : public CreatureScript DoCast(me, SPELL_FIRE_BOMB_DOT, true); SetCombatMovement(false); me->SetReactState(REACT_PASSIVE); - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); } void UpdateAI(uint32 /*diff*/) override diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp index b147ce86fcc..9dde78ac1e2 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp @@ -306,7 +306,7 @@ class boss_lich_king_toc : public CreatureScript if (Creature* summoned = me->SummonCreature(NPC_TRIGGER, ToCCommonLoc[2].GetPositionX(), ToCCommonLoc[2].GetPositionY(), ToCCommonLoc[2].GetPositionZ(), 5, TEMPSUMMON_TIMED_DESPAWN, 1*MINUTE*IN_MILLISECONDS)) { summoned->CastSpell(summoned, 51807, false); - summoned->SetDisplayId(summoned->GetCreatureTemplate()->Modelid2); + summoned->SetDisplayFromModel(1); } _instance->SetBossState(BOSS_LICH_KING, IN_PROGRESS); @@ -497,11 +497,11 @@ class npc_fizzlebang_toc : public CreatureScript me->GetMotionMaster()->MovementExpired(); Talk(SAY_STAGE_1_03); me->HandleEmoteCommand(EMOTE_ONESHOT_SPELL_CAST_OMNI); - if (Unit* pTrigger = me->SummonCreature(NPC_TRIGGER, ToCCommonLoc[1].GetPositionX(), ToCCommonLoc[1].GetPositionY(), ToCCommonLoc[1].GetPositionZ(), 4.69494f, TEMPSUMMON_MANUAL_DESPAWN)) + if (Creature* pTrigger = me->SummonCreature(NPC_TRIGGER, ToCCommonLoc[1].GetPositionX(), ToCCommonLoc[1].GetPositionY(), ToCCommonLoc[1].GetPositionZ(), 4.69494f, TEMPSUMMON_MANUAL_DESPAWN)) { _triggerGUID = pTrigger->GetGUID(); pTrigger->SetObjectScale(2.0f); - pTrigger->SetDisplayId(pTrigger->ToCreature()->GetCreatureTemplate()->Modelid1); + pTrigger->SetDisplayFromModel(0); pTrigger->CastSpell(pTrigger, SPELL_WILFRED_PORTAL, false); } _instance->SetData(TYPE_EVENT, 1132); diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index ab78e9a3cea..612d4b9316f 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -2587,7 +2587,7 @@ class npc_quel_delar_sword : public CreatureScript npc_quel_delar_swordAI(Creature* creature) : ScriptedAI(creature) { _instance = me->GetInstanceScript(); - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); _intro = true; } diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp index 1290d417189..a73a3a2fa0d 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp @@ -272,7 +272,7 @@ class npc_pit_of_saron_icicle : public CreatureScript { npc_pit_of_saron_icicleAI(Creature* creature) : PassiveAI(creature) { - me->SetDisplayId(me->GetCreatureTemplate()->Modelid1); + me->SetDisplayFromModel(0); } void IsSummonedBy(Unit* summoner) override diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp index c4982c126f0..99513317306 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp @@ -224,7 +224,7 @@ class npc_chaotic_rift : public CreatureScript void Reset() override { Initialize(); - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); DoCast(me, SPELL_ARCANEFORM, false); } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index 93f1f515409..7ca0d014c8a 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -586,7 +586,7 @@ class boss_flame_leviathan_seat : public CreatureScript boss_flame_leviathan_seatAI(Creature* creature) : ScriptedAI(creature) { me->SetReactState(REACT_PASSIVE); - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); instance = creature->GetInstanceScript(); } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp index 5a85d720eea..fbcca717df6 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp @@ -188,7 +188,7 @@ class npc_flash_freeze : public CreatureScript { Initialize(); instance = me->GetInstanceScript(); - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED); me->SetControlled(true, UNIT_STATE_ROOT); } @@ -264,7 +264,7 @@ class npc_ice_block : public CreatureScript npc_ice_blockAI(Creature* creature) : ScriptedAI(creature) { instance = me->GetInstanceScript(); - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED); me->SetControlled(true, UNIT_STATE_ROOT); } @@ -557,7 +557,7 @@ class npc_icicle : public CreatureScript npc_icicleAI(Creature* creature) : ScriptedAI(creature) { Initialize(); - me->SetDisplayId(me->GetCreatureTemplate()->Modelid1); + me->SetDisplayFromModel(0); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED | UNIT_FLAG_NOT_SELECTABLE); me->SetControlled(true, UNIT_STATE_ROOT); me->SetReactState(REACT_PASSIVE); @@ -612,7 +612,7 @@ class npc_snowpacked_icicle : public CreatureScript npc_snowpacked_icicleAI(Creature* creature) : ScriptedAI(creature) { Initialize(); - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_PACIFIED); me->SetControlled(true, UNIT_STATE_ROOT); me->SetReactState(REACT_PASSIVE); @@ -954,7 +954,7 @@ class npc_toasty_fire : public CreatureScript { npc_toasty_fireAI(Creature* creature) : ScriptedAI(creature) { - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); } void Reset() override diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index cc1c3219bca..4a1a41bcbf6 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -193,7 +193,7 @@ class boss_razorscale_controller : public CreatureScript { boss_razorscale_controllerAI(Creature* creature) : BossAI(creature, DATA_RAZORSCALE_CONTROL) { - me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); + me->SetDisplayFromModel(1); } void Reset() override diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 8b8e47245e0..e0c648bcfc4 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -2606,8 +2606,8 @@ public: init.SetFacing(o); init.Launch(); who->m_Events.AddEvent(new CastFoodSpell(who, _chairSpells.at(who->GetEntry())), who->m_Events.CalculateTime(1000)); - if (who->GetTypeId() == TYPEID_UNIT) - who->SetDisplayId(who->ToCreature()->GetCreatureTemplate()->Modelid1); + if (Creature* creature = who->ToCreature()) + creature->SetDisplayFromModel(0); } }; -- cgit v1.2.3