diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-04-26 18:56:35 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-05-20 23:50:20 +0200 |
| commit | df6d557a4d778093ec522d2c39c6c01acc41d978 (patch) | |
| tree | 55ea1573d75628f8aa4516d4632607ad49c4a4f7 /src/server/game | |
| parent | 70102f32fe38ae7d49acbd5ddee0239602d3cb94 (diff) | |
Core/Entities: Updated updatefields to 7.0.3.21414
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 9 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp | 65 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFields.h | 280 | ||||
| -rw-r--r-- | src/server/game/Entities/Pet/Pet.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 20 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/StatSystem.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 15 | ||||
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 9 | ||||
| -rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 3 |
11 files changed, 227 insertions, 189 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 979390baaeb..553b4f0babc 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -702,9 +702,8 @@ void Creature::RegenerateMana() if (IsInCombat() || !GetCharmerOrOwnerGUID().IsEmpty()) { float ManaIncreaseRate = sWorld->getRate(RATE_POWER_MANA); - float Spirit = GetStat(STAT_SPIRIT); - addvalue = uint32((Spirit / 5.0f + 17.0f) * ManaIncreaseRate); + addvalue = uint32((27.0f / 5.0f + 17.0f) * ManaIncreaseRate); } else addvalue = maxValue / 3; @@ -737,12 +736,8 @@ void Creature::RegenerateHealth() if (!GetCharmerOrOwnerGUID().IsEmpty()) { float HealthIncreaseRate = sWorld->getRate(RATE_HEALTH); - float Spirit = GetStat(STAT_SPIRIT); - if (GetPower(POWER_MANA) > 0) - addvalue = uint32(Spirit * 0.25 * HealthIncreaseRate); - else - addvalue = uint32(Spirit * 0.80 * HealthIncreaseRate); + addvalue = 0.015f * ((float)GetMaxHealth()) * HealthIncreaseRate; } else addvalue = maxValue/3; diff --git a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp index bafdac92251..52a975d6032 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp @@ -393,17 +393,14 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_STAT+1 UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_STAT+2 UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_STAT+3 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_STAT+4 UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_POSSTAT UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_POSSTAT+1 UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_POSSTAT+2 UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_POSSTAT+3 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_POSSTAT+4 UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_NEGSTAT UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_NEGSTAT+1 UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_NEGSTAT+2 UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_NEGSTAT+3 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_NEGSTAT+4 UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_RESISTANCES UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_RESISTANCES+1 UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_RESISTANCES+2 @@ -437,6 +434,7 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RANGED_ATTACK_POWER_MOD_POS UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RANGED_ATTACK_POWER_MOD_NEG UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_ATTACK_SPEED_AURA UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_MINRANGEDDAMAGE UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_MAXRANGEDDAMAGE UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_POWER_COST_MODIFIER @@ -1249,6 +1247,56 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+747 UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+748 UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+749 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+750 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+751 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+752 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+753 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+754 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+755 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+756 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+757 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+758 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+759 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+760 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+761 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+762 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+763 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+764 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+765 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+766 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+767 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+768 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+769 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+770 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+771 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+772 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+773 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+774 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+775 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+776 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+777 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+778 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+779 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+780 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+781 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+782 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+783 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+784 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+785 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+786 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+787 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+788 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+789 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+790 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+791 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+792 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+793 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+794 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+795 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+796 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+797 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+798 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+799 UF_FLAG_PUBLIC, // PLAYER_VISIBLE_ITEM UF_FLAG_PUBLIC, // PLAYER_VISIBLE_ITEM+1 UF_FLAG_PUBLIC, // PLAYER_VISIBLE_ITEM+2 @@ -2051,6 +2099,10 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PRIVATE, // PLAYER_FARSIGHT+1 UF_FLAG_PRIVATE, // PLAYER_FARSIGHT+2 UF_FLAG_PRIVATE, // PLAYER_FARSIGHT+3 + UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID + UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+1 + UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+2 + UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+3 UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+1 UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+2 @@ -2939,6 +2991,7 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+35 UF_FLAG_PRIVATE, // PLAYER_FIELD_MAX_LEVEL UF_FLAG_PRIVATE, // PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA + UF_FLAG_PRIVATE, // PLAYER_FIELD_MAX_CREATURE_SCALING_LEVEL UF_FLAG_PRIVATE, // PLAYER_NO_REAGENT_COST_1 UF_FLAG_PRIVATE, // PLAYER_NO_REAGENT_COST_1+1 UF_FLAG_PRIVATE, // PLAYER_NO_REAGENT_COST_1+2 @@ -2960,10 +3013,6 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PRIVATE, // PLAYER_FIELD_UI_SPELL_HIT_MODIFIER UF_FLAG_PRIVATE, // PLAYER_FIELD_HOME_REALM_TIME_OFFSET UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_PET_HASTE - UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID - UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+3 UF_FLAG_PRIVATE | UF_FLAG_URGENT_SELF_ONLY, // PLAYER_FIELD_BYTES2 UF_FLAG_PRIVATE, // PLAYER_FIELD_LFG_BONUS_FACTION_ID UF_FLAG_PRIVATE, // PLAYER_FIELD_LOOT_SPEC_ID @@ -3872,6 +3921,7 @@ uint32 UnitDynamicUpdateFieldFlags[PLAYER_DYNAMIC_END] = UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_TOYS UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_TRANSMOG UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG + UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_CHARACTER_RESTRICTIONS }; uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END] = @@ -4030,6 +4080,7 @@ uint32 AreaTriggerUpdateFieldFlags[AREATRIGGER_END] = UF_FLAG_DYNAMIC, // AREATRIGGER_SPELLVISUALID UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // AREATRIGGER_BOUNDS_RADIUS_2D UF_FLAG_PUBLIC, // AREATRIGGER_DECAL_PROPERTIES_ID + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // AREATRIGGER_VISUAL_ANIMATION }; uint32 SceneObjectUpdateFieldFlags[SCENEOBJECT_END] = diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 12de8ccd7b7..f599c8e5a04 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 7, 0, 1, 20810 +// Auto generated for version 7, 0, 3, 21414 enum ObjectFields { @@ -142,46 +142,47 @@ enum UnitFields 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, + UNIT_FIELD_STAT = OBJECT_END + 0x075, // Size: 4, Flags: PRIVATE, OWNER + UNIT_FIELD_POSSTAT = OBJECT_END + 0x079, // Size: 4, Flags: PRIVATE, OWNER + UNIT_FIELD_NEGSTAT = OBJECT_END + 0x07D, // Size: 4, Flags: PRIVATE, OWNER + UNIT_FIELD_RESISTANCES = OBJECT_END + 0x081, // Size: 7, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE = OBJECT_END + 0x088, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE = OBJECT_END + 0x08F, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_MOD_BONUS_ARMOR = OBJECT_END + 0x096, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_BASE_MANA = OBJECT_END + 0x097, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BASE_HEALTH = OBJECT_END + 0x098, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_BYTES_2 = OBJECT_END + 0x099, // Size: 1, Flags: PUBLIC + UNIT_FIELD_ATTACK_POWER = OBJECT_END + 0x09A, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_POWER_MOD_POS = OBJECT_END + 0x09B, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x09C, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x09D, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER = OBJECT_END + 0x09E, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER_MOD_POS = OBJECT_END + 0x09F, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x0A0, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x0A1, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_SPEED_AURA = OBJECT_END + 0x0A2, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_MINRANGEDDAMAGE = OBJECT_END + 0x0A3, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_MAXRANGEDDAMAGE = OBJECT_END + 0x0A4, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_POWER_COST_MODIFIER = OBJECT_END + 0x0A5, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_POWER_COST_MULTIPLIER = OBJECT_END + 0x0AC, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_MAXHEALTHMODIFIER = OBJECT_END + 0x0B3, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_HOVERHEIGHT = OBJECT_END + 0x0B4, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MIN_ITEM_LEVEL_CUTOFF = OBJECT_END + 0x0B5, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MIN_ITEM_LEVEL = OBJECT_END + 0x0B6, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MAXITEMLEVEL = OBJECT_END + 0x0B7, // Size: 1, Flags: PUBLIC + UNIT_FIELD_WILD_BATTLEPET_LEVEL = OBJECT_END + 0x0B8, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BATTLEPET_COMPANION_NAME_TIMESTAMP = OBJECT_END + 0x0B9, // Size: 1, Flags: PUBLIC + UNIT_FIELD_INTERACT_SPELLID = OBJECT_END + 0x0BA, // Size: 1, Flags: PUBLIC + UNIT_FIELD_STATE_SPELL_VISUAL_ID = OBJECT_END + 0x0BB, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_STATE_ANIM_ID = OBJECT_END + 0x0BC, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_STATE_ANIM_KIT_ID = OBJECT_END + 0x0BD, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_STATE_WORLD_EFFECT_ID = OBJECT_END + 0x0BE, // Size: 4, Flags: DYNAMIC, URGENT + UNIT_FIELD_SCALE_DURATION = OBJECT_END + 0x0C2, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOKS_LIKE_MOUNT_ID = OBJECT_END + 0x0C3, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOKS_LIKE_CREATURE_ID = OBJECT_END + 0x0C4, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOK_AT_CONTROLLER_ID = OBJECT_END + 0x0C5, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET = OBJECT_END + 0x0C6, // Size: 4, Flags: PUBLIC + UNIT_END = OBJECT_END + 0x0CA, }; enum UnitDynamicFields @@ -207,101 +208,102 @@ enum PlayerFields PLAYER_BYTES_4 = UNIT_END + 0x014, // Size: 1, Flags: PUBLIC PLAYER_DUEL_TEAM = UNIT_END + 0x015, // Size: 1, Flags: PUBLIC PLAYER_GUILD_TIMESTAMP = UNIT_END + 0x016, // Size: 1, Flags: PUBLIC - PLAYER_QUEST_LOG = UNIT_END + 0x017, // Size: 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, + PLAYER_QUEST_LOG = UNIT_END + 0x017, // Size: 800, Flags: PARTY_MEMBER + PLAYER_VISIBLE_ITEM = UNIT_END + 0x337, // Size: 38, Flags: PUBLIC + PLAYER_CHOSEN_TITLE = UNIT_END + 0x35D, // Size: 1, Flags: PUBLIC + PLAYER_FAKE_INEBRIATION = UNIT_END + 0x35E, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_VIRTUAL_PLAYER_REALM = UNIT_END + 0x35F, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_CURRENT_SPEC_ID = UNIT_END + 0x360, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_TAXI_MOUNT_ANIM_KIT_ID = UNIT_END + 0x361, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_AVG_ITEM_LEVEL = UNIT_END + 0x362, // Size: 4, Flags: PUBLIC + PLAYER_FIELD_CURRENT_BATTLE_PET_BREED_QUALITY = UNIT_END + 0x366, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_PRESTIGE = UNIT_END + 0x367, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_HONOR_LEVEL = UNIT_END + 0x368, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_INV_SLOT_HEAD = UNIT_END + 0x369, // Size: 748, Flags: PRIVATE + PLAYER_FIELD_END_NOT_SELF = UNIT_END + 0x369, + PLAYER_FARSIGHT = UNIT_END + 0x655, // Size: 4, Flags: PRIVATE + PLAYER_FIELD_SUMMONED_BATTLE_PET_ID = UNIT_END + 0x659, // Size: 4, Flags: PRIVATE + PLAYER__FIELD_KNOWN_TITLES = UNIT_END + 0x65D, // Size: 12, Flags: PRIVATE + PLAYER_FIELD_COINAGE = UNIT_END + 0x669, // Size: 2, Flags: PRIVATE + PLAYER_XP = UNIT_END + 0x66B, // Size: 1, Flags: PRIVATE + PLAYER_NEXT_LEVEL_XP = UNIT_END + 0x66C, // Size: 1, Flags: PRIVATE + PLAYER_SKILL_LINEID = UNIT_END + 0x66D, // Size: 448, Flags: PRIVATE + PLAYER_CHARACTER_POINTS = UNIT_END + 0x82D, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MAX_TALENT_TIERS = UNIT_END + 0x82E, // Size: 1, Flags: PRIVATE + PLAYER_TRACK_CREATURES = UNIT_END + 0x82F, // Size: 1, Flags: PRIVATE + PLAYER_TRACK_RESOURCES = UNIT_END + 0x830, // Size: 1, Flags: PRIVATE + PLAYER_EXPERTISE = UNIT_END + 0x831, // Size: 1, Flags: PRIVATE + PLAYER_OFFHAND_EXPERTISE = UNIT_END + 0x832, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_RANGED_EXPERTISE = UNIT_END + 0x833, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_COMBAT_RATING_EXPERTISE = UNIT_END + 0x834, // Size: 1, Flags: PRIVATE + PLAYER_BLOCK_PERCENTAGE = UNIT_END + 0x835, // Size: 1, Flags: PRIVATE + PLAYER_DODGE_PERCENTAGE = UNIT_END + 0x836, // Size: 1, Flags: PRIVATE + PLAYER_PARRY_PERCENTAGE = UNIT_END + 0x837, // Size: 1, Flags: PRIVATE + PLAYER_CRIT_PERCENTAGE = UNIT_END + 0x838, // Size: 1, Flags: PRIVATE + PLAYER_RANGED_CRIT_PERCENTAGE = UNIT_END + 0x839, // Size: 1, Flags: PRIVATE + PLAYER_OFFHAND_CRIT_PERCENTAGE = UNIT_END + 0x83A, // Size: 1, Flags: PRIVATE + PLAYER_SPELL_CRIT_PERCENTAGE1 = UNIT_END + 0x83B, // Size: 1, Flags: PRIVATE + PLAYER_SHIELD_BLOCK = UNIT_END + 0x83C, // Size: 1, Flags: PRIVATE + PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE = UNIT_END + 0x83D, // Size: 1, Flags: PRIVATE + PLAYER_MASTERY = UNIT_END + 0x83E, // Size: 1, Flags: PRIVATE + PLAYER_SPEED = UNIT_END + 0x83F, // Size: 1, Flags: PRIVATE + PLAYER_LIFESTEAL = UNIT_END + 0x840, // Size: 1, Flags: PRIVATE + PLAYER_AVOIDANCE = UNIT_END + 0x841, // Size: 1, Flags: PRIVATE + PLAYER_STURDINESS = UNIT_END + 0x842, // Size: 1, Flags: PRIVATE + PLAYER_VERSATILITY = UNIT_END + 0x843, // Size: 1, Flags: PRIVATE + PLAYER_VERSATILITY_BONUS = UNIT_END + 0x844, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_PVP_POWER_DAMAGE = UNIT_END + 0x845, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_PVP_POWER_HEALING = UNIT_END + 0x846, // Size: 1, Flags: PRIVATE + PLAYER_EXPLORED_ZONES_1 = UNIT_END + 0x847, // Size: 256, Flags: PRIVATE + PLAYER_FIELD_REST_INFO = UNIT_END + 0x947, // Size: 4, Flags: PRIVATE + PLAYER_FIELD_MOD_DAMAGE_DONE_POS = UNIT_END + 0x94B, // Size: 7, Flags: PRIVATE + PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = UNIT_END + 0x952, // Size: 7, Flags: PRIVATE + PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = UNIT_END + 0x959, // Size: 7, Flags: PRIVATE + PLAYER_FIELD_MOD_HEALING_DONE_POS = UNIT_END + 0x960, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_HEALING_PCT = UNIT_END + 0x961, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_HEALING_DONE_PCT = UNIT_END + 0x962, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT = UNIT_END + 0x963, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS = UNIT_END + 0x964, // Size: 3, Flags: PRIVATE + PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS = UNIT_END + 0x967, // Size: 3, Flags: PRIVATE + PLAYER_FIELD_MOD_SPELL_POWER_PCT = UNIT_END + 0x96A, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_RESILIENCE_PERCENT = UNIT_END + 0x96B, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT = UNIT_END + 0x96C, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT = UNIT_END + 0x96D, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_TARGET_RESISTANCE = UNIT_END + 0x96E, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE = UNIT_END + 0x96F, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_LOCAL_FLAGS = UNIT_END + 0x970, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_BYTES = UNIT_END + 0x971, // Size: 1, Flags: PRIVATE + PLAYER_SELF_RES_SPELL = UNIT_END + 0x972, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_PVP_MEDALS = UNIT_END + 0x973, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_BUYBACK_PRICE_1 = UNIT_END + 0x974, // Size: 12, Flags: PRIVATE + PLAYER_FIELD_BUYBACK_TIMESTAMP_1 = UNIT_END + 0x980, // Size: 12, Flags: PRIVATE + PLAYER_FIELD_KILLS = UNIT_END + 0x98C, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_LIFETIME_HONORABLE_KILLS = UNIT_END + 0x98D, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_WATCHED_FACTION_INDEX = UNIT_END + 0x98E, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_COMBAT_RATING_1 = UNIT_END + 0x98F, // Size: 32, Flags: PRIVATE + PLAYER_FIELD_ARENA_TEAM_INFO_1_1 = UNIT_END + 0x9AF, // Size: 36, Flags: PRIVATE + PLAYER_FIELD_MAX_LEVEL = UNIT_END + 0x9D3, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA = UNIT_END + 0x9D4, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MAX_CREATURE_SCALING_LEVEL = UNIT_END + 0x9D5, // Size: 1, Flags: PRIVATE + PLAYER_NO_REAGENT_COST_1 = UNIT_END + 0x9D6, // Size: 4, Flags: PRIVATE + PLAYER_PET_SPELL_POWER = UNIT_END + 0x9DA, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_RESEARCHING_1 = UNIT_END + 0x9DB, // Size: 10, Flags: PRIVATE + PLAYER_PROFESSION_SKILL_LINE_1 = UNIT_END + 0x9E5, // Size: 2, Flags: PRIVATE + PLAYER_FIELD_UI_HIT_MODIFIER = UNIT_END + 0x9E7, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_UI_SPELL_HIT_MODIFIER = UNIT_END + 0x9E8, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_HOME_REALM_TIME_OFFSET = UNIT_END + 0x9E9, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_MOD_PET_HASTE = UNIT_END + 0x9EA, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_BYTES2 = UNIT_END + 0x9EB, // Size: 1, Flags: PRIVATE, URGENT_SELF_ONLY + PLAYER_FIELD_LFG_BONUS_FACTION_ID = UNIT_END + 0x9EC, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_LOOT_SPEC_ID = UNIT_END + 0x9ED, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_OVERRIDE_ZONE_PVP_TYPE = UNIT_END + 0x9EE, // Size: 1, Flags: PRIVATE, URGENT_SELF_ONLY + PLAYER_FIELD_BAG_SLOT_FLAGS = UNIT_END + 0x9EF, // Size: 4, Flags: PRIVATE + PLAYER_FIELD_BANK_BAG_SLOT_FLAGS = UNIT_END + 0x9F3, // Size: 7, Flags: PRIVATE + PLAYER_FIELD_INSERT_ITEMS_LEFT_TO_RIGHT = UNIT_END + 0x9FA, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_QUEST_COMPLETED = UNIT_END + 0x9FB, // Size: 875, Flags: PRIVATE + PLAYER_FIELD_HONOR = UNIT_END + 0xD66, // Size: 1, Flags: PRIVATE + PLAYER_FIELD_HONOR_NEXT_LEVEL = UNIT_END + 0xD67, // Size: 1, Flags: PRIVATE + PLAYER_END = UNIT_END + 0xD68, }; enum PlayerDynamicFields @@ -315,7 +317,8 @@ enum PlayerDynamicFields PLAYER_DYNAMIC_FIELD_TOYS = UNIT_DYNAMIC_END + 0x006, // Flags: PRIVATE PLAYER_DYNAMIC_FIELD_TRANSMOG = UNIT_DYNAMIC_END + 0x007, // Flags: PRIVATE PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG = UNIT_DYNAMIC_END + 0x008, // Flags: PRIVATE - PLAYER_DYNAMIC_END = UNIT_DYNAMIC_END + 0x009, + PLAYER_DYNAMIC_FIELD_CHARACTER_RESTRICTIONS = UNIT_DYNAMIC_END + 0x009, // Flags: PRIVATE + PLAYER_DYNAMIC_END = UNIT_DYNAMIC_END + 0x00A, }; enum GameObjectFields @@ -389,7 +392,8 @@ enum AreaTriggerFields 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, + AREATRIGGER_VISUAL_ANIMATION = OBJECT_END + 0x01A, // Size: 1, Flags: PUBLIC, URGENT + AREATRIGGER_END = OBJECT_END + 0x01B, }; enum AreaTriggerDynamicFields diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index a3ca26c99c5..332924c0ea0 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -884,7 +884,6 @@ bool Guardian::InitStatsForLevel(uint8 petlevel) SetCreateStat(STAT_AGILITY, 22); SetCreateStat(STAT_STAMINA, 25); SetCreateStat(STAT_INTELLECT, 28); - SetCreateStat(STAT_SPIRIT, 27); } SetBonusDamage(0); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 2809cf121d1..fefceea25e1 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7205,10 +7205,10 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) HandleStatModifier(UNIT_MOD_STAT_INTELLECT, BASE_VALUE, float(val), apply); ApplyStatBuffMod(STAT_INTELLECT, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_INTELLECT, BASE_PCT_EXCLUDE_CREATE)), apply); break; - case ITEM_MOD_SPIRIT: //modify spirit - HandleStatModifier(UNIT_MOD_STAT_SPIRIT, BASE_VALUE, float(val), apply); - ApplyStatBuffMod(STAT_SPIRIT, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_SPIRIT, BASE_PCT_EXCLUDE_CREATE)), apply); - break; + // case ITEM_MOD_SPIRIT: //modify spirit + // HandleStatModifier(UNIT_MOD_STAT_SPIRIT, BASE_VALUE, float(val), apply); + // ApplyStatBuffMod(STAT_SPIRIT, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_SPIRIT, BASE_PCT_EXCLUDE_CREATE)), apply); + // break; case ITEM_MOD_STAMINA: //modify stamina HandleStatModifier(UNIT_MOD_STAT_STAMINA, BASE_VALUE, float(val), apply); ApplyStatBuffMod(STAT_STAMINA, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_STAMINA, BASE_PCT_EXCLUDE_CREATE)), apply); @@ -12930,11 +12930,11 @@ void Player::ApplyEnchantment(Item* item, EnchantmentSlot slot, bool apply, bool HandleStatModifier(UNIT_MOD_STAT_INTELLECT, TOTAL_VALUE, float(enchant_amount), apply); ApplyStatBuffMod(STAT_INTELLECT, (float)enchant_amount, apply); break; - case ITEM_MOD_SPIRIT: - TC_LOG_DEBUG("entities.player.items", "+ %u SPIRIT", enchant_amount); - HandleStatModifier(UNIT_MOD_STAT_SPIRIT, TOTAL_VALUE, float(enchant_amount), apply); - ApplyStatBuffMod(STAT_SPIRIT, (float)enchant_amount, apply); - break; + // case ITEM_MOD_SPIRIT: + // TC_LOG_DEBUG("entities.player.items", "+ %u SPIRIT", enchant_amount); + // HandleStatModifier(UNIT_MOD_STAT_SPIRIT, TOTAL_VALUE, float(enchant_amount), apply); + // ApplyStatBuffMod(STAT_SPIRIT, (float)enchant_amount, apply); + // break; case ITEM_MOD_STAMINA: TC_LOG_DEBUG("entities.player.items", "+ %u STAMINA", enchant_amount); HandleStatModifier(UNIT_MOD_STAT_STAMINA, TOTAL_VALUE, float(enchant_amount), apply); @@ -19641,7 +19641,7 @@ void Player::outDebugValues() const TC_LOG_DEBUG("entities.unit", "HP is: \t\t\t%u\t\tMP is: \t\t\t%u", GetMaxHealth(), GetMaxPower(POWER_MANA)); TC_LOG_DEBUG("entities.unit", "AGILITY is: \t\t%f\t\tSTRENGTH is: \t\t%f", GetStat(STAT_AGILITY), GetStat(STAT_STRENGTH)); - TC_LOG_DEBUG("entities.unit", "INTELLECT is: \t\t%f\t\tSPIRIT is: \t\t%f", GetStat(STAT_INTELLECT), GetStat(STAT_SPIRIT)); + TC_LOG_DEBUG("entities.unit", "INTELLECT is: \t\t%f", GetStat(STAT_INTELLECT)); TC_LOG_DEBUG("entities.unit", "STAMINA is: \t\t%f", GetStat(STAT_STAMINA)); TC_LOG_DEBUG("entities.unit", "Armor is: \t\t%u\t\tBlock is: \t\t%f", GetArmor(), GetFloatValue(PLAYER_BLOCK_PERCENTAGE)); TC_LOG_DEBUG("entities.unit", "HolyRes is: \t\t%u\t\tFireRes is: \t\t%u", GetResistance(SPELL_SCHOOL_HOLY), GetResistance(SPELL_SCHOOL_FIRE)); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index e943672c4f0..2f2258118b0 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -681,7 +681,7 @@ enum QuestSlotOffsets }; #define MAX_QUEST_COUNTS 24 -#define MAX_QUEST_OFFSET 15 +#define MAX_QUEST_OFFSET 16 enum QuestSlotStateMask { diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index ed6b9ec3696..447169a28d0 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -91,7 +91,7 @@ void Unit::UpdateDamagePhysical(WeaponAttackType attType) bool Player::UpdateStats(Stats stat) { - if (stat > STAT_SPIRIT) + if (stat >= MAX_STATS) return false; // value = ((base_value * base_pct) + total_value) * total_pct @@ -120,8 +120,6 @@ bool Player::UpdateStats(Stats stat) UpdateAllSpellCritChances(); UpdateArmor(); //SPELL_AURA_MOD_RESISTANCE_OF_INTELLECT_PERCENT, only armor currently break; - case STAT_SPIRIT: - break; default: break; } @@ -1023,7 +1021,6 @@ bool Guardian::UpdateStats(Stats stat) case STAT_AGILITY: UpdateArmor(); break; case STAT_STAMINA: UpdateMaxHealth(); break; case STAT_INTELLECT: UpdateMaxPower(POWER_MANA); break; - case STAT_SPIRIT: default: break; } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 964572e5f02..47b65b6a425 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -6122,8 +6122,6 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg if (GetStat(STAT_AGILITY) > stat) { trigger_spell_id = 60233;stat = GetStat(STAT_AGILITY); } // intellect if (GetStat(STAT_INTELLECT)> stat) { trigger_spell_id = 60234;stat = GetStat(STAT_INTELLECT);} - // spirit - if (GetStat(STAT_SPIRIT) > stat) { trigger_spell_id = 60235; } break; } case 64568: // Blood Reserve @@ -10740,8 +10738,7 @@ bool Unit::HandleStatModifier(UnitMods unitMod, UnitModifierType modifierType, f case UNIT_MOD_STAT_STRENGTH: case UNIT_MOD_STAT_AGILITY: case UNIT_MOD_STAT_STAMINA: - case UNIT_MOD_STAT_INTELLECT: - case UNIT_MOD_STAT_SPIRIT: UpdateStats(GetStatByAuraGroup(unitMod)); break; + case UNIT_MOD_STAT_INTELLECT: UpdateStats(GetStatByAuraGroup(unitMod)); break; case UNIT_MOD_ARMOR: UpdateArmor(); break; case UNIT_MOD_HEALTH: UpdateMaxHealth(); break; @@ -10854,8 +10851,6 @@ Stats Unit::GetStatByAuraGroup(UnitMods unitMod) const case UNIT_MOD_STAT_AGILITY: stat = STAT_AGILITY; break; case UNIT_MOD_STAT_STAMINA: stat = STAT_STAMINA; break; case UNIT_MOD_STAT_INTELLECT: stat = STAT_INTELLECT; break; - case UNIT_MOD_STAT_SPIRIT: stat = STAT_SPIRIT; break; - default: break; } diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 68b27049f71..bf766267fee 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -482,11 +482,10 @@ enum TriggerCastFlags enum UnitMods { - UNIT_MOD_STAT_STRENGTH, // UNIT_MOD_STAT_STRENGTH..UNIT_MOD_STAT_SPIRIT must be in existed order, it's accessed by index values of Stats enum. + UNIT_MOD_STAT_STRENGTH, // UNIT_MOD_STAT_STRENGTH..UNIT_MOD_STAT_INTELLECT must be in existed order, it's accessed by index values of Stats enum. UNIT_MOD_STAT_AGILITY, UNIT_MOD_STAT_STAMINA, UNIT_MOD_STAT_INTELLECT, - UNIT_MOD_STAT_SPIRIT, UNIT_MOD_HEALTH, UNIT_MOD_MANA, // UNIT_MOD_MANA..UNIT_MOD_RUNIC_POWER must be in existed order, it's accessed by index values of Powers enum. UNIT_MOD_RAGE, @@ -499,6 +498,14 @@ enum UnitMods UNIT_MOD_ECLIPSE, UNIT_MOD_HOLY_POWER, UNIT_MOD_ALTERNATIVE, + UNIT_MOD_MAELSTROM, + UNIT_MOD_CHI, + UNIT_MOD_INSANITY, + UNIT_MOD_BURNING_EMBERS, + UNIT_MOD_DEMONIC_FURY, + UNIT_MOD_ARCANE_CHARGES, + UNIT_MOD_FURY, + UNIT_MOD_PAIN, UNIT_MOD_ARMOR, // UNIT_MOD_ARMOR..UNIT_MOD_RESISTANCE_ARCANE must be in existed order, it's accessed by index values of SpellSchools enum. UNIT_MOD_RESISTANCE_HOLY, UNIT_MOD_RESISTANCE_FIRE, @@ -514,11 +521,11 @@ enum UnitMods UNIT_MOD_END, // synonyms UNIT_MOD_STAT_START = UNIT_MOD_STAT_STRENGTH, - UNIT_MOD_STAT_END = UNIT_MOD_STAT_SPIRIT + 1, + UNIT_MOD_STAT_END = UNIT_MOD_STAT_INTELLECT + 1, UNIT_MOD_RESISTANCE_START = UNIT_MOD_ARMOR, UNIT_MOD_RESISTANCE_END = UNIT_MOD_RESISTANCE_ARCANE + 1, UNIT_MOD_POWER_START = UNIT_MOD_MANA, - UNIT_MOD_POWER_END = UNIT_MOD_ALTERNATIVE + 1 + UNIT_MOD_POWER_END = UNIT_MOD_PAIN + 1 }; enum BaseModGroup diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 0e93e93a136..5f7039b4b10 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -3579,63 +3579,54 @@ void ObjectMgr::BuildPlayerLevelInfo(uint8 race, uint8 _class, uint8 level, Play info->stats[STAT_STAMINA] += (lvl > 23 ? 2: (lvl > 1 ? 1: 0)); info->stats[STAT_AGILITY] += (lvl > 36 ? 1: (lvl > 6 && (lvl%2) ? 1: 0)); info->stats[STAT_INTELLECT] += (lvl > 9 && !(lvl%2) ? 1: 0); - info->stats[STAT_SPIRIT] += (lvl > 9 && !(lvl%2) ? 1: 0); break; case CLASS_PALADIN: info->stats[STAT_STRENGTH] += (lvl > 3 ? 1: 0); info->stats[STAT_STAMINA] += (lvl > 33 ? 2: (lvl > 1 ? 1: 0)); info->stats[STAT_AGILITY] += (lvl > 38 ? 1: (lvl > 7 && !(lvl%2) ? 1: 0)); info->stats[STAT_INTELLECT] += (lvl > 6 && (lvl%2) ? 1: 0); - info->stats[STAT_SPIRIT] += (lvl > 7 ? 1: 0); break; case CLASS_HUNTER: info->stats[STAT_STRENGTH] += (lvl > 4 ? 1: 0); info->stats[STAT_STAMINA] += (lvl > 4 ? 1: 0); info->stats[STAT_AGILITY] += (lvl > 33 ? 2: (lvl > 1 ? 1: 0)); info->stats[STAT_INTELLECT] += (lvl > 8 && (lvl%2) ? 1: 0); - info->stats[STAT_SPIRIT] += (lvl > 38 ? 1: (lvl > 9 && !(lvl%2) ? 1: 0)); break; case CLASS_ROGUE: info->stats[STAT_STRENGTH] += (lvl > 5 ? 1: 0); info->stats[STAT_STAMINA] += (lvl > 4 ? 1: 0); info->stats[STAT_AGILITY] += (lvl > 16 ? 2: (lvl > 1 ? 1: 0)); info->stats[STAT_INTELLECT] += (lvl > 8 && !(lvl%2) ? 1: 0); - info->stats[STAT_SPIRIT] += (lvl > 38 ? 1: (lvl > 9 && !(lvl%2) ? 1: 0)); break; case CLASS_PRIEST: info->stats[STAT_STRENGTH] += (lvl > 9 && !(lvl%2) ? 1: 0); info->stats[STAT_STAMINA] += (lvl > 5 ? 1: 0); info->stats[STAT_AGILITY] += (lvl > 38 ? 1: (lvl > 8 && (lvl%2) ? 1: 0)); info->stats[STAT_INTELLECT] += (lvl > 22 ? 2: (lvl > 1 ? 1: 0)); - info->stats[STAT_SPIRIT] += (lvl > 3 ? 1: 0); break; case CLASS_SHAMAN: info->stats[STAT_STRENGTH] += (lvl > 34 ? 1: (lvl > 6 && (lvl%2) ? 1: 0)); info->stats[STAT_STAMINA] += (lvl > 4 ? 1: 0); info->stats[STAT_AGILITY] += (lvl > 7 && !(lvl%2) ? 1: 0); info->stats[STAT_INTELLECT] += (lvl > 5 ? 1: 0); - info->stats[STAT_SPIRIT] += (lvl > 4 ? 1: 0); break; case CLASS_MAGE: info->stats[STAT_STRENGTH] += (lvl > 9 && !(lvl%2) ? 1: 0); info->stats[STAT_STAMINA] += (lvl > 5 ? 1: 0); info->stats[STAT_AGILITY] += (lvl > 9 && !(lvl%2) ? 1: 0); info->stats[STAT_INTELLECT] += (lvl > 24 ? 2: (lvl > 1 ? 1: 0)); - info->stats[STAT_SPIRIT] += (lvl > 33 ? 2: (lvl > 2 ? 1: 0)); break; case CLASS_WARLOCK: info->stats[STAT_STRENGTH] += (lvl > 9 && !(lvl%2) ? 1: 0); info->stats[STAT_STAMINA] += (lvl > 38 ? 2: (lvl > 3 ? 1: 0)); info->stats[STAT_AGILITY] += (lvl > 9 && !(lvl%2) ? 1: 0); info->stats[STAT_INTELLECT] += (lvl > 33 ? 2: (lvl > 2 ? 1: 0)); - info->stats[STAT_SPIRIT] += (lvl > 38 ? 2: (lvl > 3 ? 1: 0)); break; case CLASS_DRUID: info->stats[STAT_STRENGTH] += (lvl > 38 ? 2: (lvl > 6 && (lvl%2) ? 1: 0)); info->stats[STAT_STAMINA] += (lvl > 32 ? 2: (lvl > 4 ? 1: 0)); info->stats[STAT_AGILITY] += (lvl > 38 ? 2: (lvl > 8 && (lvl%2) ? 1: 0)); info->stats[STAT_INTELLECT] += (lvl > 38 ? 3: (lvl > 4 ? 1: 0)); - info->stats[STAT_SPIRIT] += (lvl > 38 ? 3: (lvl > 5 ? 1: 0)); } } } diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 1ef2e7b0ed9..ed516b9faa9 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -241,10 +241,9 @@ enum Stats : uint16 STAT_AGILITY = 1, STAT_STAMINA = 2, STAT_INTELLECT = 3, - STAT_SPIRIT = 4 }; -#define MAX_STATS 5 +#define MAX_STATS 4 enum Powers // (6.0) { |
