diff --git a/lib/rmg/modificators/ObjectManager.cpp b/lib/rmg/modificators/ObjectManager.cpp index 6644ee93f..d1afd557e 100644 --- a/lib/rmg/modificators/ObjectManager.cpp +++ b/lib/rmg/modificators/ObjectManager.cpp @@ -452,13 +452,19 @@ bool ObjectManager::createRequiredObjects() void ObjectManager::placeObject(rmg::Object & object, bool guarded, bool updateDistance, bool createRoad/* = false*/) { - object.finalize(map); + //object.finalize(map); if (object.instances().size() == 1 && object.instances().front()->object().ID == Obj::MONSTER) { //Fix for HoTA offset - lonely guards - object.getPosition(); + auto monster = object.instances().front(); + if (!monster->object().appearance) + { + //Needed to determine visitable offset + monster->setAnyTemplate(); + } + object.getPosition(); auto visitableOffset = monster->object().getVisitableOffset(); auto fixedPos = monster->getPosition(true) + visitableOffset; @@ -468,6 +474,7 @@ void ObjectManager::placeObject(rmg::Object & object, bool guarded, bool updateD int3 parentOffset = monster->getPosition(true) - monster->getPosition(false); monster->setPosition(fixedPos - parentOffset); } + object.finalize(map); Zone::Lock lock(zone.areaMutex); zone.areaPossible().subtract(object.getArea());