From 3944dc25b97013c9c2205f3d28f412e8edd85f97 Mon Sep 17 00:00:00 2001 From: ariel- Date: Tue, 11 Oct 2016 01:43:14 -0300 Subject: [PATCH] Core/Creature: Call SetSpawnHealth after JustReachedHome in HomeMovementGenerator Fixes issues with quests that rely on this behaviour (eg Free your Mind) Also updated SetSpawnHealth so it doesn't do anything in case spawn is manual (SetHealth(GetHealth()) does modify things depending on deathstate) --- .../game/Entities/Creature/Creature.cpp | 20 +++++++++---------- .../HomeMovementGenerator.cpp | 2 +- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 33c9187f8e0..66295b4d86b 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1470,23 +1470,21 @@ void Creature::LoadEquipment(int8 id, bool force /*= true*/) void Creature::SetSpawnHealth() { + if (!m_creatureData) + return; + uint32 curhealth; if (!m_regenHealth) { - if (m_creatureData) + curhealth = m_creatureData->curhealth; + if (curhealth) { - curhealth = m_creatureData->curhealth; - if (curhealth) - { - curhealth = uint32(curhealth*_GetHealthMod(GetCreatureTemplate()->rank)); - if (curhealth < 1) - curhealth = 1; - } - SetPower(POWER_MANA, m_creatureData->curmana); + curhealth = uint32(curhealth*_GetHealthMod(GetCreatureTemplate()->rank)); + if (curhealth < 1) + curhealth = 1; } - else - curhealth = GetHealth(); + SetPower(POWER_MANA, m_creatureData->curmana); } else { diff --git a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp index bae8e541ddc..61916504758 100644 --- a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp @@ -34,8 +34,8 @@ void HomeMovementGenerator::DoFinalize(Creature* owner) owner->ClearUnitState(UNIT_STATE_EVADE); owner->SetWalk(true); owner->LoadCreaturesAddon(); - owner->SetSpawnHealth(); owner->AI()->JustReachedHome(); + owner->SetSpawnHealth(); } }