Bazaar developer reference

CvMinorCivAI::GetBestPlayerToFind(PlayerTypes)

Defined in
CvMinorCivAI.cpp, line 5938
Class
CvMinorCivAI
Hook name
CivHooks::CvMinorCivAI_GetBestPlayerToFind

Hooks

static bool BeforeCvMinorCivAI_GetBestPlayerToFind(CvMinorCivAI* self, PlayerTypes ePlayer, PlayerTypes& result);static void AfterCvMinorCivAI_GetBestPlayerToFind(CvMinorCivAI* self, PlayerTypes ePlayer, PlayerTypes& result);static PlayerTypes ReplaceCvMinorCivAI_GetBestPlayerToFind(PlayerTypes (*original)(CvMinorCivAI*, PlayerTypes), CvMinorCivAI* self, PlayerTypes ePlayer);CivRegisterBefore<CivHooks::CvMinorCivAI_GetBestPlayerToFind>(host, &BeforeCvMinorCivAI_GetBestPlayerToFind);CivRegisterAfter<CivHooks::CvMinorCivAI_GetBestPlayerToFind>(host, &AfterCvMinorCivAI_GetBestPlayerToFind);CivRegisterReplace<CivHooks::CvMinorCivAI_GetBestPlayerToFind>(host, &ReplaceCvMinorCivAI_GetBestPlayerToFind);

Code

5937/// Any good players to ask ePlayer to find?5938PlayerTypes CvMinorCivAI::GetBestPlayerToFind(PlayerTypes ePlayer)5939{5940	PlayerTypes eBestTargetPlayer = NO_PLAYER;59415942	TeamTypes eTeam = GET_PLAYER(ePlayer).getTeam();5943	CvTeam* pTeam = &GET_TEAM(eTeam);59445945	FStaticVector<PlayerTypes, MAX_CIV_PLAYERS, true, c_eCiv5GameplayDLL, 0> veValidTargets;59465947	// First, loop through majors and see if the player has met them5948	PlayerTypes eTargetMajor;5949	TeamTypes eTargetTeam;5950	for(int iTargetMajorLoop = 0; iTargetMajorLoop < MAX_MAJOR_CIVS; iTargetMajorLoop++)5951	{5952		eTargetMajor = (PlayerTypes) iTargetMajorLoop;5953		eTargetTeam = GET_PLAYER(eTargetMajor).getTeam();59545955		// Target needs to be alive5956		if(!GET_PLAYER(eTargetMajor).isAlive())5957		{5958			continue;5959		}59605961		// Don't have the player find anyone on his team...5962		if(eTargetTeam == eTeam)5963		{5964			continue;5965		}59665967		// Player must already know the target5968		if(!pTeam->isHasMet(eTargetTeam))5969		{5970			continue;5971		}59725973		// Player can't have seen this guy's territory before5974		if(pTeam->IsHasFoundPlayersTerritory(eTargetMajor))5975		{5976			continue;5977		}59785979		veValidTargets.push_back(eTargetMajor);5980	}59815982	// Didn't find any valid Target players5983	if(veValidTargets.size() == 0)5984	{5985		return NO_PLAYER;5986	}59875988	int iRandIndex = GC.getGame().getJonRandNum(veValidTargets.size(), "Finding random Major player Target for Minor to give out a quest to find.");5989	eBestTargetPlayer = veValidTargets[iRandIndex];59905991	return eBestTargetPlayer;5992}

Calls

Called by