diff options
author | megamage <none@none> | 2009-05-18 15:17:53 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-05-18 15:17:53 -0500 |
commit | 3f98363aab842b2731de4e95a24bca28bd202134 (patch) | |
tree | ac28d8d8ffe0480e0218e2499ddd9880f917f2eb | |
parent | df866dd37ba8d9b8dd98f972c2e37ae871c68deb (diff) | |
parent | d0ef4b8b4ae8cb1a7003ceb2a82c11845e14bfec (diff) |
*Merge.
--HG--
branch : trunk
-rw-r--r-- | sql/updates/3393_world_spell_proc_event.sql | 1 | ||||
-rw-r--r-- | sql/world_spell_full.sql | 18 | ||||
-rw-r--r-- | src/game/SpellAuras.cpp | 4 | ||||
-rw-r--r-- | src/game/Unit.cpp | 23 |
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); } |