From 37431cd7a6a2fb54fada2f637651c06ec32a44e3 Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Thu, 4 Jul 2024 21:34:14 +0200 Subject: [PATCH] fix(Core/Pets): Correct Pet size for bigger pets 2 (#18867) * scale displayInfo, cap scale to maxScale * prevent scaling with displayInfo if scale is already increasing the size --- src/server/game/Entities/Pet/Pet.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index de53dfa7b..0f77f0c97 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -2499,11 +2499,6 @@ float Pet::GetNativeObjectScale() const { uint8 ctFamily = GetCreatureTemplate()->family; - // hackfix: Edge case where DBC scale values for DEVILSAUR pets make them too small. - // Therefore we take data from spirit beast instead. - if (ctFamily && ctFamily == CREATURE_FAMILY_DEVILSAUR) - ctFamily = CREATURE_FAMILY_SPIRIT_BEAST; - CreatureFamilyEntry const* creatureFamily = sCreatureFamilyStore.LookupEntry(ctFamily); if (creatureFamily && creatureFamily->minScale > 0.0f && getPetType() & HUNTER_PET) { @@ -2520,6 +2515,13 @@ float Pet::GetNativeObjectScale() const float scale = (creatureFamily->maxScale - creatureFamily->minScale) * scaleMod + creatureFamily->minScale; + scale = std::min(scale, creatureFamily->maxScale); + + if (CreatureDisplayInfoEntry const* displayInfo = sCreatureDisplayInfoStore.LookupEntry(GetNativeDisplayId())) + { + if (scale < 1.f && displayInfo->scale > 1.f) + scale *= displayInfo->scale; + } return scale; }