diff options
Diffstat (limited to 'src/server/game/Spells')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 46 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellHistory.cpp | 5 |
3 files changed, 5 insertions, 48 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 9c0d6e9fa8e..32fd73e1073 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4831,7 +4831,7 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint return SPELL_FAILED_SPELL_IN_PROGRESS; // check if we are using a potion in combat for the 2nd+ time. Cooldown is added only after caster gets out of combat - if (m_caster->ToPlayer()->GetLastPotionId() && m_CastItem && (m_CastItem->IsPotion() || m_spellInfo->IsCooldownStartedOnEvent())) + if (!IsIgnoringCooldowns() && m_caster->ToPlayer()->GetLastPotionId() && m_CastItem && (m_CastItem->IsPotion() || m_spellInfo->IsCooldownStartedOnEvent())) return SPELL_FAILED_NOT_READY; } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 73100254c4e..e557501c095 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1814,52 +1814,6 @@ void Spell::EffectEnergize(SpellEffIndex effIndex) return; m_caster->EnergizeBySpell(unitTarget, m_spellInfo->Id, damage, power); - - // Mad Alchemist's Potion - if (m_spellInfo->Id == 45051) - { - // find elixirs on target - bool guardianFound = false; - bool battleFound = false; - Unit::AuraApplicationMap& Auras = unitTarget->GetAppliedAuras(); - for (Unit::AuraApplicationMap::iterator itr = Auras.begin(); itr != Auras.end(); ++itr) - { - uint32 spell_id = itr->second->GetBase()->GetId(); - if (!guardianFound) - if (sSpellMgr->IsSpellMemberOfSpellGroup(spell_id, SPELL_GROUP_ELIXIR_GUARDIAN)) - guardianFound = true; - if (!battleFound) - if (sSpellMgr->IsSpellMemberOfSpellGroup(spell_id, SPELL_GROUP_ELIXIR_BATTLE)) - battleFound = true; - if (battleFound && guardianFound) - break; - } - - // get all available elixirs by mask and spell level - std::set<uint32> avalibleElixirs; - if (!guardianFound) - sSpellMgr->GetSetOfSpellsInSpellGroup(SPELL_GROUP_ELIXIR_GUARDIAN, avalibleElixirs); - if (!battleFound) - sSpellMgr->GetSetOfSpellsInSpellGroup(SPELL_GROUP_ELIXIR_BATTLE, avalibleElixirs); - for (std::set<uint32>::iterator itr = avalibleElixirs.begin(); itr != avalibleElixirs.end();) - { - SpellInfo const* spellInfo = sSpellMgr->AssertSpellInfo(*itr); - if (spellInfo->SpellLevel < m_spellInfo->SpellLevel || spellInfo->SpellLevel > unitTarget->getLevel()) - avalibleElixirs.erase(itr++); - else if (sSpellMgr->IsSpellMemberOfSpellGroup(*itr, SPELL_GROUP_ELIXIR_SHATTRATH)) - avalibleElixirs.erase(itr++); - else if (sSpellMgr->IsSpellMemberOfSpellGroup(*itr, SPELL_GROUP_ELIXIR_UNSTABLE)) - avalibleElixirs.erase(itr++); - else - ++itr; - } - - if (!avalibleElixirs.empty()) - { - // cast random elixir on target - m_caster->CastSpell(unitTarget, Trinity::Containers::SelectRandomContainerElement(avalibleElixirs), true, m_CastItem); - } - } } void Spell::EffectEnergizePct(SpellEffIndex effIndex) diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp index 00edb2672b2..de7414a66d7 100644 --- a/src/server/game/Spells/SpellHistory.cpp +++ b/src/server/game/Spells/SpellHistory.cpp @@ -162,6 +162,9 @@ void SpellHistory::HandleCooldowns(SpellInfo const* spellInfo, Item const* item, void SpellHistory::HandleCooldowns(SpellInfo const* spellInfo, uint32 itemID, Spell* spell /*= nullptr*/) { + if (spell && spell->IsIgnoringCooldowns()) + return; + if (Player* player = _owner->ToPlayer()) { // potions start cooldown until exiting combat @@ -175,7 +178,7 @@ void SpellHistory::HandleCooldowns(SpellInfo const* spellInfo, uint32 itemID, Sp } } - if (spellInfo->IsCooldownStartedOnEvent() || spellInfo->IsPassive() || (spell && spell->IsIgnoringCooldowns())) + if (spellInfo->IsCooldownStartedOnEvent() || spellInfo->IsPassive()) return; StartCooldown(spellInfo, itemID, spell); |
