aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells
diff options
context:
space:
mode:
authorQAston <none@none>2010-08-29 03:38:21 +0200
committerQAston <none@none>2010-08-29 03:38:21 +0200
commit2d877bbbfd0babec91011d472870e230a314d512 (patch)
treefc76003bdef66fed41f9d63cefc9de03a05f40d4 /src/server/game/Spells
parentf67441b863ae449c2e9e7fab767531e7637d6753 (diff)
*Allow damage shield hits to miss.
*Send overkill on damage shield hit. *Correct data order for execute log of power take effects. --HG-- branch : trunk
Diffstat (limited to 'src/server/game/Spells')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp8
-rw-r--r--src/server/game/Spells/Spell.cpp4
-rw-r--r--src/server/game/Spells/SpellEffects.cpp1
3 files changed, 5 insertions, 8 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 8adc7f83744..2fc836c76ca 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -1238,12 +1238,8 @@ bool AuraEffect::IsPeriodicTickCrit(Unit * target, Unit const * caster) const
void AuraEffect::SendTickImmune(Unit * target, Unit *caster) const
{
- WorldPacket data(SMSG_SPELLORDAMAGE_IMMUNE, 8+8+4+1);
- data << uint64(caster ? caster->GetGUID() : target->GetGUID());
- data << uint64(target->GetGUID());
- data << uint32(m_spellProto->Id);
- data << uint8(1);
- target->SendMessageToSet(&data,true);
+ if (caster)
+ caster->SendSpellDamageImmune(target, m_spellProto->Id);
}
void AuraEffect::PeriodicTick(Unit * target, Unit * caster) const
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 18006c55ab2..457bc1e019b 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -4153,8 +4153,8 @@ void Spell::ExecuteLogEffectTakeTargetPower(uint8 effIndex, Unit * target, uint3
{
InitEffectExecuteData(effIndex);
m_effectExecuteData[effIndex]->append(target->GetPackGUID());
- *m_effectExecuteData[effIndex] << uint32(powerType);
*m_effectExecuteData[effIndex] << uint32(powerTaken);
+ *m_effectExecuteData[effIndex] << uint32(powerType);
*m_effectExecuteData[effIndex] << float(gainMultiplier);
}
@@ -4176,7 +4176,7 @@ void Spell::ExecuteLogEffectDurabilityDamage(uint8 effIndex, Unit * victim, uint
{
InitEffectExecuteData(effIndex);
m_effectExecuteData[effIndex]->append(victim->GetPackGUID());
- *m_effectExecuteData[effIndex] << uint32(itemslot);
+ *m_effectExecuteData[effIndex] << uint32(m_spellInfo->Id);
*m_effectExecuteData[effIndex] << uint32(damage);
}
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 0100fd7a6f9..c022309c85a 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -2585,6 +2585,7 @@ void Spell::EffectHealthLeech(SpellEffIndex effIndex)
float healMultiplier = SpellMgr::CalculateSpellEffectValueMultiplier(m_spellInfo, effIndex, m_originalCaster, this);
int32 newDamage = int32(damage * healMultiplier);
+ newDamage = std::min(int32(unitTarget->GetHealth()), newDamage);
m_damage += newDamage;
if (m_caster->isAlive())