diff options
author | megamage <none@none> | 2009-03-21 18:05:43 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-03-21 18:05:43 -0600 |
commit | ee332629b6af6b12079497f5d635e15fedee87b2 (patch) | |
tree | 15a094036518df37c05105643a6203a63997a395 | |
parent | f8143543968706f85f9886021ca1e258fba4df24 (diff) |
*Do not allow toggle unautocastable spells for pet.
--HG--
branch : trunk
-rw-r--r-- | src/game/PetHandler.cpp | 2 | ||||
-rw-r--r-- | src/game/SpellMgr.cpp | 12 | ||||
-rw-r--r-- | src/game/SpellMgr.h | 1 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/game/PetHandler.cpp b/src/game/PetHandler.cpp index 088f0ff2c58..ae12bce690b 100644 --- a/src/game/PetHandler.cpp +++ b/src/game/PetHandler.cpp @@ -560,7 +560,7 @@ void WorldSession::HandlePetSpellAutocastOpcode( WorldPacket& recvPacket ) } // do not add not learned spells/ passive spells - if(!pet->HasSpell(spellid) || IsPassiveSpell(spellid)) + if(!pet->HasSpell(spellid) || IsAutocastableSpell(spellid)) return; CharmInfo *charmInfo = pet->GetCharmInfo(); diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 8b3f8345661..be236dbc83b 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -263,6 +263,18 @@ bool IsPassiveSpell(uint32 spellId) return (spellInfo->Attributes & SPELL_ATTR_PASSIVE) != 0; } +bool IsAutocastableSpell(uint32 spellId) +{ + SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId); + if(!spellInfo) + return false; + if(spellInfo->Attributes & SPELL_ATTR_PASSIVE) + return false; + if(spellInfo->AttributesEx & SPELL_ATTR_EX_UNAUTOCASTABLE_BY_PET) + return false; + return true; +} + /*bool IsNoStackAuraDueToAura(uint32 spellId_1, uint32 effIndex_1, uint32 spellId_2, uint32 effIndex_2) { SpellEntry const *spellInfo_1 = sSpellStore.LookupEntry(spellId_1); diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index eda2acd4d20..e55ff3c89d2 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -202,6 +202,7 @@ int32 CompareAuraRanks(uint32 spellId_1, uint32 effIndex_1, uint32 spellId_2, ui bool IsSingleFromSpellSpecificPerCaster(uint32 spellSpec1, uint32 spellSpec2); bool IsSingleFromSpellSpecificPerTarget(uint32 spellSpec1, uint32 spellSpec2); bool IsPassiveSpell(uint32 spellId); +bool IsAutocastableSpell(uint32 spellId); inline bool IsPassiveSpellStackableWithRanks(SpellEntry const* spellProto) { |