Bazaar developer reference

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

Called by