예제 #1
0
Quest *Creature::getNextAvailableQuest(Player *pPlayer, Quest *prevQuest)
{
    Quest *pQuest;

	if ( prevQuest->m_qNextQuest != 0 )
	{
		pQuest = objmgr.GetQuest( prevQuest->m_qNextQuest );

		if (pQuest)
		{
			if ( pQuest->CanBeTaken(pPlayer) )
				return pQuest;
		}
	}

	return NULL;		 
}
예제 #2
0
void Creature::prepareQuestMenu( Player *pPlayer )
{
    uint32 quest_id;
    uint32 status;
    Quest *pQuest;

	for( std::list<uint32>::iterator i = mQuestIds.begin( ); i != mQuestIds.end( ); ++ i )
    {
        quest_id = *i;
        status = pPlayer->getQuestStatus(quest_id);
        pQuest = objmgr.GetQuest(quest_id);

		
		if ( status == QUEST_STATUS_INCOMPLETE )
			pPlayer->PlayerTalkClass->GetQuestMenu()->QuestItem( quest_id, DIALOG_STATUS_INCOMPLETE, false );

		
		if ( ( status == QUEST_STATUS_AVAILABLE ) && ( pQuest->CanBeTaken(pPlayer) ) )
			pPlayer->PlayerTalkClass->GetQuestMenu()->QuestItem( quest_id, DIALOG_STATUS_AVAILABLE, true );
	}

	for( std::list<uint32>::iterator i = mInvolvedQuestIds.begin( ); i != mInvolvedQuestIds.end( ); ++ i )
    {
        quest_id = *i;
        status = pPlayer->getQuestStatus(quest_id);
        pQuest = objmgr.GetQuest(quest_id);

		
		if ( status == QUEST_STATUS_INCOMPLETE )
			pPlayer->PlayerTalkClass->GetQuestMenu()->QuestItem( quest_id, DIALOG_STATUS_INCOMPLETE, false );

		
		if ( status == QUEST_STATUS_INCOMPLETE )
			pPlayer->PlayerTalkClass->GetQuestMenu()->QuestItem( quest_id, DIALOG_STATUS_REWARD, false );
	}
}