aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Unit.cpp29
-rw-r--r--src/game/Vehicle.cpp2
2 files changed, 14 insertions, 17 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 7227696b533..ccd378b0e72 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -538,8 +538,8 @@ void Unit::RemoveAurasWithInterruptFlags(uint32 flag, uint32 except)
{
uint32 removedAuras = m_removedAurasCount;
RemoveAura(aur, AURA_REMOVE_BY_ENEMY_SPELL);
- if (removedAuras+1 < m_removedAurasCount)
- iter=m_interruptableAuras.begin();
+ if (m_removedAurasCount > removedAuras + 1)
+ iter = m_interruptableAuras.begin();
}
}
@@ -589,11 +589,9 @@ void Unit::RemoveAurasWithMechanic(uint32 mechanic_mask, AuraRemoveMode removemo
void Unit::UpdateInterruptMask()
{
m_interruptMask = 0;
- for(AuraList::iterator i = m_interruptableAuras.begin(); i != m_interruptableAuras.end(); ++i)
- {
- if(*i)
- m_interruptMask |= (*i)->GetSpellProto()->AuraInterruptFlags;
- }
+ for(AuraList::const_iterator i = m_interruptableAuras.begin(); i != m_interruptableAuras.end(); ++i)
+ m_interruptMask |= (*i)->GetSpellProto()->AuraInterruptFlags;
+
if(Spell* spell = m_currentSpells[CURRENT_CHANNELED_SPELL])
if(spell->getState() == SPELL_STATE_CASTING)
m_interruptMask |= spell->m_spellInfo->ChannelInterruptFlags;
@@ -1567,7 +1565,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo *damageInfo, bool durabilityLoss)
AuraEffectList const& vDamageShields = pVictim->GetAurasByType(SPELL_AURA_DAMAGE_SHIELD);
for(AuraEffectList::const_iterator i = vDamageShields.begin(), next = vDamageShields.begin(); i != vDamageShields.end(); i = next)
{
- next++;
+ ++next;
if (alreadyDone.find(*i) == alreadyDone.end())
{
alreadyDone.insert(*i);
@@ -3942,8 +3940,6 @@ void Unit::RemoveAurasDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit
// backfire damage and silence
dispeler->CastCustomSpell(dispeler, 31117, &damage, NULL, NULL, true, NULL, NULL,GetGUID());
}
- RemoveAuraFromStack(iter, AURA_REMOVE_BY_ENEMY_SPELL);
- return;
}
RemoveAuraFromStack(iter, AURA_REMOVE_BY_ENEMY_SPELL);
return;
@@ -4004,7 +4000,7 @@ void Unit::RemoveAurasDueToItemSpell(Item* castItem,uint32 spellId)
void Unit::RemoveAurasByType(AuraType auraType, uint64 casterGUID, Aura * except, bool negative, bool positive)
{
- for (AuraEffectList::iterator iter = m_modAuras[auraType].begin(); iter != m_modAuras[auraType].end();)
+ for (AuraEffectList::const_iterator iter = m_modAuras[auraType].begin(); iter != m_modAuras[auraType].end();)
{
Aura * aur = (*iter)->GetParentAura();
++iter;
@@ -4013,8 +4009,8 @@ void Unit::RemoveAurasByType(AuraType auraType, uint64 casterGUID, Aura * except
{
uint32 removedAuras = m_removedAurasCount;
RemoveAura(aur);
- if (removedAuras+1< m_removedAurasCount)
- iter=m_modAuras[auraType].begin();
+ if (m_removedAurasCount > removedAuras + 1)
+ iter = m_modAuras[auraType].begin();
}
}
}
@@ -4051,8 +4047,8 @@ void Unit::RemoveNotOwnSingleTargetAuras(uint32 newPhase)
{
uint32 removedAuras = m_removedAurasCount;
aura->GetTarget()->RemoveAura(aura);
- if (removedAuras+1<m_removedAurasCount)
- iter=scAuras.begin();
+ if (m_removedAurasCount > removedAuras + 1)
+ iter = scAuras.begin();
}
}
}
@@ -4123,7 +4119,8 @@ void Unit::RemoveAura(AuraMap::iterator &i, AuraRemoveMode mode)
}
// only way correctly remove all auras from list
- i = m_Auras.begin();
+ //if(removedAuras != m_removedAurasCount) new aura may be casted
+ i = m_Auras.begin();
}
void Unit::RemoveAllAuras()
diff --git a/src/game/Vehicle.cpp b/src/game/Vehicle.cpp
index 0a0a9dbc4a4..50236430bbe 100644
--- a/src/game/Vehicle.cpp
+++ b/src/game/Vehicle.cpp
@@ -268,7 +268,7 @@ bool Vehicle::AddPassenger(Unit *unit, int8 seatId)
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
}
- if(seat->second.seatInfo->m_flags && !(seat->second.seatInfo->m_flags & 0x4000))
+ if(seat->second.seatInfo->m_flags && !(seat->second.seatInfo->m_flags & 0x400))
unit->addUnitState(UNIT_STAT_ONVEHICLE);
//SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);