Bazaar developer reference

CvDiplomacyAI::DoMinorCivCompetitionStatement(PlayerTypes, DiploStatementTypes &, int &, bool)

Defined in
CvDiplomacyAI.cpp, line 15194
Class
CvDiplomacyAI
Hook name
CivHooks::CvDiplomacyAI_DoMinorCivCompetitionStatement

Hooks

static bool BeforeCvDiplomacyAI_DoMinorCivCompetitionStatement(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement, int& iData1, bool bIgnoreTurnsBetweenLimit);static void AfterCvDiplomacyAI_DoMinorCivCompetitionStatement(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement, int& iData1, bool bIgnoreTurnsBetweenLimit);static void ReplaceCvDiplomacyAI_DoMinorCivCompetitionStatement(void (*original)(CvDiplomacyAI*, PlayerTypes, DiploStatementTypes&, int&, bool), CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement, int& iData1, bool bIgnoreTurnsBetweenLimit);CivRegisterBefore<CivHooks::CvDiplomacyAI_DoMinorCivCompetitionStatement>(host, &BeforeCvDiplomacyAI_DoMinorCivCompetitionStatement);CivRegisterAfter<CivHooks::CvDiplomacyAI_DoMinorCivCompetitionStatement>(host, &AfterCvDiplomacyAI_DoMinorCivCompetitionStatement);CivRegisterReplace<CivHooks::CvDiplomacyAI_DoMinorCivCompetitionStatement>(host, &ReplaceCvDiplomacyAI_DoMinorCivCompetitionStatement);

Code

15193/// Possible Contact Statement15194void CvDiplomacyAI::DoMinorCivCompetitionStatement(PlayerTypes ePlayer, DiploStatementTypes& eStatement, int& iData1, bool bIgnoreTurnsBetweenLimit)15195{15196	CvAssertMsg(ePlayer >= 0, "DIPLOMACY_AI: Invalid Player Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");15197	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.");1519815199	if(eStatement == NO_DIPLO_STATEMENT_TYPE)15200	{15201		if(GetMinorCivDisputeLevel(ePlayer) >= DISPUTE_LEVEL_STRONG)15202		{15203			DiploStatementTypes eTempStatement = DIPLO_STATEMENT_MINOR_CIV_COMPETITION;15204			int iTurnsBetweenStatements = MAX_TURNS_SAFE_ESTIMATE;1520515206			if(GetNumTurnsSinceStatementSent(ePlayer, eTempStatement) >= iTurnsBetweenStatements || bIgnoreTurnsBetweenLimit)15207			{15208				// Find a city state we're upset over15209				PlayerTypes eMinor;15210				for(int iMinorLoop = MAX_MAJOR_CIVS; iMinorLoop < MAX_CIV_PLAYERS; iMinorLoop++)15211				{15212					eMinor = (PlayerTypes) iMinorLoop;1521315214					// We have a PtP with this minor15215					if(GET_PLAYER(eMinor).GetMinorCivAI()->IsProtectedByMajor(GetPlayer()->GetID()))15216					{15217						if(GET_PLAYER(eMinor).GetMinorCivAI()->IsAllies(ePlayer))15218						{15219							iData1 = eMinor;15220							break;15221						}15222						else if(GET_PLAYER(eMinor).GetMinorCivAI()->IsFriends(ePlayer))15223						{15224							iData1 = eMinor;15225							break;15226						}15227					}15228				}1522915230				// Don't change the statement unless we found a minor to complain about15231				if(iData1 != NO_PLAYER)15232				{15233					eStatement = eTempStatement;15234				}15235			}15236		}15237	}15238}

Calls

Called by