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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user