rendered paste bodybool 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;
}