aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Spells/SpellEffects.cpp2
-rw-r--r--src/server/game/Spells/SpellMgr.h42
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp30
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;
}
}