1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-10 22:31:40 +02:00

Stability & regression fixes

This commit is contained in:
Ivan Savenko
2025-04-16 12:02:13 +03:00
parent f025a3a932
commit 77845f74bc
3 changed files with 8 additions and 5 deletions

View File

@@ -672,7 +672,7 @@ bool shouldVisit(const Nullkiller * ai, const CGHeroInstance * h, const CGObject
{
if(q.obj == obj->id)
{
if(q.getQuest(cb)->checkQuest(h))
if(q.getQuest(ai->cb.get())->checkQuest(h))
return true; //we completed the quest
else
return false; //we can't complete this quest

View File

@@ -1578,6 +1578,9 @@ void CGameState::restoreBonusSystemTree()
for(auto & art : map->getArtifacts())
art->attachToBonusSystem(this);
for(auto & heroID : map->getHeroesInPool())
map->tryGetFromHeroPool(heroID)->artDeserializationFix(this, map->tryGetFromHeroPool(heroID));
if (campaign)
campaign->setGamestate(this);
}

View File

@@ -1217,16 +1217,17 @@ void RemoveObject::applyGs(CGameState *gs)
beatenHero->setVisitedTown(nullptr, false);
}
//return hero to the pool, so he may reappear in tavern
//return hero to the pool, so he may reappear in tavern
gs->heroesPool->addHeroToPool(beatenHero->getHeroTypeID());
gs->getMap().addToHeroPool(beatenHero);
//If hero on Boat is removed, the Boat disappears
if(beatenHero->inBoat())
{
beatenHero->detachFrom(*beatenHero->getBoat());
gs->getMap().eraseObject(beatenHero->getBoat()->id);
auto boat = beatenHero->getBoat();
beatenHero->setBoat(nullptr);
gs->getMap().eraseObject(boat->id);
}
return;
}
@@ -1242,7 +1243,6 @@ void RemoveObject::applyGs(CGameState *gs)
}
}
gs->getMap().eraseObject(objectID);
gs->getMap().calculateGuardingGreaturePositions();//FIXME: excessive, update only affected tiles
}