aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormegamage <none@none>2009-05-18 15:17:53 -0500
committermegamage <none@none>2009-05-18 15:17:53 -0500
commit3f98363aab842b2731de4e95a24bca28bd202134 (patch)
treeac28d8d8ffe0480e0218e2499ddd9880f917f2eb
parentdf866dd37ba8d9b8dd98f972c2e37ae871c68deb (diff)
parentd0ef4b8b4ae8cb1a7003ceb2a82c11845e14bfec (diff)
*Merge.
--HG-- branch : trunk
-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);
}