All pastes #918228 Raw Edit

Untitled

public text v1 · immutable
#918228 ·published 2008-02-26 00:14 UTC
rendered paste body
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;
}