diff options
| -rw-r--r-- | sql/FULL/world_spell_full.sql | 5 | ||||
| -rw-r--r-- | sql/updates/5416_world_spell_dbc.sql | 3 | ||||
| -rw-r--r-- | sql/world.sql | 2 | ||||
| -rw-r--r-- | src/game/SpellAuras.cpp | 47 |
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()) |
