Hooks
static bool BeforeCvDllNetMessageHandler_ResponseEnhanceReligion(CvDllNetMessageHandler* self, PlayerTypes ePlayer, ReligionTypes eReligion, const char* szCustomName, BeliefTypes eBelief1, BeliefTypes eBelief2, int iCityX, int iCityY);static void AfterCvDllNetMessageHandler_ResponseEnhanceReligion(CvDllNetMessageHandler* self, PlayerTypes ePlayer, ReligionTypes eReligion, const char* szCustomName, BeliefTypes eBelief1, BeliefTypes eBelief2, int iCityX, int iCityY);static void ReplaceCvDllNetMessageHandler_ResponseEnhanceReligion(void (*original)(CvDllNetMessageHandler*, PlayerTypes, ReligionTypes, const char*, BeliefTypes, BeliefTypes, int, int), CvDllNetMessageHandler* self, PlayerTypes ePlayer, ReligionTypes eReligion, const char* szCustomName, BeliefTypes eBelief1, BeliefTypes eBelief2, int iCityX, int iCityY);// CivHooks.h gives this hook point no types, so nothing checks these hooks' parameters.host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseEnhanceReligion::ID, CIV_HOOK_BEFORE, (void*)&BeforeCvDllNetMessageHandler_ResponseEnhanceReligion);host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseEnhanceReligion::ID, CIV_HOOK_AFTER, (void*)&AfterCvDllNetMessageHandler_ResponseEnhanceReligion);host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseEnhanceReligion::ID, CIV_HOOK_REPLACE, (void*)&ReplaceCvDllNetMessageHandler_ResponseEnhanceReligion);
Code
365void CvDllNetMessageHandler::ResponseEnhanceReligion(PlayerTypes ePlayer, ReligionTypes eReligion, const char* szCustomName, BeliefTypes eBelief1, BeliefTypes eBelief2, int iCityX, int iCityY)366{367 CvGame& kGame(GC.getGame());368 CvGameReligions* pkGameReligions(kGame.GetGameReligions());369370 CvGameReligions::FOUNDING_RESULT eResult = pkGameReligions->CanEnhanceReligion(ePlayer, eReligion, eBelief1, eBelief2);371 if(eResult == CvGameReligions::FOUNDING_OK)372 pkGameReligions->EnhanceReligion(ePlayer, eReligion, eBelief1, eBelief2);373 else374 {375 CvGameReligions::NotifyPlayer(ePlayer, eResult);376 // We don't want them to lose the opportunity to enhance the religion, and the Great Prophet is already gone so just repost the notification377 CvCity* pkCity = GC.getMap().plot(iCityX, iCityY)->getPlotCity();378 CvPlayerAI& kPlayer = GET_PLAYER(ePlayer);379 if(kPlayer.isHuman() && eResult != CvGameReligions::FOUNDING_NO_RELIGIONS_AVAILABLE && pkCity)380 {381 CvNotifications* pNotifications = kPlayer.GetNotifications();382 if(pNotifications)383 {384 CvString strBuffer = GetLocalizedText("TXT_KEY_NOTIFICATION_ENHANCE_RELIGION");385 CvString strSummary = GetLocalizedText("TXT_KEY_NOTIFICATION_SUMMARY_ENHANCE_RELIGION");386#if defined(MOD_API_EXTENSIONS)387 pNotifications->Add(NOTIFICATION_ENHANCE_RELIGION, strBuffer, strSummary, iCityX, iCityY, eReligion, pkCity->GetID());388#else389 pNotifications->Add(NOTIFICATION_ENHANCE_RELIGION, strBuffer, strSummary, iCityX, iCityY, -1, pkCity->GetID());390#endif391 }392 kPlayer.GetReligions()->SetFoundingReligion(true);393 }394 }395}