aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/ObjectAccessor.cpp10
-rw-r--r--src/game/SpellAuras.cpp30
2 files changed, 16 insertions, 24 deletions
diff --git a/src/game/ObjectAccessor.cpp b/src/game/ObjectAccessor.cpp
index 7daf7e5395e..4df45812f7f 100644
--- a/src/game/ObjectAccessor.cpp
+++ b/src/game/ObjectAccessor.cpp
@@ -514,11 +514,13 @@ ObjectAccessor::WorldObjectChangeAccumulator::Visit(DynamicObjectMapType &m)
{
for(DynamicObjectMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
{
- if (IS_PLAYER_GUID(iter->getSource()->GetCasterGUID()))
+ uint64 guid = iter->getSource()->GetCasterGUID();
+ if(IS_PLAYER_GUID(guid))
{
- Player* caster = (Player*)iter->getSource()->GetCaster();
- if (caster->GetUInt64Value(PLAYER_FARSIGHT) == iter->getSource()->GetGUID())
- BuildPacket(caster);
+ //Caster may be NULL if DynObj is in removelist
+ if(Player *caster = FindPlayer(guid))
+ if (caster->GetUInt64Value(PLAYER_FARSIGHT) == iter->getSource()->GetGUID())
+ BuildPacket(caster);
}
}
}
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 8f14fb5e5ef..851ad35c0f9 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -1264,8 +1264,7 @@ void Aura::DropAuraCharge()
{
if(m_procCharges) //auras without charges always have charge = 0
{
- --m_procCharges;
- if(m_procCharges) // Send charge change
+ if(--m_procCharges) // Send charge change
SendAuraUpdate();
else // Last charge dropped
m_target->RemoveAura(this);
@@ -1274,39 +1273,30 @@ void Aura::DropAuraCharge()
bool Aura::IsPersistent() const
{
- for (uint8 i=0; i<MAX_SPELL_EFFECTS;++i)
+ for(uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
{
- if (m_partAuras[i])
- {
- if (m_partAuras[i]->IsPersistent())
- return true;
- }
+ if(m_partAuras[i] && m_partAuras[i]->IsPersistent())
+ return true;
}
return false;
}
bool Aura::IsAreaAura() const
{
- for (uint8 i=0; i<MAX_SPELL_EFFECTS;++i)
+ for(uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
{
- if (m_partAuras[i])
- {
- if (m_partAuras[i]->IsAreaAura())
- return true;
- }
+ if(m_partAuras[i] && m_partAuras[i]->IsAreaAura())
+ return true;
}
return false;
}
bool Aura::IsAuraType(AuraType type) const
{
- for (uint8 i=0; i<MAX_SPELL_EFFECTS;++i)
+ for(uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
{
- if (m_partAuras[i])
- {
- if (m_partAuras[i]->GetAuraName()==type)
- return true;
- }
+ if(m_partAuras[i] && m_partAuras[i]->GetAuraName() == type)
+ return true;
}
return false;
}