소스 검색

Fixes crashes caused by CREATURE_TERRAIN_LIMITER

Opuszek 2 달 전
부모
커밋
2ce985ffa0
3개의 변경된 파일6개의 추가작업 그리고 3개의 파일을 삭제
  1. 2 2
      lib/callback/EditorCallback.cpp
  2. 1 0
      lib/gameState/CGameState.cpp
  3. 3 1
      lib/mapObjects/army/CCreatureSet.cpp

+ 2 - 2
lib/callback/EditorCallback.cpp

@@ -52,9 +52,9 @@ int EditorCallback::getDate(Date mode) const
 	THROW_EDITOR_UNSUPPORTED;
 }
 
-const TerrainTile * EditorCallback::getTile(int3, bool) const
+const TerrainTile * EditorCallback::getTile(int3 tile, bool) const
 {
-	THROW_EDITOR_UNSUPPORTED;
+	return &map->getTile(tile);
 }
 
 const TerrainTile * EditorCallback::getTileUnchecked(int3) const

+ 1 - 0
lib/gameState/CGameState.cpp

@@ -607,6 +607,7 @@ void CGameState::initHeroes(IGameRandomizer & gameRandomizer)
 			continue;
 		}
 		hero->initHero(gameRandomizer);
+		hero->armyChanged();
 	}
 
 	// generate boats for all heroes on water

+ 3 - 1
lib/mapObjects/army/CCreatureSet.cpp

@@ -661,7 +661,9 @@ void CCreatureSet::serializeJson(JsonSerializeFormat & handler, const std::strin
 			{
 				auto newStack = std::make_unique<CStackInstance>(getArmy()->cb);
 				newStack->serializeJson(handler);
-				putStack(SlotID(static_cast<si32>(idx)), std::move(newStack));
+				SlotID slot(static_cast<si32>(idx));
+				stacks[slot] = std::move(newStack);
+				stacks[slot]->setArmy(getArmy());
 			}
 		}
 	}