Bazaar developer reference

CvMinorCivAI::AddQuestIfAble(PlayerTypes, MinorCivQuestTypes)

Defined in
CvMinorCivAI.cpp, line 5296
Class
CvMinorCivAI
Hook name
CivHooks::CvMinorCivAI_AddQuestIfAble

Hooks

static bool BeforeCvMinorCivAI_AddQuestIfAble(CvMinorCivAI* self, PlayerTypes eMajor, MinorCivQuestTypes eQuest, bool& result);static void AfterCvMinorCivAI_AddQuestIfAble(CvMinorCivAI* self, PlayerTypes eMajor, MinorCivQuestTypes eQuest, bool& result);static bool ReplaceCvMinorCivAI_AddQuestIfAble(bool (*original)(CvMinorCivAI*, PlayerTypes, MinorCivQuestTypes), CvMinorCivAI* self, PlayerTypes eMajor, MinorCivQuestTypes eQuest);CivRegisterBefore<CivHooks::CvMinorCivAI_AddQuestIfAble>(host, &BeforeCvMinorCivAI_AddQuestIfAble);CivRegisterAfter<CivHooks::CvMinorCivAI_AddQuestIfAble>(host, &AfterCvMinorCivAI_AddQuestIfAble);CivRegisterReplace<CivHooks::CvMinorCivAI_AddQuestIfAble>(host, &ReplaceCvMinorCivAI_AddQuestIfAble);

Code

5295/// For debugging and testing only. Adds eQuest if able, ignoring quest countdown timers.5296bool CvMinorCivAI::AddQuestIfAble(PlayerTypes eMajor, MinorCivQuestTypes eQuest)5297{5298	CvAssertMsg(eMajor >= 0, "eMajor is expected to be non-negative (invalid Index)");5299	CvAssertMsg(eMajor < MAX_MAJOR_CIVS, "eMajor is expected to be within maximum bounds (invalid Index)");5300	if(eMajor < 0 || eMajor >= MAX_MAJOR_CIVS) return false;53015302#if defined(MOD_EVENTS_QUESTS)5303	CvAssertMsg(eQuest >= NO_MINOR_CIV_QUEST_TYPE, "eQuest is expected to be non-negative (invalid Index)");5304	CvAssertMsg(eQuest < NUM_MINOR_CIV_QUEST_TYPES, "eQuest is expected to be within maximum bounds (invalid Index)");5305	if(eQuest < NO_MINOR_CIV_QUEST_TYPE || eQuest >= GC.getNumQuestInfos()) return false;5306#else5307	CvAssertMsg(eQuest >= NO_MINOR_CIV_QUEST_TYPE, "eQuest is expected to be non-negative (invalid Index)");5308	CvAssertMsg(eQuest < NUM_MINOR_CIV_QUEST_TYPES, "eQuest is expected to be within maximum bounds (invalid Index)");5309	if(eQuest < NO_MINOR_CIV_QUEST_TYPE || eQuest >= NUM_MINOR_CIV_QUEST_TYPES) return false;5310#endif53115312	if(!IsHasMetPlayer(eMajor))5313		return false;53145315	if(IsAtWarWithPlayersTeam(eMajor))5316		return false;53175318	if (!IsValidQuestForPlayer(eMajor, eQuest))5319		return false;53205321	if (IsActiveQuestForPlayer(eMajor, eQuest))5322		return false;53235324	CvAssert(IsPersonalQuest(eQuest) || IsGlobalQuest(eQuest));5325	if (IsPersonalQuest(eQuest))5326	{5327		if(GetNumActivePersonalQuestsForPlayer(eMajor) >= GetMaxActivePersonalQuestsForPlayer())5328		{5329			return false;5330		}53315332		AddQuestForPlayer(eMajor, eQuest, GC.getGame().getGameTurn());5333		return true;5334	}5335	else if (IsGlobalQuest(eQuest))5336	{5337		if(GetNumActiveGlobalQuests() >= GetMaxActiveGlobalQuests())5338		{5339			return false;5340		}53415342		int iNumValidPlayers = 0;5343		for(int iPlayerLoop = 0; iPlayerLoop < MAX_MAJOR_CIVS; iPlayerLoop++)5344		{5345			PlayerTypes ePlayerLoop = (PlayerTypes) iPlayerLoop;5346			if(IsValidQuestForPlayer(ePlayerLoop, eQuest))5347				iNumValidPlayers++;5348		}5349		if(iNumValidPlayers < GetMinPlayersNeededForQuest(eQuest))5350			return false;53515352		for(int iPlayerLoop = 0; iPlayerLoop < MAX_MAJOR_CIVS; iPlayerLoop++)5353		{5354			PlayerTypes ePlayerLoop = (PlayerTypes) iPlayerLoop;5355			if(IsValidQuestForPlayer(ePlayerLoop, eQuest))5356				AddQuestForPlayer(ePlayerLoop, eQuest, GC.getGame().getGameTurn());5357		}5358		return true;5359	}53605361	return false;5362}

Calls

Called by