/*
* 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