aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQAston@qaston-pc <none@none>2009-03-01 14:38:26 +0100
committerQAston@qaston-pc <none@none>2009-03-01 14:38:26 +0100
commitef500cc204c29f85125486f45f0ca82e4c3ac0ed (patch)
tree2c66ea546dc2760e6e6205c70f2abd9d4b392c0c
parent9e9708f5b7885e30580e3685f7c5971dd1d0b571 (diff)
*Fix mana burn.
*Fix glyph of dispel Magic (by Lightguard). *Add missing sql from latest rev. --HG-- branch : trunk
-rw-r--r--sql/updates/1618_world.sql6
-rw-r--r--src/game/SpellEffects.cpp17
-rw-r--r--src/game/Unit.cpp10
3 files changed, 32 insertions, 1 deletions
diff --git a/sql/updates/1618_world.sql b/sql/updates/1618_world.sql
new file mode 100644
index 00000000000..0f08c98b6ae
--- /dev/null
+++ b/sql/updates/1618_world.sql
@@ -0,0 +1,6 @@
+-- Glyph of power word: shield
+INSERT INTO `spell_proc_event` VALUES (55672, 0x00, 6, 0x00000001, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0);
+
+-- Bloodsurge
+DELETE FROM `spell_proc_event` WHERE `entry` IN (46915);
+INSERT INTO `spell_proc_event` VALUES (46915, 0x00, 4, 0x00000040, 0x00000404, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0);
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index d0327ea522c..948b3cb7754 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -2436,10 +2436,25 @@ void Spell::EffectPowerBurn(uint32 i)
if(damage < 0)
return;
+ Unit* caster = m_originalCaster ? m_originalCaster : m_caster;
+
int32 curPower = int32(unitTarget->GetPower(powertype));
- // resilience reduce mana draining effect at spell crit damage reduction (added in 2.4)
+
uint32 power = damage;
+ // Priest's Mana Burn, burn max amount of 26% of caster's mana
+ if ( m_spellInfo->SpellFamilyName==SPELLFAMILY_PRIEST && m_spellInfo->SpellFamilyFlags[0] & 0x10)
+ {
+ // Burn percentage of target's mana
+ power = damage * curPower / 100;
+ if (caster)
+ {
+ casterPower = caster->GetPower(powertype)*0.26f
+ if (casterPower<curPower)
+ curPower = casterPower;
+ }
+ }
+ // resilience reduce mana draining effect at spell crit damage reduction (added in 2.4)
if ( powertype == POWER_MANA && unitTarget->GetTypeId() == TYPEID_PLAYER )
power -= ((Player*)unitTarget)->GetSpellCritDamageReduction(power);
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index a6287c07a9c..625cc148baf 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -5463,6 +5463,16 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
triggered_spell_id = 56160;
break;
}
+ // Glyph of Dispel Magic
+ case 55677:
+ {
+ if(!target->IsFriendlyTo(this))
+ return false;
+
+ basepoints0 = int32(target->GetMaxHealth() * triggerAmount / 100);
+ triggered_spell_id = 56131;
+ break;
+ }
// Oracle Healing Bonus ("Garments of the Oracle" set)
case 26169:
{