aboutsummaryrefslogtreecommitdiff
path: root/src/game/Unit.h
diff options
context:
space:
mode:
authorQAston <none@none>2009-07-30 17:16:56 +0200
committerQAston <none@none>2009-07-30 17:16:56 +0200
commit13758fcae186644b84837f4d28f9b72f101bdf5e (patch)
treee60a5446f5d6c0009b3d6a0815d132b7774474ce /src/game/Unit.h
parent2095daca858d75348e3e111cf874bb3e9e4de9f3 (diff)
*Fix per-caster aura state based on [8218] (Author: VladimirMangos;almost nothing left from original patch):
*Fixes all per caster aurastates instead of only conflagrate *Adds a holder for aura state auras for speedup search *Save some memory space by removing m_auraStateMask from aura class. --HG-- branch : trunk
Diffstat (limited to 'src/game/Unit.h')
-rw-r--r--src/game/Unit.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/game/Unit.h b/src/game/Unit.h
index 85f2ed154dd..5a09d0f8c0e 100644
--- a/src/game/Unit.h
+++ b/src/game/Unit.h
@@ -1023,6 +1023,7 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
typedef std::set<Unit*> ControlList;
typedef std::pair<uint32, uint8> spellEffectPair;
typedef std::multimap<uint32, Aura*> AuraMap;
+ typedef std::multimap<AuraState, Aura*> AuraStateAurasMap;
typedef std::list<AuraEffect *> AuraEffectList;
typedef std::list<Aura *> AuraList;
typedef std::list<DiminishingReturn> Diminishing;
@@ -1658,6 +1659,7 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
uint32 CalculateDamage(WeaponAttackType attType, bool normalized);
float GetAPMultiplier(WeaponAttackType attType, bool normalized);
void ModifyAuraState(AuraState flag, bool apply);
+ uint32 BuildAuraStateUpdateForTarget(Unit * target) const;
bool HasAuraState(AuraState flag, SpellEntry const *spellProto = NULL, Unit * Caster = NULL) const ;
void UnsummonAllTotems();
Unit* SelectMagnetTarget(Unit *victim, SpellEntry const *spellInfo = NULL);
@@ -1855,12 +1857,12 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
AuraList m_scAuras; // casted singlecast auras
AuraList m_interruptableAuras;
AuraList m_removedAuras;
+ AuraStateAurasMap m_auraStateAuras; // Used for improve performance of aura state checks on aura apply/remove
uint32 m_interruptMask;
float m_auraModifiersGroup[UNIT_MOD_END][MODIFIER_TYPE_END];
float m_weaponDamage[MAX_ATTACK][2];
bool m_canModifyStats;
- //std::list< spellEffectPair > AuraSpells[TOTAL_AURAS]; // TODO: use this if ok for mem
VisibleAuraMap m_visibleAuras;
float m_speed_rate[MAX_MOVE_TYPE];