Hooks
static bool BeforeCvDiplomacyAI_DeclareWar(CvDiplomacyAI* self, PlayerTypes ePlayer);static void AfterCvDiplomacyAI_DeclareWar(CvDiplomacyAI* self, PlayerTypes ePlayer);static void ReplaceCvDiplomacyAI_DeclareWar(void (*original)(CvDiplomacyAI*, PlayerTypes), CvDiplomacyAI* self, PlayerTypes ePlayer);CivRegisterBefore<CivHooks::CvDiplomacyAI_DeclareWar>(host, &BeforeCvDiplomacyAI_DeclareWar);CivRegisterAfter<CivHooks::CvDiplomacyAI_DeclareWar>(host, &AfterCvDiplomacyAI_DeclareWar);CivRegisterReplace<CivHooks::CvDiplomacyAI_DeclareWar>(host, &ReplaceCvDiplomacyAI_DeclareWar);
Code
5723/// We've decided to declare war on someone5724void CvDiplomacyAI::DeclareWar(PlayerTypes ePlayer)5725{5726 CvAssertMsg(!GET_PLAYER(ePlayer).isMinorCiv() || GET_PLAYER(ePlayer).GetMinorCivAI()->GetAlly() != GetPlayer()->GetID(), "Major is declaring war on a city-state it is allied with! Please send Jon this with your last 5 autosaves and what changelist # you're playing.");57275728 CvTeam& kMyTeam = GET_TEAM(GetTeam());5729 TeamTypes eTheirTeam = GET_PLAYER(ePlayer).getTeam();57305731 // Only do it if we are not already at war.5732 if(!kMyTeam.isAtWar(eTheirTeam))5733 {5734#if defined(MOD_EVENTS_WAR_AND_PEACE)5735 kMyTeam.declareWar(eTheirTeam, false, GetPlayer()->GetID());5736#else5737 kMyTeam.declareWar(eTheirTeam);5738#endif57395740 m_pPlayer->GetCitySpecializationAI()->SetSpecializationsDirty(SPECIALIZATION_UPDATE_NOW_AT_WAR);57415742 // Show scene to human5743#if defined(MOD_AI_MP_DIPLOMACY)5744 if (MOD_AI_MP_DIPLOMACY) {5745 // JdH => deciding whether to send a notification or pop up directly is done in SendRequest5746 if (CvPreGame::isHuman(ePlayer))5747 {5748#if defined(MOD_DIPLOMACY_STFU)5749 SendAILeaderMessage(GetPlayer()->GetID(), ePlayer, DIPLO_UI_STATE_AI_DECLARED_WAR, DIPLO_MESSAGE_DOW_ROOT, ePlayer, LEADERHEAD_ANIM_DECLARE_WAR);5750#else5751 const char* strText = GetDiploStringForMessage(DIPLO_MESSAGE_DOW_ROOT, ePlayer);5752#if defined(MOD_API_PLAYER_LOGS)5753 CvDiplomacyRequests::SendRequest(GetPlayer()->GetID(), ePlayer, DIPLO_UI_STATE_AI_DECLARED_WAR, DIPLO_MESSAGE_DOW_ROOT, ePlayer, strText, LEADERHEAD_ANIM_DECLARE_WAR);5754#else5755 CvDiplomacyRequests::SendRequest(GetPlayer()->GetID(), ePlayer, DIPLO_UI_STATE_AI_DECLARED_WAR, strText, LEADERHEAD_ANIM_DECLARE_WAR);5756#endif5757#endif5758 }5759 } else {5760#endif5761 if(!CvPreGame::isNetworkMultiplayerGame() && GC.getGame().getActivePlayer() == ePlayer)5762 {5763#if defined(MOD_DIPLOMACY_STFU)5764 DisplayAILeaderMessage(GetPlayer()->GetID(), DIPLO_UI_STATE_AI_DECLARED_WAR, DIPLO_MESSAGE_DOW_ROOT, ePlayer, LEADERHEAD_ANIM_DECLARE_WAR);5765#else5766 const char* strText = GetDiploStringForMessage(DIPLO_MESSAGE_DOW_ROOT, ePlayer);5767 gDLL->GameplayDiplomacyAILeaderMessage(GetPlayer()->GetID(), DIPLO_UI_STATE_AI_DECLARED_WAR, strText, LEADERHEAD_ANIM_DECLARE_WAR);5768#endif5769 }5770#if defined(MOD_AI_MP_DIPLOMACY)5771 }5772#endif57735774 LogWarDeclaration(ePlayer);5775 }5776}