/* * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #ifndef UpdateFields_h__ #define UpdateFields_h__ #include "EnumFlag.h" #include "ItemPacketsCommon.h" #include "MythicPlusPacketsCommon.h" #include "ObjectGuid.h" #include "PerksProgramPacketsCommon.h" #include "Position.h" #include "QuaternionData.h" #include "UpdateField.h" #include "UpdateMask.h" // This file is automatically generated, DO NOT EDIT class AreaTrigger; class AzeriteEmpoweredItem; class AzeriteItem; class Bag; class ByteBuffer; class Conversation; class Corpse; class Creature; class DynamicObject; class GameObject; class Item; class Object; class Player; class Unit; namespace UF { struct ObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<4> { UpdateField EntryID; struct EntryIDTag : ViewerDependentValueTag {}; UpdateField DynamicFlags; struct DynamicFlagsTag : ViewerDependentValueTag {}; UpdateField Scale; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Object const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Object const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct ItemEnchantment : public IsUpdateFieldStructureTag, public HasChangesMask<5> { UpdateField ID; UpdateField Duration; UpdateField Charges; UpdateField Inactive; void WriteCreate(ByteBuffer& data, Item const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Item const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct ItemMod : public IsUpdateFieldStructureTag { uint8 Type; int32 Value; void WriteCreate(ByteBuffer& data, Item const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Item const* owner, Player const* receiver) const; bool operator==(ItemMod const& right) const; bool operator!=(ItemMod const& right) const { return !(*this == right); } }; struct ItemModList : public IsUpdateFieldStructureTag, public HasChangesMask<1> { DynamicUpdateField Values; void WriteCreate(ByteBuffer& data, Item const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Item const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct ArtifactPower : public IsUpdateFieldStructureTag { int16 ArtifactPowerID; uint8 PurchasedRank; uint8 CurrentRankWithBonus; void WriteCreate(ByteBuffer& data, Item const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Item const* owner, Player const* receiver) const; bool operator==(ArtifactPower const& right) const; bool operator!=(ArtifactPower const& right) const { return !(*this == right); } }; struct SocketedGem : public IsUpdateFieldStructureTag, public HasChangesMask<20> { UpdateField ItemID; UpdateField Context; UpdateFieldArray BonusListIDs; void WriteCreate(ByteBuffer& data, Item const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Item const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct ItemData : public IsUpdateFieldStructureTag, public HasChangesMask<41> { DynamicUpdateField ArtifactPowers; DynamicUpdateField Gems; UpdateField Owner; UpdateField ContainedIn; UpdateField Creator; UpdateField GiftCreator; UpdateField StackCount; UpdateField Expiration; UpdateField DynamicFlags; UpdateField Durability; UpdateField MaxDurability; UpdateField CreatePlayedTime; UpdateField Context; UpdateField CreateTime; UpdateField ArtifactXP; UpdateField ItemAppearanceModID; UpdateField Modifiers; UpdateField ZoneFlags; UpdateField ItemBonusKey; UpdateField DEBUGItemLevel; UpdateFieldArray SpellCharges; UpdateFieldArray Enchantment; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Item const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Item const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Item const* owner, Player const* receiver) const; static void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags); static void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag fieldVisibilityFlags); void ClearChangesMask(); }; struct ContainerData : public IsUpdateFieldStructureTag, public HasChangesMask<101> { UpdateField NumSlots; UpdateFieldArray Slots; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Bag const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Bag const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Bag const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct AzeriteEmpoweredItemData : public IsUpdateFieldStructureTag, public HasChangesMask<6> { UpdateFieldArray Selections; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AzeriteEmpoweredItem const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct UnlockedAzeriteEssence : public IsUpdateFieldStructureTag { uint32 AzeriteEssenceID; uint32 Rank; void WriteCreate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AzeriteItem const* owner, Player const* receiver) const; bool operator==(UnlockedAzeriteEssence const& right) const; bool operator!=(UnlockedAzeriteEssence const& right) const { return !(*this == right); } }; struct SelectedAzeriteEssences : public IsUpdateFieldStructureTag, public HasChangesMask<8> { UpdateField Enabled; UpdateField SpecializationID; UpdateFieldArray AzeriteEssenceID; void WriteCreate(ByteBuffer& data, AzeriteItem const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AzeriteItem const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct AzeriteItemData : public IsUpdateFieldStructureTag, public HasChangesMask<10> { UpdateField Enabled; DynamicUpdateField UnlockedEssences; DynamicUpdateField UnlockedEssenceMilestones; DynamicUpdateField SelectedEssences; UpdateField Xp; UpdateField Level; UpdateField AuraLevel; UpdateField KnowledgeLevel; UpdateField DEBUGknowledgeWeek; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AzeriteItem const* owner, Player const* receiver) const; static void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags); static void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag fieldVisibilityFlags); void ClearChangesMask(); }; struct SpellCastVisual : public IsUpdateFieldStructureTag { int32 SpellXSpellVisualID; int32 ScriptVisualID; void WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const; bool operator==(SpellCastVisual const& right) const; bool operator!=(SpellCastVisual const& right) const { return !(*this == right); } }; struct UnitChannel : public IsUpdateFieldStructureTag { int32 SpellID; UF::SpellCastVisual SpellVisual; uint32 StartTimeMs; uint32 Duration; void WriteCreate(ByteBuffer& data, Unit const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Unit const* owner, Player const* receiver) const; bool operator==(UnitChannel const& right) const; bool operator!=(UnitChannel const& right) const { return !(*this == right); } }; struct VisibleItem : public IsUpdateFieldStructureTag, public HasChangesMask<6> { UpdateField ItemID; UpdateField SecondaryItemModifiedAppearanceID; UpdateField ConditionalItemAppearanceID; UpdateField ItemAppearanceModID; UpdateField ItemVisual; void WriteCreate(ByteBuffer& data, Unit const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Unit const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct PassiveSpellHistory : public IsUpdateFieldStructureTag { int32 SpellID; int32 AuraSpellID; void WriteCreate(ByteBuffer& data, Unit const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Unit const* owner, Player const* receiver) const; bool operator==(PassiveSpellHistory const& right) const; bool operator!=(PassiveSpellHistory const& right) const { return !(*this == right); } }; struct UnitAssistActionData : public IsUpdateFieldStructureTag, public HasChangesMask<4> { UpdateField Type; UpdateField PlayerName; UpdateField VirtualRealmAddress; void WriteCreate(ByteBuffer& data, Unit const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Unit const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<223> { UpdateField Field_314; UpdateField, 0, 2> StateWorldEffectIDs; struct StateWorldEffectIDsTag : ViewerDependentValueTag> {}; DynamicUpdateField PassiveSpells; DynamicUpdateField WorldEffects; DynamicUpdateField ChannelObjects; UpdateField DisplayID; struct DisplayIDTag : ViewerDependentValueTag {}; UpdateField NpcFlags; struct NpcFlagsTag : ViewerDependentValueTag {}; UpdateField NpcFlags2; struct NpcFlags2Tag : ViewerDependentValueTag {}; UpdateField StateSpellVisualID; struct StateSpellVisualIDTag : ViewerDependentValueTag {}; UpdateField StateAnimID; struct StateAnimIDTag : ViewerDependentValueTag {}; UpdateField StateAnimKitID; struct StateAnimKitIDTag : ViewerDependentValueTag {}; UpdateField StateWorldEffectsQuestObjectiveID; struct StateWorldEffectsQuestObjectiveIDTag : ViewerDependentValueTag {}; UpdateField SpellOverrideNameID; UpdateField Charm; UpdateField Summon; UpdateField Critter; UpdateField CharmedBy; UpdateField SummonedBy; UpdateField CreatedBy; UpdateField DemonCreator; UpdateField LookAtControllerTarget; UpdateField Target; UpdateField BattlePetCompanionGUID; UpdateField BattlePetDBID; UpdateField ChannelData; UpdateField SpellEmpowerStage; UpdateField SummonedByHomeRealm; UpdateField Race; UpdateField ClassId; UpdateField PlayerClassId; UpdateField Sex; UpdateField DisplayPower; UpdateField OverrideDisplayPowerID; UpdateField Health; UpdateField MaxHealth; UpdateField Level; UpdateField EffectiveLevel; UpdateField ContentTuningID; UpdateField ScalingLevelMin; UpdateField ScalingLevelMax; UpdateField ScalingLevelDelta; UpdateField ScalingFactionGroup; UpdateField FactionTemplate; struct FactionTemplateTag : ViewerDependentValueTag {}; UpdateField Flags; struct FlagsTag : ViewerDependentValueTag {}; UpdateField Flags2; struct Flags2Tag : ViewerDependentValueTag {}; UpdateField Flags3; struct Flags3Tag : ViewerDependentValueTag {}; UpdateField Flags4; struct Flags4Tag : ViewerDependentValueTag {}; UpdateField AuraState; struct AuraStateTag : ViewerDependentValueTag {}; UpdateField RangedAttackRoundBaseTime; UpdateField BoundingRadius; UpdateField CombatReach; UpdateField DisplayScale; UpdateField CreatureFamily; UpdateField CreatureType; UpdateField NativeDisplayID; UpdateField NativeXDisplayScale; UpdateField MountDisplayID; UpdateField CosmeticMountDisplayID; UpdateField MinDamage; UpdateField MaxDamage; UpdateField MinOffHandDamage; UpdateField MaxOffHandDamage; UpdateField StandState; UpdateField PetTalentPoints; UpdateField VisFlags; UpdateField AnimTier; UpdateField PetNumber; UpdateField PetNameTimestamp; UpdateField PetExperience; UpdateField PetNextLevelExperience; UpdateField ModCastingSpeed; UpdateField ModCastingSpeedNeg; UpdateField ModSpellHaste; UpdateField ModHaste; UpdateField ModRangedHaste; UpdateField ModHasteRegen; UpdateField ModTimeRate; UpdateField CreatedBySpell; UpdateField EmoteState; UpdateField BaseMana; UpdateField BaseHealth; UpdateField SheatheState; UpdateField PvpFlags; struct PvpFlagsTag : ViewerDependentValueTag {}; UpdateField PetFlags; UpdateField ShapeshiftForm; UpdateField AttackPower; UpdateField AttackPowerModPos; UpdateField AttackPowerModNeg; UpdateField AttackPowerMultiplier; UpdateField AttackPowerModSupport; UpdateField RangedAttackPower; UpdateField RangedAttackPowerModPos; UpdateField RangedAttackPowerModNeg; UpdateField RangedAttackPowerMultiplier; UpdateField RangedAttackPowerModSupport; UpdateField MainHandWeaponAttackPower; UpdateField OffHandWeaponAttackPower; UpdateField RangedWeaponAttackPower; UpdateField SetAttackSpeedAura; UpdateField Lifesteal; UpdateField MinRangedDamage; UpdateField MaxRangedDamage; UpdateField ManaCostMultiplier; UpdateField MaxHealthModifier; UpdateField HoverHeight; UpdateField MinItemLevelCutoff; UpdateField MinItemLevel; UpdateField MaxItemLevel; UpdateField AzeriteItemLevel; UpdateField WildBattlePetLevel; UpdateField BattlePetCompanionExperience; UpdateField BattlePetCompanionNameTimestamp; UpdateField InteractSpellID; struct InteractSpellIDTag : ViewerDependentValueTag {}; UpdateField ScaleDuration; UpdateField LooksLikeMountID; UpdateField LooksLikeCreatureID; UpdateField LookAtControllerID; UpdateField PerksVendorItemID; UpdateField TaxiNodesID; UpdateField GuildGUID; UpdateField FlightCapabilityID; UpdateField GlideEventSpeedDivisor; // Movement speed gets divided by this value when evaluating what GlideEvents to use UpdateField DriveCapabilityID; UpdateField MaxHealthModifierFlatNeg; UpdateField MaxHealthModifierFlatPos; UpdateField SilencedSchoolMask; UpdateField CurrentAreaID; UpdateField Field_31C; UpdateField Field_320; // Soft targeting related? When UnitFlags3 & 0x40000000 is set, increases some range check using CombatReach by this amount UpdateField NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object OptionalUpdateField AssistActionData; UpdateFieldArray Power; UpdateFieldArray MaxPower; UpdateFieldArray PowerRegenFlatModifier; UpdateFieldArray PowerRegenInterruptedFlatModifier; UpdateFieldArray VirtualItems; UpdateFieldArray AttackRoundBaseTime; UpdateFieldArray Stats; UpdateFieldArray StatPosBuff; UpdateFieldArray StatNegBuff; UpdateFieldArray StatSupportBuff; UpdateFieldArray Resistances; UpdateFieldArray BonusResistanceMods; UpdateFieldArray ManaCostModifier; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Unit const* owner, Player const* receiver) const; static void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags); static void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag fieldVisibilityFlags); void ClearChangesMask(); }; struct ChrCustomizationChoice : public IsUpdateFieldStructureTag { uint32 ChrCustomizationOptionID; uint32 ChrCustomizationChoiceID; void WriteCreate(ByteBuffer& data, Object const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Object const* owner, Player const* receiver) const; bool operator==(ChrCustomizationChoice const& right) const; bool operator!=(ChrCustomizationChoice const& right) const { return !(*this == right); } }; struct QuestLog : public IsUpdateFieldStructureTag, public HasChangesMask<30> { UpdateField EndTime; UpdateField QuestID; UpdateField StateFlags; UpdateField ObjectiveFlags; UpdateFieldArray ObjectiveProgress; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct ArenaCooldown : public IsUpdateFieldStructureTag, public HasChangesMask<8> { UpdateField SpellID; UpdateField Charges; UpdateField Flags; UpdateField StartTime; UpdateField EndTime; UpdateField NextChargeTime; UpdateField MaxCharges; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct ZonePlayerForcedReaction : public IsUpdateFieldStructureTag, public HasChangesMask<3> { UpdateField FactionID; UpdateField Reaction; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct PetCreatureName : public IsUpdateFieldStructureTag, public HasChangesMask<3> { UpdateField CreatureID; UpdateField Name; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct CTROptions : public IsUpdateFieldStructureTag { uint32 ConditionalFlags; uint8 FactionGroup; uint32 ChromieTimeExpansionMask; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(CTROptions const& right) const; bool operator!=(CTROptions const& right) const { return !(*this == right); } }; struct LeaverInfo : public IsUpdateFieldStructureTag { ObjectGuid BnetAccountGUID; float LeaveScore; uint32 SeasonID; uint32 TotalLeaves; uint32 TotalSuccesses; int32 ConsecutiveSuccesses; int64 LastPenaltyTime; int64 LeaverExpirationTime; int32 Unknown_1120; uint32 LeaverStatus; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(LeaverInfo const& right) const; bool operator!=(LeaverInfo const& right) const { return !(*this == right); } }; struct DeclinedNames : public IsUpdateFieldStructureTag, public HasChangesMask<6> { UpdateFieldArray Name; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct CustomTabardInfo : public IsUpdateFieldStructureTag, public HasChangesMask<6> { UpdateField EmblemStyle; UpdateField EmblemColor; UpdateField BorderStyle; UpdateField BorderColor; UpdateField BackgroundColor; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<324> { UpdateField HasQuestSession; UpdateField HasLevelLink; DynamicUpdateField Customizations; DynamicUpdateField QaCustomizations; DynamicUpdateField QuestSessionQuestLog; DynamicUpdateField ArenaCooldowns; DynamicUpdateField VisualItemReplacements; DynamicUpdateField PetNames; UpdateField DuelArbiter; UpdateField WowAccount; UpdateField BnetAccount; UpdateField GuildClubMemberID; UpdateField LootTargetGUID; UpdateField PlayerFlags; UpdateField PlayerFlagsEx; UpdateField GuildRankID; UpdateField GuildDeleteDate; UpdateField GuildLevel; UpdateField NativeSex; UpdateField Inebriation; UpdateField PvpTitle; UpdateField ArenaFaction; UpdateField DuelTeam; UpdateField GuildTimeStamp; UpdateField PlayerTitle; UpdateField FakeInebriation; UpdateField VirtualPlayerRealm; UpdateField CurrentSpecID; UpdateField CurrentCombatTraitConfigSubTreeID; UpdateField TaxiMountAnimKitID; UpdateField CurrentBattlePetBreedQuality; UpdateField HonorLevel; UpdateField LogoutTime; UpdateField Name; UpdateField Field_1AC; UpdateField Field_1B0; UpdateField CurrentBattlePetSpeciesID; UpdateField CtrOptions; UpdateField CovenantID; UpdateField SoulbindID; UpdateField DungeonScore; UpdateField LeaverInfo; UpdateField SpectateTarget; UpdateField Field_200; OptionalUpdateField DeclinedNames; UpdateField PersonalTabard; UpdateFieldArray PartyType; UpdateFieldArray QuestLog; UpdateFieldArray VisibleItems; UpdateFieldArray AvgItemLevel; UpdateFieldArray ForcedReactions; UpdateFieldArray VisibleEquipableSpells; UpdateFieldArray Field_3120; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const; static void AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags); static void FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag fieldVisibilityFlags); void ClearChangesMask(); bool IsQuestLogChangesMaskSkipped() const { return false; } // bandwidth savings aren't worth the cpu time }; struct SkillInfo : public IsUpdateFieldStructureTag, public HasChangesMask<1793> { UpdateFieldArray SkillLineID; UpdateFieldArray SkillStep; UpdateFieldArray SkillRank; UpdateFieldArray SkillStartingRank; UpdateFieldArray SkillMaxRank; UpdateFieldArray SkillTempBonus; UpdateFieldArray SkillPermBonus; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct BitVector : public IsUpdateFieldStructureTag, public HasChangesMask<2> { DynamicUpdateField Values; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct BitVectors : public IsUpdateFieldStructureTag, public HasChangesMask<14> { UpdateFieldArray Values; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct PlayerDataElement : public IsUpdateFieldStructureTag { uint32 Type; float FloatValue; int64 Int64Value; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(PlayerDataElement const& right) const; bool operator!=(PlayerDataElement const& right) const { return !(*this == right); } }; struct RestInfo : public IsUpdateFieldStructureTag, public HasChangesMask<3> { UpdateField Threshold; UpdateField StateID; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct PVPInfo : public IsUpdateFieldStructureTag, public HasChangesMask<19> { UpdateField Disqualified; UpdateField Bracket; UpdateField PvpRatingID; UpdateField WeeklyPlayed; UpdateField WeeklyWon; UpdateField SeasonPlayed; UpdateField SeasonWon; UpdateField Rating; UpdateField WeeklyBestRating; UpdateField SeasonBestRating; UpdateField PvpTierID; UpdateField WeeklyBestWinPvpTierID; UpdateField Field_28; UpdateField Field_2C; UpdateField WeeklyRoundsPlayed; UpdateField WeeklyRoundsWon; UpdateField SeasonRoundsPlayed; UpdateField SeasonRoundsWon; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct CharacterRestriction : public IsUpdateFieldStructureTag { int32 Field_0; int32 Field_4; int32 Field_8; uint32 Type; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(CharacterRestriction const& right) const; bool operator!=(CharacterRestriction const& right) const { return !(*this == right); } }; struct SpellPctModByLabel : public IsUpdateFieldStructureTag { int32 ModIndex; float ModifierValue; int32 LabelID; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(SpellPctModByLabel const& right) const; bool operator!=(SpellPctModByLabel const& right) const { return !(*this == right); } }; struct SpellFlatModByLabel : public IsUpdateFieldStructureTag { int32 ModIndex; int32 ModifierValue; int32 LabelID; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(SpellFlatModByLabel const& right) const; bool operator!=(SpellFlatModByLabel const& right) const { return !(*this == right); } }; struct CompletedProject : public IsUpdateFieldStructureTag, public HasChangesMask<4> { UpdateField FirstCompleted; UpdateField ProjectID; UpdateField CompletionCount; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct ResearchHistory : public IsUpdateFieldStructureTag, public HasChangesMask<2> { DynamicUpdateField CompletedProjects; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct MawPower : public IsUpdateFieldStructureTag { int32 SpellID; int32 MawPowerID; int32 Stacks; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(MawPower const& right) const; bool operator!=(MawPower const& right) const { return !(*this == right); } }; struct MultiFloorExplore : public IsUpdateFieldStructureTag { std::vector WorldMapOverlayIDs; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(MultiFloorExplore const& right) const; bool operator!=(MultiFloorExplore const& right) const { return !(*this == right); } }; struct RecipeProgressionInfo : public IsUpdateFieldStructureTag { uint16 RecipeProgressionGroupID; uint16 Experience; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(RecipeProgressionInfo const& right) const; bool operator!=(RecipeProgressionInfo const& right) const { return !(*this == right); } }; struct ActivePlayerUnk901 : public IsUpdateFieldStructureTag, public HasChangesMask<3> { UpdateField Field_0; UpdateField Field_10; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct QuestSession : public IsUpdateFieldStructureTag, public HasChangesMask<3> { UpdateField Owner; UpdateField QuestCompleted; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct ReplayedQuest : public IsUpdateFieldStructureTag, public HasChangesMask<3> { UpdateField QuestID; UpdateField ReplayTime; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct TraitEntry : public IsUpdateFieldStructureTag { int32 TraitNodeID; int32 TraitNodeEntryID; int32 Rank; int32 GrantedRanks; int32 BonusRanks; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(TraitEntry const& right) const; bool operator!=(TraitEntry const& right) const { return !(*this == right); } }; struct TraitSubTreeCache : public IsUpdateFieldStructureTag { std::vector Entries; int32 TraitSubTreeID; uint32 Active; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(TraitSubTreeCache const& right) const; bool operator!=(TraitSubTreeCache const& right) const { return !(*this == right); } }; struct TraitConfig : public IsUpdateFieldStructureTag, public HasChangesMask<14> { DynamicUpdateField Entries; DynamicUpdateField SubTrees; UpdateField ID; UpdateField Name; UpdateField Type; UpdateField SkillLineID; UpdateField ChrSpecializationID; UpdateField CombatConfigFlags; UpdateField LocalIdentifier; UpdateField TraitSystemID; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct CraftingOrderItem : public IsUpdateFieldStructureTag, public HasChangesMask<7> { UpdateField Field_0; UpdateField ItemGUID; UpdateField OwnerGUID; UpdateField ItemID; UpdateField Quantity; UpdateField ReagentQuality; OptionalUpdateField DataSlotIndex; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct CraftingOrderCustomer : public IsUpdateFieldStructureTag, public HasChangesMask<2> { UpdateField CustomerGUID; UpdateField CustomerAccountGUID; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct CraftingOrderNpcCustomer : public IsUpdateFieldStructureTag, public HasChangesMask<2> { UpdateField NpcCraftingOrderCustomerID; UpdateField Field_8; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct CraftingOrderData : public IsUpdateFieldStructureTag, public HasChangesMask<26> { DynamicUpdateField Reagents; UpdateField Field_0; UpdateField OrderID; UpdateField SkillLineAbilityID; UpdateField OrderState; UpdateField OrderType; UpdateField MinQuality; UpdateField ExpirationTime; UpdateField ClaimEndTime; UpdateField TipAmount; UpdateField ConsortiumCut; UpdateField Flags; UpdateField CrafterGUID; UpdateField PersonalCrafterGUID; UpdateField NpcCraftingOrderSetID; UpdateField NpcTreasureID; UpdateField CustomerNotes; OptionalUpdateField Customer; OptionalUpdateField NpcCustomer; OptionalUpdateField OutputItem; OptionalUpdateField OutputItemData; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct CraftingOrder : public IsUpdateFieldStructureTag, public HasChangesMask<4> { DynamicUpdateField Enchantments; DynamicUpdateField Gems; UpdateField Data; OptionalUpdateField RecraftItemInfo; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct PersonalCraftingOrderCount : public IsUpdateFieldStructureTag, public HasChangesMask<2> { UpdateField ProfessionID; UpdateField Count; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct NPCCraftingOrderInfo : public IsUpdateFieldStructureTag, public HasChangesMask<4> { UpdateField OrderID; UpdateField NpcCraftingOrderSetID; UpdateField NpcTreasureID; UpdateField NpcCraftingOrderCustomerID; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct CategoryCooldownMod : public IsUpdateFieldStructureTag { int32 SpellCategoryID; int32 ModCooldown; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(CategoryCooldownMod const& right) const; bool operator!=(CategoryCooldownMod const& right) const { return !(*this == right); } }; struct WeeklySpellUse : public IsUpdateFieldStructureTag { int32 SpellCategoryID; uint8 Uses; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(WeeklySpellUse const& right) const; bool operator!=(WeeklySpellUse const& right) const { return !(*this == right); } }; struct StablePetInfo : public IsUpdateFieldStructureTag, public HasChangesMask<9> { UpdateField PetSlot; UpdateField PetNumber; UpdateField CreatureID; UpdateField DisplayID; UpdateField ExperienceLevel; UpdateField Name; UpdateField PetFlags; UpdateField Specialization; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct StableInfo : public IsUpdateFieldStructureTag, public HasChangesMask<3> { DynamicUpdateField Pets; UpdateField StableMaster; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct CollectableSourceTrackedData : public IsUpdateFieldStructureTag, public HasChangesMask<4> { UpdateField TargetType; UpdateField TargetID; UpdateField CollectableSourceInfoID; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct BankTabSettings : public IsUpdateFieldStructureTag, public HasChangesMask<4> { UpdateField Name; UpdateField Icon; UpdateField Description; UpdateField DepositFlags; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct WalkInData : public IsUpdateFieldStructureTag { int32 MapID; int64 Field_8; uint32 Type; ObjectGuid Field_18; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(WalkInData const& right) const; bool operator!=(WalkInData const& right) const { return !(*this == right); } }; struct DelveData : public IsUpdateFieldStructureTag { std::vector Owners; int32 Field_0; uint64 Field_8; int32 Field_10; int32 SpellID; uint32 Started; // Restricts rewards to players in m_owners if set to true. Intended to prevent rewarwding players that join in-progress delve? void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(DelveData const& right) const; bool operator!=(DelveData const& right) const { return !(*this == right); } }; struct ChallengeModeData : public IsUpdateFieldStructureTag { int32 Unknown_1120_1; int32 Unknown_1120_2; uint64 Unknown_1120_3; int64 Unknown_1120_4; ObjectGuid KeystoneOwnerGUID; ObjectGuid LeaverGUID; uint32 IsActive; uint32 HasRestrictions; uint32 CanVoteAbandon; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(ChallengeModeData const& right) const; bool operator!=(ChallengeModeData const& right) const { return !(*this == right); } }; struct Research : public IsUpdateFieldStructureTag { int16 ResearchProjectID; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; bool operator==(Research const& right) const; bool operator!=(Research const& right) const { return !(*this == right); } }; struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<385> { UpdateField BackpackAutoSortDisabled; UpdateField BackpackSellJunkDisabled; UpdateField BankAutoSortDisabled; UpdateField SortBagsRightToLeft; UpdateField InsertItemsLeftToRight; UpdateField HasPerksProgramPendingReward; UpdateFieldArray, 1, 43, 44> ResearchSites; UpdateFieldArray, 1, 45, 46> ResearchSiteProgress; UpdateFieldArray, 1, 47, 48> Research; DynamicUpdateField KnownTitles; DynamicUpdateField CharacterDataElements; DynamicUpdateField AccountDataElements; DynamicUpdateField DailyQuestsCompleted; DynamicUpdateField Field_1328; DynamicUpdateField AvailableQuestLineXQuestIDs; DynamicUpdateField Heirlooms; DynamicUpdateField HeirloomFlags; DynamicUpdateField Toys; DynamicUpdateField ToyFlags; DynamicUpdateField Transmog; DynamicUpdateField ConditionalTransmog; DynamicUpdateField SelfResSpells; DynamicUpdateField RuneforgePowers; DynamicUpdateField TransmogIllusions; DynamicUpdateField WarbandScenes; DynamicUpdateField SpellPctModByLabel; DynamicUpdateField SpellFlatModByLabel; DynamicUpdateField MawPowers; DynamicUpdateField MultiFloorExploration; DynamicUpdateField RecipeProgression; DynamicUpdateField ReplayedQuests; DynamicUpdateField TaskQuests; DynamicUpdateField DisabledSpells; DynamicUpdateField PersonalCraftingOrderCounts; DynamicUpdateField NpcCraftingOrders; DynamicUpdateField CategoryCooldownMods; DynamicUpdateField WeeklySpellUses; DynamicUpdateField TrackedCollectableSources; DynamicUpdateField PvpInfo; DynamicUpdateField CharacterRestrictions; DynamicUpdateField TraitConfigs; DynamicUpdateField CraftingOrders; DynamicUpdateField CharacterBankTabSettings; DynamicUpdateField AccountBankTabSettings; UpdateField FarsightObject; UpdateField SummonedBattlePetGUID; UpdateField Coinage; UpdateField AccountBankCoinage; UpdateField XP; UpdateField NextLevelXP; UpdateField TrialXP; UpdateField Skill; UpdateField CharacterPoints; UpdateField MaxTalentTiers; UpdateField TrackCreatureMask; UpdateField MainhandExpertise; UpdateField OffhandExpertise; UpdateField RangedExpertise; UpdateField CombatRatingExpertise; UpdateField BlockPercentage; UpdateField DodgePercentage; UpdateField DodgePercentageFromAttribute; UpdateField ParryPercentage; UpdateField ParryPercentageFromAttribute; UpdateField CritPercentage; UpdateField RangedCritPercentage; UpdateField OffhandCritPercentage; UpdateField SpellCritPercentage; UpdateField ShieldBlock; UpdateField ShieldBlockCritPercentage; UpdateField Mastery; UpdateField Speed; UpdateField Avoidance; UpdateField Sturdiness; UpdateField Versatility; UpdateField VersatilityBonus; UpdateField PvpPowerDamage; UpdateField PvpPowerHealing; UpdateField BitVectors; UpdateField ModHealingDonePos; UpdateField ModHealingPercent; UpdateField ModPeriodicHealingDonePercent; UpdateField ModSpellPowerPercent; UpdateField ModResiliencePercent; UpdateField OverrideSpellPowerByAPPercent; UpdateField OverrideAPBySpellPowerPercent; UpdateField ModTargetResistance; UpdateField ModTargetPhysicalResistance; UpdateField LocalFlags; UpdateField GrantableLevels; UpdateField MultiActionBars; UpdateField LifetimeMaxRank; UpdateField NumRespecs; UpdateField PvpMedals; UpdateField TodayHonorableKills; UpdateField YesterdayHonorableKills; UpdateField LifetimeHonorableKills; UpdateField WatchedFactionIndex; UpdateField MaxLevel; UpdateField ScalingPlayerLevelDelta; UpdateField MaxCreatureScalingLevel; UpdateField PetSpellPower; UpdateField UiHitModifier; UpdateField UiSpellHitModifier; UpdateField HomeRealmTimeOffset; UpdateField ModPetHaste; UpdateField JailersTowerLevelMax; UpdateField JailersTowerLevel; UpdateField LocalRegenFlags; UpdateField AuraVision; UpdateField NumBackpackSlots; UpdateField OverrideSpellsID; UpdateField LootSpecID; UpdateField OverrideZonePVPType; UpdateField Honor; UpdateField HonorNextLevel; UpdateField PerksProgramCurrency; UpdateField NumBankSlots; UpdateField NumCharacterBankTabs; UpdateField NumAccountBankTabs; UpdateField ResearchHistory; UpdateField FrozenPerksVendorItem; UpdateField Field_1410; OptionalUpdateField QuestSession; UpdateField UiChromieTimeExpansionID; UpdateField TimerunningSeasonID; UpdateField TransportServerTime; UpdateField WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin UpdateField DEBUGSoulbindConduitRank; UpdateField DungeonScore; UpdateField ActiveCombatTraitConfigID; UpdateField ItemUpgradeHighOnehandWeaponItemID; UpdateField ItemUpgradeHighFingerItemID; UpdateField ItemUpgradeHighFingerWatermark; UpdateField ItemUpgradeHighTrinketItemID; UpdateField ItemUpgradeHighTrinketWatermark; UpdateField LootHistoryInstanceID; OptionalUpdateField PetStable; UpdateField RequiredMountCapabilityFlags; OptionalUpdateField WalkInData; OptionalUpdateField DelveData; OptionalUpdateField ChallengeModeData; UpdateFieldArray InvSlots; UpdateFieldArray RestInfo; UpdateFieldArray ModDamageDonePos; UpdateFieldArray ModDamageDoneNeg; UpdateFieldArray ModDamageDonePercent; UpdateFieldArray ModHealingDonePercent; UpdateFieldArray WeaponDmgMultipliers; UpdateFieldArray WeaponAtkSpeedMultipliers; UpdateFieldArray BuybackPrice; UpdateFieldArray BuybackTimestamp; UpdateFieldArray CombatRatings; UpdateFieldArray NoReagentCostMask; UpdateFieldArray ProfessionSkillLine; UpdateFieldArray BagSlotFlags; UpdateFieldArray ItemUpgradeHighWatermark; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct GameObjectAssistActionData : public IsUpdateFieldStructureTag { std::string PlayerName; std::string MonsterName; uint32 VirtualRealmAddress; uint8 Sex; int64 Time; int32 DelveTier; void WriteCreate(ByteBuffer& data, GameObject const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, GameObject const* owner, Player const* receiver) const; bool operator==(GameObjectAssistActionData const& right) const; bool operator!=(GameObjectAssistActionData const& right) const { return !(*this == right); } }; struct GameObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<26> { UpdateField, 0, 1> StateWorldEffectIDs; struct StateWorldEffectIDsTag : ViewerDependentValueTag> {}; DynamicUpdateField EnableDoodadSets; DynamicUpdateField WorldEffects; UpdateField DisplayID; UpdateField SpellVisualID; UpdateField StateSpellVisualID; struct StateSpellVisualIDTag : ViewerDependentValueTag {}; UpdateField SpawnTrackingStateAnimID; struct SpawnTrackingStateAnimIDTag : ViewerDependentValueTag {}; UpdateField SpawnTrackingStateAnimKitID; struct SpawnTrackingStateAnimKitIDTag : ViewerDependentValueTag {}; UpdateField StateWorldEffectsQuestObjectiveID; struct StateWorldEffectsQuestObjectiveIDTag : ViewerDependentValueTag {}; UpdateField CreatedBy; UpdateField GuildGUID; UpdateField Flags; struct FlagsTag : ViewerDependentValueTag {}; UpdateField ParentRotation; UpdateField FactionTemplate; UpdateField State; struct StateTag : ViewerDependentValueTag {}; UpdateField TypeID; UpdateField PercentHealth; UpdateField ArtKit; UpdateField CustomParam; UpdateField Level; UpdateField AnimGroupInstance; UpdateField UiWidgetItemID; UpdateField UiWidgetItemQuality; UpdateField UiWidgetItemUnknown1000; OptionalUpdateField AssistActionData; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, GameObject const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct DynamicObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<7> { UpdateField Caster; UpdateField Type; UpdateField SpellVisual; UpdateField SpellID; UpdateField Radius; UpdateField CastTime; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, DynamicObject const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct CorpseData : public IsUpdateFieldStructureTag, public HasChangesMask<33> { DynamicUpdateField Customizations; UpdateField DynamicFlags; UpdateField Owner; UpdateField PartyGUID; UpdateField GuildGUID; UpdateField DisplayID; UpdateField RaceID; UpdateField Sex; UpdateField Class; UpdateField Flags; UpdateField FactionTemplate; UpdateField StateSpellVisualKitID; UpdateFieldArray Items; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Corpse const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Corpse const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Corpse const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct ScaleCurve : public IsUpdateFieldStructureTag, public HasChangesMask<7> { UpdateField OverrideActive; UpdateField StartTimeOffset; UpdateField ParameterCurve; UpdateFieldArray, 2, 4, 5> Points; void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct VisualAnim : public IsUpdateFieldStructureTag, public HasChangesMask<5> { UpdateField IsDecay; UpdateField AnimationDataID; UpdateField AnimKitID; UpdateField AnimProgress; void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct ForceSetAreaTriggerPositionAndRotation : public IsUpdateFieldStructureTag { ObjectGuid TriggerGUID; TaggedPosition<::Position::XYZ> Position; QuaternionData Rotation; void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const; bool operator==(ForceSetAreaTriggerPositionAndRotation const& right) const; bool operator!=(ForceSetAreaTriggerPositionAndRotation const& right) const { return !(*this == right); } }; struct AreaTriggerSplineCalculator : public IsUpdateFieldStructureTag, public HasChangesMask<3> { UpdateField Catmullrom; DynamicUpdateField, 0, 2> Points; void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct AreaTriggerOrbit : public IsUpdateFieldStructureTag, public HasChangesMask<7> { UpdateField CounterClockwise; UpdateField, 0, 2> Center; UpdateField Radius; UpdateField InitialAngle; UpdateField BlendFromRadius; UpdateField ExtraTimeForBlending; void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct AreaTriggerMovementScript : public IsUpdateFieldStructureTag, public HasChangesMask<4> { UpdateField SpellScriptID; UpdateField, 0, 2> Center; UpdateField CreationTime; void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct AreaTriggerSphere : public IsUpdateFieldStructureTag, public HasChangesMask<3> { UpdateField Radius; UpdateField RadiusTarget; void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct AreaTriggerBox : public IsUpdateFieldStructureTag, public HasChangesMask<3> { UpdateField, 0, 1> Extents; UpdateField, 0, 2> ExtentsTarget; void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct AreaTriggerPolygon : public IsUpdateFieldStructureTag, public HasChangesMask<5> { DynamicUpdateField, 0, 1> Vertices; DynamicUpdateField, 0, 2> VerticesTarget; UpdateField Height; UpdateField HeightTarget; void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct AreaTriggerCylinder : public IsUpdateFieldStructureTag, public HasChangesMask<7> { UpdateField Radius; UpdateField RadiusTarget; UpdateField Height; UpdateField HeightTarget; UpdateField LocationZOffset; UpdateField LocationZOffsetTarget; void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct AreaTriggerDisk : public IsUpdateFieldStructureTag, public HasChangesMask<9> { UpdateField InnerRadius; UpdateField InnerRadiusTarget; UpdateField OuterRadius; UpdateField OuterRadiusTarget; UpdateField Height; UpdateField HeightTarget; UpdateField LocationZOffset; UpdateField LocationZOffsetTarget; void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct AreaTriggerBoundedPlane : public IsUpdateFieldStructureTag, public HasChangesMask<3> { UpdateField, 0, 1> Extents; UpdateField, 0, 2> ExtentsTarget; void WriteCreate(ByteBuffer& data, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<36> { UpdateField OverrideScaleCurve; UpdateField ExtraScaleCurve; UpdateField OverrideMoveCurveX; UpdateField OverrideMoveCurveY; UpdateField OverrideMoveCurveZ; UpdateField Caster; UpdateField Duration; UpdateField TimeToTarget; UpdateField TimeToTargetScale; UpdateField TimeToTargetExtraScale; UpdateField TimeToTargetPos; // Linked to m_overrideMoveCurve UpdateField SpellID; UpdateField SpellForVisuals; UpdateField SpellVisual; UpdateField BoundsRadius2D; UpdateField DecalPropertiesID; UpdateField CreatingEffectGUID; UpdateField OrbitPathTarget; UpdateField, 0, 19> RollPitchYaw; UpdateField PositionalSoundKitID; UpdateField MovementStartTime; UpdateField CreationTime; UpdateField ZOffset; OptionalUpdateField, 0, 24> TargetRollPitchYaw; UpdateField Flags; UpdateField VisualAnim; UpdateField ScaleCurveId; UpdateField FacingCurveId; UpdateField MorphCurveId; UpdateField MoveCurveId; UpdateField Facing; OptionalUpdateField ForcedPositionAndRotation; UpdateField PathType; UpdateField ShapeType; VariantUpdateField<32, 34, UF::AreaTriggerSplineCalculator, UF::AreaTriggerOrbit, UF::AreaTriggerMovementScript> PathData; VariantUpdateField<32, 35, UF::AreaTriggerSphere, UF::AreaTriggerBox, UF::AreaTriggerPolygon, UF::AreaTriggerCylinder, UF::AreaTriggerDisk, UF::AreaTriggerBoundedPlane> ShapeData; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct SceneObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<5> { UpdateField ScriptPackageID; UpdateField RndSeedVal; UpdateField CreatedBy; UpdateField SceneType; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Object const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Object const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct ConversationLine : public IsUpdateFieldStructureTag { int32 ConversationLineID; int32 BroadcastTextID; uint32 StartTime; struct StartTimeTag : ViewerDependentValueTag {}; int32 UiCameraID; uint8 ActorIndex; uint8 Flags; uint8 ChatType; void WriteCreate(ByteBuffer& data, Conversation const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Conversation const* owner, Player const* receiver) const; bool operator==(ConversationLine const& right) const; bool operator!=(ConversationLine const& right) const { return !(*this == right); } }; struct ConversationActor : public IsUpdateFieldStructureTag { uint32 CreatureID; uint32 CreatureDisplayInfoID; ObjectGuid ActorGUID; int32 Id; uint32 Type; uint32 NoActorObject; void WriteCreate(ByteBuffer& data, Conversation const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Conversation const* owner, Player const* receiver) const; bool operator==(ConversationActor const& right) const; bool operator!=(ConversationActor const& right) const { return !(*this == right); } }; struct ConversationData : public IsUpdateFieldStructureTag, public HasChangesMask<7> { UpdateField DontPlayBroadcastTextSounds; UpdateField, 0, 2> Lines; DynamicUpdateField Actors; UpdateField LastLineEndTime; struct LastLineEndTimeTag : ViewerDependentValueTag {}; UpdateField Progress; UpdateField Flags; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Conversation const* owner, Player const* receiver) const; void ClearChangesMask(); }; struct VendorData : public IsUpdateFieldStructureTag, public HasChangesMask<2> { UpdateField Flags; void WriteCreate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Creature const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag fieldVisibilityFlags, Creature const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Creature const* owner, Player const* receiver) const; void ClearChangesMask(); }; } #endif // UpdateFields_h__