bool ChatHandler::HandleLookupQuestCommand(const char* args) { Player* target = getSelectedPlayer(); if( !target ) { SendSysMessage(LANG_PLAYER_NOT_FOUND); return true; } if(!*args) return false; std::string namepart = args; uint32 counter = 0 ; // converting string that we try to find to lower case std::transform( namepart.begin(), namepart.end(), namepart.begin(), ::tolower ); for (ObjectMgr::QuestMap::const_iterator iter = objmgr.GetQuestTremplates().begin(); iter != objmgr.GetQuestTremplates().end(); ++iter) { Quest * qinfo = iter->second; std::string Title = qinfo->GetTitle(); int loc_idx = m_session->GetSessionLocaleIndex(); if ( loc_idx >= 0 ) { QuestLocale const *il = objmgr.GetQuestLocale(qinfo->GetQuestId()); if (il) { if (il->Title.size() > loc_idx && !il->Title[loc_idx].empty()) Title = il->Title[loc_idx]; } } // converting string that we try to find to lower case std::transform( Title.begin(), Title.end(), Title.begin(), ::tolower ); if (Title.find(namepart) != std::string::npos) { QuestStatus status = target->GetQuestStatus(qinfo->GetQuestId()); char const* statusStr = ""; if(status == QUEST_STATUS_COMPLETE) { if(target->GetQuestRewardStatus(qinfo->GetQuestId())) statusStr = GetMangosString(LANG_COMMAND_QUEST_REWARDED); else statusStr = GetMangosString(LANG_COMMAND_QUEST_COMPLETE); } else if(status == QUEST_STATUS_INCOMPLETE) statusStr = GetMangosString(LANG_COMMAND_QUEST_ACTIVE); PSendSysMessage(LANG_QUEST_LIST,qinfo->GetQuestId(),qinfo->GetQuestId(),Title.c_str(),(status == QUEST_STATUS_COMPLETE ? GetMangosString(LANG_COMPLETE) : (status == QUEST_STATUS_INCOMPLETE ? GetMangosString(LANG_ACTIVE) : "") )); counter++; } } if (counter==0) { SendSysMessage(LANG_COMMAND_NOQUESTFOUND); return true; } return true; }