Browse Source

Regression fixed

SoundSSGood 2 years ago
parent
commit
0f93b0991c
3 changed files with 9 additions and 5 deletions
  1. 3 2
      client/NetPacksClient.cpp
  2. 4 3
      client/widgets/CArtifactHolder.cpp
  3. 2 0
      lib/CArtHandler.cpp

+ 3 - 2
client/NetPacksClient.cpp

@@ -294,8 +294,9 @@ void BulkMoveArtifacts::applyCl(CClient * cl)
 		{
 			auto srcLoc = ArtifactLocation(srcArtHolder, slotToMove.srcPos);
 			auto dstLoc = ArtifactLocation(dstArtHolder, slotToMove.dstPos);
-			MoveArtifact ma(&srcLoc, &dstLoc, false);
-			ma.applyCl(cl);
+			callInterfaceIfPresent(cl, srcLoc.owningPlayer(), &IGameEventsReceiver::artifactMoved, srcLoc, dstLoc);
+			if(srcLoc.owningPlayer() != dstLoc.owningPlayer())
+				callInterfaceIfPresent(cl, dstLoc.owningPlayer(), &IGameEventsReceiver::artifactMoved, srcLoc, dstLoc);
 		}
 	};
 

+ 4 - 3
client/widgets/CArtifactHolder.cpp

@@ -752,9 +752,10 @@ void CArtifactsOfHero::artifactMoved(const ArtifactLocation & src, const Artifac
 			assert(commonInfo->src.AOH);
 			CCS->curh->dragAndDropCursor("artifact", dst.getArt()->artType->getIconIndex());
 		}
-		auto art = dst.getArt();
-		if(art && dst.slot == ArtifactPosition::TRANSITION_POS)
-			markPossibleSlots(art);
+		if(!curHero->artifactsTransitionPos.empty())
+		{
+			markPossibleSlots(curHero->getArt(ArtifactPosition::TRANSITION_POS));
+		}
 	}
 
 	updateParentWindow();

+ 2 - 0
lib/CArtHandler.cpp

@@ -1027,6 +1027,8 @@ bool CCombinedArtifactInstance::canBePutAt(const CArtifactSet * artSet, Artifact
 {
 	if(slot == ArtifactPosition::TRANSITION_POS)
 		return true;
+	if(!CArtifactInstance::canBePutAt(artSet, slot, assumeDestRemoved))
+		return false;
 	if(ArtifactUtils::isSlotBackpack(slot))
 		return true; //we can always remove combined art to the backapck