diff options
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellMgr.h | 42 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_rogue.cpp | 30 |
3 files changed, 33 insertions, 41 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index b8e0c872f8e..a0c83a441d3 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3975,7 +3975,7 @@ void Spell::EffectSanctuary(SpellEffIndex /*effIndex*/) // Vanish allows to remove all threat and cast regular stealth so other spells can be used if (m_caster->GetTypeId() == TYPEID_PLAYER && m_spellInfo->SpellFamilyName == SPELLFAMILY_ROGUE - && (m_spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG_ROGUE_VANISH)) + && (m_spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG0_ROGUE_VANISH)) { m_caster->ToPlayer()->RemoveAurasByType(SPELL_AURA_MOD_ROOT); // Overkill diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index 160ae74343c..2afd2a4c70c 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -56,42 +56,40 @@ enum SpellFamilyFlag // SPELLFAMILYFLAG2 = SpellFamilyFlags[2] // Rogue - SPELLFAMILYFLAG_ROGUE_VANISH = 0x00000800, - SPELLFAMILYFLAG_ROGUE_VAN_EVAS_SPRINT = 0x00000860, // Vanish, Evasion, Sprint - SPELLFAMILYFLAG1_ROGUE_COLDB_SHADOWSTEP = 0x00000240, // Cold Blood, Shadowstep - SPELLFAMILYFLAG_ROGUE_KICK = 0x00000010, // Kick - SPELLFAMILYFLAG1_ROGUE_DISMANTLE = 0x00100000, // Dismantle - SPELLFAMILYFLAG_ROGUE_BLADE_FLURRY = 0x40000000, // Blade Flurry - SPELLFAMILYFLAG1_ROGUE_BLADE_FLURRY = 0x00000800, // Blade Flurry + SPELLFAMILYFLAG0_ROGUE_VANISH = 0x00000800, + SPELLFAMILYFLAG0_ROGUE_VAN_EVAS_SPRINT = 0x00000860, // Vanish, Evasion, Sprint + SPELLFAMILYFLAG1_ROGUE_COLDB_SHADOWSTEP = 0x00000240, // Cold Blood, Shadowstep + SPELLFAMILYFLAG0_ROGUE_KICK = 0x00000010, // Kick + SPELLFAMILYFLAG1_ROGUE_DISMANTLE_SMOKE_BOMB = 0x80100000, // Dismantle, Smoke Bomb // Warrior - SPELLFAMILYFLAG_WARRIOR_CHARGE = 0x00000001, - SPELLFAMILYFLAG_WARRIOR_SLAM = 0x00200000, - SPELLFAMILYFLAG_WARRIOR_EXECUTE = 0x20000000, - SPELLFAMILYFLAG_WARRIOR_CONCUSSION_BLOW = 0x04000000, + SPELLFAMILYFLAG_WARRIOR_CHARGE = 0x00000001, + SPELLFAMILYFLAG_WARRIOR_SLAM = 0x00200000, + SPELLFAMILYFLAG_WARRIOR_EXECUTE = 0x20000000, + SPELLFAMILYFLAG_WARRIOR_CONCUSSION_BLOW = 0x04000000, // Warlock - SPELLFAMILYFLAG_WARLOCK_LIFETAP = 0x00040000, + SPELLFAMILYFLAG_WARLOCK_LIFETAP = 0x00040000, // Druid - SPELLFAMILYFLAG2_DRUID_STARFALL = 0x00000100, + SPELLFAMILYFLAG2_DRUID_STARFALL = 0x00000100, // Paladin - SPELLFAMILYFLAG1_PALADIN_DIVINESTORM = 0x00020000, + SPELLFAMILYFLAG1_PALADIN_DIVINESTORM = 0x00020000, // Shaman - SPELLFAMILYFLAG_SHAMAN_FROST_SHOCK = 0x80000000, - SPELLFAMILYFLAG_SHAMAN_HEALING_STREAM = 0x00002000, - SPELLFAMILYFLAG_SHAMAN_MANA_SPRING = 0x00004000, - SPELLFAMILYFLAG2_SHAMAN_LAVA_LASH = 0x00000004, - SPELLFAMILYFLAG_SHAMAN_FIRE_NOVA = 0x28000000, + SPELLFAMILYFLAG_SHAMAN_FROST_SHOCK = 0x80000000, + SPELLFAMILYFLAG_SHAMAN_HEALING_STREAM = 0x00002000, + SPELLFAMILYFLAG_SHAMAN_MANA_SPRING = 0x00004000, + SPELLFAMILYFLAG2_SHAMAN_LAVA_LASH = 0x00000004, + SPELLFAMILYFLAG_SHAMAN_FIRE_NOVA = 0x28000000, // Deathknight - SPELLFAMILYFLAG_DK_DEATH_STRIKE = 0x00000010, - SPELLFAMILYFLAG_DK_DEATH_COIL = 0x00002000, + SPELLFAMILYFLAG_DK_DEATH_STRIKE = 0x00000010, + SPELLFAMILYFLAG_DK_DEATH_COIL = 0x00002000, /// @todo Figure out a more accurate name for the following familyflag(s) - SPELLFAMILYFLAG_SHAMAN_TOTEM_EFFECTS = 0x04000000 // Seems to be linked to most totems and some totem effects + SPELLFAMILYFLAG_SHAMAN_TOTEM_EFFECTS = 0x04000000 // Seems to be linked to most totems and some totem effects }; diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index fd29ab8b1e3..d4e627b7cc1 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -362,31 +362,25 @@ class spell_rog_preparation : public SpellScriptLoader Player* caster = GetCaster()->ToPlayer(); // immediately finishes the cooldown on certain Rogue abilities - const SpellCooldowns& cm = caster->GetSpellCooldownMap(); + SpellCooldowns const& cm = caster->GetSpellCooldownMap(); for (SpellCooldowns::const_iterator itr = cm.begin(); itr != cm.end();) { SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(itr->first); - - if (spellInfo->SpellFamilyName == SPELLFAMILY_ROGUE) - { - if (spellInfo->SpellFamilyFlags[1] & SPELLFAMILYFLAG1_ROGUE_COLDB_SHADOWSTEP || // Cold Blood, Shadowstep - spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG_ROGUE_VAN_EVAS_SPRINT) // Vanish, Evasion, Sprint - caster->RemoveSpellCooldown((itr++)->first, true); - else if (caster->HasAura(SPELL_ROGUE_GLYPH_OF_PREPARATION)) + if (!spellInfo) + continue; + + if (spellInfo->SpellFamilyName == SPELLFAMILY_ROGUE && + (spellInfo->SpellFamilyFlags[1] & SPELLFAMILYFLAG1_ROGUE_COLDB_SHADOWSTEP || // Cold Blood, Shadowstep + spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG0_ROGUE_VAN_EVAS_SPRINT) || // Vanish, Evasion, Sprint + // Glyph of Preparation + caster->HasAura(SPELL_ROGUE_GLYPH_OF_PREPARATION) && + (spellInfo->SpellFamilyFlags[1] & SPELLFAMILYFLAG1_ROGUE_DISMANTLE_SMOKE_BOMB || // Dismantle, Smoke Bomb + spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG0_ROGUE_KICK)) // Kick { - if (spellInfo->SpellFamilyFlags[1] & SPELLFAMILYFLAG1_ROGUE_DISMANTLE || // Dismantle - spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG_ROGUE_KICK || // Kick - (spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG_ROGUE_BLADE_FLURRY && // Blade Flurry - spellInfo->SpellFamilyFlags[1] & SPELLFAMILYFLAG1_ROGUE_BLADE_FLURRY)) - caster->RemoveSpellCooldown((itr++)->first, true); - else - ++itr; + caster->RemoveSpellCooldown((itr++)->first, true); } else ++itr; - } - else - ++itr; } } |
