瀏覽代碼

Fix for monsters spawning at left side of the map

Tomasz Zieliński 2 年之前
父節點
當前提交
8f450cf253
共有 1 個文件被更改,包括 9 次插入2 次删除
  1. 9 2
      lib/rmg/modificators/ObjectManager.cpp

+ 9 - 2
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());