aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQAston <none@none>2009-05-18 21:54:11 +0200
committerQAston <none@none>2009-05-18 21:54:11 +0200
commit7ed391aa92f907e4b3ce2503628fde35f6a91525 (patch)
treed2a5772b2d85876f338fee41f19dcbe065875986
parent6c7f2d2b242f950ab0e80a9da546806e672d37c1 (diff)
*Fix beacon of light
*Apply healing aura mods to leech auras. --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 19d4b43bb38..097073cd96a 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -5944,12 +5944,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);
}