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
- CvDiplomacyAI::GetLastTurnMilitaryAggressivePosture(PlayerTypes) const
- CvDiplomacyAI::GetMilitaryAggressivePosture(PlayerTypes) const
- CvDiplomacyAI::GetNumTurnsSinceStatementSent(PlayerTypes, DiploStatementTypes)
- CvDiplomacyAI::GetPlayer()
- CvDiplomacyAI::IsAtWar(PlayerTypes)
- CvDiplomacyAI::IsDoFAccepted(PlayerTypes) const
- CvDiplomacyAI::WasResurrectedBy(PlayerTypes) const
- CvPlayer::GetProximityToPlayer(PlayerTypes) const
- CvPlayer::getTeam() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvTeam::canDeclareWar(TeamTypes, PlayerTypes) const
- CvTeam::getTeam(TeamTypes)
- CvTeam::isAtWar(TeamTypes) const