From d2e776b6720ec6d5fcb83ed782d69fecd5300365 Mon Sep 17 00:00:00 2001 From: Gent S Date: Thu, 19 Nov 2020 14:07:29 -0500 Subject: [PATCH] Fix mission rewards stacking on top of each other --- src/MissionManager.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/MissionManager.cpp b/src/MissionManager.cpp index 99ddb3c..6c49ad8 100644 --- a/src/MissionManager.cpp +++ b/src/MissionManager.cpp @@ -374,8 +374,15 @@ int MissionManager::giveMissionReward(CNSocket *sock, int task) { fail.iErrorCode = 13; // inventory full sock->sendPacket((void*)&fail, P_FE2CL_REP_PC_TASK_END_FAIL, sizeof(sP_FE2CL_REP_PC_TASK_END_FAIL)); + + // delete any temp items we might have set + for (int j = 0; j < i; j++) { + plr->Inven[slots[j]] = { 0, 0, 0, 0 }; // empty + } return -1; } + + plr->Inven[slots[i]] = { 999, 999, 999, 0 }; // temp item; overwritten later } uint8_t respbuf[CN_PACKET_BUFFER_SIZE]; @@ -406,8 +413,8 @@ int MissionManager::giveMissionReward(CNSocket *sock, int task) { item[i].iSlotNum = slots[i]; item[i].eIL = 1; - // update player - plr->Inven[slots[i]] = item->sItem; + // update player inventory, overwriting temporary item + plr->Inven[slots[i]] = item[i].sItem; } sock->sendPacket((void*)respbuf, P_FE2CL_REP_REWARD_ITEM, resplen);