CvDiplomacyAI::DoIdeologicalStatement(PlayerTypes, DiploStatementTypes &)
- Defined in
- CvDiplomacyAI.cpp, line 15967
- Class
- CvDiplomacyAI
- Hook name
CivHooks::CvDiplomacyAI_DoIdeologicalStatement
Hooks
static bool BeforeCvDiplomacyAI_DoIdeologicalStatement(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement);static void AfterCvDiplomacyAI_DoIdeologicalStatement(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement);static void ReplaceCvDiplomacyAI_DoIdeologicalStatement(void (*original)(CvDiplomacyAI*, PlayerTypes, DiploStatementTypes&), CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement);CivRegisterBefore<CivHooks::CvDiplomacyAI_DoIdeologicalStatement>(host, &BeforeCvDiplomacyAI_DoIdeologicalStatement);CivRegisterAfter<CivHooks::CvDiplomacyAI_DoIdeologicalStatement>(host, &AfterCvDiplomacyAI_DoIdeologicalStatement);CivRegisterReplace<CivHooks::CvDiplomacyAI_DoIdeologicalStatement>(host, &ReplaceCvDiplomacyAI_DoIdeologicalStatement);
Code
15967void CvDiplomacyAI::DoIdeologicalStatement(PlayerTypes ePlayer, DiploStatementTypes& eStatement)15968{15969 CvAssertMsg(ePlayer >= 0, "DIPLOMACY_AI: Invalid Player Index. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");15970 CvAssertMsg(ePlayer < MAX_MAJOR_CIVS, "DIPLOMACY_AI: Invalid Player Index. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");1597115972 PolicyBranchTypes eFreedom = (PolicyBranchTypes)GC.getPOLICY_BRANCH_FREEDOM();15973 PolicyBranchTypes eOrder = (PolicyBranchTypes)GC.getPOLICY_BRANCH_ORDER();15974 int iTurnsBetweenStatements = MAX_TURNS_SAFE_ESTIMATE;1597515976 CvPlayer &kTheirPlayer = GET_PLAYER(ePlayer);1597715978 if(eStatement == NO_DIPLO_STATEMENT_TYPE)15979 {15980 DiploStatementTypes eTempStatement;1598115982 if (m_pPlayer->GetCulture()->GetInfluenceLevel(ePlayer) >= INFLUENCE_LEVEL_INFLUENTIAL)15983 {15984 eTempStatement = DIPLO_STATEMENT_OUR_CULTURE_INFLUENTIAL;1598515986 if(GetNumTurnsSinceStatementSent(ePlayer, eTempStatement) >= iTurnsBetweenStatements)15987 {15988 eStatement = eTempStatement;15989 return;15990 }15991 }1599215993 if (kTheirPlayer.GetCulture()->GetInfluenceLevel(m_pPlayer->GetID()) >= INFLUENCE_LEVEL_INFLUENTIAL)15994 {15995 eTempStatement = DIPLO_STATEMENT_YOUR_CULTURE_INFLUENTIAL;1599615997 if(GetNumTurnsSinceStatementSent(ePlayer, eTempStatement) >= iTurnsBetweenStatements)15998 {15999 eStatement = eTempStatement;16000 return;16001 }16002 }1600316004 PolicyBranchTypes eMyBranch = m_pPlayer->GetPlayerPolicies()->GetLateGamePolicyTree();16005 PolicyBranchTypes eTheirBranch = kTheirPlayer.GetPlayerPolicies()->GetLateGamePolicyTree();1600616007 if(eMyBranch != NO_POLICY_BRANCH_TYPE && eTheirBranch != NO_POLICY_BRANCH_TYPE && eMyBranch == eTheirBranch)16008 {16009 PublicOpinionTypes eOpinionInMyCiv = m_pPlayer->GetCulture()->GetPublicOpinionType();16010 PlayerTypes eMyGreatestInfluence = m_pPlayer->GetCulture()->GetPublicOpinionBiggestInfluence();16011 PublicOpinionTypes eOpinionInTheirCiv = kTheirPlayer.GetCulture()->GetPublicOpinionType();16012 PlayerTypes eTheirGreatestInfluence = kTheirPlayer.GetCulture()->GetPublicOpinionBiggestInfluence();1601316014 // Did this player recently switch ideology due to our pressure?16015 int iIdeologySwitchTurn = kTheirPlayer.GetCulture()->GetTurnIdeologySwitch();16016 if (iIdeologySwitchTurn > 0 && iIdeologySwitchTurn + 10 > GC.getGame().getGameTurn())16017 {16018 kTheirPlayer.GetCulture()->SetTurnIdeologySwitch(-1); // Reset so they only get 1 popup16019 if (eTheirBranch == eFreedom)16020 {16021 eStatement = DIPLO_STATEMENT_SWITCH_OUR_IDEOLOGY_FREEDOM;16022 }16023 else if (eTheirBranch == eOrder)16024 {16025 eStatement = DIPLO_STATEMENT_SWITCH_OUR_IDEOLOGY_ORDER;16026 }16027 else16028 {16029 eStatement = DIPLO_STATEMENT_SWITCH_OUR_IDEOLOGY_AUTOCRACY;16030 }16031 return;16032 }1603316034 if (eOpinionInMyCiv >= PUBLIC_OPINION_CIVIL_RESISTANCE && eMyGreatestInfluence == ePlayer)16035 {16036 if (eTheirBranch == eFreedom)16037 {16038 eTempStatement = DIPLO_STATEMENT_YOUR_IDEOLOGY_CAUSING_CIVIL_UNREST_FREEDOM;16039 }16040 else if (eTheirBranch == eOrder)16041 {16042 eTempStatement = DIPLO_STATEMENT_YOUR_IDEOLOGY_CAUSING_CIVIL_UNREST_ORDER;16043 }16044 else16045 {16046 eTempStatement = DIPLO_STATEMENT_YOUR_IDEOLOGY_CAUSING_CIVIL_UNREST_AUTOCRACY;16047 }16048 if (eTempStatement != NO_DIPLO_STATEMENT_TYPE)16049 {16050 if(GetNumTurnsSinceStatementSent(ePlayer, eTempStatement) >= iTurnsBetweenStatements)16051 {16052 eStatement = eTempStatement;16053 return;16054 }16055 }16056 }16057 if (eOpinionInTheirCiv >= PUBLIC_OPINION_CIVIL_RESISTANCE && eTheirGreatestInfluence == m_pPlayer->GetID())16058 {16059 if (eMyBranch == eFreedom)16060 {16061 eTempStatement = DIPLO_STATEMENT_OUR_IDEOLOGY_CAUSING_CIVIL_UNREST_FREEDOM;16062 }16063 else if (eMyBranch == eOrder)16064 {16065 eTempStatement = DIPLO_STATEMENT_OUR_IDEOLOGY_CAUSING_CIVIL_UNREST_ORDER;16066 }16067 else16068 {16069 eTempStatement = DIPLO_STATEMENT_OUR_IDEOLOGY_CAUSING_CIVIL_UNREST_AUTOCRACY;16070 }16071 if (eTempStatement != NO_DIPLO_STATEMENT_TYPE)16072 {16073 if(GetNumTurnsSinceStatementSent(ePlayer, eTempStatement) >= iTurnsBetweenStatements)16074 {16075 eStatement = eTempStatement;16076 return;16077 }16078 }16079 }16080 }16081 }16082}
Calls
- CvDiplomacyAI::GetNumTurnsSinceStatementSent(PlayerTypes, DiploStatementTypes)
- CvGame::getGameTurn()
- CvGlobals::getGame()
- CvGlobals::getPOLICY_BRANCH_FREEDOM()
- CvGlobals::getPOLICY_BRANCH_ORDER()
- CvPlayer::GetCulture() const
- CvPlayer::GetID() const
- CvPlayer::GetPlayerPolicies() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlayerCulture::GetInfluenceLevel(PlayerTypes) const
- CvPlayerCulture::GetPublicOpinionBiggestInfluence() const
- CvPlayerCulture::GetPublicOpinionType() const
- CvPlayerCulture::GetTurnIdeologySwitch() const
- CvPlayerCulture::SetTurnIdeologySwitch(int)
- CvPlayerPolicies::GetLateGamePolicyTree() const