diff options
-rw-r--r-- | src/server/game/Battlegrounds/Battleground.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp | 76 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFields.h | 382 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 62 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 55 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/StatSystem.cpp | 36 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 2 |
8 files changed, 324 insertions, 293 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 0051f0698d9..8a5cc02bcf6 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -546,7 +546,7 @@ inline void Battleground::_ProcessJoin(uint32 diff) player->SendDirectMessage(battlefieldStatus.Write()); // Correctly display EnemyUnitFrame - player->SetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_ARENA_FACTION, player->GetBGTeam()); + player->SetByteValue(PLAYER_BYTES_4, PLAYER_BYTES_4_OFFSET_ARENA_FACTION, player->GetBGTeam()); player->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION); player->ResetAllPowers(); diff --git a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp index b2696c1f915..bafdac92251 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp @@ -101,6 +101,8 @@ uint32 ItemUpdateFieldFlags[CONTAINER_END] = 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_APPEARANCE_MOD_ID UF_FLAG_PUBLIC, // CONTAINER_FIELD_SLOT_1 UF_FLAG_PUBLIC, // CONTAINER_FIELD_SLOT_1+1 UF_FLAG_PUBLIC, // CONTAINER_FIELD_SLOT_1+2 @@ -252,6 +254,8 @@ uint32 ItemDynamicUpdateFieldFlags[CONTAINER_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 }; uint32 UnitUpdateFieldFlags[PLAYER_END] = @@ -344,6 +348,9 @@ 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_SCALING_LEVEL_MIN + UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_LEVEL_MAX + UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_LEVEL_DELTA UF_FLAG_PUBLIC, // UNIT_FIELD_FACTIONTEMPLATE UF_FLAG_PUBLIC, // UNIT_VIRTUAL_ITEM_SLOT_ID UF_FLAG_PUBLIC, // UNIT_VIRTUAL_ITEM_SLOT_ID+1 @@ -377,6 +384,7 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PUBLIC, // UNIT_FIELD_MOD_HASTE UF_FLAG_PUBLIC, // UNIT_FIELD_MOD_RANGED_HASTE UF_FLAG_PUBLIC, // UNIT_FIELD_MOD_HASTE_REGEN + UF_FLAG_PUBLIC, // UNIT_FIELD_MOD_TIME_RATE UF_FLAG_PUBLIC, // UNIT_CREATED_BY_SPELL UF_FLAG_PUBLIC | UF_FLAG_DYNAMIC, // UNIT_NPC_FLAGS UF_FLAG_PUBLIC | UF_FLAG_DYNAMIC, // UNIT_NPC_FLAGS+1 @@ -488,6 +496,7 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PUBLIC, // PLAYER_BYTES UF_FLAG_PUBLIC, // PLAYER_BYTES_2 UF_FLAG_PUBLIC, // PLAYER_BYTES_3 + UF_FLAG_PUBLIC, // PLAYER_BYTES_4 UF_FLAG_PUBLIC, // PLAYER_DUEL_TEAM UF_FLAG_PUBLIC, // PLAYER_GUILD_TIMESTAMP UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG @@ -1288,6 +1297,8 @@ 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 @@ -2024,6 +2035,18 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = 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_FARSIGHT UF_FLAG_PRIVATE, // PLAYER_FARSIGHT+1 UF_FLAG_PRIVATE, // PLAYER_FARSIGHT+2 @@ -2507,24 +2530,13 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = 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_SPELL_CRIT_PERCENTAGE1+1 - UF_FLAG_PRIVATE, // PLAYER_SPELL_CRIT_PERCENTAGE1+2 - UF_FLAG_PRIVATE, // PLAYER_SPELL_CRIT_PERCENTAGE1+3 - UF_FLAG_PRIVATE, // PLAYER_SPELL_CRIT_PERCENTAGE1+4 - UF_FLAG_PRIVATE, // PLAYER_SPELL_CRIT_PERCENTAGE1+5 - UF_FLAG_PRIVATE, // PLAYER_SPELL_CRIT_PERCENTAGE1+6 UF_FLAG_PRIVATE, // PLAYER_SHIELD_BLOCK UF_FLAG_PRIVATE, // PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE UF_FLAG_PRIVATE, // PLAYER_MASTERY - UF_FLAG_PRIVATE, // PLAYER_AMPLIFY - UF_FLAG_PRIVATE, // PLAYER_MULTISTRIKE - UF_FLAG_PRIVATE, // PLAYER_MULTISTRIKE_EFFECT - UF_FLAG_PRIVATE, // PLAYER_READINESS UF_FLAG_PRIVATE, // PLAYER_SPEED UF_FLAG_PRIVATE, // PLAYER_LIFESTEAL UF_FLAG_PRIVATE, // PLAYER_AVOIDANCE UF_FLAG_PRIVATE, // PLAYER_STURDINESS - UF_FLAG_PRIVATE, // PLAYER_CLEAVE UF_FLAG_PRIVATE, // PLAYER_VERSATILITY UF_FLAG_PRIVATE, // PLAYER_VERSATILITY_BONUS UF_FLAG_PRIVATE, // PLAYER_FIELD_PVP_POWER_DAMAGE @@ -2785,7 +2797,10 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = 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_REST_STATE_EXPERIENCE + 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 @@ -2923,27 +2938,11 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = 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_MAX_LEVEL - UF_FLAG_PRIVATE, // PLAYER_RUNE_REGEN_1 - UF_FLAG_PRIVATE, // PLAYER_RUNE_REGEN_1+1 - UF_FLAG_PRIVATE, // PLAYER_RUNE_REGEN_1+2 - UF_FLAG_PRIVATE, // PLAYER_RUNE_REGEN_1+3 + UF_FLAG_PRIVATE, // PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA 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_FIELD_GLYPH_SLOTS_1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_GLYPH_SLOTS_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_GLYPH_SLOTS_1+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_GLYPH_SLOTS_1+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_GLYPH_SLOTS_1+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_GLYPH_SLOTS_1+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_GLYPHS_1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_GLYPHS_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_GLYPHS_1+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_GLYPHS_1+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_GLYPHS_1+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_GLYPHS_1+5 - UF_FLAG_PRIVATE, // PLAYER_GLYPHS_ENABLED UF_FLAG_PRIVATE, // PLAYER_PET_SPELL_POWER UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1 UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+1 @@ -2969,7 +2968,6 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = 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_ITEM_LEVEL_DELTA 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 @@ -3857,6 +3855,8 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = 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_HONOR + UF_FLAG_PRIVATE, // PLAYER_FIELD_HONOR_NEXT_LEVEL }; uint32 UnitDynamicUpdateFieldFlags[PLAYER_DYNAMIC_END] = @@ -3870,6 +3870,8 @@ uint32 UnitDynamicUpdateFieldFlags[PLAYER_DYNAMIC_END] = 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 }; uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END] = @@ -3985,6 +3987,7 @@ uint32 CorpseUpdateFieldFlags[CORPSE_END] = UF_FLAG_PUBLIC, // CORPSE_FIELD_FLAGS UF_FLAG_DYNAMIC, // CORPSE_FIELD_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // CORPSE_FIELD_FACTIONTEMPLATE + UF_FLAG_PUBLIC, // CORPSE_FIELD_CUSTOM_DISPLAY_OPTION }; uint32 AreaTriggerUpdateFieldFlags[AREATRIGGER_END] = @@ -4008,16 +4011,25 @@ uint32 AreaTriggerUpdateFieldFlags[AREATRIGGER_END] = UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_OVERRIDE_SCALE_CURVE+4 UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_OVERRIDE_SCALE_CURVE+5 UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_OVERRIDE_SCALE_CURVE+6 + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_EXTRA_SCALE_CURVE + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_EXTRA_SCALE_CURVE+1 + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_EXTRA_SCALE_CURVE+2 + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_EXTRA_SCALE_CURVE+3 + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_EXTRA_SCALE_CURVE+4 + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_EXTRA_SCALE_CURVE+5 + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_EXTRA_SCALE_CURVE+6 UF_FLAG_PUBLIC, // AREATRIGGER_CASTER UF_FLAG_PUBLIC, // AREATRIGGER_CASTER+1 UF_FLAG_PUBLIC, // AREATRIGGER_CASTER+2 UF_FLAG_PUBLIC, // AREATRIGGER_CASTER+3 UF_FLAG_PUBLIC, // AREATRIGGER_DURATION + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_TIME_TO_TARGET UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_TIME_TO_TARGET_SCALE + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_TIME_TO_TARGET_EXTRA_SCALE UF_FLAG_PUBLIC, // AREATRIGGER_SPELLID UF_FLAG_DYNAMIC, // AREATRIGGER_SPELLVISUALID UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // AREATRIGGER_BOUNDS_RADIUS_2D - UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_EXPLICIT_SCALE + UF_FLAG_PUBLIC, // AREATRIGGER_DECAL_PROPERTIES_ID }; uint32 SceneObjectUpdateFieldFlags[SCENEOBJECT_END] = @@ -4057,7 +4069,7 @@ uint32 ConversationUpdateFieldFlags[CONVERSATION_END] = UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X - UF_FLAG_PRIVATE, // CONVERSATION_FIELD_DUMMY + UF_FLAG_DYNAMIC, // CONVERSATION_FIELD_LAST_LINE_DURATION }; uint32 ConversationDynamicUpdateFieldFlags[CONVERSATION_DYNAMIC_END] = diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 4f9b91837ac..12de8ccd7b7 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -19,7 +19,7 @@ #ifndef _UPDATEFIELDS_H #define _UPDATEFIELDS_H -// Auto generated for version 6, 2, 3, 20726 +// Auto generated for version 7, 0, 1, 20810 enum ObjectFields { @@ -55,14 +55,18 @@ enum ItemFields ITEM_FIELD_CREATE_PLAYED_TIME = OBJECT_END + 0x043, // Size: 1, Flags: PUBLIC ITEM_FIELD_MODIFIERS_MASK = OBJECT_END + 0x044, // Size: 1, Flags: OWNER ITEM_FIELD_CONTEXT = OBJECT_END + 0x045, // Size: 1, Flags: PUBLIC - ITEM_END = OBJECT_END + 0x046, + ITEM_FIELD_ARTIFACT_XP = OBJECT_END + 0x046, // Size: 1, Flags: OWNER + ITEM_FIELD_APPEARANCE_MOD_ID = OBJECT_END + 0x047, // Size: 1, Flags: OWNER + ITEM_END = OBJECT_END + 0x048, }; enum ItemDynamicFields { ITEM_DYNAMIC_FIELD_MODIFIERS = OBJECT_DYNAMIC_END + 0x000, // Flags: OWNER ITEM_DYNAMIC_FIELD_BONUSLIST_IDS = OBJECT_DYNAMIC_END + 0x001, // Flags: OWNER, 0x100 - ITEM_DYNAMIC_END = OBJECT_DYNAMIC_END + 0x002, + ITEM_DYNAMIC_FIELD_ARTIFACT_POWERS = OBJECT_DYNAMIC_END + 0x002, // Flags: OWNER + ITEM_DYNAMIC_FIELD_GEMS = OBJECT_DYNAMIC_END + 0x003, // Flags: OWNER + ITEM_DYNAMIC_END = OBJECT_DYNAMIC_END + 0x004, }; enum ContainerFields @@ -104,76 +108,80 @@ enum UnitFields UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER = OBJECT_END + 0x044, // Size: 6, Flags: PRIVATE, OWNER, UNIT_ALL UNIT_FIELD_LEVEL = OBJECT_END + 0x04A, // Size: 1, Flags: PUBLIC UNIT_FIELD_EFFECTIVE_LEVEL = OBJECT_END + 0x04B, // Size: 1, Flags: PUBLIC - UNIT_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x04C, // Size: 1, Flags: PUBLIC - UNIT_VIRTUAL_ITEM_SLOT_ID = OBJECT_END + 0x04D, // Size: 6, Flags: PUBLIC - UNIT_FIELD_FLAGS = OBJECT_END + 0x053, // Size: 1, Flags: PUBLIC - UNIT_FIELD_FLAGS_2 = OBJECT_END + 0x054, // Size: 1, Flags: PUBLIC - UNIT_FIELD_FLAGS_3 = OBJECT_END + 0x055, // Size: 1, Flags: PUBLIC - UNIT_FIELD_AURASTATE = OBJECT_END + 0x056, // Size: 1, Flags: PUBLIC - UNIT_FIELD_BASEATTACKTIME = OBJECT_END + 0x057, // Size: 2, Flags: PUBLIC - UNIT_FIELD_RANGEDATTACKTIME = OBJECT_END + 0x059, // Size: 1, Flags: PRIVATE - UNIT_FIELD_BOUNDINGRADIUS = OBJECT_END + 0x05A, // Size: 1, Flags: PUBLIC - UNIT_FIELD_COMBATREACH = OBJECT_END + 0x05B, // Size: 1, Flags: PUBLIC - UNIT_FIELD_DISPLAYID = OBJECT_END + 0x05C, // Size: 1, Flags: DYNAMIC, URGENT - UNIT_FIELD_NATIVEDISPLAYID = OBJECT_END + 0x05D, // Size: 1, Flags: PUBLIC, URGENT - UNIT_FIELD_MOUNTDISPLAYID = OBJECT_END + 0x05E, // Size: 1, Flags: PUBLIC, URGENT - UNIT_FIELD_MINDAMAGE = OBJECT_END + 0x05F, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_MAXDAMAGE = OBJECT_END + 0x060, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_MINOFFHANDDAMAGE = OBJECT_END + 0x061, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_MAXOFFHANDDAMAGE = OBJECT_END + 0x062, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_BYTES_1 = OBJECT_END + 0x063, // Size: 1, Flags: PUBLIC - UNIT_FIELD_PETNUMBER = OBJECT_END + 0x064, // Size: 1, Flags: PUBLIC - UNIT_FIELD_PET_NAME_TIMESTAMP = OBJECT_END + 0x065, // Size: 1, Flags: PUBLIC - UNIT_FIELD_PETEXPERIENCE = OBJECT_END + 0x066, // Size: 1, Flags: OWNER - UNIT_FIELD_PETNEXTLEVELEXP = OBJECT_END + 0x067, // Size: 1, Flags: OWNER - UNIT_MOD_CAST_SPEED = OBJECT_END + 0x068, // Size: 1, Flags: PUBLIC - UNIT_MOD_CAST_HASTE = OBJECT_END + 0x069, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MOD_HASTE = OBJECT_END + 0x06A, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MOD_RANGED_HASTE = OBJECT_END + 0x06B, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MOD_HASTE_REGEN = OBJECT_END + 0x06C, // Size: 1, Flags: PUBLIC - UNIT_CREATED_BY_SPELL = OBJECT_END + 0x06D, // Size: 1, Flags: PUBLIC - UNIT_NPC_FLAGS = OBJECT_END + 0x06E, // Size: 2, Flags: PUBLIC, DYNAMIC - UNIT_NPC_EMOTESTATE = OBJECT_END + 0x070, // Size: 1, Flags: PUBLIC - UNIT_FIELD_STAT = OBJECT_END + 0x071, // Size: 5, Flags: PRIVATE, OWNER - UNIT_FIELD_POSSTAT = OBJECT_END + 0x076, // Size: 5, Flags: PRIVATE, OWNER - UNIT_FIELD_NEGSTAT = OBJECT_END + 0x07B, // Size: 5, 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_MINRANGEDDAMAGE = OBJECT_END + 0x0A1, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_MAXRANGEDDAMAGE = OBJECT_END + 0x0A2, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_POWER_COST_MODIFIER = OBJECT_END + 0x0A3, // Size: 7, Flags: PRIVATE, OWNER - UNIT_FIELD_POWER_COST_MULTIPLIER = OBJECT_END + 0x0AA, // Size: 7, Flags: PRIVATE, OWNER - UNIT_FIELD_MAXHEALTHMODIFIER = OBJECT_END + 0x0B1, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_HOVERHEIGHT = OBJECT_END + 0x0B2, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MIN_ITEM_LEVEL_CUTOFF = OBJECT_END + 0x0B3, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MIN_ITEM_LEVEL = OBJECT_END + 0x0B4, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MAXITEMLEVEL = OBJECT_END + 0x0B5, // Size: 1, Flags: PUBLIC - UNIT_FIELD_WILD_BATTLEPET_LEVEL = OBJECT_END + 0x0B6, // Size: 1, Flags: PUBLIC - UNIT_FIELD_BATTLEPET_COMPANION_NAME_TIMESTAMP = OBJECT_END + 0x0B7, // Size: 1, Flags: PUBLIC - UNIT_FIELD_INTERACT_SPELLID = OBJECT_END + 0x0B8, // Size: 1, Flags: PUBLIC - UNIT_FIELD_STATE_SPELL_VISUAL_ID = OBJECT_END + 0x0B9, // Size: 1, Flags: DYNAMIC, URGENT - UNIT_FIELD_STATE_ANIM_ID = OBJECT_END + 0x0BA, // Size: 1, Flags: DYNAMIC, URGENT - UNIT_FIELD_STATE_ANIM_KIT_ID = OBJECT_END + 0x0BB, // Size: 1, Flags: DYNAMIC, URGENT - UNIT_FIELD_STATE_WORLD_EFFECT_ID = OBJECT_END + 0x0BC, // Size: 4, Flags: DYNAMIC, URGENT - UNIT_FIELD_SCALE_DURATION = OBJECT_END + 0x0C0, // Size: 1, Flags: PUBLIC - UNIT_FIELD_LOOKS_LIKE_MOUNT_ID = OBJECT_END + 0x0C1, // Size: 1, Flags: PUBLIC - UNIT_FIELD_LOOKS_LIKE_CREATURE_ID = OBJECT_END + 0x0C2, // Size: 1, Flags: PUBLIC - UNIT_FIELD_LOOK_AT_CONTROLLER_ID = OBJECT_END + 0x0C3, // Size: 1, Flags: PUBLIC - UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET = OBJECT_END + 0x0C4, // Size: 4, Flags: PUBLIC - UNIT_END = OBJECT_END + 0x0C8, + UNIT_FIELD_SCALING_LEVEL_MIN = OBJECT_END + 0x04C, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_LEVEL_MAX = OBJECT_END + 0x04D, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_LEVEL_DELTA = OBJECT_END + 0x04E, // Size: 1, Flags: PUBLIC + UNIT_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x04F, // Size: 1, Flags: PUBLIC + UNIT_VIRTUAL_ITEM_SLOT_ID = OBJECT_END + 0x050, // Size: 6, Flags: PUBLIC + UNIT_FIELD_FLAGS = OBJECT_END + 0x056, // Size: 1, Flags: PUBLIC + UNIT_FIELD_FLAGS_2 = OBJECT_END + 0x057, // Size: 1, Flags: PUBLIC + UNIT_FIELD_FLAGS_3 = OBJECT_END + 0x058, // Size: 1, Flags: PUBLIC + UNIT_FIELD_AURASTATE = OBJECT_END + 0x059, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BASEATTACKTIME = OBJECT_END + 0x05A, // Size: 2, Flags: PUBLIC + UNIT_FIELD_RANGEDATTACKTIME = OBJECT_END + 0x05C, // Size: 1, Flags: PRIVATE + UNIT_FIELD_BOUNDINGRADIUS = OBJECT_END + 0x05D, // Size: 1, Flags: PUBLIC + UNIT_FIELD_COMBATREACH = OBJECT_END + 0x05E, // Size: 1, Flags: PUBLIC + UNIT_FIELD_DISPLAYID = OBJECT_END + 0x05F, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_NATIVEDISPLAYID = OBJECT_END + 0x060, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_MOUNTDISPLAYID = OBJECT_END + 0x061, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_MINDAMAGE = OBJECT_END + 0x062, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_MAXDAMAGE = OBJECT_END + 0x063, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_MINOFFHANDDAMAGE = OBJECT_END + 0x064, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_MAXOFFHANDDAMAGE = OBJECT_END + 0x065, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_BYTES_1 = OBJECT_END + 0x066, // Size: 1, Flags: PUBLIC + UNIT_FIELD_PETNUMBER = OBJECT_END + 0x067, // Size: 1, Flags: PUBLIC + UNIT_FIELD_PET_NAME_TIMESTAMP = OBJECT_END + 0x068, // Size: 1, Flags: PUBLIC + UNIT_FIELD_PETEXPERIENCE = OBJECT_END + 0x069, // Size: 1, Flags: OWNER + UNIT_FIELD_PETNEXTLEVELEXP = OBJECT_END + 0x06A, // Size: 1, Flags: OWNER + UNIT_MOD_CAST_SPEED = OBJECT_END + 0x06B, // Size: 1, Flags: PUBLIC + UNIT_MOD_CAST_HASTE = OBJECT_END + 0x06C, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MOD_HASTE = OBJECT_END + 0x06D, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MOD_RANGED_HASTE = OBJECT_END + 0x06E, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MOD_HASTE_REGEN = OBJECT_END + 0x06F, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MOD_TIME_RATE = OBJECT_END + 0x070, // Size: 1, Flags: PUBLIC + UNIT_CREATED_BY_SPELL = OBJECT_END + 0x071, // Size: 1, Flags: PUBLIC + UNIT_NPC_FLAGS = OBJECT_END + 0x072, // Size: 2, Flags: PUBLIC, DYNAMIC + UNIT_NPC_EMOTESTATE = OBJECT_END + 0x074, // Size: 1, Flags: PUBLIC + UNIT_FIELD_STAT = OBJECT_END + 0x075, // Size: 5, Flags: PRIVATE, OWNER + UNIT_FIELD_POSSTAT = OBJECT_END + 0x07A, // Size: 5, Flags: PRIVATE, OWNER + UNIT_FIELD_NEGSTAT = OBJECT_END + 0x07F, // Size: 5, Flags: PRIVATE, OWNER + UNIT_FIELD_RESISTANCES = OBJECT_END + 0x084, // Size: 7, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE = OBJECT_END + 0x08B, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE = OBJECT_END + 0x092, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_MOD_BONUS_ARMOR = OBJECT_END + 0x099, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_BASE_MANA = OBJECT_END + 0x09A, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BASE_HEALTH = OBJECT_END + 0x09B, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_BYTES_2 = OBJECT_END + 0x09C, // Size: 1, Flags: PUBLIC + UNIT_FIELD_ATTACK_POWER = OBJECT_END + 0x09D, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_POWER_MOD_POS = OBJECT_END + 0x09E, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x09F, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x0A0, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER = OBJECT_END + 0x0A1, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER_MOD_POS = OBJECT_END + 0x0A2, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x0A3, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x0A4, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_MINRANGEDDAMAGE = OBJECT_END + 0x0A5, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_MAXRANGEDDAMAGE = OBJECT_END + 0x0A6, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_POWER_COST_MODIFIER = OBJECT_END + 0x0A7, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_POWER_COST_MULTIPLIER = OBJECT_END + 0x0AE, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_MAXHEALTHMODIFIER = OBJECT_END + 0x0B5, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_HOVERHEIGHT = OBJECT_END + 0x0B6, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MIN_ITEM_LEVEL_CUTOFF = OBJECT_END + 0x0B7, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MIN_ITEM_LEVEL = OBJECT_END + 0x0B8, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MAXITEMLEVEL = OBJECT_END + 0x0B9, // Size: 1, Flags: PUBLIC + UNIT_FIELD_WILD_BATTLEPET_LEVEL = OBJECT_END + 0x0BA, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BATTLEPET_COMPANION_NAME_TIMESTAMP = OBJECT_END + 0x0BB, // Size: 1, Flags: PUBLIC + UNIT_FIELD_INTERACT_SPELLID = OBJECT_END + 0x0BC, // Size: 1, Flags: PUBLIC + UNIT_FIELD_STATE_SPELL_VISUAL_ID = OBJECT_END + 0x0BD, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_STATE_ANIM_ID = OBJECT_END + 0x0BE, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_STATE_ANIM_KIT_ID = OBJECT_END + 0x0BF, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_STATE_WORLD_EFFECT_ID = OBJECT_END + 0x0C0, // Size: 4, Flags: DYNAMIC, URGENT + UNIT_FIELD_SCALE_DURATION = OBJECT_END + 0x0C4, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOKS_LIKE_MOUNT_ID = OBJECT_END + 0x0C5, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOKS_LIKE_CREATURE_ID = OBJECT_END + 0x0C6, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOK_AT_CONTROLLER_ID = OBJECT_END + 0x0C7, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET = OBJECT_END + 0x0C8, // Size: 4, Flags: PUBLIC + UNIT_END = OBJECT_END + 0x0CC, }; enum UnitDynamicFields @@ -196,108 +204,104 @@ enum PlayerFields PLAYER_BYTES = UNIT_END + 0x011, // Size: 1, Flags: PUBLIC PLAYER_BYTES_2 = UNIT_END + 0x012, // Size: 1, Flags: PUBLIC PLAYER_BYTES_3 = UNIT_END + 0x013, // Size: 1, Flags: PUBLIC - PLAYER_DUEL_TEAM = UNIT_END + 0x014, // Size: 1, Flags: PUBLIC - PLAYER_GUILD_TIMESTAMP = UNIT_END + 0x015, // Size: 1, Flags: PUBLIC - PLAYER_QUEST_LOG = UNIT_END + 0x016, // Size: 750, Flags: PARTY_MEMBER - PLAYER_VISIBLE_ITEM = UNIT_END + 0x304, // Size: 38, Flags: PUBLIC - PLAYER_CHOSEN_TITLE = UNIT_END + 0x32A, // Size: 1, Flags: PUBLIC - PLAYER_FAKE_INEBRIATION = UNIT_END + 0x32B, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_VIRTUAL_PLAYER_REALM = UNIT_END + 0x32C, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_CURRENT_SPEC_ID = UNIT_END + 0x32D, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_TAXI_MOUNT_ANIM_KIT_ID = UNIT_END + 0x32E, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_AVG_ITEM_LEVEL = UNIT_END + 0x32F, // Size: 4, Flags: PUBLIC - PLAYER_FIELD_CURRENT_BATTLE_PET_BREED_QUALITY = UNIT_END + 0x333, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_INV_SLOT_HEAD = UNIT_END + 0x334, // Size: 736, Flags: PRIVATE - PLAYER_FIELD_END_NOT_SELF = UNIT_END + 0x334, - PLAYER_FARSIGHT = UNIT_END + 0x614, // Size: 4, Flags: PRIVATE - PLAYER__FIELD_KNOWN_TITLES = UNIT_END + 0x618, // Size: 12, Flags: PRIVATE - PLAYER_FIELD_COINAGE = UNIT_END + 0x624, // Size: 2, Flags: PRIVATE - PLAYER_XP = UNIT_END + 0x626, // Size: 1, Flags: PRIVATE - PLAYER_NEXT_LEVEL_XP = UNIT_END + 0x627, // Size: 1, Flags: PRIVATE - PLAYER_SKILL_LINEID = UNIT_END + 0x628, // Size: 448, Flags: PRIVATE - PLAYER_CHARACTER_POINTS = UNIT_END + 0x7E8, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MAX_TALENT_TIERS = UNIT_END + 0x7E9, // Size: 1, Flags: PRIVATE - PLAYER_TRACK_CREATURES = UNIT_END + 0x7EA, // Size: 1, Flags: PRIVATE - PLAYER_TRACK_RESOURCES = UNIT_END + 0x7EB, // Size: 1, Flags: PRIVATE - PLAYER_EXPERTISE = UNIT_END + 0x7EC, // Size: 1, Flags: PRIVATE - PLAYER_OFFHAND_EXPERTISE = UNIT_END + 0x7ED, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_RANGED_EXPERTISE = UNIT_END + 0x7EE, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_COMBAT_RATING_EXPERTISE = UNIT_END + 0x7EF, // Size: 1, Flags: PRIVATE - PLAYER_BLOCK_PERCENTAGE = UNIT_END + 0x7F0, // Size: 1, Flags: PRIVATE - PLAYER_DODGE_PERCENTAGE = UNIT_END + 0x7F1, // Size: 1, Flags: PRIVATE - PLAYER_PARRY_PERCENTAGE = UNIT_END + 0x7F2, // Size: 1, Flags: PRIVATE - PLAYER_CRIT_PERCENTAGE = UNIT_END + 0x7F3, // Size: 1, Flags: PRIVATE - PLAYER_RANGED_CRIT_PERCENTAGE = UNIT_END + 0x7F4, // Size: 1, Flags: PRIVATE - PLAYER_OFFHAND_CRIT_PERCENTAGE = UNIT_END + 0x7F5, // Size: 1, Flags: PRIVATE - PLAYER_SPELL_CRIT_PERCENTAGE1 = UNIT_END + 0x7F6, // Size: 7, Flags: PRIVATE - PLAYER_SHIELD_BLOCK = UNIT_END + 0x7FD, // Size: 1, Flags: PRIVATE - PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE = UNIT_END + 0x7FE, // Size: 1, Flags: PRIVATE - PLAYER_MASTERY = UNIT_END + 0x7FF, // Size: 1, Flags: PRIVATE - PLAYER_AMPLIFY = UNIT_END + 0x800, // Size: 1, Flags: PRIVATE - PLAYER_MULTISTRIKE = UNIT_END + 0x801, // Size: 1, Flags: PRIVATE - PLAYER_MULTISTRIKE_EFFECT = UNIT_END + 0x802, // Size: 1, Flags: PRIVATE - PLAYER_READINESS = UNIT_END + 0x803, // Size: 1, Flags: PRIVATE - PLAYER_SPEED = UNIT_END + 0x804, // Size: 1, Flags: PRIVATE - PLAYER_LIFESTEAL = UNIT_END + 0x805, // Size: 1, Flags: PRIVATE - PLAYER_AVOIDANCE = UNIT_END + 0x806, // Size: 1, Flags: PRIVATE - PLAYER_STURDINESS = UNIT_END + 0x807, // Size: 1, Flags: PRIVATE - PLAYER_CLEAVE = UNIT_END + 0x808, // Size: 1, Flags: PRIVATE - PLAYER_VERSATILITY = UNIT_END + 0x809, // Size: 1, Flags: PRIVATE - PLAYER_VERSATILITY_BONUS = UNIT_END + 0x80A, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_PVP_POWER_DAMAGE = UNIT_END + 0x80B, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_PVP_POWER_HEALING = UNIT_END + 0x80C, // Size: 1, Flags: PRIVATE - PLAYER_EXPLORED_ZONES_1 = UNIT_END + 0x80D, // Size: 256, Flags: PRIVATE - PLAYER_REST_STATE_EXPERIENCE = UNIT_END + 0x90D, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_DAMAGE_DONE_POS = UNIT_END + 0x90E, // Size: 7, Flags: PRIVATE - PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = UNIT_END + 0x915, // Size: 7, Flags: PRIVATE - PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = UNIT_END + 0x91C, // Size: 7, Flags: PRIVATE - PLAYER_FIELD_MOD_HEALING_DONE_POS = UNIT_END + 0x923, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_HEALING_PCT = UNIT_END + 0x924, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_HEALING_DONE_PCT = UNIT_END + 0x925, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT = UNIT_END + 0x926, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS = UNIT_END + 0x927, // Size: 3, Flags: PRIVATE - PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS = UNIT_END + 0x92A, // Size: 3, Flags: PRIVATE - PLAYER_FIELD_MOD_SPELL_POWER_PCT = UNIT_END + 0x92D, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_RESILIENCE_PERCENT = UNIT_END + 0x92E, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT = UNIT_END + 0x92F, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT = UNIT_END + 0x930, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_TARGET_RESISTANCE = UNIT_END + 0x931, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE = UNIT_END + 0x932, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_LOCAL_FLAGS = UNIT_END + 0x933, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_BYTES = UNIT_END + 0x934, // Size: 1, Flags: PRIVATE - PLAYER_SELF_RES_SPELL = UNIT_END + 0x935, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_PVP_MEDALS = UNIT_END + 0x936, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_BUYBACK_PRICE_1 = UNIT_END + 0x937, // Size: 12, Flags: PRIVATE - PLAYER_FIELD_BUYBACK_TIMESTAMP_1 = UNIT_END + 0x943, // Size: 12, Flags: PRIVATE - PLAYER_FIELD_KILLS = UNIT_END + 0x94F, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_LIFETIME_HONORABLE_KILLS = UNIT_END + 0x950, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_WATCHED_FACTION_INDEX = UNIT_END + 0x951, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_COMBAT_RATING_1 = UNIT_END + 0x952, // Size: 32, Flags: PRIVATE - PLAYER_FIELD_ARENA_TEAM_INFO_1_1 = UNIT_END + 0x972, // Size: 36, Flags: PRIVATE - PLAYER_FIELD_MAX_LEVEL = UNIT_END + 0x996, // Size: 1, Flags: PRIVATE - PLAYER_RUNE_REGEN_1 = UNIT_END + 0x997, // Size: 4, Flags: PRIVATE - PLAYER_NO_REAGENT_COST_1 = UNIT_END + 0x99B, // Size: 4, Flags: PRIVATE - PLAYER_FIELD_GLYPH_SLOTS_1 = UNIT_END + 0x99F, // Size: 6, Flags: PRIVATE - PLAYER_FIELD_GLYPHS_1 = UNIT_END + 0x9A5, // Size: 6, Flags: PRIVATE - PLAYER_GLYPHS_ENABLED = UNIT_END + 0x9AB, // Size: 1, Flags: PRIVATE - PLAYER_PET_SPELL_POWER = UNIT_END + 0x9AC, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_RESEARCHING_1 = UNIT_END + 0x9AD, // Size: 10, Flags: PRIVATE - PLAYER_PROFESSION_SKILL_LINE_1 = UNIT_END + 0x9B7, // Size: 2, Flags: PRIVATE - PLAYER_FIELD_UI_HIT_MODIFIER = UNIT_END + 0x9B9, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_UI_SPELL_HIT_MODIFIER = UNIT_END + 0x9BA, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_HOME_REALM_TIME_OFFSET = UNIT_END + 0x9BB, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_PET_HASTE = UNIT_END + 0x9BC, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_SUMMONED_BATTLE_PET_ID = UNIT_END + 0x9BD, // Size: 4, Flags: PRIVATE - PLAYER_FIELD_BYTES2 = UNIT_END + 0x9C1, // Size: 1, Flags: PRIVATE, URGENT_SELF_ONLY - PLAYER_FIELD_LFG_BONUS_FACTION_ID = UNIT_END + 0x9C2, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_LOOT_SPEC_ID = UNIT_END + 0x9C3, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_OVERRIDE_ZONE_PVP_TYPE = UNIT_END + 0x9C4, // Size: 1, Flags: PRIVATE, URGENT_SELF_ONLY - PLAYER_FIELD_ITEM_LEVEL_DELTA = UNIT_END + 0x9C5, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_BAG_SLOT_FLAGS = UNIT_END + 0x9C6, // Size: 4, Flags: PRIVATE - PLAYER_FIELD_BANK_BAG_SLOT_FLAGS = UNIT_END + 0x9CA, // Size: 7, Flags: PRIVATE - PLAYER_FIELD_INSERT_ITEMS_LEFT_TO_RIGHT = UNIT_END + 0x9D1, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_QUEST_COMPLETED = UNIT_END + 0x9D2, // Size: 875, Flags: PRIVATE - PLAYER_END = UNIT_END + 0xD3D, + 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: 750, Flags: PARTY_MEMBER + PLAYER_VISIBLE_ITEM = UNIT_END + 0x305, // Size: 38, Flags: PUBLIC + PLAYER_CHOSEN_TITLE = UNIT_END + 0x32B, // Size: 1, Flags: PUBLIC + PLAYER_FAKE_INEBRIATION = UNIT_END + 0x32C, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_VIRTUAL_PLAYER_REALM = UNIT_END + 0x32D, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_CURRENT_SPEC_ID = UNIT_END + 0x32E, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_TAXI_MOUNT_ANIM_KIT_ID = UNIT_END + 0x32F, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_AVG_ITEM_LEVEL = UNIT_END + 0x330, // Size: 4, Flags: PUBLIC + PLAYER_FIELD_CURRENT_BATTLE_PET_BREED_QUALITY = UNIT_END + 0x334, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_PRESTIGE = UNIT_END + 0x335, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_HONOR_LEVEL = UNIT_END + 0x336, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_INV_SLOT_HEAD = UNIT_END + 0x337, // Size: 748, Flags: PRIVATE + PLAYER_FIELD_END_NOT_SELF = UNIT_END + 0x337, + PLAYER_FARSIGHT = UNIT_END + 0x623, // Size: 4, Flags: PRIVATE + PLAYER__FIELD_KNOWN_TITLES = UNIT_END + 0x627, // Size: 12, Flags: PRIVATE + PLAYER_FIELD_COINAGE = UNIT_END + 0x633, // Size: 2, Flags: PRIVATE + PLAYER_XP = UNIT_END + 0x635, // Size: 1, Flags: PRIVATE + PLAYER_NEXT_LEVEL_XP = UNIT_END + 0x636, // Size: 1, Flags: PRIVATE + PLAYER_SKILL_LINEID = UNIT_END + 0x637, // Size: 448, Flags: PRIVATE + PLAYER_CHARACTER_POINTS = UNIT_END + 0x7F7, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MAX_TALENT_TIERS = UNIT_END + 0x7F8, // Size: 1, Flags: PRIVATE + PLAYER_TRACK_CREATURES = UNIT_END + 0x7F9, // Size: 1, Flags: PRIVATE + PLAYER_TRACK_RESOURCES = UNIT_END + 0x7FA, // Size: 1, Flags: PRIVATE + PLAYER_EXPERTISE = UNIT_END + 0x7FB, // Size: 1, Flags: PRIVATE + PLAYER_OFFHAND_EXPERTISE = UNIT_END + 0x7FC, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_RANGED_EXPERTISE = UNIT_END + 0x7FD, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_COMBAT_RATING_EXPERTISE = UNIT_END + 0x7FE, // Size: 1, Flags: PRIVATE + PLAYER_BLOCK_PERCENTAGE = UNIT_END + 0x7FF, // Size: 1, Flags: PRIVATE + PLAYER_DODGE_PERCENTAGE = UNIT_END + 0x800, // Size: 1, Flags: PRIVATE + PLAYER_PARRY_PERCENTAGE = UNIT_END + 0x801, // Size: 1, Flags: PRIVATE + PLAYER_CRIT_PERCENTAGE = UNIT_END + 0x802, // Size: 1, Flags: PRIVATE + PLAYER_RANGED_CRIT_PERCENTAGE = UNIT_END + 0x803, // Size: 1, Flags: PRIVATE + PLAYER_OFFHAND_CRIT_PERCENTAGE = UNIT_END + 0x804, // Size: 1, Flags: PRIVATE + PLAYER_SPELL_CRIT_PERCENTAGE1 = UNIT_END + 0x805, // Size: 1, Flags: PRIVATE + PLAYER_SHIELD_BLOCK = UNIT_END + 0x806, // Size: 1, Flags: PRIVATE + PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE = UNIT_END + 0x807, // Size: 1, Flags: PRIVATE + PLAYER_MASTERY = UNIT_END + 0x808, // Size: 1, Flags: PRIVATE + PLAYER_SPEED = UNIT_END + 0x809, // Size: 1, Flags: PRIVATE + PLAYER_LIFESTEAL = UNIT_END + 0x80A, // Size: 1, Flags: PRIVATE + PLAYER_AVOIDANCE = UNIT_END + 0x80B, // Size: 1, Flags: PRIVATE + PLAYER_STURDINESS = UNIT_END + 0x80C, // Size: 1, Flags: PRIVATE + PLAYER_VERSATILITY = UNIT_END + 0x80D, // Size: 1, Flags: PRIVATE + PLAYER_VERSATILITY_BONUS = UNIT_END + 0x80E, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_PVP_POWER_DAMAGE = UNIT_END + 0x80F, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_PVP_POWER_HEALING = UNIT_END + 0x810, // Size: 1, Flags: PRIVATE + PLAYER_EXPLORED_ZONES_1 = UNIT_END + 0x811, // Size: 256, Flags: PRIVATE + PLAYER_FIELD_REST_INFO = UNIT_END + 0x911, // Size: 4, Flags: PRIVATE + PLAYER_FIELD_MOD_DAMAGE_DONE_POS = UNIT_END + 0x915, // Size: 7, Flags: PRIVATE + PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = UNIT_END + 0x91C, // Size: 7, Flags: PRIVATE + PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = UNIT_END + 0x923, // Size: 7, Flags: PRIVATE + PLAYER_FIELD_MOD_HEALING_DONE_POS = UNIT_END + 0x92A, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_HEALING_PCT = UNIT_END + 0x92B, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_HEALING_DONE_PCT = UNIT_END + 0x92C, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT = UNIT_END + 0x92D, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS = UNIT_END + 0x92E, // Size: 3, Flags: PRIVATE + PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS = UNIT_END + 0x931, // Size: 3, Flags: PRIVATE + PLAYER_FIELD_MOD_SPELL_POWER_PCT = UNIT_END + 0x934, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_RESILIENCE_PERCENT = UNIT_END + 0x935, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT = UNIT_END + 0x936, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT = UNIT_END + 0x937, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_TARGET_RESISTANCE = UNIT_END + 0x938, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE = UNIT_END + 0x939, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_LOCAL_FLAGS = UNIT_END + 0x93A, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_BYTES = UNIT_END + 0x93B, // Size: 1, Flags: PRIVATE + PLAYER_SELF_RES_SPELL = UNIT_END + 0x93C, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_PVP_MEDALS = UNIT_END + 0x93D, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_BUYBACK_PRICE_1 = UNIT_END + 0x93E, // Size: 12, Flags: PRIVATE + PLAYER_FIELD_BUYBACK_TIMESTAMP_1 = UNIT_END + 0x94A, // Size: 12, Flags: PRIVATE + PLAYER_FIELD_KILLS = UNIT_END + 0x956, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_LIFETIME_HONORABLE_KILLS = UNIT_END + 0x957, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_WATCHED_FACTION_INDEX = UNIT_END + 0x958, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_COMBAT_RATING_1 = UNIT_END + 0x959, // Size: 32, Flags: PRIVATE + PLAYER_FIELD_ARENA_TEAM_INFO_1_1 = UNIT_END + 0x979, // Size: 36, Flags: PRIVATE + PLAYER_FIELD_MAX_LEVEL = UNIT_END + 0x99D, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA = UNIT_END + 0x99E, // Size: 1, Flags: PRIVATE + PLAYER_NO_REAGENT_COST_1 = UNIT_END + 0x99F, // Size: 4, Flags: PRIVATE + PLAYER_PET_SPELL_POWER = UNIT_END + 0x9A3, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_RESEARCHING_1 = UNIT_END + 0x9A4, // Size: 10, Flags: PRIVATE + PLAYER_PROFESSION_SKILL_LINE_1 = UNIT_END + 0x9AE, // Size: 2, Flags: PRIVATE + PLAYER_FIELD_UI_HIT_MODIFIER = UNIT_END + 0x9B0, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_UI_SPELL_HIT_MODIFIER = UNIT_END + 0x9B1, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_HOME_REALM_TIME_OFFSET = UNIT_END + 0x9B2, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_PET_HASTE = UNIT_END + 0x9B3, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_SUMMONED_BATTLE_PET_ID = UNIT_END + 0x9B4, // Size: 4, Flags: PRIVATE + PLAYER_FIELD_BYTES2 = UNIT_END + 0x9B8, // Size: 1, Flags: PRIVATE, URGENT_SELF_ONLY + PLAYER_FIELD_LFG_BONUS_FACTION_ID = UNIT_END + 0x9B9, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_LOOT_SPEC_ID = UNIT_END + 0x9BA, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_OVERRIDE_ZONE_PVP_TYPE = UNIT_END + 0x9BB, // Size: 1, Flags: PRIVATE, URGENT_SELF_ONLY + PLAYER_FIELD_BAG_SLOT_FLAGS = UNIT_END + 0x9BC, // Size: 4, Flags: PRIVATE + PLAYER_FIELD_BANK_BAG_SLOT_FLAGS = UNIT_END + 0x9C0, // Size: 7, Flags: PRIVATE + PLAYER_FIELD_INSERT_ITEMS_LEFT_TO_RIGHT = UNIT_END + 0x9C7, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_QUEST_COMPLETED = UNIT_END + 0x9C8, // Size: 875, Flags: PRIVATE + PLAYER_FIELD_HONOR = UNIT_END + 0xD33, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_HONOR_NEXT_LEVEL = UNIT_END + 0xD34, // Size: 1, Flags: PRIVATE + PLAYER_END = UNIT_END + 0xD35, }; enum PlayerDynamicFields @@ -309,7 +313,9 @@ enum PlayerDynamicFields 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_END = UNIT_DYNAMIC_END + 0x007, + PLAYER_DYNAMIC_FIELD_TRANSMOG = UNIT_DYNAMIC_END + 0x007, // Flags: PRIVATE + PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG = UNIT_DYNAMIC_END + 0x008, // Flags: PRIVATE + PLAYER_DYNAMIC_END = UNIT_DYNAMIC_END + 0x009, }; enum GameObjectFields @@ -361,7 +367,8 @@ enum CorpseFields 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_END = OBJECT_END + 0x021, + CORPSE_FIELD_CUSTOM_DISPLAY_OPTION = OBJECT_END + 0x021, // Size: 1, Flags: PUBLIC + CORPSE_END = OBJECT_END + 0x022, }; enum CorpseDynamicFields @@ -372,14 +379,17 @@ enum CorpseDynamicFields enum AreaTriggerFields { AREATRIGGER_OVERRIDE_SCALE_CURVE = OBJECT_END + 0x000, // Size: 7, Flags: PUBLIC, URGENT - AREATRIGGER_CASTER = OBJECT_END + 0x007, // Size: 4, Flags: PUBLIC - AREATRIGGER_DURATION = OBJECT_END + 0x00B, // Size: 1, Flags: PUBLIC - AREATRIGGER_TIME_TO_TARGET_SCALE = OBJECT_END + 0x00C, // Size: 1, Flags: PUBLIC, URGENT - AREATRIGGER_SPELLID = OBJECT_END + 0x00D, // Size: 1, Flags: PUBLIC - AREATRIGGER_SPELLVISUALID = OBJECT_END + 0x00E, // Size: 1, Flags: DYNAMIC - AREATRIGGER_BOUNDS_RADIUS_2D = OBJECT_END + 0x00F, // Size: 1, Flags: DYNAMIC, URGENT - AREATRIGGER_EXPLICIT_SCALE = OBJECT_END + 0x010, // Size: 1, Flags: PUBLIC, URGENT - AREATRIGGER_END = OBJECT_END + 0x011, + AREATRIGGER_EXTRA_SCALE_CURVE = OBJECT_END + 0x007, // Size: 7, Flags: PUBLIC, URGENT + AREATRIGGER_CASTER = OBJECT_END + 0x00E, // Size: 4, Flags: PUBLIC + AREATRIGGER_DURATION = OBJECT_END + 0x012, // Size: 1, Flags: PUBLIC + AREATRIGGER_TIME_TO_TARGET = OBJECT_END + 0x013, // Size: 1, Flags: PUBLIC, URGENT + AREATRIGGER_TIME_TO_TARGET_SCALE = OBJECT_END + 0x014, // Size: 1, Flags: PUBLIC, URGENT + AREATRIGGER_TIME_TO_TARGET_EXTRA_SCALE = OBJECT_END + 0x015, // Size: 1, Flags: PUBLIC, URGENT + AREATRIGGER_SPELLID = OBJECT_END + 0x016, // Size: 1, Flags: PUBLIC + AREATRIGGER_SPELLVISUALID = OBJECT_END + 0x017, // Size: 1, Flags: DYNAMIC + AREATRIGGER_BOUNDS_RADIUS_2D = OBJECT_END + 0x018, // Size: 1, Flags: DYNAMIC, URGENT + AREATRIGGER_DECAL_PROPERTIES_ID = OBJECT_END + 0x019, // Size: 1, Flags: PUBLIC + AREATRIGGER_END = OBJECT_END + 0x01A, }; enum AreaTriggerDynamicFields @@ -403,7 +413,7 @@ enum SceneObjectDynamicFields enum ConversationFields { - CONVERSATION_FIELD_DUMMY = OBJECT_END + 0x000, // Size: 1, Flags: PRIVATE + CONVERSATION_FIELD_LAST_LINE_DURATION = OBJECT_END + 0x000, // Size: 1, Flags: DYNAMIC CONVERSATION_END = OBJECT_END + 0x001, }; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 18a853d40b7..90f1c829bb9 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -464,9 +464,11 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac SetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_HAIR_STYLE_ID, createInfo->HairStyle); SetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_HAIR_COLOR_ID, createInfo->HairColor); SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_FACIAL_STYLE, createInfo->FacialHairStyle); - SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_REST_STATE, (GetSession()->IsARecruiter() || GetSession()->GetRecruiterId() != 0) ? REST_STATE_RAF_LINKED : REST_STATE_NOT_RAF_LINKED); + 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); SetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_GENDER, createInfo->Sex); - SetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_ARENA_FACTION, 0); + SetByteValue(PLAYER_BYTES_4, PLAYER_BYTES_4_OFFSET_ARENA_FACTION, 0); SetGuidValue(OBJECT_FIELD_DATA, ObjectGuid::Empty); SetUInt32Value(PLAYER_GUILDRANK, 0); @@ -2619,8 +2621,7 @@ void Player::InitStatsForLevel(bool reapplyMods) SetFloatValue(PLAYER_RANGED_CRIT_PERCENTAGE, 0.0f); // Init spell schools (will be recalculated in UpdateAllStats() at loading and in _ApplyAllStatBonuses() at reset - for (uint8 i = 0; i < 7; ++i) - SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1+i, 0.0f); + SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1, 0.0f); SetFloatValue(PLAYER_PARRY_PERCENTAGE, 0.0f); SetFloatValue(PLAYER_BLOCK_PERCENTAGE, 0.0f); @@ -16340,8 +16341,9 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) SetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_HAIR_STYLE_ID, fields[11].GetUInt8()); SetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_HAIR_COLOR_ID, fields[12].GetUInt8()); SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_FACIAL_STYLE, fields[13].GetUInt8()); - SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_BANK_BAG_SLOTS, fields[17].GetUInt8()); - SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_REST_STATE, fields[18].GetUInt8()); + for (uint32 i = 0; i < PLAYER_CUSTOM_DISPLAY_SIZE; ++i) + SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_CUSTOM_DISPLAY_OPTION + i, fields[14 + i].GetUInt8()); + SetBankBagSlotCount(fields[17].GetUInt8()); SetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_GENDER, gender); SetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_INEBRIATION, fields[53].GetUInt8()); SetUInt32Value(PLAYER_FLAGS, fields[19].GetUInt32()); @@ -16773,6 +16775,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) InitRunes(); // rest bonus can only be calculated after InitStatsForLevel() + SetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_XP, fields[18].GetUInt8()); m_rest_bonus = fields[29].GetFloat(); if (time_diff > 0) @@ -18552,11 +18555,10 @@ void Player::SaveToDB(bool create /*=false*/) stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_HAIR_STYLE_ID)); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_HAIR_COLOR_ID)); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_FACIAL_STYLE)); - stmt->setUInt8(index++, 0); - stmt->setUInt8(index++, 0); - stmt->setUInt8(index++, 0); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_BANK_BAG_SLOTS)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_REST_STATE)); + for (uint32 i = 0; i < PLAYER_CUSTOM_DISPLAY_SIZE; ++i) + stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_CUSTOM_DISPLAY_OPTION + i)); + stmt->setUInt8(index++, GetBankBagSlotCount()); + stmt->setUInt8(index++, uint8(GetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_XP))); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FLAGS)); stmt->setUInt16(index++, (uint16)GetMapId()); stmt->setUInt32(index++, (uint32)GetInstanceId()); @@ -18682,11 +18684,10 @@ void Player::SaveToDB(bool create /*=false*/) stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_HAIR_STYLE_ID)); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_HAIR_COLOR_ID)); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_FACIAL_STYLE)); - stmt->setUInt8(index++, 0); - stmt->setUInt8(index++, 0); - stmt->setUInt8(index++, 0); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_BANK_BAG_SLOTS)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_REST_STATE)); + for (uint32 i = 0; i < PLAYER_CUSTOM_DISPLAY_SIZE; ++i) + stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_CUSTOM_DISPLAY_OPTION + i)); + stmt->setUInt8(index++, GetBankBagSlotCount()); + stmt->setUInt8(index++, uint8(GetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_XP))); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FLAGS)); if (!IsBeingTeleported()) @@ -20601,17 +20602,17 @@ void Player::SetRestBonus(float rest_bonus_new) // update data for client if ((GetsRecruitAFriendBonus(true) && (GetSession()->IsARecruiter() || GetSession()->GetRecruiterId() != 0))) - SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_REST_STATE, REST_STATE_RAF_LINKED); + SetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_XP, REST_STATE_RAF_LINKED); else { if (m_rest_bonus > 10) - SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_REST_STATE, REST_STATE_RESTED); + SetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_XP, REST_STATE_RESTED); else if (m_rest_bonus <= 1) - SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_REST_STATE, REST_STATE_NOT_RAF_LINKED); + SetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_XP, REST_STATE_NOT_RAF_LINKED); } //RestTickUpdate - SetUInt32Value(PLAYER_REST_STATE_EXPERIENCE, uint32(m_rest_bonus)); + SetUInt32Value(PLAYER_FIELD_REST_INFO + REST_RESTED_XP, uint32(m_rest_bonus)); } bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc /*= NULL*/, uint32 spellid /*= 0*/) @@ -21747,7 +21748,7 @@ void Player::SetBattlegroundEntryPoint() void Player::SetBGTeam(uint32 team) { m_bgData.bgTeam = team; - SetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_ARENA_FACTION, uint8(team == ALLIANCE ? 1 : 0)); + SetByteValue(PLAYER_BYTES_4, PLAYER_BYTES_4_OFFSET_ARENA_FACTION, uint8(team == ALLIANCE ? 1 : 0)); } uint32 Player::GetBGTeam() const @@ -24014,14 +24015,11 @@ void Player::InitGlyphsForLevel() SetGlyphSlot(slot++, gs->ID); } - - SetUInt32Value(PLAYER_GLYPHS_ENABLED, slotMask); } void Player::SetGlyph(uint8 slot, uint32 glyph) { _talentMgr->GroupInfo[GetActiveTalentGroup()].Glyphs[slot] = glyph; - SetUInt32Value(PLAYER_FIELD_GLYPHS_1 + slot, glyph); } bool Player::isTotalImmune() const @@ -24097,18 +24095,17 @@ bool Player::isTotalImmunity() const return false; } -uint32 Player::GetRuneTypeBaseCooldown(RuneType runeType) const +uint32 Player::GetRuneTypeBaseCooldown() const { float cooldown = RUNE_BASE_COOLDOWN; - float hastePct; AuraEffectList const& regenAura = GetAuraEffectsByType(SPELL_AURA_MOD_POWER_REGEN_PERCENT); for (AuraEffectList::const_iterator i = regenAura.begin();i != regenAura.end(); ++i) - if ((*i)->GetMiscValue() == POWER_RUNES && (*i)->GetMiscValueB() == runeType) + if ((*i)->GetMiscValue() == POWER_RUNES) cooldown *= 1.0f - (*i)->GetAmount() / 100.0f; // Runes cooldown are now affected by player's haste from equipment ... - hastePct = GetRatingBonusValue(CR_HASTE_MELEE); + float hastePct = GetRatingBonusValue(CR_HASTE_MELEE); // ... and some auras. hastePct += GetTotalAuraModifier(SPELL_AURA_MOD_MELEE_HASTE); @@ -24227,6 +24224,10 @@ void Player::InitRunes() if (getClass() != CLASS_DEATH_KNIGHT) return; + uint32 runeIndex = GetPowerIndex(POWER_RUNES); + if (runeIndex == MAX_POWERS) + return; + m_runes = new Runes; m_runes->runeState = 0; @@ -24243,8 +24244,9 @@ void Player::InitRunes() m_runes->SetRuneState(i); } - for (uint8 i = 0; i < NUM_RUNE_TYPES; ++i) - SetFloatValue(PLAYER_RUNE_REGEN_1 + i, 0.1f); // set a base regen timer equal to 10 sec + // set a base regen timer equal to 10 sec + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER + runeIndex, 0.1f); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER + runeIndex, 0.1f); } bool Player::IsBaseRuneSlotsOnCooldown(RuneType runeType) const diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index f6e0bd7c090..aa1f1d0697e 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -575,28 +575,32 @@ enum PlayerBytesOffsets enum PlayerBytes2Offsets { - PLAYER_BYTES_2_OFFSET_FACIAL_STYLE = 0, - PLAYER_BYTES_2_OFFSET_PARTY_TYPE = 1, - PLAYER_BYTES_2_OFFSET_BANK_BAG_SLOTS = 2, - PLAYER_BYTES_2_OFFSET_REST_STATE = 3 + PLAYER_BYTES_2_OFFSET_CUSTOM_DISPLAY_OPTION = 0, // 3 bytes + PLAYER_BYTES_2_OFFSET_FACIAL_STYLE = 3, }; #define PLAYER_CUSTOM_DISPLAY_SIZE 3 enum PlayerBytes3Offsets { - PLAYER_BYTES_3_OFFSET_GENDER = 0, - PLAYER_BYTES_3_OFFSET_INEBRIATION = 1, - PLAYER_BYTES_3_OFFSET_PVP_TITLE = 2, - PLAYER_BYTES_3_OFFSET_ARENA_FACTION = 3 + PLAYER_BYTES_3_OFFSET_PARTY_TYPE = 0, + PLAYER_BYTES_3_OFFSET_BANK_BAG_SLOTS = 1, + PLAYER_BYTES_3_OFFSET_GENDER = 2, + PLAYER_BYTES_3_OFFSET_INEBRIATION = 3, +}; + +enum PlayerBytes4Offsets +{ + PLAYER_BYTES_4_OFFSET_PVP_TITLE = 0, + PLAYER_BYTES_4_OFFSET_ARENA_FACTION = 1 }; enum PlayerFieldBytesOffsets { - PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL = 0, - PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES = 1, - PLAYER_FIELD_BYTES_OFFSET_PVP_RANK = 2, - PLAYER_FIELD_BYTES_OFFSET_LIFETIME_MAX_PVP_RANK = 3 + PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL = 0, + PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES = 1, + PLAYER_FIELD_BYTES_OFFSET_LIFETIME_MAX_PVP_RANK = 2, + PLAYER_FIELD_BYTES_OFFSET_MAX_ARTIFACT_POWER_RANKS = 3, }; enum PlayerFieldBytes2Offsets @@ -627,6 +631,16 @@ enum PlayerFieldKillsOffsets PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS = 1 }; +enum PlayerRestInfoOffsets +{ + REST_STATE_XP = 0, + REST_RESTED_XP = 1, + REST_STATE_HONOR = 2, + REST_RESTED_HONOR = 3, + + MAX_REST_INFO +}; + enum MirrorTimerType { FATIGUE_TIMER = 0, @@ -1161,6 +1175,8 @@ struct TC_GAME_API PlayerTalentInfo memset(GroupInfo[i].Glyphs, 0, MAX_GLYPH_SLOT_INDEX * sizeof(uint32)); GroupInfo[i].SpecId = 0; } + + GlyphSlots.fill(0); } ~PlayerTalentInfo() @@ -1181,6 +1197,8 @@ struct TC_GAME_API PlayerTalentInfo uint8 ActiveGroup; uint8 GroupsCount; + std::array<uint32, MAX_GLYPH_SLOT_INDEX> GlyphSlots; + private: PlayerTalentInfo(PlayerTalentInfo const&); }; @@ -1347,8 +1365,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> static bool IsBankPos(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 GetBankBagSlotCount() const { return GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_BANK_BAG_SLOTS); } - void SetBankBagSlotCount(uint8 count) { SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_BANK_BAG_SLOTS, count); } + 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); } bool HasItemCount(uint32 item, uint32 count = 1, bool inBankAlso = false) const; bool HasItemFitToSpellRequirements(SpellInfo const* spellInfo, Item const* ignoreItem = nullptr) const; bool CanNoReagentCast(SpellInfo const* spellInfo) const; @@ -1789,9 +1807,9 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void ActivateTalentGroup(uint8 group); void InitGlyphsForLevel(); - void SetGlyphSlot(uint8 slot, uint32 slottype) { SetUInt32Value(PLAYER_FIELD_GLYPH_SLOTS_1 + slot, slottype); } + void SetGlyphSlot(uint8 slot, uint32 slottype) { _talentMgr->GlyphSlots[slot] = slottype; } - uint32 GetGlyphSlot(uint8 slot) const { return GetUInt32Value(PLAYER_FIELD_GLYPH_SLOTS_1 + slot); } + uint32 GetGlyphSlot(uint8 slot) const { return _talentMgr->GlyphSlots[slot]; } void SetGlyph(uint8 slot, uint32 glyph); uint32 GetGlyph(uint8 group, uint8 slot) const { return _talentMgr->GroupInfo[group].Glyphs[slot]; } @@ -1971,7 +1989,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void ApplyManaRegenBonus(int32 amount, bool apply); void ApplyHealthRegenBonus(int32 amount, bool apply); void UpdateManaRegen(); - void UpdateRuneRegen(RuneType rune); uint32 GetRuneTimer(uint8 index) const { return m_runeGraceCooldown[index]; } void SetRuneTimer(uint8 index, uint32 timer) { m_runeGraceCooldown[index] = timer; } uint32 GetLastRuneGraceTimer(uint8 index) const { return m_lastRuneGraceTimers[index]; } @@ -2411,8 +2428,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> RuneType GetBaseRune(uint8 index) const { return RuneType(m_runes->runes[index].BaseRune); } RuneType GetCurrentRune(uint8 index) const { return RuneType(m_runes->runes[index].CurrentRune); } uint32 GetRuneCooldown(uint8 index) const { return m_runes->runes[index].Cooldown; } - uint32 GetRuneBaseCooldown(uint8 index) const { return GetRuneTypeBaseCooldown(GetBaseRune(index)); } - uint32 GetRuneTypeBaseCooldown(RuneType runeType) const; + uint32 GetRuneBaseCooldown(uint8 index) const { return GetRuneTypeBaseCooldown(); } + uint32 GetRuneTypeBaseCooldown() const; bool IsBaseRuneSlotsOnCooldown(RuneType runeType) const; RuneType GetLastUsedRune() const { return m_runes->lastUsedRune; } void SetLastUsedRune(RuneType type) { m_runes->lastUsedRune = type; } diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index f5660efe00e..deb163fde7e 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -752,6 +752,10 @@ void Player::ApplyHealthRegenBonus(int32 amount, bool apply) void Player::UpdateManaRegen() { + uint32 manaIndex = GetPowerIndex(POWER_MANA); + if (manaIndex == MAX_POWERS) + return; + // Mana regen from spirit float spirit_regen = OCTRegenMPPerSpirit(); // Apply PCT bonus from SPELL_AURA_MOD_POWER_REGEN_PERCENT aura on spirit base regen @@ -763,36 +767,22 @@ void Player::UpdateManaRegen() // Set regen rate in cast state apply only on spirit based regen int32 modManaRegenInterrupt = GetTotalAuraModifier(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT); - SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER, base_regen + CalculatePct(spirit_regen, modManaRegenInterrupt)); - SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER, 0.001f + spirit_regen + base_regen); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER + manaIndex, base_regen + CalculatePct(spirit_regen, modManaRegenInterrupt)); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER + manaIndex, 0.001f + spirit_regen + base_regen); } -void Player::UpdateRuneRegen(RuneType rune) +void Player::UpdateAllRunesRegen() { - if (rune >= NUM_RUNE_TYPES) + if (getClass() != CLASS_DEATH_KNIGHT) return; - uint32 cooldown = 0; - - for (uint32 i = 0; i < MAX_RUNES; ++i) - if (GetBaseRune(i) == rune) - { - cooldown = GetRuneBaseCooldown(i); - break; - } - - if (cooldown <= 0) + uint32 runeIndex = GetPowerIndex(POWER_RUNES); + if (runeIndex == MAX_POWERS) return; - float regen = float(1 * IN_MILLISECONDS) / float(cooldown); - SetFloatValue(PLAYER_RUNE_REGEN_1 + uint8(rune), regen); -} - -void Player::UpdateAllRunesRegen() -{ - for (uint8 i = 0; i < NUM_RUNE_TYPES; ++i) - if (uint32 cooldown = GetRuneTypeBaseCooldown(RuneType(i))) - SetFloatValue(PLAYER_RUNE_REGEN_1 + i, float(1 * IN_MILLISECONDS) / float(cooldown)); + uint32 cooldown = GetRuneTypeBaseCooldown(); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER + runeIndex, float(1 * IN_MILLISECONDS) / float(cooldown)); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER + runeIndex, float(1 * IN_MILLISECONDS) / float(cooldown)); } void Player::_ApplyAllStatBonuses() diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 4328af96d90..271b84364de 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8234,7 +8234,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 + GetFirstSchoolInMask(schoolMask)); + crit_chance = GetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1); else { crit_chance = (float)m_baseSpellCritChance; diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index a35d5e37b47..c86e20a53ad 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -4024,7 +4024,7 @@ void AuraEffect::HandleModPowerRegen(AuraApplication const* aurApp, uint8 mode, if (GetMiscValue() == POWER_MANA) target->ToPlayer()->UpdateManaRegen(); else if (GetMiscValue() == POWER_RUNES) - target->ToPlayer()->UpdateRuneRegen(RuneType(GetMiscValueB())); + target->ToPlayer()->UpdateAllRunesRegen(); // other powers are not immediate effects - implemented in Player::Regenerate, Creature::Regenerate } |