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
- CustomMods::eventAccumulator(int &, const char *, const char *, ...)
- CustomMods::isEVENTS_DIPLO_MODIFIERS()
- CvBaseInfo::GetDescriptionKey() const
- CvBaseInfo::GetID() const
- CvDiplomacyAI::GetScenarioModifier1(PlayerTypes)
- CvDiplomacyAI::GetScenarioModifier2(PlayerTypes)
- CvDiplomacyAI::GetScenarioModifier3(PlayerTypes)
- CvDiploModifierInfo::isForFromCiv(CivilizationTypes)
- CvDiploModifierInfo::isForToCiv(CivilizationTypes)
- CvGlobals::getDiploModifierInfo(DiploModifierTypes)
- CvGlobals::getNumDiploModifierInfos()
- CvPlayer::getCivilizationDescription() const
- CvPlayer::getCivilizationType() const
- CvPlayer::GetID() const
- CvPlayer::getName() const
- CvPlayerAI::getPlayer(PlayerTypes)
Localization::LookupLocalization::String::operator=Localization::String::toUTF8operator<<operator<<Opinion::Opinionstd::vector::push_back