Bazaar developer reference

CvGameReligions::CheckSpawnGreatProphet(CvPlayer &)

Defined in
CvReligionClasses.cpp, line 2618
Class
CvGameReligions
Hook name
CivHooks::CvGameReligions_CheckSpawnGreatProphet

Hooks

static bool BeforeCvGameReligions_CheckSpawnGreatProphet(CvGameReligions* self, CvPlayer& kPlayer, bool& result);static void AfterCvGameReligions_CheckSpawnGreatProphet(CvGameReligions* self, CvPlayer& kPlayer, bool& result);static bool ReplaceCvGameReligions_CheckSpawnGreatProphet(bool (*original)(CvGameReligions*, CvPlayer&), CvGameReligions* self, CvPlayer& kPlayer);CivRegisterBefore<CivHooks::CvGameReligions_CheckSpawnGreatProphet>(host, &BeforeCvGameReligions_CheckSpawnGreatProphet);CivRegisterAfter<CivHooks::CvGameReligions_CheckSpawnGreatProphet>(host, &AfterCvGameReligions_CheckSpawnGreatProphet);CivRegisterReplace<CivHooks::CvGameReligions_CheckSpawnGreatProphet>(host, &ReplaceCvGameReligions_CheckSpawnGreatProphet);

Code

2617/// Time to spawn a Great Prophet?2618bool CvGameReligions::CheckSpawnGreatProphet(CvPlayer& kPlayer)2619{2620#if defined(MOD_BUGFIX_UNITCLASS_NOT_UNIT)2621	UnitTypes eUnit = kPlayer.GetSpecificUnitType("UNITCLASS_PROPHET", true);2622#else2623	UnitTypes eUnit = (UnitTypes)GC.getInfoTypeForString("UNIT_PROPHET", true);2624#endif2625	if (eUnit == NO_UNIT)2626	{2627		return false;2628	}26292630	const CvReligion* pReligion = NULL;2631	const int iFaith = kPlayer.GetFaith();2632#if defined(MOD_GLOBAL_TRULY_FREE_GP)2633	int iCost = kPlayer.GetReligions()->GetCostNextProphet(true /*bIncludeBeliefDiscounts*/, true /*bAdjustForSpeedDifficulty*/, MOD_GLOBAL_TRULY_FREE_GP);2634#else2635	int iCost = kPlayer.GetReligions()->GetCostNextProphet(true /*bIncludeBeliefDiscounts*/, true /*bAdjustForSpeedDifficulty*/);2636#endif26372638	ReligionTypes ePlayerReligion = GetReligionCreatedByPlayer(kPlayer.GetID());2639	if(ePlayerReligion > RELIGION_PANTHEON)2640	{2641		pReligion = GetReligion(ePlayerReligion, kPlayer.GetID());2642	}26432644	// If player hasn't founded a religion yet, drop out of this if all religions have been founded2645	else if(GetNumReligionsStillToFound() <= 0)2646	{2647		return false;2648	}26492650	if(iFaith < iCost)2651	{2652		return false;2653	}26542655#if defined(MOD_RELIGION_KEEP_PROPHET_OVERFLOW)2656	int iBaseChance = GC.getRELIGION_BASE_CHANCE_PROPHET_SPAWN();2657	int iChance = iBaseChance;2658#else2659	int iChance = GC.getRELIGION_BASE_CHANCE_PROPHET_SPAWN();2660#endif2661	iChance += (iFaith - iCost);26622663	int iRand = GC.getGame().getJonRandNum(100, "Religion: spawn Great Prophet roll.");2664	if(iRand >= iChance)2665	{2666		return false;2667	}26682669	CvCity* pSpawnCity = NULL;2670	if(pReligion)2671	{2672		pSpawnCity = GC.getMap().plot(pReligion->m_iHolyCityX, pReligion->m_iHolyCityY)->getPlotCity();2673	}26742675	if(pSpawnCity != NULL && pSpawnCity->getOwner() == kPlayer.GetID())2676	{2677#if defined(MOD_BUGFIX_MINOR)2678#if defined(MOD_GLOBAL_TRULY_FREE_GP)2679		pSpawnCity->GetCityCitizens()->DoSpawnGreatPerson(eUnit, true /*bIncrementCount*/, true, false);2680#else2681		pSpawnCity->GetCityCitizens()->DoSpawnGreatPerson(eUnit, true /*bIncrementCount*/, true);2682#endif2683#else2684#if defined(MOD_GLOBAL_TRULY_FREE_GP)2685		pSpawnCity->GetCityCitizens()->DoSpawnGreatPerson(eUnit, false /*bIncrementCount*/, true, false);2686#else2687		pSpawnCity->GetCityCitizens()->DoSpawnGreatPerson(eUnit, false /*bIncrementCount*/, true);2688#endif2689#endif2690#if defined(MOD_RELIGION_KEEP_PROPHET_OVERFLOW)2691		if (MOD_RELIGION_KEEP_PROPHET_OVERFLOW && iBaseChance >= 100) {2692			kPlayer.ChangeFaith(-1 * iCost);2693		} else {2694#endif2695			kPlayer.SetFaith(0);2696#if defined(MOD_RELIGION_KEEP_PROPHET_OVERFLOW)2697		}2698#endif2699	}2700	else2701	{2702		pSpawnCity = kPlayer.getCapitalCity();2703		if(pSpawnCity != NULL)2704		{2705#if defined(MOD_BUGFIX_MINOR)2706#if defined(MOD_GLOBAL_TRULY_FREE_GP)2707			pSpawnCity->GetCityCitizens()->DoSpawnGreatPerson(eUnit, true /*bIncrementCount*/, true, false);2708#else2709			pSpawnCity->GetCityCitizens()->DoSpawnGreatPerson(eUnit, true /*bIncrementCount*/, true);2710#endif2711#else2712#if defined(MOD_GLOBAL_TRULY_FREE_GP)2713			pSpawnCity->GetCityCitizens()->DoSpawnGreatPerson(eUnit, false /*bIncrementCount*/, true, false);2714#else2715			pSpawnCity->GetCityCitizens()->DoSpawnGreatPerson(eUnit, false /*bIncrementCount*/, true);2716#endif2717#endif2718#if defined(MOD_RELIGION_KEEP_PROPHET_OVERFLOW)2719		if (MOD_RELIGION_KEEP_PROPHET_OVERFLOW && iBaseChance >= 100) {2720			kPlayer.ChangeFaith(-1 * iCost);2721		} else {2722#endif2723			kPlayer.SetFaith(0);2724#if defined(MOD_RELIGION_KEEP_PROPHET_OVERFLOW)2725		}2726#endif2727		}2728	}27292730	// Logging2731	if(GC.getLogging() && pSpawnCity)2732	{2733		CvString strLogMsg;2734		strLogMsg = kPlayer.getCivilizationShortDescription();2735		strLogMsg += ", PROPHET SPAWNED, ";2736		strLogMsg += pSpawnCity->getName();2737		strLogMsg += ", Faith: 0";2738		LogReligionMessage(strLogMsg);2739	}27402741	return true;2742}

Calls

Called by