浏览代码

Merge pull request #6054 from Opuszek/Fixes_game_crashes_caused_by_CREATURE_TERRAIN_LIMITER

Fixes crashes caused by CREATURE_TERRAIN_LIMITER
Ivan Savenko 2 月之前
父节点
当前提交
67f50ad950
共有 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());
 			}
 		}
 	}