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
- CvDiplomacyAI::GetChattiness() const
- CvDiplomacyAI::GetMajorCivApproach(PlayerTypes, bool) const
- CvDiplomacyAI::GetMajorCivOpinion(PlayerTypes) const
- CvDiplomacyAI::GetNumTurnsSinceStatementSent(PlayerTypes, DiploStatementTypes)
- CvGame::getJonRandNum(int, const char *)
- CvGlobals::getGame()
- CvGlobals::getPOLICY_BRANCH_AUTOCRACY()
- CvGlobals::getPOLICY_BRANCH_FREEDOM()
- CvGlobals::getPOLICY_BRANCH_ORDER()
- CvPlayer::GetCulture() const
- CvPlayer::GetPlayerPolicies() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlayerCulture::GetTurnIdeologySwitch() const
- CvPlayerPolicies::GetLateGamePolicyTree() const