Код:
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index d1961ee..a3ec6ff 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -3037,6 +3037,12 @@ void Spell::cast(bool skipCheck)
// Lock and Load
else if (m_spellInfo->Id == 56453)
AddPrecastSpell(67544); // Lock and Load Marker
+ // Aspect of the Viper
+ else if (m_spellInfo->Id == 34074)
+ {
+ if (m_caster->HasAura(60144)) // Viper Attack Speed
+ m_caster->CastSpell(m_caster, 61609, true);// Vicious Viper
+ }
break;
}
case SPELLFAMILY_PALADIN:
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index a854f80..4045b2a 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -9081,6 +9081,19 @@ void SpellAuraHolder::HandleSpellSpecificBoosts(bool apply)
{
switch (GetId())
{
+ case 34074: // Aspect of the Viper
+ {
+ if (!apply)
+ {
+ if (m_target->HasAura(60144)) // Viper Attack Speed
+ spellId1 = 61609; // Vicious Viper
+ else
+ return;
+ }
+ else
+ return;
+ break;
+ }
case 19574: // Bestial Wrath - immunity
case 34471: // The Beast Within - immunity
{
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
index 0aa46bb..5d8d1ac 100644
--- a/src/game/SpellMgr.cpp
+++ b/src/game/SpellMgr.cpp
@@ -2213,6 +2213,12 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
// Bestial Wrath
if (spellInfo_1->SpellIconID == 1680 && spellInfo_2->SpellIconID == 1680)
return false;
+
+ // Aspect of the Viper & Vicious Viper
+ if (spellInfo_1->SpellIconID == 2227 && spellInfo_2->SpellIconID == 2227 &&
+ ((spellInfo_1->SpellVisual[0] == 3399 && spellInfo_2->SpellVisual[0] == 0) ||
+ (spellInfo_2->SpellVisual[0] == 3399 && spellInfo_1->SpellVisual[0] == 0)))
+ return false;
}
// Wing Clip -> Improved Wing Clip (multi-family check)