1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-15 00:05:02 +02:00

Fix rare crash on merging two stacks in town garrison with stack

artifacts equipped
This commit is contained in:
Ivan Savenko
2025-04-06 18:44:44 +03:00
parent cbfaefd805
commit dcbf12ef26

View File

@ -1639,13 +1639,19 @@ void RebalanceStacks::applyGs(CGameState *gs)
{
if(auto dstArt = dstStack->getArt(ArtifactPosition::CREATURE_SLOT))
{
auto dstSlot = ArtifactUtils::getArtBackpackPosition(srcHero, dstArt->getTypeId());
if(srcHero && dstSlot != ArtifactPosition::PRE_FIRST)
bool artifactIsLost = true;
if(srcHero)
{
gs->map->moveArtifactInstance(*dstStack, ArtifactPosition::CREATURE_SLOT, *srcHero, dstSlot);
auto dstSlot = ArtifactUtils::getArtBackpackPosition(srcHero, dstArt->getTypeId());
if (dstSlot != ArtifactPosition::PRE_FIRST)
{
gs->map->moveArtifactInstance(*dstStack, ArtifactPosition::CREATURE_SLOT, *srcHero, dstSlot);
artifactIsLost = false;
}
}
//else - artifact can be lost :/
else
if (artifactIsLost)
{
BulkEraseArtifacts ea;
ea.artHolder = dstHero->id;