aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-01-10 00:14:45 +0100
committerShauren <shauren.trinity@gmail.com>2016-05-20 23:39:39 +0200
commit65c0a0ee4d5c299f3caab04b6cb3fcd7a4a93e2e (patch)
tree32d719777c358074e00a03aaf7cea60840cdf5a5 /src
parent91753a94b33b73185ebb0ef551c02bae422b1a46 (diff)
Core/Entities: Updated updatefields to 7.0.1.20810
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp2
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp76
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h382
-rw-r--r--src/server/game/Entities/Player/Player.cpp62
-rw-r--r--src/server/game/Entities/Player/Player.h55
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp36
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp2
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp2
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
}