From 17dd8ffb48849befdf3cbdf38ed09a5130f79f3e Mon Sep 17 00:00:00 2001 From: kdmcser Date: Sat, 9 Nov 2024 16:54:42 +0800 Subject: [PATCH 1/4] fix artifact sort by slot crash --- server/CGameHandler.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/server/CGameHandler.cpp b/server/CGameHandler.cpp index 373988702..7c47d88eb 100644 --- a/server/CGameHandler.cpp +++ b/server/CGameHandler.cpp @@ -2772,7 +2772,28 @@ bool CGameHandler::manageBackpackArtifacts(const PlayerColor & player, const Obj { makeSortBackpackRequest([](const ArtSlotInfo & inf) -> int32_t { - return inf.getArt()->artType->getPossibleSlots().at(ArtBearer::HERO).front().num; + auto possibleSlots = inf.getArt()->artType->getPossibleSlots(); + if (possibleSlots.find(ArtBearer::ALTAR) != possibleSlots.end() && !possibleSlots.at(ArtBearer::ALTAR).empty()) + { + return -3; + } + else if (possibleSlots.find(ArtBearer::CREATURE) != possibleSlots.end() && !possibleSlots.at(ArtBearer::CREATURE).empty()) + { + return -2; + } + else if (possibleSlots.find(ArtBearer::COMMANDER) != possibleSlots.end() && !possibleSlots.at(ArtBearer::COMMANDER).empty()) + { + return -1; + } + else if (possibleSlots.find(ArtBearer::HERO) != possibleSlots.end() && !possibleSlots.at(ArtBearer::HERO).empty()) + { + return inf.getArt()->artType->getPossibleSlots().at(ArtBearer::HERO).front().num; + } + else + { + logGlobal->error("Unable to get artifact %s slot.", inf.getArt()->artType->getNameTextID()); + return -4; + } }); } else if(sortType == ManageBackpackArtifacts::ManageCmd::SORT_BY_COST) From 8d58066f6900361289a0d0c813279bdd562f190d Mon Sep 17 00:00:00 2001 From: kdmcser Date: Sat, 9 Nov 2024 17:24:14 +0800 Subject: [PATCH 2/4] fix artifact sort by slot crash --- server/CGameHandler.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/server/CGameHandler.cpp b/server/CGameHandler.cpp index 7c47d88eb..696fd283b 100644 --- a/server/CGameHandler.cpp +++ b/server/CGameHandler.cpp @@ -2773,11 +2773,7 @@ bool CGameHandler::manageBackpackArtifacts(const PlayerColor & player, const Obj makeSortBackpackRequest([](const ArtSlotInfo & inf) -> int32_t { auto possibleSlots = inf.getArt()->artType->getPossibleSlots(); - if (possibleSlots.find(ArtBearer::ALTAR) != possibleSlots.end() && !possibleSlots.at(ArtBearer::ALTAR).empty()) - { - return -3; - } - else if (possibleSlots.find(ArtBearer::CREATURE) != possibleSlots.end() && !possibleSlots.at(ArtBearer::CREATURE).empty()) + if (possibleSlots.find(ArtBearer::CREATURE) != possibleSlots.end() && !possibleSlots.at(ArtBearer::CREATURE).empty()) { return -2; } @@ -2792,7 +2788,7 @@ bool CGameHandler::manageBackpackArtifacts(const PlayerColor & player, const Obj else { logGlobal->error("Unable to get artifact %s slot.", inf.getArt()->artType->getNameTextID()); - return -4; + return -3; } }); } From e12b72a83919460576a2323cc6bd98a4ebc90ed1 Mon Sep 17 00:00:00 2001 From: kdmcser Date: Sat, 9 Nov 2024 17:37:06 +0800 Subject: [PATCH 3/4] merge changes --- server/CGameHandler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/CGameHandler.cpp b/server/CGameHandler.cpp index 65dc5b129..e035853e3 100644 --- a/server/CGameHandler.cpp +++ b/server/CGameHandler.cpp @@ -2771,7 +2771,7 @@ bool CGameHandler::manageBackpackArtifacts(const PlayerColor & player, const Obj { makeSortBackpackRequest([](const ArtSlotInfo & inf) -> int32_t { - auto possibleSlots = inf.getArt()->artType->getPossibleSlots(); + auto possibleSlots = inf.getArt()->getType()->getPossibleSlots(); if (possibleSlots.find(ArtBearer::CREATURE) != possibleSlots.end() && !possibleSlots.at(ArtBearer::CREATURE).empty()) { return -2; @@ -2786,7 +2786,7 @@ bool CGameHandler::manageBackpackArtifacts(const PlayerColor & player, const Obj } else { - logGlobal->error("Unable to get artifact %s slot.", inf.getArt()->artType->getNameTextID()); + logGlobal->error("Unable to get artifact %s slot.", inf.getArt()->getType()->getNameTextID()); return -3; } }); From 77d14d095f5fd094e894aa78b0eab4029fcf7e7a Mon Sep 17 00:00:00 2001 From: kdmcser Date: Sun, 10 Nov 2024 10:52:00 +0800 Subject: [PATCH 4/4] delete error message since grail will go to last branch --- server/CGameHandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/CGameHandler.cpp b/server/CGameHandler.cpp index e035853e3..d7bacfc10 100644 --- a/server/CGameHandler.cpp +++ b/server/CGameHandler.cpp @@ -2786,7 +2786,7 @@ bool CGameHandler::manageBackpackArtifacts(const PlayerColor & player, const Obj } else { - logGlobal->error("Unable to get artifact %s slot.", inf.getArt()->getType()->getNameTextID()); + // for grail return -3; } });