diff options
| author | jackpoz <giacomopoz@gmail.com> | 2016-06-21 22:19:31 +0200 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-02-01 22:53:21 +0100 |
| commit | 2355facafebc3e32ff571cc09891aea3bebf2126 (patch) | |
| tree | df89d2d315ded0eef30020357e6a04315533b43a /src | |
| parent | 40054ba475407c56246227d55e21573c22978a2a (diff) | |
Core/Creature: Fix assertion triggered
Fix assertion triggered when a Creature was summoned at an invalid position with Auras loaded as Creature addons.
Fix #17415
(cherry picked from commit 75319e4a6887f23562ac141e4494427793962b00)
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index c67780b8575..170ab092520 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -869,15 +869,17 @@ bool Creature::Create(ObjectGuid::LowType guidlow, Map* map, uint32 /*phaseMask* //! returning correct zone id for selecting OutdoorPvP/Battlefield script Relocate(x, y, z, ang); - if (!CreateFromProto(guidlow, entry, data, vehId)) - return false; - + // Check if the position is valid before calling CreateFromProto(), otherwise we might add Auras to Creatures at + // invalid position, triggering a crash about Auras not removed in the destructor if (!IsPositionValid()) { TC_LOG_ERROR("entities.unit", "Creature::Create(): given coordinates for creature (guidlow " UI64FMTD ", entry %d) are not valid (X: %f, Y: %f, Z: %f, O: %f)", guidlow, entry, x, y, z, ang); return false; } + if (!CreateFromProto(guidlow, entry, data, vehId)) + return false; + switch (GetCreatureTemplate()->rank) { case CREATURE_ELITE_RARE: |
