Bazaar developer reference

CvDiplomacyAI::DoPlayerDeclaredWarOnSomeone(PlayerTypes, TeamTypes)

Defined in
CvDiplomacyAI.cpp, line 9676
Class
CvDiplomacyAI
Hook name
CivHooks::CvDiplomacyAI_DoPlayerDeclaredWarOnSomeone

Hooks

static bool BeforeCvDiplomacyAI_DoPlayerDeclaredWarOnSomeone(CvDiplomacyAI* self, PlayerTypes ePlayer, TeamTypes eOtherTeam);static void AfterCvDiplomacyAI_DoPlayerDeclaredWarOnSomeone(CvDiplomacyAI* self, PlayerTypes ePlayer, TeamTypes eOtherTeam);static void ReplaceCvDiplomacyAI_DoPlayerDeclaredWarOnSomeone(void (*original)(CvDiplomacyAI*, PlayerTypes, TeamTypes), CvDiplomacyAI* self, PlayerTypes ePlayer, TeamTypes eOtherTeam);CivRegisterBefore<CivHooks::CvDiplomacyAI_DoPlayerDeclaredWarOnSomeone>(host, &BeforeCvDiplomacyAI_DoPlayerDeclaredWarOnSomeone);CivRegisterAfter<CivHooks::CvDiplomacyAI_DoPlayerDeclaredWarOnSomeone>(host, &AfterCvDiplomacyAI_DoPlayerDeclaredWarOnSomeone);CivRegisterReplace<CivHooks::CvDiplomacyAI_DoPlayerDeclaredWarOnSomeone>(host, &ReplaceCvDiplomacyAI_DoPlayerDeclaredWarOnSomeone);

Code

