aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/FULL/world_spell_full.sql5
-rw-r--r--sql/updates/5416_world_spell_dbc.sql3
-rw-r--r--sql/world.sql2
-rw-r--r--src/game/SpellAuras.cpp47
4 files changed, 53 insertions, 4 deletions
diff --git a/sql/FULL/world_spell_full.sql b/sql/FULL/world_spell_full.sql
index fbcf3db0020..54ec11a4c4c 100644
--- a/sql/FULL/world_spell_full.sql
+++ b/sql/FULL/world_spell_full.sql
@@ -1850,8 +1850,9 @@ INSERT INTO `spell_bonus_data` (`entry`, `direct_bonus`, `dot_bonus`, `ap_bonus`
-- --------
TRUNCATE TABLE `spell_dbc`;
-INSERT INTO `spell_dbc` (`Id`, `DurationIndex`, `Effect1`, `EffectImplicitTargetA1`, `EffectApplyAuraName1`, `Comment`) VALUES
-(62388, 21, 6, 1, 4, 'Demonic Circle: Teleport(48020) - casterAuraSpell');
+INSERT INTO `spell_dbc` (`Id`, `Dispel`, `Mechanic`, `AttributesEx3`, `DurationIndex`, `RangeIndex`, `Effect1`, `EffectImplicitTargetA1`, `EffectApplyAuraName1`, `EffectMiscValue1`, `SpellFamilyName`, `SchoolMask`, `Comment`) VALUES
+(62388, 0, 0, 0x00000000, 21, 1, 6, 1, 4, 0, 0, 0, 'Demonic Circle: Teleport(48020) - casterAuraSpell'),
+(65142, 3, 22, 0x00000080, 21, 13, 6, 6, 255, 22, 15, 8, 'Crypt Fever - SPELL_AURA_LINKED');
-- --------
-- SPELL ELIXIR
diff --git a/sql/updates/5416_world_spell_dbc.sql b/sql/updates/5416_world_spell_dbc.sql
new file mode 100644
index 00000000000..0669b9096b3
--- /dev/null
+++ b/sql/updates/5416_world_spell_dbc.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_dbc` WHERE `Id` IN(65142);
+INSERT INTO `spell_dbc` (`Id`, `Dispel`, `Mechanic`, `AttributesEx3`, `DurationIndex`, `RangeIndex`, `Effect1`, `EffectImplicitTargetA1`, `EffectApplyAuraName1`, `EffectMiscValue1`, `SpellFamilyName`, `SchoolMask`, `Comment`) VALUES
+(65142, 3, 22, 0x00000080, 21, 13, 6, 6, 255, 22, 15, 8, 'Crypt Fever - SPELL_AURA_LINKED'); \ No newline at end of file
diff --git a/sql/world.sql b/sql/world.sql
index 1e9831d856c..e96ffb4388e 100644
--- a/sql/world.sql
+++ b/sql/world.sql
@@ -2840,7 +2840,7 @@ CREATE TABLE `spell_dbc` (
`AreaGroupId` INT NOT NULL DEFAULT 0,
`SchoolMask` INT UNSIGNED NOT NULL DEFAULT 0,
`Comment` TEXT NOT NULL,
- PRIMARY KEY (`id`)
+ PRIMARY KEY (`Id`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Custom spell.dbc entries';
--
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 6952b9d7859..19d27668ca0 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -1006,14 +1006,59 @@ void Aura::HandleAuraSpecificMods(bool apply)
}
}
}
- // Sprint (skip non player casted spells by category)
else if (GetSpellProto()->SpellFamilyName == SPELLFAMILY_ROGUE)
{
+ // Sprint (skip non player casted spells by category)
if(GetSpellProto()->SpellFamilyFlags[0] & 0x40 && GetSpellProto()->Category == 44)
// in official maybe there is only one icon?
if(m_target->HasAura(58039)) // Glyph of Blurred Speed
m_target->CastSpell(m_target, 61922, true); // Sprint (waterwalk)
}
+ else if (GetSpellProto()->SpellFamilyName == SPELLFAMILY_DEATHKNIGHT)
+ {
+ // Frost Fever and Blood Plague
+ if(GetSpellProto()->SpellFamilyFlags[2] & 0x2)
+ {
+ // Can't proc on self
+ if (GetCasterGUID() == m_target->GetGUID())
+ return;
+ Unit * caster = GetCaster();
+ if (!caster)
+ return;
+
+ AuraEffect * aurEff = NULL;
+ // Ebon Plaguebringer / Crypt Fever
+ Unit::AuraEffectList const& TalentAuras = caster->GetAurasByType(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS);
+ for(Unit::AuraEffectList::const_iterator itr = TalentAuras.begin(); itr != TalentAuras.end(); ++itr)
+ {
+ if ((*itr)->GetMiscValue() == 7282)
+ {
+ aurEff = *itr;
+ // Ebon Plaguebringer - end search if found
+ if ((*itr)->GetSpellProto()->SpellIconID == 1766)
+ break;
+ }
+ }
+ if (aurEff)
+ {
+ uint32 spellId = 0;
+ switch (aurEff->GetId())
+ {
+ // Ebon Plague
+ case 51161: spellId = 51735; break;
+ case 51160: spellId = 51734; break;
+ case 51099: spellId = 51726; break;
+ // Crypt Fever
+ case 49632: spellId = 50510; break;
+ case 49631: spellId = 50509; break;
+ case 49032: spellId = 50508; break;
+ default:
+ sLog.outError("Unknown rank of Crypt Fever/Ebon Plague %d", aurEff->GetId());
+ }
+ caster->CastSpell(m_target, spellId, true, 0, GetPartAura(0));
+ }
+ }
+ }
else
{
switch(GetId())