浏览代码

altar sacrifice all fix

SoundSSGood 2 年之前
父节点
当前提交
213eda5e1e
共有 1 个文件被更改,包括 6 次插入3 次删除
  1. 6 3
      client/windows/CTradeWindow.cpp

+ 6 - 3
client/windows/CTradeWindow.cpp

@@ -1262,11 +1262,14 @@ void CAltarWindow::SacrificeAll()
 	}
 	else
 	{
-		for(const auto & aw : arts->visibleArtSet.artifactsWorn)
+		std::vector<ConstTransitivePtr<CArtifactInstance>> artsForMove;
+		for(const auto& slotInfo : arts->visibleArtSet.artifactsWorn)
 		{
-			if(!aw.second.locked)
-				moveArtToAltar(nullptr, aw.second.artifact);
+			if(!slotInfo.second.locked && slotInfo.second.artifact->artType->isTradable())
+				artsForMove.push_back(slotInfo.second.artifact);
 		}
+		for(auto artInst : artsForMove)
+			moveArtToAltar(nullptr, artInst);
 		arts->updateWornSlots();
 		SacrificeBackpack();
 	}