1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-23 22:37:55 +02:00

Fix removal of towns from map via event

This commit is contained in:
Ivan Savenko
2025-06-20 17:23:37 +03:00
parent 102d932641
commit c041a035c8

View File

@@ -418,6 +418,18 @@ void GameStatePackVisitor::visitRemoveObject(RemoveObject & pack)
return;
}
if(obj->ID == Obj::TOWN)
{
auto * town = dynamic_cast<CGTownInstance *>(obj);
town->setVisitingHero(nullptr);
if (town->getGarrisonHero())
{
town->setGarrisonedHero(nullptr);
gs.getMap().showObject(gs.getHero(town->getGarrisonHero()->id));
}
}
const auto * quest = dynamic_cast<const IQuestObject *>(obj);
if (quest)
{
@@ -429,6 +441,7 @@ void GameStatePackVisitor::visitRemoveObject(RemoveObject & pack)
}
}
obj->detachFromBonusSystem(gs);
gs.getMap().eraseObject(pack.objectID);
gs.getMap().calculateGuardingGreaturePositions();//FIXME: excessive, update only affected tiles
}