/* * Player opened a mission terminal or pressed refresh */ void MissionManager::listRequest(PlayerObject* player, uint64 terminal_id,uint8 refresh_count) { Terminal* terminal = dynamic_cast<Terminal*> (gWorldManager->getObjectById(terminal_id)); //uint32 terminal_type = terminal->getTerminalType(); int8 terminal_name[255]; strcpy(terminal_name,terminal->getName().getAnsi()); gLogger->logMsgF("Terminal id %"PRIu64" is type '%s'", MSG_NORMAL, terminal_id, terminal_name); int count = 0; int len = strlen(terminal_name); MissionBag* mission_bag = dynamic_cast<MissionBag*>(player->getEquipManager()->getEquippedObject(CreatureEquipSlot_MissionBag)); MissionList::iterator it = mission_bag->getMissions()->begin(); while(it != mission_bag->getMissions()->end()) { MissionObject* mission = dynamic_cast<MissionObject*>(*it); mission->clear(); mission->setIssuingTerminal(terminal); mission->setRefreshCount(refresh_count); switch(len) { case 16: //terminal_mission count < 5 ? generateDestroyMission(mission,terminal_id) : generateDeliverMission(mission); break; case 22: //terminal_mission_scout if (count < 5) { mission->setRefreshCount(0); } else { generateReconMission(mission); } break; case 24: //terminal_mission_artisan count < 5 ? generateCraftingMission(mission) : generateSurveyMission(mission); break; case 28: //terminal_mission_entertainer generateEntertainerMission(mission,count); break; default: gLogger->logMsgF("Terminal id %"PRIu64" is type '%s'", MSG_NORMAL, terminal_id, terminal_name); mission->setRefreshCount(0); } gMessageLib->sendMISO_Delta(mission, player); count++; ++it; } }