Bazaar developer reference

CvDiplomacyAI::GetDiploModifiers(PlayerTypes, std::vector<Opinion> &)

Defined in
CvDiplomacyAI.cpp, line 24169
Class
CvDiplomacyAI
Hook name
CivHooks::CvDiplomacyAI_GetDiploModifiers
Lua events
GameEvents.GetDiploModifier

Hooks

static bool BeforeCvDiplomacyAI_GetDiploModifiers(CvDiplomacyAI* self, PlayerTypes eToPlayer, std::vector<Opinion>& aOpinions, int& result);static void AfterCvDiplomacyAI_GetDiploModifiers(CvDiplomacyAI* self, PlayerTypes eToPlayer, std::vector<Opinion>& aOpinions, int& result);static int ReplaceCvDiplomacyAI_GetDiploModifiers(int (*original)(CvDiplomacyAI*, PlayerTypes, std::vector<Opinion>&), CvDiplomacyAI* self, PlayerTypes eToPlayer, std::vector<Opinion>& aOpinions);// CivHooks.h gives this hook point no types, so nothing checks these hooks' parameters.host->RegisterHook(host->pluginIndex, CivHooks::CvDiplomacyAI_GetDiploModifiers::ID, CIV_HOOK_BEFORE, (void*)&BeforeCvDiplomacyAI_GetDiploModifiers);host->RegisterHook(host->pluginIndex, CivHooks::CvDiplomacyAI_GetDiploModifiers::ID, CIV_HOOK_AFTER, (void*)&AfterCvDiplomacyAI_GetDiploModifiers);host->RegisterHook(host->pluginIndex, CivHooks::CvDiplomacyAI_GetDiploModifiers::ID, CIV_HOOK_REPLACE, (void*)&ReplaceCvDiplomacyAI_GetDiploModifiers);

Code

24168#if defined(MOD_EVENTS_DIPLO_MODIFIERS)24169int CvDiplomacyAI::GetDiploModifiers(PlayerTypes eToPlayer, std::vector<Opinion>& aOpinions)24170{24171	int iValue = 0;24172	int iModifier;2417324174	iModifier = GetScenarioModifier1(eToPlayer);24175	if (iModifier != 0) {24176		iValue += iModifier;24177		24178		Opinion kOpinion;24179		kOpinion.m_iValue = iModifier;24180		Localization::String strOpinion = Localization::Lookup("TXT_KEY_SPECIFIC_DIPLO_STRING_1");24181		kOpinion.m_str = strOpinion.toUTF8();24182		aOpinions.push_back(kOpinion);24183	}24184	24185	iModifier = GetScenarioModifier2(eToPlayer);24186	if (iModifier != 0) {24187		iValue += iModifier;24188		24189		Opinion kOpinion;24190		kOpinion.m_iValue = iModifier;24191		Localization::String strOpinion = Localization::Lookup("TXT_KEY_SPECIFIC_DIPLO_STRING_2");24192		kOpinion.m_str = strOpinion.toUTF8();24193		aOpinions.push_back(kOpinion);24194	}2419524196	iModifier = GetScenarioModifier3(eToPlayer);24197	if (iModifier != 0) {24198		iValue += iModifier;24199		24200		Opinion kOpinion;24201		kOpinion.m_iValue = iModifier;24202		Localization::String strOpinion = Localization::Lookup("TXT_KEY_SPECIFIC_DIPLO_STRING_3");24203		kOpinion.m_str = strOpinion.toUTF8();24204		aOpinions.push_back(kOpinion);24205	}24206	24207	if (MOD_EVENTS_DIPLO_MODIFIERS)24208	{24209		PlayerTypes eFromPlayer = m_pPlayer->GetID();24210		CivilizationTypes eFromCiv = m_pPlayer->getCivilizationType();24211		24212		CvPlayer* pToPlayer = &GET_PLAYER(eToPlayer);24213		CivilizationTypes eToCiv = pToPlayer->getCivilizationType();24214		24215		24216		for (int iI = 0; iI < GC.getNumDiploModifierInfos(); iI++) {24217			CvDiploModifierInfo* pDiploModifierInfo = GC.getDiploModifierInfo((DiploModifierTypes) iI);24218			24219			if (pDiploModifierInfo && pDiploModifierInfo->isForFromCiv(eFromCiv) && pDiploModifierInfo->isForToCiv(eToCiv)) {24220				iModifier = 0;24221				24222				if (GAMEEVENTINVOKE_VALUE(iModifier, GAMEEVENT_GetDiploModifier, pDiploModifierInfo->GetID(), eFromPlayer, eToPlayer) == GAMEEVENTRETURN_VALUE) {24223					if (iModifier != 0) {24224						iValue += iModifier;24225		24226						Opinion kOpinion;24227						kOpinion.m_iValue = iModifier;24228						Localization::String strOpinion = Localization::Lookup(pDiploModifierInfo->GetDescriptionKey());24229						strOpinion << iModifier;24230						strOpinion << m_pPlayer->getName();24231						strOpinion << m_pPlayer->getCivilizationDescription();24232						strOpinion << pToPlayer->getName();24233						strOpinion << pToPlayer->getCivilizationDescription();2423424235						kOpinion.m_str = strOpinion.toUTF8();24236						aOpinions.push_back(kOpinion);24237					}24238				}24239			}24240		}24241	}24242	24243	return iValue;24244}

Calls

Called by