aboutsummaryrefslogtreecommitdiff
path: root/src/game/Player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Player.cpp')
-rw-r--r--src/game/Player.cpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index dc28d3c9a8c..d9ffdab5365 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -15195,6 +15195,11 @@ void Player::_LoadAuras(QueryResult *result, uint32 timediff)
Aura* aura = new Aura(spellproto, effmask, NULL, this, NULL, NULL);
aura->SetLoadedState(caster_guid,maxduration,remaintime,remaincharges, stackcount, &damage[0]);
+ if(!aura->CanBeSaved())
+ {
+ delete aura;
+ continue;
+ }
AddAura(aura);
sLog.outDetail("Added aura spellid %u, effectmask %u", spellproto->Id, effmask);
}
@@ -16275,17 +16280,9 @@ void Player::_SaveAuras()
AuraMap const& auras = GetAuras();
for(AuraMap::const_iterator itr = auras.begin(); itr !=auras.end() ; ++itr)
{
- // skip:
- // area auras or single cast auras casted by other unit
- // passive auras and stances
- if (itr->second->IsPassive())
+ if(!itr->second->CanBeSaved())
continue;
- if (itr->second->GetCasterGUID() != GetGUID())
- if (IsSingleTargetSpell(itr->second->GetSpellProto())
- || itr->second->IsAreaAura())
- continue;
-
int32 amounts[MAX_SPELL_EFFECTS];
for (uint8 i=0;i<MAX_SPELL_EFFECTS;++i)
{