diff options
| -rw-r--r-- | src/server/game/AI/PlayerAI/PlayerAI.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/server/game/AI/PlayerAI/PlayerAI.cpp b/src/server/game/AI/PlayerAI/PlayerAI.cpp index b34251b8970..68cb268ac6c 100644 --- a/src/server/game/AI/PlayerAI/PlayerAI.cpp +++ b/src/server/game/AI/PlayerAI/PlayerAI.cpp @@ -575,13 +575,22 @@ PlayerAI::TargetedSpell PlayerAI::VerifySpellCast(uint32 spellId, Unit* target) // Find highest spell rank that we know uint32 knownRank, nextRank; if (me->HasSpell(spellId)) + { // this will save us some lookups if the player has the highest rank (expected case) - nextRank = sSpellMgr->GetNextSpellInChain(knownRank = spellId); + knownRank = spellId; + nextRank = sSpellMgr->GetNextSpellInChain(spellId); + } else - knownRank = 0, nextRank = sSpellMgr->GetFirstSpellInChain(spellId); + { + knownRank = 0; + nextRank = sSpellMgr->GetFirstSpellInChain(spellId); + } while (nextRank && me->HasSpell(nextRank)) - nextRank = sSpellMgr->GetNextSpellInChain(knownRank = nextRank); + { + knownRank = nextRank; + nextRank = sSpellMgr->GetNextSpellInChain(knownRank); + } if (!knownRank) return {}; |
