Bazaar developer reference

CvDiplomacyAI::DoHappySamePolicyTree(PlayerTypes, DiploStatementTypes &)

Defined in
CvDiplomacyAI.cpp, line 15904
Class
CvDiplomacyAI
Hook name
CivHooks::CvDiplomacyAI_DoHappySamePolicyTree

Hooks

static bool BeforeCvDiplomacyAI_DoHappySamePolicyTree(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement);static void AfterCvDiplomacyAI_DoHappySamePolicyTree(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement);static void ReplaceCvDiplomacyAI_DoHappySamePolicyTree(void (*original)(CvDiplomacyAI*, PlayerTypes, DiploStatementTypes&), CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement);CivRegisterBefore<CivHooks::CvDiplomacyAI_DoHappySamePolicyTree>(host, &BeforeCvDiplomacyAI_DoHappySamePolicyTree);CivRegisterAfter<CivHooks::CvDiplomacyAI_DoHappySamePolicyTree>(host, &AfterCvDiplomacyAI_DoHappySamePolicyTree);CivRegisterReplace<CivHooks::CvDiplomacyAI_DoHappySamePolicyTree>(host, &ReplaceCvDiplomacyAI_DoHappySamePolicyTree);

Code

15904void CvDiplomacyAI::DoHappySamePolicyTree(PlayerTypes ePlayer, DiploStatementTypes& eStatement)15905{15906	CvAssertMsg(ePlayer >= 0, "DIPLOMACY_AI: Invalid Player Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");15907	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.");1590815909	if(eStatement == NO_DIPLO_STATEMENT_TYPE)15910	{15911		DiploStatementTypes eTempStatement = NO_DIPLO_STATEMENT_TYPE;1591215913		PolicyBranchTypes eMyBranch = m_pPlayer->GetPlayerPolicies()->GetLateGamePolicyTree();15914		PolicyBranchTypes eTheirBranch = GET_PLAYER(ePlayer).GetPlayerPolicies()->GetLateGamePolicyTree();15915		if(eMyBranch != NO_POLICY_BRANCH_TYPE && eTheirBranch != NO_POLICY_BRANCH_TYPE && eMyBranch == eTheirBranch && GET_PLAYER(ePlayer).GetCulture()->GetTurnIdeologySwitch() < 0)15916		{15917			// Don't say nice things if we dislike ePlayer15918			bool bSkip = false;15919			MajorCivApproachTypes eApproach;15920			MajorCivOpinionTypes eOpinion;15921			eOpinion = GetMajorCivOpinion(ePlayer);15922			eApproach = GetMajorCivApproach(ePlayer, /*bHideTrueFeelings*/ true);15923			if(eOpinion <= MAJOR_CIV_OPINION_COMPETITOR)15924				bSkip = true;15925			if(eApproach == MAJOR_CIV_APPROACH_WAR || eApproach == MAJOR_CIV_APPROACH_HOSTILE)15926				bSkip = true;1592715928			// Check chattiness to see if we send the message this turn15929			if(!bSkip && GetChattiness() > GC.getGame().getJonRandNum(10, "Diplomacy AI: rand roll to see if we congratulate a player on the same policy tree choice"))15930			{15931				DiploStatementTypes eOtherStatementToCheck = NO_DIPLO_STATEMENT_TYPE;1593215933				if(eMyBranch == GC.getPOLICY_BRANCH_FREEDOM())15934				{15935					eTempStatement = DIPLO_STATEMENT_SAME_POLICIES_FREEDOM;15936					eOtherStatementToCheck = DIPLO_STATEMENT_SWITCH_OUR_IDEOLOGY_FREEDOM;15937				}15938				else if(eMyBranch == GC.getPOLICY_BRANCH_ORDER())15939				{15940					eTempStatement = DIPLO_STATEMENT_SAME_POLICIES_ORDER;15941					eOtherStatementToCheck = DIPLO_STATEMENT_SWITCH_OUR_IDEOLOGY_ORDER;15942				}15943				else if(eMyBranch == GC.getPOLICY_BRANCH_AUTOCRACY())15944				{15945					eTempStatement = DIPLO_STATEMENT_SAME_POLICIES_AUTOCRACY;15946					eOtherStatementToCheck = DIPLO_STATEMENT_SWITCH_OUR_IDEOLOGY_AUTOCRACY;15947				}1594815949				if(eTempStatement != NO_DIPLO_STATEMENT_TYPE)15950				{15951					int iTurnsBetweenStatements = MAX_TURNS_SAFE_ESTIMATE;1595215953					if(GetNumTurnsSinceStatementSent(ePlayer, eTempStatement) >= iTurnsBetweenStatements)15954					{15955						// Also check the statement for joining the ideology.  Don't want to send messages like this on back-to-back turns15956						if(GetNumTurnsSinceStatementSent(ePlayer, eOtherStatementToCheck) >= iTurnsBetweenStatements)15957						{15958							eStatement = eTempStatement;15959						}15960					}15961				}15962			}15963		}15964	}15965}

Calls

Called by