From 18d1f0c964a17cc79732eb20958b9c594ebd3628 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sun, 1 Sep 2019 19:05:29 +0200 Subject: [PATCH] Core/Creature: Fix another pet assert Fix an assert triggered when dismissing a Warlock pet while it's casting a spell (cherry picked from commit 4074cb0f01d106c69546c3cb944d6fcf92ade456) --- src/server/game/Entities/Creature/Creature.cpp | 6 +++++- src/server/game/Handlers/PetHandler.cpp | 3 +-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 1db79a9ba30..e3babcdd484 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -3300,7 +3300,11 @@ void Creature::ReleaseSpellFocus(Spell const* focusSpell, bool withDelay) void Creature::ReacquireSpellFocusTarget() { - ASSERT(HasSpellFocus()); + if (!HasSpellFocus()) + { + TC_LOG_ERROR("entities.unit", "Creature::ReacquireSpellFocusTarget() being called with HasSpellFocus() returning false. %s", GetDebugInfo().c_str()); + return; + } SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Target), _spellFocusInfo.Target); diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 7556d124765..1cb1daa5915 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -253,8 +253,7 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spe if (((Pet*)pet)->getPetType() == HUNTER_PET) GetPlayer()->RemovePet((Pet*)pet, PET_SAVE_AS_DELETED); else - // dismissing a summoned pet is like killing them (this prevents returning a soulshard...) - pet->setDeathState(CORPSE); + GetPlayer()->RemovePet((Pet*)pet, PET_SAVE_NOT_IN_SLOT); } else if (pet->HasUnitTypeMask(UNIT_MASK_MINION)) {