From 3126875e6aba46ead533fe2f218dee28fc5c73c3 Mon Sep 17 00:00:00 2001 From: SoundSSGood <87084363+SoundSSGood@users.noreply.github.com> Date: Sat, 2 Sep 2023 14:36:57 +0300 Subject: [PATCH] arts bulk move crash fixed --- client/NetPacksClient.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/client/NetPacksClient.cpp b/client/NetPacksClient.cpp index a87ddc69b..2c692a31c 100644 --- a/client/NetPacksClient.cpp +++ b/client/NetPacksClient.cpp @@ -306,14 +306,13 @@ void ApplyClientNetPackVisitor::visitBulkMoveArtifacts(BulkMoveArtifacts & pack) } }; - ArtifactLocation srcLoc(pack.srcArtHolder, pack.artsPack0.front().srcPos); - ArtifactLocation dstLoc(pack.dstArtHolder, pack.artsPack0.front().dstPos); + auto srcOwner = std::get>(pack.srcArtHolder)->tempOwner; + auto dstOwner = std::get>(pack.dstArtHolder)->tempOwner; // Begin a session of bulk movement of arts. It is not necessary but useful for the client optimization. - callInterfaceIfPresent(cl, srcLoc.owningPlayer(), &IGameEventsReceiver::bulkArtMovementStart, pack.artsPack0.size() + pack.artsPack1.size()); - - if (srcLoc.owningPlayer() != dstLoc.owningPlayer()) - callInterfaceIfPresent(cl, dstLoc.owningPlayer(), &IGameEventsReceiver::bulkArtMovementStart, pack.artsPack0.size() + pack.artsPack1.size()); + callInterfaceIfPresent(cl, srcOwner, &IGameEventsReceiver::bulkArtMovementStart, pack.artsPack0.size() + pack.artsPack1.size()); + if(srcOwner != dstOwner) + callInterfaceIfPresent(cl, dstOwner, &IGameEventsReceiver::bulkArtMovementStart, pack.artsPack0.size() + pack.artsPack1.size()); applyMove(pack.artsPack0); if(pack.swap)