aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/3393_world_spell_proc_event.sql1
-rw-r--r--sql/world_spell_full.sql18
-rw-r--r--src/game/SpellAuras.cpp4
-rw-r--r--src/game/Unit.cpp23
4 files changed, 36 insertions, 10 deletions
diff --git a/sql/updates/3393_world_spell_proc_event.sql b/sql/updates/3393_world_spell_proc_event.sql
new file mode 100644
index 00000000000..b6781bfa1c5
--- /dev/null
+++ b/sql/updates/3393_world_spell_proc_event.sql
@@ -0,0 +1 @@
+DELETE FROM `spell_proc_event` WHERE `entry` IN (53651); \ No newline at end of file
diff --git a/sql/world_spell_full.sql b/sql/world_spell_full.sql
index 94b3be8c855..fd5746770a2 100644
--- a/sql/world_spell_full.sql
+++ b/sql/world_spell_full.sql
@@ -827,7 +827,7 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell
(27179, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0),
(27419, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0),
(27498, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0),
-(27521, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0),
+(27521, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 15),
(27656, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0),
(27774, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0),
(27787, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0),
@@ -1340,7 +1340,6 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell
(53569, 0, 10, 2097152, 65536, 0, 0, 2, 0, 0, 0),
(53576, 0, 10, 2097152, 65536, 0, 0, 2, 0, 0, 0),
(53601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6),
-(53651, 0, 10, 3221258240, 0, 0, 0, 0, 0, 0, 0),
(53671, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0),
(53672, 0, 10, 2097152, 65536, 0, 0, 2, 0, 0, 0),
(53673, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0),
@@ -1451,7 +1450,7 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell
(60575, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0),
(60617, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0),
(60710, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0),
-(60717, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0),
+(60717, 0, 7, 2, 0, 0, 0, 0, 0, 100, 0),
(60719, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0),
(60722, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0),
(60724, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0),
@@ -1483,7 +1482,18 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell
(9782, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0),
(9784, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0),
(9799, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0),
-(56372, 0, 3, 0, 128, 0, 16384, 0, 0, 0, 0);
+(56372, 0, 3, 0, 128, 0, 16384, 0, 0, 0, 0),
+(62147, 0, 15, 2, 0, 0, 0, 0, 0, 0, 0),
+(57907, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0),
+(55381, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 15),
+(62459, 0, 15, 4, 0, 0, 0, 0, 0, 0, 0),
+(60176, 0, 4, 32, 16, 0, 0, 0, 0, 0, 0),
+(60529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45),
+(51528, 0, 0, 0, 0, 0, 0, 0, 2.5, 0, 0),
+(51529, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0),
+(51530, 0, 0, 0, 0, 0, 0, 0, 7.5, 0, 0),
+(51531, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0),
+(51532, 0, 0, 0, 0, 0, 0, 0, 12.5, 0, 0);
-- --------
-- ENCHANT PROC
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 124fdd9543b..59059756fbc 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -5965,12 +5965,10 @@ void AuraEffect::PeriodicTick()
}
}
-
if(Player *modOwner = pCaster->GetSpellModOwner())
modOwner->ApplySpellMod(spellProto->Id, SPELLMOD_MULTIPLE_VALUE, multiplier);
- // Don't apply heal mods for this aura
- uint32 heal = uint32(new_damage * multiplier);//pCaster->SpellHealingBonus(pCaster, spellProto, uint32(new_damage * multiplier), DOT, stackAmount);
+ uint32 heal = uint32(pCaster->SpellHealingBonus(pCaster, spellProto, uint32(new_damage * multiplier), DOT, stackAmount));
int32 gain = pCaster->DealHeal(pCaster, heal, spellProto);
pCaster->getHostilRefManager().threatAssist(pCaster, gain * 0.5f, spellProto);
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 7cfb6a1d16c..d9364b1c1bd 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -9350,11 +9350,23 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint
int32 DoneAdvertisedBenefit = SpellBaseHealingBonus(GetSpellSchoolMask(spellProto));
int32 TakenAdvertisedBenefit = SpellBaseHealingBonusForVictim(GetSpellSchoolMask(spellProto), pVictim);
+ bool scripted = false;
+ for (uint8 i=0;i<3;++i)
+ {
+ switch (spellProto->EffectApplyAuraName[i])
+ {
+ // These auras do not use healing coeff
+ case SPELL_AURA_PERIODIC_LEECH:
+ case SPELL_AURA_PERIODIC_HEALTH_FUNNEL:
+ scripted = true;
+ break;
+ }
+ }
+
// Check for table values
- SpellBonusEntry const* bonus = spellmgr.GetSpellBonusData(spellProto->Id);
+ SpellBonusEntry const* bonus = scripted ? spellmgr.GetSpellBonusData(spellProto->Id) : NULL;
float coeff;
float factorMod = 1.0f;
- bool scripted = false;
if (bonus)
{
if (damagetype == DOT)
@@ -9384,6 +9396,11 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint
{
factorMod *= 0.45f;
}
+ // Already set to scripted? so not uses healing bonus coefficient
+ else if (scripted)
+ {
+ coeff = 0.0f;
+ }
}
// Default calculation
@@ -13732,7 +13749,7 @@ void Unit::AddAura(uint32 spellId, Unit* target)
if (!eff_mask)
return;
- Aura *Aur = new Aura(spellInfo, eff_mask, NULL, target, this);
+ Aura *Aur = new Aura(spellInfo, eff_mask, NULL, target, this, NULL, target);
target->AddAura(Aur);
}