aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorsilinoron <none@none>2010-12-18 13:06:38 -0800
committersilinoron <none@none>2010-12-18 13:06:38 -0800
commit41a9d3216ca2f3f32c133efa5697b215af668590 (patch)
treeaec6b688d5874dc770010196b7fab21ff093a2c4 /src/server/game/Entities
parent8ce0abbbc896f0b891238c53fd696ac61d7ef73f (diff)
Core/Auras: Fix Cold Blood handling on misses and parries.
Patch by dr.tenma. Fixes issue #2291 --HG-- branch : trunk
Diffstat (limited to 'src/server/game/Entities')
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp6
-rwxr-xr-xsrc/server/game/Entities/Player/Player.h2
2 files changed, 6 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index f2419957699..10b0e148925 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -19226,7 +19226,7 @@ void Player::AddSpellMod(SpellModifier* mod, bool apply)
}
// Restore spellmods in case of failed cast
-void Player::RestoreSpellMods(Spell * spell)
+void Player::RestoreSpellMods(Spell *spell, uint32 ownerAuraId)
{
if (!spell || spell->m_appliedMods.empty())
return;
@@ -19241,6 +19241,10 @@ void Player::RestoreSpellMods(Spell * spell)
if (!mod->ownerAura || !mod->ownerAura->GetCharges())
continue;
+ // Restore only specific owner aura mods
+ if (ownerAuraId && (ownerAuraId != mod->ownerAura->GetSpellProto()->Id))
+ continue;
+
// check if mod affected this spell
Spell::UsedSpellMods::iterator iterMod = spell->m_appliedMods.find(mod->ownerAura);
if (iterMod == spell->m_appliedMods.end())
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index babc2f87f06..5cec55fcfe5 100755
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1605,7 +1605,7 @@ class Player : public Unit, public GridObject<Player>
bool IsAffectedBySpellmod(SpellEntry const *spellInfo, SpellModifier *mod, Spell * spell = NULL);
template <class T> T ApplySpellMod(uint32 spellId, SpellModOp op, T &basevalue, Spell * spell = NULL);
void RemoveSpellMods(Spell * spell);
- void RestoreSpellMods(Spell * spell);
+ void RestoreSpellMods(Spell *spell, uint32 ownerAuraId=0);
void DropModCharge(SpellModifier * mod, Spell * spell);
void SetSpellModTakingSpell(Spell* spell, bool apply);