9675/// ePlayer declared war on someone, so figure out what that means9676void CvDiplomacyAI::DoPlayerDeclaredWarOnSomeone(PlayerTypes ePlayer, TeamTypes eOtherTeam)9677{9678	CvAssertMsg(ePlayer >= 0, "DIPLOMACY_AI: Invalid Player Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");9679	CvAssertMsg(ePlayer < MAX_CIV_PLAYERS, "DIPLOMACY_AI: Invalid Player Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");9680	CvAssertMsg(eOtherTeam >= 0, "DIPLOMACY_AI: Invalid Team Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");9681	CvAssertMsg(eOtherTeam <= MAX_CIV_TEAMS, "DIPLOMACY_AI: Invalid Team Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");96829683	// Disregard barbarians9684	if(GET_TEAM(eOtherTeam).isBarbarian())9685		return;96869687	CvAssertMsg(eOtherTeam < MAX_CIV_TEAMS, "DIPLOMACY_AI: Invalid Team Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");96889689	int iThirdPartyLoop;9690	PlayerTypes eThirdParty;9691	PlayerTypes eThem;96929693	bool bWasFriends = false;96949695	PlayerTypes eAttackedPlayer;9696	for(int iAttackedPlayerLoop = 0; iAttackedPlayerLoop < MAX_CIV_PLAYERS; iAttackedPlayerLoop++)9697	{9698		eAttackedPlayer = (PlayerTypes) iAttackedPlayerLoop;96999700		if(GET_PLAYER(eAttackedPlayer).getTeam() == eOtherTeam)9701		{9702			bWasFriends = false;97039704			// We're involved SOMEHOW9705			if(ePlayer == GetPlayer()->GetID() || eAttackedPlayer == GetPlayer()->GetID())9706			{9707				eThem = GetPlayer()->GetID() != ePlayer ? ePlayer : eAttackedPlayer;97089709				ChangeNumWarsFought(eThem, 1);97109711				// Only stuff for major civs9712				if(!GET_PLAYER(eThem).isMinorCiv())9713				{9714					// WAS working with this player9715					if(IsDoFAccepted(eThem))9716					{9717						bWasFriends = true;97189719						SetDoFAccepted(eThem, false);9720						SetDoFCounter(eThem, -666);9721					}97229723					// HAD agreed to not settle nearby9724					if(IsPlayerNoSettleRequestAccepted(eThem))9725					{9726						SetPlayerNoSettleRequestAccepted(eThem, false);9727						SetPlayerNoSettleRequestCounter(eThem, -666);9728					}97299730					// HAD agreed not to spy on them9731					if(IsPlayerStopSpyingRequestAccepted(eThem))9732					{9733						SetPlayerStopSpyingRequestAccepted(eThem, false);9734						SetPlayerStopSpyingRequestCounter(eThem, -666);9735					}97369737					// Third party arrangements9738					for(iThirdPartyLoop = 0; iThirdPartyLoop < MAX_MAJOR_CIVS; iThirdPartyLoop++)9739					{9740						eThirdParty = (PlayerTypes) iThirdPartyLoop;97419742						// WAS working with the guy we're now at war with against someone else9743						//if (IsWorkingAgainstPlayerAccepted(eThem, eThirdParty))9744						//{9745						//	SetWorkingAgainstPlayerAccepted(eThem, eThirdParty, false);9746						//	SetWorkingAgainstPlayerCounter(eThem, eThirdParty, -666);9747						//}97489749						// WAS in or planning a coop war with the guy we're now at war with9750						if(GetCoopWarAcceptedState(eThem, eThirdParty) >= COOP_WAR_STATE_SOON)9751						{9752							SetCoopWarAcceptedState(eThem, eThirdParty, NO_COOP_WAR_STATE);9753							SetCoopWarCounter(eThem, eThirdParty, -666);9754						}9755					}9756				}97579758				// If WE were attacked, change our Approach to war so that it's not inappropriate next time the turn cycles9759				if(eAttackedPlayer == GetPlayer()->GetID())9760				{9761					// WAS friends with this player9762					if(bWasFriends)9763					{9764						SetFriendDeclaredWarOnUs(eThem, true);9765						ChangeDeclaredWarOnFriendValue(eThem, GC.getOPINION_WEIGHT_WAR_FRIEND_EACH() * GC.getGame().getGameSpeedInfo().getOpinionDurationPercent());9766					}97679768					if(!GET_PLAYER(ePlayer).isMinorCiv())9769					{9770						SetMajorCivApproach(ePlayer, MAJOR_CIV_APPROACH_WAR);9771						SetWarFaceWithPlayer(ePlayer, WAR_FACE_NEUTRAL);9772					}97739774					// Player broke a promise that he wasn't going to attack us9775					if(IsPlayerMadeMilitaryPromise(ePlayer))9776						SetPlayerBrokenMilitaryPromise(ePlayer, true);97779778					// Clear civilians returned so they don't affect relations any more9779					if(GetNumCiviliansReturnedToMe(ePlayer) > 0)9780						ChangeNumCiviliansReturnedToMe(ePlayer, -GetNumCiviliansReturnedToMe(ePlayer));9781					if(GetNumLandmarksBuiltForMe(ePlayer) > 0)9782						ChangeNumLandmarksBuiltForMe(ePlayer, -GetNumLandmarksBuiltForMe(ePlayer));97839784					// Clear positive diplomatic values9785					ChangeRecentTradeValue(ePlayer, -GetRecentTradeValue(ePlayer));9786					ChangeCommonFoeValue(ePlayer, -GetCommonFoeValue(ePlayer));9787					if (GetRecentAssistValue(ePlayer) < 0)9788					{9789						ChangeRecentAssistValue(ePlayer, -GetRecentAssistValue(ePlayer));9790					}97919792					// clear out their values9793					GET_PLAYER(ePlayer).GetDiplomacyAI()->SetDoFCounter(GetPlayer()->GetID(), -1);9794					GET_PLAYER(ePlayer).GetDiplomacyAI()->SetDoFAccepted(GetPlayer()->GetID(), false);9795				}9796			}97979798			// Did WE attack someone?9799			if(ePlayer == GetPlayer()->GetID())9800			{9801			}9802			// If it was someone else see what it means9803			else if(IsPlayerValid(eAttackedPlayer))9804			{9805				if(GET_PLAYER(eAttackedPlayer).isMinorCiv())9806				{9807					// Did they attack a Minor we're protecting?9808					if(GET_PLAYER(eAttackedPlayer).GetMinorCivAI()->IsProtectedByMajor(GetPlayer()->GetID()))9809					{9810						SetOtherPlayerTurnsSinceAttackedProtectedMinor(ePlayer, 0);9811						SetOtherPlayerProtectedMinorAttacked(ePlayer, eAttackedPlayer);9812						ChangeOtherPlayerNumProtectedMinorsAttacked(ePlayer, 1);9813					}9814				}9815			}9816		}9817	}9818}

Calls

Called by