Hooks
static bool BeforeCvDllNetMessageHandler_ResponseFoundReligion(CvDllNetMessageHandler* self, PlayerTypes ePlayer, ReligionTypes eReligion, const char* szCustomName, BeliefTypes eBelief1, BeliefTypes eBelief2, BeliefTypes eBelief3, BeliefTypes eBelief4, int iCityX, int iCityY);static void AfterCvDllNetMessageHandler_ResponseFoundReligion(CvDllNetMessageHandler* self, PlayerTypes ePlayer, ReligionTypes eReligion, const char* szCustomName, BeliefTypes eBelief1, BeliefTypes eBelief2, BeliefTypes eBelief3, BeliefTypes eBelief4, int iCityX, int iCityY);static void ReplaceCvDllNetMessageHandler_ResponseFoundReligion(void (*original)(CvDllNetMessageHandler*, PlayerTypes, ReligionTypes, const char*, BeliefTypes, BeliefTypes, BeliefTypes, BeliefTypes, int, int), CvDllNetMessageHandler* self, PlayerTypes ePlayer, ReligionTypes eReligion, const char* szCustomName, BeliefTypes eBelief1, BeliefTypes eBelief2, BeliefTypes eBelief3, BeliefTypes eBelief4, int iCityX, int iCityY);// CivHooks.h gives this hook point no types, so nothing checks these hooks' parameters.host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseFoundReligion::ID, CIV_HOOK_BEFORE, (void*)&BeforeCvDllNetMessageHandler_ResponseFoundReligion);host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseFoundReligion::ID, CIV_HOOK_AFTER, (void*)&AfterCvDllNetMessageHandler_ResponseFoundReligion);host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseFoundReligion::ID, CIV_HOOK_REPLACE, (void*)&ReplaceCvDllNetMessageHandler_ResponseFoundReligion);
Code
329void CvDllNetMessageHandler::ResponseFoundReligion(PlayerTypes ePlayer, ReligionTypes eReligion, const char* szCustomName, BeliefTypes eBelief1, BeliefTypes eBelief2, BeliefTypes eBelief3, BeliefTypes eBelief4, int iCityX, int iCityY)330{331 CvGame& kGame(GC.getGame());332 CvGameReligions* pkGameReligions(kGame.GetGameReligions());333334 CvCity* pkCity = GC.getMap().plot(iCityX, iCityY)->getPlotCity();335 if(pkCity && ePlayer != NO_PLAYER)336 {337 CvGameReligions::FOUNDING_RESULT eResult = pkGameReligions->CanFoundReligion(ePlayer, eReligion, szCustomName, eBelief1, eBelief2, eBelief3, eBelief4, pkCity);338 if(eResult == CvGameReligions::FOUNDING_OK)339 pkGameReligions->FoundReligion(ePlayer, eReligion, szCustomName, eBelief1, eBelief2, eBelief3, eBelief4, pkCity);340 else341 {342 CvGameReligions::NotifyPlayer(ePlayer, eResult);343 // We don't want them to lose the opportunity to found the religion, and the Great Prophet is already gone so just repost the notification344 // If someone beat them to the last religion, well... tough luck.345 CvPlayerAI& kPlayer = GET_PLAYER(ePlayer);346 if(kPlayer.isHuman() && eResult != CvGameReligions::FOUNDING_NO_RELIGIONS_AVAILABLE)347 {348 CvNotifications* pNotifications = kPlayer.GetNotifications();349 if(pNotifications)350 {351 CvString strBuffer = GetLocalizedText("TXT_KEY_NOTIFICATION_FOUND_RELIGION");352 CvString strSummary = GetLocalizedText("TXT_KEY_NOTIFICATION_SUMMARY_FOUND_RELIGION");353#if defined(MOD_API_EXTENSIONS)354 pNotifications->Add(NOTIFICATION_FOUND_RELIGION, strBuffer, strSummary, iCityX, iCityY, eReligion, pkCity->GetID());355#else356 pNotifications->Add(NOTIFICATION_FOUND_RELIGION, strBuffer, strSummary, iCityX, iCityY, -1, pkCity->GetID());357#endif358 }359 kPlayer.GetReligions()->SetFoundingReligion(true);360 }361 }362 }363}