From a1a5815f1fc2306aa082484e8e2f20b66cf5d6cc Mon Sep 17 00:00:00 2001 From: Gent S Date: Tue, 22 Dec 2020 16:18:46 -0500 Subject: [PATCH] Fix academy nano missions not going into the 0th slot --- src/ChatManager.cpp | 2 +- src/MissionManager.cpp | 13 +++++++------ src/MissionManager.hpp | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/ChatManager.cpp b/src/ChatManager.cpp index e7388fd..9f53421 100644 --- a/src/ChatManager.cpp +++ b/src/ChatManager.cpp @@ -684,7 +684,7 @@ void lairUnlockCommand(std::string full, std::vector& args, CNSocke } INITSTRUCT(sP_FE2CL_REP_PC_TASK_START_SUCC, taskResp); - MissionManager::startTask(plr, taskID, false); + MissionManager::startTask(plr, taskID); taskResp.iTaskNum = taskID; taskResp.iRemainTime = 0; sock->sendPacket((void*)&taskResp, P_FE2CL_REP_PC_TASK_START_SUCC, sizeof(sP_FE2CL_REP_PC_TASK_START_SUCC)); diff --git a/src/MissionManager.cpp b/src/MissionManager.cpp index 7141642..fa68e2b 100644 --- a/src/MissionManager.cpp +++ b/src/MissionManager.cpp @@ -18,14 +18,16 @@ void MissionManager::init() { REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_TASK_STOP, quitMission); } -bool MissionManager::startTask(Player* plr, int TaskID, bool NanoMission) { +bool MissionManager::startTask(Player* plr, int TaskID) { if (MissionManager::Tasks.find(TaskID) == MissionManager::Tasks.end()) { std::cout << "[WARN] Player submitted unknown task!?" << std::endl; return false; } - // client freaks out if nano mission isn't sent first after reloging, so it's easiest to set it here - if (NanoMission && plr->tasks[0] != 0) { + TaskData& task = *MissionManager::Tasks[TaskID]; + + // client freaks out if nano mission isn't sent first after relogging, so it's easiest to set it here + if (task["m_iSTNanoID"] != 0 && plr->tasks[0] != 0) { // lets move task0 to different spot int moveToSlot = 1; for (; moveToSlot < ACTIVE_MISSION_COUNT; moveToSlot++) @@ -40,7 +42,6 @@ bool MissionManager::startTask(Player* plr, int TaskID, bool NanoMission) { } } - TaskData& task = *MissionManager::Tasks[TaskID]; int i; for (i = 0; i < ACTIVE_MISSION_COUNT; i++) { if (plr->tasks[i] == 0) { @@ -67,7 +68,7 @@ void MissionManager::taskStart(CNSocket* sock, CNPacketData* data) { INITSTRUCT(sP_FE2CL_REP_PC_TASK_START_SUCC, response); Player *plr = PlayerManager::getPlayer(sock); - if (!startTask(plr, missionData->iTaskNum, false)) { + if (!startTask(plr, missionData->iTaskNum)) { // TODO: TASK_FAIL? response.iTaskNum = missionData->iTaskNum; sock->sendPacket((void*)&response, P_FE2CL_REP_PC_TASK_START_SUCC, sizeof(sP_FE2CL_REP_PC_TASK_START_SUCC)); @@ -486,7 +487,7 @@ void MissionManager::updateFusionMatter(CNSocket* sock, int fusion) { } // start the nano mission - startTask(plr, AvatarGrowth[plr->level]["m_iNanoQuestTaskID"], true); + startTask(plr, AvatarGrowth[plr->level]["m_iNanoQuestTaskID"]); INITSTRUCT(sP_FE2CL_REP_PC_TASK_START_SUCC, response); response.iTaskNum = AvatarGrowth[plr->level]["m_iNanoQuestTaskID"]; diff --git a/src/MissionManager.hpp b/src/MissionManager.hpp index 769d9c4..56b362e 100644 --- a/src/MissionManager.hpp +++ b/src/MissionManager.hpp @@ -41,7 +41,7 @@ namespace MissionManager { extern nlohmann::json AvatarGrowth[37]; void init(); - bool startTask(Player* plr, int TaskID, bool NanoMission); + bool startTask(Player* plr, int TaskID); void taskStart(CNSocket* sock, CNPacketData* data); void taskEnd(CNSocket* sock, CNPacketData* data); void setMission(CNSocket* sock, CNPacketData* data);