Bazaar developer reference

CvDiplomacyAI::DoAggressiveMilitaryStatement(PlayerTypes, DiploStatementTypes &)

Defined in
CvDiplomacyAI.cpp, line 13787
Class
CvDiplomacyAI
Hook name
CivHooks::CvDiplomacyAI_DoAggressiveMilitaryStatement

Hooks

static bool BeforeCvDiplomacyAI_DoAggressiveMilitaryStatement(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement);static void AfterCvDiplomacyAI_DoAggressiveMilitaryStatement(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement);static void ReplaceCvDiplomacyAI_DoAggressiveMilitaryStatement(void (*original)(CvDiplomacyAI*, PlayerTypes, DiploStatementTypes&), CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement);CivRegisterBefore<CivHooks::CvDiplomacyAI_DoAggressiveMilitaryStatement>(host, &BeforeCvDiplomacyAI_DoAggressiveMilitaryStatement);CivRegisterAfter<CivHooks::CvDiplomacyAI_DoAggressiveMilitaryStatement>(host, &AfterCvDiplomacyAI_DoAggressiveMilitaryStatement);CivRegisterReplace<CivHooks::CvDiplomacyAI_DoAggressiveMilitaryStatement>(host, &ReplaceCvDiplomacyAI_DoAggressiveMilitaryStatement);

Code

13786/// Possible Contact Statement - guy has his military positioned aggressively near us13787void CvDiplomacyAI::DoAggressiveMilitaryStatement(PlayerTypes ePlayer, DiploStatementTypes& eStatement)13788{13789	CvAssertMsg(ePlayer >= 0, "DIPLOMACY_AI: Invalid Player Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");13790	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.");1379113792	if(eStatement == NO_DIPLO_STATEMENT_TYPE)13793	{13794		bool bSendStatement = false;1379513796		// They must be able to declare war on us13797#if defined(MOD_EVENTS_WAR_AND_PEACE)13798		if(!GET_TEAM(GET_PLAYER(ePlayer).getTeam()).canDeclareWar(GetPlayer()->getTeam(), ePlayer))13799#else13800		if(!GET_TEAM(GET_PLAYER(ePlayer).getTeam()).canDeclareWar(GetPlayer()->getTeam()))13801#endif13802			return;1380313804		// Don't threaten if this person resurrected us13805		if (WasResurrectedBy(ePlayer))13806		{13807			return;13808		}1380913810		// They're HIGH this turn and weren't last turn13811		if(GetMilitaryAggressivePosture(ePlayer) >= AGGRESSIVE_POSTURE_HIGH && GetLastTurnMilitaryAggressivePosture(ePlayer) < AGGRESSIVE_POSTURE_HIGH)13812			bSendStatement = true;1381313814		// They're MEDIUM this turn and were NONE last turn13815		else if(GetMilitaryAggressivePosture(ePlayer) >= AGGRESSIVE_POSTURE_MEDIUM && GetLastTurnMilitaryAggressivePosture(ePlayer) <= AGGRESSIVE_POSTURE_NONE)13816			bSendStatement = true;1381713818		// We're working together, so don't worry about it13819		if(IsDoFAccepted(ePlayer))13820			return;1382113822		// Check other player status13823		PlayerTypes eThirdParty;13824		for(int iThirdPartyLoop = 0; iThirdPartyLoop < MAX_MAJOR_CIVS; iThirdPartyLoop++)13825		{13826			eThirdParty = (PlayerTypes) iThirdPartyLoop;1382713828			// Are we at war with the same player?13829			if(IsAtWar(eThirdParty) && GET_TEAM(GET_PLAYER(ePlayer).getTeam()).isAtWar(GET_PLAYER(eThirdParty).getTeam()))13830				return;1383113832			// Are they at war with anyone we're neighbors with?13833			if(GetPlayer()->GetProximityToPlayer(eThirdParty) == PLAYER_PROXIMITY_NEIGHBORS && GET_TEAM(GET_PLAYER(ePlayer).getTeam()).isAtWar(GET_PLAYER(eThirdParty).getTeam()))13834				return;13835		}1383613837		if(bSendStatement)13838		{13839			DiploStatementTypes eTempStatement = DIPLO_STATEMENT_AGGRESSIVE_MILITARY_WARNING;13840			int iTurnsBetweenStatements = 40;1384113842			if(GetNumTurnsSinceStatementSent(ePlayer, eTempStatement) >= iTurnsBetweenStatements)13843				eStatement = eTempStatement;13844		}13845	}13846}

Calls

Called by