1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

Merge pull request #3574 from SoundSSGood/altar-fixes

Artifacts altar related fixes
This commit is contained in:
Ivan Savenko
2024-02-01 22:27:41 +02:00
committed by GitHub
35 changed files with 362 additions and 400 deletions

View File

@@ -1758,35 +1758,35 @@ void PutArtifact::applyGs(CGameState *gs)
void EraseArtifact::applyGs(CGameState *gs)
{
const auto hero = gs->getHero(al.artHolder);
assert(hero);
const auto slot = hero->getSlot(al.slot);
const auto artSet = gs->getArtSet(al.artHolder);
assert(artSet);
const auto slot = artSet->getSlot(al.slot);
if(slot->locked)
{
logGlobal->debug("Erasing locked artifact: %s", slot->artifact->artType->getNameTranslated());
DisassembledArtifact dis;
dis.al.artHolder = al.artHolder;
for(auto & slotInfo : hero->artifactsWorn)
for(auto & slotInfo : artSet->artifactsWorn)
{
auto art = slotInfo.second.artifact;
if(art->isCombined() && art->isPart(slot->artifact))
{
dis.al.slot = hero->getArtPos(art);
dis.al.slot = artSet->getArtPos(art);
break;
}
}
assert((dis.al.slot != ArtifactPosition::PRE_FIRST) && "Failed to determine the assembly this locked artifact belongs to");
logGlobal->debug("Found the corresponding assembly: %s", hero->getArt(dis.al.slot)->artType->getNameTranslated());
logGlobal->debug("Found the corresponding assembly: %s", artSet->getArt(dis.al.slot)->artType->getNameTranslated());
dis.applyGs(gs);
}
else
{
logGlobal->debug("Erasing artifact %s", slot->artifact->artType->getNameTranslated());
}
auto art = hero->getArt(al.slot);
auto art = artSet->getArt(al.slot);
assert(art);
art->removeFrom(*hero, al.slot);
art->removeFrom(*artSet, al.slot);
}
void MoveArtifact::applyGs(CGameState * gs)