From 0cabb8e7e1cbca1abdaf570cb15a2f977b5473a4 Mon Sep 17 00:00:00 2001 From: Yehonal Date: Thu, 20 Feb 2020 07:55:04 +0100 Subject: [PATCH] refactor(Core/Spells): Improved logic and DX Spell::EffectSummonPet (#2634) --- src/server/game/Spells/SpellEffects.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 8cbc15312..f6e1180e2 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3130,25 +3130,24 @@ void Spell::EffectSummonPet(SpellEffIndex effIndex) { if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT) return; - - Player* owner = NULL; - if (m_originalCaster) - { - owner = m_originalCaster->ToPlayer(); - if (!owner && m_originalCaster->ToCreature()->IsTotem()) - owner = m_originalCaster->GetCharmerOrOwnerPlayerOrPlayerItself(); - } + + if (!m_originalCaster) + return; uint32 petentry = m_spellInfo->Effects[effIndex].MiscValue; int32 duration = m_spellInfo->GetDuration(); - if (m_originalCaster) - if(Player* modOwner = m_originalCaster->GetSpellModOwner()) - modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_DURATION, duration); + + if(Player* modOwner = m_originalCaster->GetSpellModOwner()) + modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_DURATION, duration); + + Player* owner = m_originalCaster->ToPlayer(); + if (!owner && m_originalCaster->ToCreature()->IsTotem()) + owner = m_originalCaster->GetCharmerOrOwnerPlayerOrPlayerItself(); if (!owner) { SummonPropertiesEntry const* properties = sSummonPropertiesStore.LookupEntry(67); - if (properties && m_originalCaster) + if (properties) { // Xinef: unsummon old guardian if (Guardian* oldPet = m_originalCaster->GetGuardianPet())