Bazaar developer reference

CvDiplomacyAI::DoFromUIDiploEvent(PlayerTypes, FromUIDiploEventTypes, int, int)

Defined in
CvDiplomacyAI.cpp, line 18085
Class
CvDiplomacyAI
Hook name
CivHooks::CvDiplomacyAI_DoFromUIDiploEvent

Hooks

static bool BeforeCvDiplomacyAI_DoFromUIDiploEvent(CvDiplomacyAI* self, PlayerTypes eFromPlayer, FromUIDiploEventTypes eEvent, int iArg1, int iArg2);static void AfterCvDiplomacyAI_DoFromUIDiploEvent(CvDiplomacyAI* self, PlayerTypes eFromPlayer, FromUIDiploEventTypes eEvent, int iArg1, int iArg2);static void ReplaceCvDiplomacyAI_DoFromUIDiploEvent(void (*original)(CvDiplomacyAI*, PlayerTypes, FromUIDiploEventTypes, int, int), CvDiplomacyAI* self, PlayerTypes eFromPlayer, FromUIDiploEventTypes eEvent, int iArg1, int iArg2);CivRegisterBefore<CivHooks::CvDiplomacyAI_DoFromUIDiploEvent>(host, &BeforeCvDiplomacyAI_DoFromUIDiploEvent);CivRegisterAfter<CivHooks::CvDiplomacyAI_DoFromUIDiploEvent>(host, &AfterCvDiplomacyAI_DoFromUIDiploEvent);CivRegisterReplace<CivHooks::CvDiplomacyAI_DoFromUIDiploEvent>(host, &ReplaceCvDiplomacyAI_DoFromUIDiploEvent);

Code

18084/// Message from UI to gameplay about something that should happen with regards to diplomacy18085void CvDiplomacyAI::DoFromUIDiploEvent(PlayerTypes eFromPlayer, FromUIDiploEventTypes eEvent, int iArg1, int iArg2)18086{18087	CvAssertMsg(eEvent >= 0, "DIPLOMACY_AI: Invalid FromUIDiploEventType.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");18088	CvAssertMsg(eEvent < NUM_FROM_UI_DIPLO_EVENTS, "DIPLOMACY_AI: Invalid FromUIDiploEventType.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");1808918090	const char* strText = "";1809118092	TeamTypes eFromTeam = GET_PLAYER(eFromPlayer).getTeam();1809318094	// Are we processing this message on the active player's computer?18095	bool bActivePlayer = GC.getGame().getActivePlayer() == eFromPlayer;1809618097	PlayerTypes eMyPlayer = GetPlayer()->GetID();1809818099	switch(eEvent)18100	{18101		// *********************************************18102		// Player declares war on the AI18103		// *********************************************18104	case FROM_UI_DIPLO_EVENT_HUMAN_DECLARES_WAR:18105	{18106#if defined(MOD_EVENTS_WAR_AND_PEACE)18107			GET_TEAM(eFromTeam).declareWar(GetTeam(), false, eFromPlayer);18108#else18109			GET_TEAM(eFromTeam).declareWar(GetTeam());18110#endif1811118112			if(bActivePlayer)18113			{18114#if defined(MOD_DIPLOMACY_STFU)18115				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_WAR_DECLARED_BY_HUMAN, DIPLO_MESSAGE_ATTACKED_ROOT, LEADERHEAD_ANIM_ATTACKED, iArg1);18116#else18117				strText = GetDiploStringForMessage(DIPLO_MESSAGE_ATTACKED_ROOT);18118				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_WAR_DECLARED_BY_HUMAN, strText, LEADERHEAD_ANIM_ATTACKED, iArg1);18119#endif18120			}1812118122		break;18123	}1812418125	// *********************************************18126	// Player requests peace18127	// *********************************************18128	case FROM_UI_DIPLO_EVENT_HUMAN_NEGOTIATE_PEACE:18129	{18130		if(bActivePlayer)18131		{18132			PeaceTreatyTypes ePeaceTreatyImWillingToOffer = GetPlayer()->GetDiplomacyAI()->GetTreatyWillingToOffer(eFromPlayer);18133			PeaceTreatyTypes ePeaceTreatyImWillingToAccept = GetPlayer()->GetDiplomacyAI()->GetTreatyWillingToAccept(eFromPlayer);1813418135			// Does the AI actually want peace?18136			if(IsWillingToMakePeaceWithHuman(eFromPlayer) &&18137			        ePeaceTreatyImWillingToOffer >= PEACE_TREATY_WHITE_PEACE && ePeaceTreatyImWillingToAccept >= PEACE_TREATY_WHITE_PEACE)18138			{18139				//if (IsWantsPeaceWithPlayer(eFromPlayer))18140				//{18141				//	gDLL->sendChangeWar(GetTeam(), /*bWar*/ false);1814218143				// Now add peace items to the UI deal so that it's ready for us to make an offer18144				//pUIDeal->ClearItems();18145				//pUIDeal->SetPlayer1(eFromPlayer);	// The order of these is very important!18146				//pUIDeal->SetPlayer2(eMyPlayer);	// The order of these is very important!18147				//pUIDeal->AddPeaceTreaty(eMyPlayer, GC.getPEACE_TREATY_LENGTH());18148				//pUIDeal->AddPeaceTreaty(eFromPlayer, GC.getPEACE_TREATY_LENGTH());1814918150				// This is essentially the same as the human opening the trade screen18151				GetPlayer()->GetDealAI()->DoTradeScreenOpened();1815218153#if defined(MOD_DIPLOMACY_STFU)18154				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_TRADE, DIPLO_MESSAGE_PEACE_WHAT_WILL_HUMAN_OFFER, LEADERHEAD_ANIM_LETS_HEAR_IT);18155#else18156				strText = GetDiploStringForMessage(DIPLO_MESSAGE_PEACE_WHAT_WILL_HUMAN_OFFER);18157				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_TRADE, strText, LEADERHEAD_ANIM_LETS_HEAR_IT);18158#endif18159			}18160			else18161			{18162				// Player declared war and wants peace right away.  Uh huh, right.18163				if(GetPlayerNumTurnsAtWar(eFromPlayer) < 1)18164					strText = GetDiploStringForMessage(DIPLO_MESSAGE_TOO_SOON_NO_PEACE);18165				// Don't want peace for some other reason18166				else18167#if defined(MOD_DIPLOMACY_STFU)18168					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_WAR_DECLARED_BY_HUMAN, DIPLO_MESSAGE_NO_PEACE, LEADERHEAD_ANIM_NO);18169#else18170					strText = GetDiploStringForMessage(DIPLO_MESSAGE_NO_PEACE);18171					gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_WAR_DECLARED_BY_HUMAN, strText, LEADERHEAD_ANIM_NO);18172#endif18173			}18174		}1817518176		break;18177	}1817818179	// *********************************************18180	// Player wants to discuss something with the AI18181	// *********************************************18182	case FROM_UI_DIPLO_EVENT_HUMAN_WANTS_DISCUSSION:18183	{18184		if(bActivePlayer)18185		{18186#if defined(MOD_DIPLOMACY_STFU)18187			GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, DIPLO_MESSAGE_LETS_HEAR_IT, LEADERHEAD_ANIM_LETS_HEAR_IT);18188#else18189			strText = GetDiploStringForMessage(DIPLO_MESSAGE_LETS_HEAR_IT);18190			gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, strText, LEADERHEAD_ANIM_LETS_HEAR_IT);18191#endif18192		}1819318194		break;18195	}1819618197	// *********************************************18198	// Player told the AI to not settle near him18199	// *********************************************18200	case FROM_UI_DIPLO_EVENT_HUMAN_DISCUSSION_DONT_SETTLE:18201	{18202		// Player has asked this before18203		if(IsDontSettleMessageTooSoon(eFromPlayer))18204		{18205			if(bActivePlayer)18206			{18207#if defined(MOD_DIPLOMACY_STFU)18208				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, DIPLO_MESSAGE_REPEAT_NO, LEADERHEAD_ANIM_NO);18209#else18210				strText = GetDiploStringForMessage(DIPLO_MESSAGE_REPEAT_NO);18211				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, strText, LEADERHEAD_ANIM_NO);18212#endif18213			}18214		}18215		// AI gives a new answer18216		else18217		{18218			SetPlayerNoSettleRequestCounter(eFromPlayer, 0);1821918220			bool bAcceptable;1822118222			// Teammates18223			if(GetPlayer()->getTeam() == GET_PLAYER(eFromPlayer).getTeam())18224				bAcceptable = true;18225			// Not teammates18226			else18227				bAcceptable = IsDontSettleAcceptable(eFromPlayer);1822818229			if(bAcceptable)18230				SetPlayerNoSettleRequestAccepted(eFromPlayer, true);1823118232			if(bActivePlayer)18233			{18234				if(bAcceptable)18235				{18236#if defined(MOD_DIPLOMACY_STFU)18237					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, DIPLO_MESSAGE_DONT_SETTLE_YES, LEADERHEAD_ANIM_NEGATIVE);18238#else18239					strText = GetDiploStringForMessage(DIPLO_MESSAGE_DONT_SETTLE_YES);18240					gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, strText, LEADERHEAD_ANIM_NEGATIVE);18241#endif18242				}18243				else18244				{18245#if defined(MOD_DIPLOMACY_STFU)18246					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, DIPLO_MESSAGE_DONT_SETTLE_NO, LEADERHEAD_ANIM_NO);18247#else18248					strText = GetDiploStringForMessage(DIPLO_MESSAGE_DONT_SETTLE_NO);18249					gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, strText, LEADERHEAD_ANIM_NO);18250#endif18251				}18252			}18253		}1825418255		break;18256	}1825718258	// *********************************************18259	// Player told the AI to not spy on him18260	// *********************************************18261	case FROM_UI_DIPLO_EVENT_HUMAN_DISCUSSION_STOP_SPYING:18262	{18263		// Player has asked this before18264		if(IsStopSpyingMessageTooSoon(eFromPlayer))18265		{18266			if(bActivePlayer)18267			{18268#if defined(MOD_DIPLOMACY_STFU)18269				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, DIPLO_MESSAGE_REPEAT_NO, LEADERHEAD_ANIM_NO);18270#else18271				strText = GetDiploStringForMessage(DIPLO_MESSAGE_REPEAT_NO);18272				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, strText, LEADERHEAD_ANIM_NO);18273#endif18274			}18275		}18276		// AI gives a new answer18277		else18278		{18279			SetPlayerStopSpyingRequestCounter(eFromPlayer, 0);1828018281			bool bAcceptable;1828218283			// Teammates18284			if(GetPlayer()->getTeam() == GET_PLAYER(eFromPlayer).getTeam())18285			{18286				bAcceptable = true;18287			}18288			// Not teammates18289			else18290			{18291				bAcceptable = IsStopSpyingAcceptable(eFromPlayer);18292			}1829318294			if(bAcceptable)18295			{18296				SetPlayerStopSpyingRequestAccepted(eFromPlayer, true);18297				m_pPlayer->GetEspionageAI()->EvaluateSpiesAssignedToTargetPlayer(eFromPlayer);18298			}1829918300			if(bActivePlayer)18301			{18302				DiploUIStateTypes eStateType = DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED;18303				if(iArg1 == 1)18304				{18305					eStateType = DIPLO_UI_STATE_BLANK_DISCUSSION_RETURN_TO_ROOT;18306				}1830718308#if defined(MOD_DIPLOMACY_STFU)18309				if (bAcceptable) {18310					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, eStateType, DIPLO_MESSAGE_STOP_SPYING_YES, LEADERHEAD_ANIM_NEGATIVE);18311				} else {18312					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, eStateType, DIPLO_MESSAGE_STOP_SPYING_NO, LEADERHEAD_ANIM_NO);18313				}18314#else18315				LeaderheadAnimationTypes eAnimType;1831618317				if(bAcceptable)18318				{18319					strText = GetDiploStringForMessage(DIPLO_MESSAGE_STOP_SPYING_YES);18320					eAnimType = LEADERHEAD_ANIM_NEGATIVE;18321				}18322				else18323				{18324					strText = GetDiploStringForMessage(DIPLO_MESSAGE_STOP_SPYING_NO);18325					eAnimType = LEADERHEAD_ANIM_NO;18326				}1832718328				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, eStateType, strText, eAnimType);18329#endif18330			}18331		}1833218333		break;18334	}1833518336	// *********************************************18337	// Player told the AI to not spread their religion18338	// *********************************************18339	case FROM_UI_DIPLO_EVENT_HUMAN_DISCUSSION_STOP_SPREADING_RELIGION:18340		{18341			if (bActivePlayer)18342			{	18343				SetPlayerAskedNotToConvert(eFromPlayer, true);18344				DiploUIStateTypes eStateType = DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED;18345				if(iArg1 == 1)18346				{18347					eStateType = DIPLO_UI_STATE_BLANK_DISCUSSION_RETURN_TO_ROOT;18348				}1834918350				bool bIsYes = IsStopSpreadingReligionAcceptable(eFromPlayer);18351				SetPlayerAgreeNotToConvert(eFromPlayer, bIsYes);18352				18353#if defined(MOD_DIPLOMACY_STFU)18354				if (bIsYes) {					18355					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, eStateType, DIPLO_MESSAGE_STOP_CONVERSIONS_AGREE, LEADERHEAD_ANIM_NEGATIVE);18356				} else {18357					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, eStateType, DIPLO_MESSAGE_STOP_CONVERSIONS_DISAGREE, LEADERHEAD_ANIM_NO);18358				}18359#else18360				LeaderheadAnimationTypes eAnimType;1836118362				if (bIsYes)18363				{					18364					strText = GetDiploStringForMessage(DIPLO_MESSAGE_STOP_CONVERSIONS_AGREE);18365					eAnimType = LEADERHEAD_ANIM_NEGATIVE;18366				}18367				else18368				{18369					strText = GetDiploStringForMessage(DIPLO_MESSAGE_STOP_CONVERSIONS_DISAGREE);18370					eAnimType = LEADERHEAD_ANIM_NO;18371				}1837218373				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, eStateType, strText, eAnimType);18374#endif18375			}18376			break;18377		}1837818379		// *********************************************18380		// Player told the AI to not dig up their yard18381		// *********************************************18382	case FROM_UI_DIPLO_EVENT_HUMAN_DISCUSSION_STOP_DIGGING:18383		{18384			if (bActivePlayer)18385			{	18386				SetPlayerAskedNotToDig(eFromPlayer, true);18387				DiploUIStateTypes eStateType = DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED;18388				if(iArg1 == 1)18389				{18390					eStateType = DIPLO_UI_STATE_BLANK_DISCUSSION_RETURN_TO_ROOT;18391				}1839218393				bool bIsYes = IsStopDiggingAcceptable(eFromPlayer);18394				SetPlayerAgreeNotToDig(eFromPlayer, bIsYes);18395				18396#if defined(MOD_DIPLOMACY_STFU)18397				if (bIsYes) {					18398					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, eStateType, DIPLO_MESSAGE_STOP_DIGGING_AGREE, LEADERHEAD_ANIM_NEGATIVE);18399				} else {18400					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, eStateType, DIPLO_MESSAGE_STOP_DIGGING_DISAGREE, LEADERHEAD_ANIM_NO);18401				}18402#else18403				LeaderheadAnimationTypes eAnimType;1840418405				if (bIsYes)18406				{					18407					strText = GetDiploStringForMessage(DIPLO_MESSAGE_STOP_DIGGING_AGREE);18408					eAnimType = LEADERHEAD_ANIM_NEGATIVE;18409				}18410				else18411				{18412					strText = GetDiploStringForMessage(DIPLO_MESSAGE_STOP_DIGGING_DISAGREE);18413					eAnimType = LEADERHEAD_ANIM_NO;18414				}1841518416				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, eStateType, strText, eAnimType);18417#endif18418			}18419			break;18420		}1842118422	// *********************************************18423	// Player asked if the AI will work with him18424	// *********************************************18425	case FROM_UI_DIPLO_EVENT_HUMAN_DISCUSSION_WORK_WITH_US:18426	{18427		// AI hasn't known the human for long enough yet18428		if(IsTooEarlyForDoF(eFromPlayer))18429		{18430			SetDoFCounter(eFromPlayer, 0);18431			GET_PLAYER(eFromPlayer).GetDiplomacyAI()->SetDoFCounter(eMyPlayer, 0);1843218433			if(bActivePlayer)18434			{18435#if defined(MOD_DIPLOMACY_STFU)18436				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, DIPLO_MESSAGE_TOO_SOON_FOR_DOF, LEADERHEAD_ANIM_NO);18437#else18438				strText = GetDiploStringForMessage(DIPLO_MESSAGE_TOO_SOON_FOR_DOF);18439				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, strText, LEADERHEAD_ANIM_NO);18440#endif18441			}18442		}18443		// Player has asked this before18444		else if(IsDoFMessageTooSoon(eFromPlayer))18445		{18446			if(bActivePlayer)18447			{18448#if defined(MOD_DIPLOMACY_STFU)18449				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, DIPLO_MESSAGE_REPEAT_NO, LEADERHEAD_ANIM_NO);18450#else18451				strText = GetDiploStringForMessage(DIPLO_MESSAGE_REPEAT_NO);18452				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, strText, LEADERHEAD_ANIM_NO);18453#endif18454			}18455		}18456		// AI gives a new answer18457		else18458		{18459			SetDoFCounter(eFromPlayer, 0);18460			GET_PLAYER(eFromPlayer).GetDiplomacyAI()->SetDoFCounter(eMyPlayer, 0);1846118462			bool bAcceptable = IsDoFAcceptable(eFromPlayer);18463			if(bAcceptable)18464			{18465				SetDoFAccepted(eFromPlayer, true);18466				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->SetDoFAccepted(eMyPlayer, true);18467			}1846818469			if(bActivePlayer)18470			{18471				if(bAcceptable)18472				{18473#if defined(MOD_DIPLOMACY_STFU)18474					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, DIPLO_MESSAGE_WORK_WITH_US_YES, LEADERHEAD_ANIM_POSITIVE);18475#else18476					strText = GetDiploStringForMessage(DIPLO_MESSAGE_WORK_WITH_US_YES);18477					gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, strText, LEADERHEAD_ANIM_POSITIVE);18478#endif18479				}18480				else18481				{18482#if defined(MOD_DIPLOMACY_STFU)18483					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, DIPLO_MESSAGE_WORK_WITH_US_NO, LEADERHEAD_ANIM_NO);18484#else18485					strText = GetDiploStringForMessage(DIPLO_MESSAGE_WORK_WITH_US_NO);18486					gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, strText, LEADERHEAD_ANIM_NO);18487#endif18488				}18489			}18490		}1849118492		break;18493	}1849418495	// *********************************************18496	// Player said he's done working with the AI18497	// *********************************************18498	case FROM_UI_DIPLO_EVENT_HUMAN_DISCUSSION_END_WORK_WITH_US:18499	{18500		SetDoFAccepted(eFromPlayer, false);18501		GET_PLAYER(eFromPlayer).GetDiplomacyAI()->SetDoFAccepted(eMyPlayer, false);18502		SetDoFCounter(eFromPlayer, -666);18503		GET_PLAYER(eFromPlayer).GetDiplomacyAI()->SetDoFCounter(eMyPlayer, -666);1850418505		if(bActivePlayer)18506		{18507#if defined(MOD_DIPLOMACY_STFU)18508			GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_DISAPPOINTED, LEADERHEAD_ANIM_NEGATIVE);18509#else18510			strText = GetDiploStringForMessage(DIPLO_MESSAGE_DISAPPOINTED);18511			gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);18512#endif18513		}1851418515		break;18516	}1851718518	// *********************************************18519	// Human refused to give in to demand18520	// *********************************************18521	case FROM_UI_DIPLO_EVENT_DEMAND_HUMAN_REFUSAL:18522	{18523		// Does the AI declare war?18524		bool bDeclareWar = false;1852518526		if(GC.getGame().getJonRandNum(100, "Human demand refusal war rand.") < 50)18527		{18528			bDeclareWar = true;1852918530#if defined(MOD_EVENTS_WAR_AND_PEACE)18531			GET_TEAM(GetTeam()).declareWar(GET_PLAYER(eFromPlayer).getTeam(), false, GetPlayer()->GetID());18532#else18533			GET_TEAM(GetTeam()).declareWar(GET_PLAYER(eFromPlayer).getTeam());18534#endif18535			m_pPlayer->GetCitySpecializationAI()->SetSpecializationsDirty(SPECIALIZATION_UPDATE_NOW_AT_WAR);18536			LogWarDeclaration(eFromPlayer);1853718538			GetPlayer()->GetMilitaryAI()->RequestBasicAttack(eFromPlayer, 3);18539		}1854018541		if(bActivePlayer)18542		{18543			if(bDeclareWar)18544			{18545#if defined(MOD_DIPLOMACY_STFU)18546				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_WAR_DEMAND_REFUSED, LEADERHEAD_ANIM_HATE_NEGATIVE);18547#else18548				strText = GetDiploStringForMessage(DIPLO_MESSAGE_WAR_DEMAND_REFUSED);18549				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_HATE_NEGATIVE);18550#endif18551			}18552			else18553			{18554#if defined(MOD_DIPLOMACY_STFU)18555				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_MEAN_HUMAN, DIPLO_MESSAGE_SO_BE_IT, LEADERHEAD_ANIM_HATE_NEGATIVE);18556#else18557				strText = GetDiploStringForMessage(DIPLO_MESSAGE_SO_BE_IT);18558				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_MEAN_HUMAN, strText, LEADERHEAD_ANIM_HATE_NEGATIVE);18559#endif18560			}18561		}1856218563		break;18564	}1856518566	// *********************************************18567	// Human refused to give in to a request18568	// *********************************************18569	case FROM_UI_DIPLO_EVENT_REQUEST_HUMAN_REFUSAL:18570	{18571		GetPlayer()->GetDiplomacyAI()->ChangeRecentAssistValue(eFromPlayer, iArg1);1857218573		if(bActivePlayer)18574		{18575#if defined(MOD_DIPLOMACY_STFU)18576			GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_MEAN_HUMAN, DIPLO_MESSAGE_DISAPPOINTED, LEADERHEAD_ANIM_NEGATIVE);18577#else18578			strText = GetDiploStringForMessage(DIPLO_MESSAGE_DISAPPOINTED);18579			gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_MEAN_HUMAN, strText, LEADERHEAD_ANIM_NEGATIVE);18580#endif18581		}1858218583		break;18584	}1858518586	// *********************************************18587	// AI is telling us he sees our military buildup on his borders18588	// *********************************************18589	case FROM_UI_DIPLO_EVENT_AGGRESSIVE_MILITARY_WARNING_RESPONSE:18590	{18591		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1859218593		// Human says he means no harm18594		if(iArg1 == 1)18595		{18596			SetPlayerMadeMilitaryPromise(eFromPlayer, true);18597			SetPlayerMilitaryPromiseCounter(eFromPlayer, 0);1859818599			if(bActivePlayer)18600			{18601#if defined(MOD_DIPLOMACY_STFU)18602				if (IsActHostileTowardsHuman(eFromPlayer)) {18603					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_HOSTILE_AGGRESSIVE_MILITARY_WARNING_GOOD, LEADERHEAD_ANIM_POSITIVE);18604				} else {18605					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_AGGRESSIVE_MILITARY_WARNING_GOOD, LEADERHEAD_ANIM_POSITIVE);18606				}18607#else18608				if(IsActHostileTowardsHuman(eFromPlayer))18609					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_HOSTILE_AGGRESSIVE_MILITARY_WARNING_GOOD);18610				else18611					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_AGGRESSIVE_MILITARY_WARNING_GOOD);1861218613				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);18614#endif18615			}18616		}18617		// Human told the AI to die18618		else if(iArg1 == 2)18619		{18620#if defined(MOD_EVENTS_WAR_AND_PEACE)18621			GET_TEAM(eFromTeam).declareWar(GetTeam(), false, eFromPlayer);18622#else18623			GET_TEAM(eFromTeam).declareWar(GetTeam());18624#endif1862518626			SetPlayerIgnoredMilitaryPromise(eFromPlayer, true);1862718628			if(bActivePlayer)18629			{18630#if defined(MOD_DIPLOMACY_STFU)18631				if (IsActHostileTowardsHuman(eFromPlayer)) {18632					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_HOSTILE_AGGRESSIVE_MILITARY_WARNING_BAD, LEADERHEAD_ANIM_HATE_NEGATIVE);18633				} else {18634					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_AGGRESSIVE_MILITARY_WARNING_BAD, LEADERHEAD_ANIM_HATE_NEGATIVE);18635				}18636#else18637				if(IsActHostileTowardsHuman(eFromPlayer))18638					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_HOSTILE_AGGRESSIVE_MILITARY_WARNING_BAD);18639				else18640					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_AGGRESSIVE_MILITARY_WARNING_BAD);1864118642				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_HATE_NEGATIVE);18643#endif18644			}18645		}1864618647		break;18648	}1864918650	// *********************************************18651	// AI has attacked a Minor the human is friends with, what did the human say in response?18652	// *********************************************18653	case FROM_UI_DIPLO_EVENT_I_ATTACKED_YOUR_MINOR_CIV_RESPONSE:18654	{18655		// **** NOTE **** - iArg1 is BUTTON ID,  iArg2 is MINOR ID from DiscussionDialog.lua18656		PlayerTypes eMinor = (PlayerTypes) iArg2;18657		CvAssertMsg(eMinor >= MAX_MAJOR_CIVS, "DIPLOMACY_AI: Invalid Player Index.  Please send Anton your save file and version.");18658		CvAssertMsg(eMinor < MAX_CIV_PLAYERS, "DIPLOMACY_AI: Invalid Player Index.  Please send Anton your save file and version.");18659		if (!(eMinor >= MAX_MAJOR_CIVS && eMinor < MAX_CIV_PLAYERS))18660		{18661			// Fail gracefully, allow UI to continue18662#if defined(MOD_DIPLOMACY_STFU)18663			DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_HOSTILE_WE_ATTACKED_MINOR_BAD, LEADERHEAD_ANIM_NEGATIVE);18664#else18665			strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_HOSTILE_WE_ATTACKED_MINOR_BAD);18666			gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);18667#endif18668			break;18669		}1867018671		CvPlayer* pMinor = &GET_PLAYER(eMinor);18672		CvAssertMsg(pMinor, "Error triggering gameplay effects for diplomacy event involving a Protected city-state. Please send Anton your save file and version.");18673		if (!pMinor)18674		{18675			// Fail gracefully, allow UI to continue18676#if defined(MOD_DIPLOMACY_STFU)18677			DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_HOSTILE_WE_ATTACKED_MINOR_BAD, LEADERHEAD_ANIM_NEGATIVE);18678#else18679			strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_HOSTILE_WE_ATTACKED_MINOR_BAD);18680			gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);18681#endif18682			break;18683		}18684		18685		CvAssertMsg(pMinor->GetMinorCivAI()->IsProtectedByMajor(eFromPlayer), "Diplomacy event involving a Protected city-state when there was no Pledge active. Please send Anton your save file and Version.");1868618687		// Human says he forgives the AI18688		if(iArg1 == 1)18689		{18690			GC.getGame().DoMinorPledgeProtection(eFromPlayer, eMinor, false, true); // Pledge is broken!18691			18692			if (bActivePlayer)18693			{18694#if defined(MOD_DIPLOMACY_STFU)18695				if (IsActHostileTowardsHuman(eFromPlayer)) {18696					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_HOSTILE_WE_ATTACKED_MINOR_GOOD, LEADERHEAD_ANIM_POSITIVE);18697				} else {18698					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_WE_ATTACKED_MINOR_GOOD, LEADERHEAD_ANIM_POSITIVE);18699				}18700#else18701				if(IsActHostileTowardsHuman(eFromPlayer))18702					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_HOSTILE_WE_ATTACKED_MINOR_GOOD);18703				else18704					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_WE_ATTACKED_MINOR_GOOD);1870518706				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);18707#endif18708			}18709		}18710		// Human said he'd get revenge18711		else if(iArg1 == 2)18712		{18713			SetOtherPlayerTurnsSinceSidedWithProtectedMinor(eFromPlayer, 0);1871418715			if (bActivePlayer)18716			{18717#if defined(MOD_DIPLOMACY_STFU)18718				if (IsActHostileTowardsHuman(eFromPlayer)) {18719					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_HOSTILE_WE_ATTACKED_MINOR_BAD, LEADERHEAD_ANIM_NEGATIVE);18720				} else {18721					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_WE_ATTACKED_MINOR_BAD, LEADERHEAD_ANIM_NEGATIVE);18722				}18723#else18724				if(IsActHostileTowardsHuman(eFromPlayer))18725					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_HOSTILE_WE_ATTACKED_MINOR_BAD);18726				else18727					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_WE_ATTACKED_MINOR_BAD);1872818729				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);18730#endif18731			}18732		}1873318734		break;18735	}1873618737	// *********************************************18738	// AI has bullied a Minor the human has a PtP with, what did the human say in response?18739	// *********************************************18740	case FROM_UI_DIPLO_EVENT_I_BULLIED_YOUR_MINOR_CIV_RESPONSE:18741	{18742		// **** NOTE **** - iArg1 is BUTTON ID,  iArg2 is MINOR ID from DiscussionDialog.lua18743		PlayerTypes eMinor = (PlayerTypes) iArg2;18744		CvAssertMsg(eMinor >= MAX_MAJOR_CIVS, "DIPLOMACY_AI: Invalid Player Index.  Please send Anton your save file and version.");18745		CvAssertMsg(eMinor < MAX_CIV_PLAYERS, "DIPLOMACY_AI: Invalid Player Index.  Please send Anton your save file and version.");18746		if (!(eMinor >= MAX_MAJOR_CIVS && eMinor < MAX_CIV_PLAYERS))18747		{18748			// Fail gracefully, allow UI to continue18749#if defined(MOD_DIPLOMACY_STFU)18750			DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_HOSTILE_WE_ATTACKED_MINOR_BAD, LEADERHEAD_ANIM_NEGATIVE);18751#else18752			strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_HOSTILE_WE_ATTACKED_MINOR_BAD);18753			gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);18754#endif18755			break;18756		}18757		18758		CvPlayer* pMinor = &GET_PLAYER(eMinor);18759		CvAssertMsg(pMinor, "Error triggering gameplay effects for breaking a Pledge to Protect a city-state. Please send Anton your save file and version.");18760		if (!pMinor)18761		{18762			// Fail gracefully, allow UI to continue18763#if defined(MOD_DIPLOMACY_STFU)18764			DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_HOSTILE_WE_ATTACKED_MINOR_BAD, LEADERHEAD_ANIM_NEGATIVE);18765#else18766			strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_HOSTILE_WE_ATTACKED_MINOR_BAD);18767			gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);18768#endif18769			break;18770		}18771		18772		CvAssertMsg(pMinor->GetMinorCivAI()->IsProtectedByMajor(eFromPlayer), "Diplomacy event involving a Protected city-state when there was no Pledge active. Please send Anton your save file and Version.");1877318774		// Human says he forgives the AI18775		if(iArg1 == 1)18776		{18777			GC.getGame().DoMinorPledgeProtection(eFromPlayer, eMinor, false, true); // Pledge is broken!18778		18779			if (bActivePlayer)18780			{18781#if defined(MOD_DIPLOMACY_STFU)18782				if (IsActHostileTowardsHuman(eFromPlayer)) {18783					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_HOSTILE_WE_BULLIED_MINOR_GOOD, LEADERHEAD_ANIM_POSITIVE);18784				} else {18785					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_WE_BULLIED_MINOR_GOOD, LEADERHEAD_ANIM_POSITIVE);18786				}18787#else18788				if(IsActHostileTowardsHuman(eFromPlayer))18789					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_HOSTILE_WE_BULLIED_MINOR_GOOD);18790				else18791					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_WE_BULLIED_MINOR_GOOD);1879218793				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);18794#endif18795			}18796		}18797		// Human said he'd get revenge18798		else if(iArg1 == 2)18799		{18800			SetOtherPlayerTurnsSinceSidedWithProtectedMinor(eFromPlayer, 0);1880118802			if (bActivePlayer)18803			{18804#if defined(MOD_DIPLOMACY_STFU)18805				if (IsActHostileTowardsHuman(eFromPlayer)) {18806					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_HOSTILE_WE_BULLIED_MINOR_BAD, LEADERHEAD_ANIM_NEGATIVE);18807				} else {18808					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_WE_BULLIED_MINOR_BAD, LEADERHEAD_ANIM_NEGATIVE);18809				}18810#else18811				if(IsActHostileTowardsHuman(eFromPlayer))18812					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_HOSTILE_WE_BULLIED_MINOR_BAD);18813				else18814					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_WE_BULLIED_MINOR_BAD);1881518816				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);18817#endif18818			}18819		}1882018821		break;18822	}1882318824	// *********************************************18825	// AI warned human about attacking a protected Minor18826	// *********************************************18827	case FROM_UI_DIPLO_EVENT_ATTACKED_MINOR_RESPONSE:18828	{18829		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1883018831		// Human told the AI it's none of his business18832		if(iArg1 == 1)18833		{18834			SetPlayerIgnoredAttackCityStatePromise(eFromPlayer, true);1883518836			if(bActivePlayer)18837			{18838#if defined(MOD_DIPLOMACY_STFU)18839				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_ATTACKED_MINOR_BAD, LEADERHEAD_ANIM_HATE_NEGATIVE);18840#else18841				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_ATTACKED_MINOR_BAD);18842				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_HATE_NEGATIVE);18843#endif18844			}18845		}18846		// Human said he'd withdraw18847		else if(iArg1 == 2)18848		{18849			SetPlayerMadeAttackCityStatePromise(eFromPlayer, true);1885018851			if(bActivePlayer)18852			{18853#if defined(MOD_DIPLOMACY_STFU)18854				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_ATTACKED_MINOR_GOOD, LEADERHEAD_ANIM_POSITIVE);18855#else18856				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_ATTACKED_MINOR_GOOD);18857				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);18858#endif18859			}18860		}1886118862		break;18863	}1886418865	// *********************************************18866	// AI is mad at human for killing a protected Minor18867	// *********************************************18868	case FROM_UI_DIPLO_EVENT_KILLED_MINOR_RESPONSE:18869	{18870		break;18871	}1887218873	// *********************************************18874	// AI warned human about bullying a protected Minor18875	// *********************************************18876	case FROM_UI_DIPLO_EVENT_BULLIED_MINOR_RESPONSE:18877	{18878		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1887918880		// Human told the AI it's none of his business18881		if(iArg1 == 1)18882		{18883			SetPlayerIgnoredBullyCityStatePromise(eFromPlayer, true);1888418885			if(bActivePlayer)18886			{18887#if defined(MOD_DIPLOMACY_STFU)18888				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_BULLIED_MINOR_BAD, LEADERHEAD_ANIM_HATE_NEGATIVE);18889#else18890				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_BULLIED_MINOR_BAD);18891				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_HATE_NEGATIVE);18892#endif18893			}18894		}18895		// Human said he'd withdraw18896		else if(iArg1 == 2)18897		{18898			SetPlayerMadeBullyCityStatePromise(eFromPlayer, true);1889918900			if(bActivePlayer)18901			{18902#if defined(MOD_DIPLOMACY_STFU)18903				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_BULLIED_MINOR_GOOD, LEADERHEAD_ANIM_POSITIVE);18904#else18905				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_BULLIED_MINOR_GOOD);18906				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);18907#endif18908			}18909		}1891018911		break;18912	}1891318914	// *********************************************18915	// AI is seriously warning the human about his expansion18916	// *********************************************18917	case FROM_UI_DIPLO_EVENT_EXPANSION_SERIOUS_WARNING_RESPONSE:18918	{18919		break;18920	}1892118922	// *********************************************18923	// AI warned human about his expansion18924	// *********************************************18925	case FROM_UI_DIPLO_EVENT_EXPANSION_WARNING_RESPONSE:18926	{18927		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1892818929		// Human told the AI it's none of his business18930		if(iArg1 == 1)18931		{18932			if (!IsPlayerIgnoredExpansionPromise(eFromPlayer))18933			{18934				SetIgnoredExpansionPromiseValue(eFromPlayer, GC.getOPINION_WEIGHT_EXPANSION_PROMISE_IGNORED_MAX() * GC.getGame().getGameSpeedInfo().getOpinionDurationPercent());18935			}18936			SetPlayerIgnoredExpansionPromise(eFromPlayer, true);1893718938			if(bActivePlayer)18939			{18940#if defined(MOD_DIPLOMACY_STFU)18941				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_EXPANSION_WARNING_BAD, LEADERHEAD_ANIM_HATE_NEGATIVE);18942#else18943				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_EXPANSION_WARNING_BAD);18944				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_HATE_NEGATIVE);18945#endif18946			}18947		}18948		// Human said he wouldn't settle near us again18949		else if(iArg1 == 2)18950		{18951			SetPlayerMadeExpansionPromise(eFromPlayer, true);18952			SetPlayerExpansionPromiseData(eFromPlayer, GetExpansionAggressivePosture(eFromPlayer));1895318954			if(bActivePlayer)18955			{18956#if defined(MOD_DIPLOMACY_STFU)18957				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_EXPANSION_WARNING_GOOD, LEADERHEAD_ANIM_POSITIVE);18958#else18959				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_EXPANSION_WARNING_GOOD);18960				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);18961#endif18962			}18963		}1896418965		break;18966	}1896718968	// *********************************************18969	// AI is seriously warning the human about his plot buying18970	// *********************************************18971	case FROM_UI_DIPLO_EVENT_PLOT_BUYING_SERIOUS_WARNING_RESPONSE:18972	{18973		break;18974	}1897518976	// *********************************************18977	// AI warned human about his plot buying18978	// *********************************************18979	case FROM_UI_DIPLO_EVENT_PLOT_BUYING_WARNING_RESPONSE:18980	{18981		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1898218983		// Human told the AI it's none of his business18984		if(iArg1 == 1)18985		{18986			if (!IsPlayerIgnoredBorderPromise(eFromPlayer))18987			{18988				SetIgnoredBorderPromiseValue(eFromPlayer, GC.getOPINION_WEIGHT_BORDER_PROMISE_IGNORED_MAX() * GC.getGame().getGameSpeedInfo().getOpinionDurationPercent());18989			}18990			SetPlayerIgnoredBorderPromise(eFromPlayer, true);1899118992			if(bActivePlayer)18993			{18994#if defined(MOD_DIPLOMACY_STFU)18995				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_PLOT_BUYING_WARNING_BAD, LEADERHEAD_ANIM_HATE_NEGATIVE);18996#else18997				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_PLOT_BUYING_WARNING_BAD);18998				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_HATE_NEGATIVE);18999#endif19000			}19001		}19002		// Human said he wouldn't buy land near us again19003		else if(iArg1 == 2)19004		{19005			SetPlayerMadeBorderPromise(eFromPlayer, true);19006			SetPlayerBorderPromiseData(eFromPlayer, GetPlotBuyingAggressivePosture(eFromPlayer));1900719008			if(bActivePlayer)19009			{19010#if defined(MOD_DIPLOMACY_STFU)19011				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_PLOT_BUYING_WARNING_GOOD, LEADERHEAD_ANIM_POSITIVE);19012#else19013				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_PLOT_BUYING_WARNING_GOOD);19014				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19015#endif19016			}19017		}1901819019		break;19020	}1902119022	// *********************************************19023	// AI asked human if he'd like to work together19024	// *********************************************19025	case FROM_UI_DIPLO_EVENT_WORK_WITH_US_RESPONSE:19026	{19027		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1902819029		SetDoFCounter(eFromPlayer, 0);19030		GET_PLAYER(eFromPlayer).GetDiplomacyAI()->SetDoFCounter(eMyPlayer, 0);1903119032		// Human agrees19033		if(iArg1 == 1)19034		{19035			SetDoFAccepted(eFromPlayer, true);19036			GET_PLAYER(eFromPlayer).GetDiplomacyAI()->SetDoFAccepted(eMyPlayer, true);1903719038			if(bActivePlayer)19039			{19040#if defined(MOD_DIPLOMACY_STFU)19041				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_PLEASED, LEADERHEAD_ANIM_POSITIVE);19042#else19043				strText = GetDiploStringForMessage(DIPLO_MESSAGE_PLEASED);19044				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19045#endif19046			}19047		}19048		// Human says sorry, no19049		else if(iArg1 == 2)19050		{19051			if(bActivePlayer)19052			{19053#if defined(MOD_DIPLOMACY_STFU)19054				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_DISAPPOINTED, LEADERHEAD_ANIM_NEGATIVE);19055#else19056				strText = GetDiploStringForMessage(DIPLO_MESSAGE_DISAPPOINTED);19057				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);19058#endif19059			}19060		}1906119062		break;19063	}1906419065	// *********************************************19066	// AI asked human if he'd like to work against someone19067	// *********************************************19068	//case FROM_UI_DIPLO_EVENT_WORK_AGAINST_SOMEONE_RESPONSE:19069	//	{19070	//		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1907119072	//		PlayerTypes eAgainstPlayer = (PlayerTypes) iArg2;1907319074	//		SetWorkingAgainstPlayerCounter(eFromPlayer, eAgainstPlayer, 0);19075	//		GET_PLAYER(eFromPlayer).GetDiplomacyAI()->SetWorkingAgainstPlayerCounter(eMyPlayer, eAgainstPlayer, 0);1907619077	//		// Human says sorry, no19078	//		if (iArg1 == 1 || iArg1 == 2)19079	//		{19080	//			if (bActivePlayer)19081	//			{19082	//				strText = GetDiploStringForMessage(DIPLO_MESSAGE_DISAPPOINTED);19083	//				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);19084	//			}19085	//		}19086	//		// Human agrees19087	//		else if (iArg1 == 3)19088	//		{19089	//			SetWorkingAgainstPlayerAccepted(eFromPlayer, eAgainstPlayer, true);19090	//			GET_PLAYER(eFromPlayer).GetDiplomacyAI()->SetWorkingAgainstPlayerAccepted(eMyPlayer, eAgainstPlayer, true);1909119092	//			if (bActivePlayer)19093	//			{19094	//				strText = GetDiploStringForMessage(DIPLO_MESSAGE_PLEASED);19095	//				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19096	//			}19097	//		}1909819099	//		break;19100	//	}1910119102	// *********************************************19103	// Human denounced us!19104	// *********************************************19105	case FROM_UI_DIPLO_EVENT_DENOUNCE:19106	{19107		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1910819109		GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DoDenouncePlayer(eMyPlayer);1911019111		if(bActivePlayer)19112		{19113#if defined(MOD_DIPLOMACY_STFU)19114			GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_RESPONSE_TO_BEING_DENOUNCED, LEADERHEAD_ANIM_NEGATIVE);19115#else19116			strText = GetDiploStringForMessage(DIPLO_MESSAGE_RESPONSE_TO_BEING_DENOUNCED);19117			gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);19118#endif19119		}1912019121		break;19122	}1912319124	// *********************************************19125	// Human asked AI to go to war against someone19126	// *********************************************19127	case FROM_UI_DIPLO_EVENT_COOP_WAR_OFFER:19128	{19129		// **** NOTE **** - iArg1 is Player ID from DiscussionDialog.lua1913019131		PlayerTypes eAgainstPlayer = (PlayerTypes) iArg1;1913219133		// Too soon?19134		if(IsCoopWarMessageTooSoon(eFromPlayer, eAgainstPlayer))19135		{19136			if(bActivePlayer)19137			{19138#if defined(MOD_DIPLOMACY_STFU)19139				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_REPEAT_NO, LEADERHEAD_ANIM_NEGATIVE);19140#else19141				strText = GetDiploStringForMessage(DIPLO_MESSAGE_REPEAT_NO);19142				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);19143#endif19144			}19145		}19146		else19147		{19148			// Set the counter (this will handle rejection as well)19149			SetCoopWarCounter(eFromPlayer, eAgainstPlayer, 0);1915019151			CoopWarStates eAcceptableState;1915219153			// Teammates19154			if(GetPlayer()->getTeam() == GET_PLAYER(eFromPlayer).getTeam())19155				eAcceptableState = COOP_WAR_STATE_SOON;19156			// Not teammates19157			else19158				eAcceptableState = GetWillingToAgreeToCoopWarState(eFromPlayer, eAgainstPlayer);1915919160			SetCoopWarAcceptedState(eFromPlayer, eAgainstPlayer, eAcceptableState);1916119162			// Accepted19163			if(eAcceptableState == COOP_WAR_STATE_ACCEPTED)19164			{19165				// AI declaration19166				DeclareWar(eAgainstPlayer);19167				GetPlayer()->GetMilitaryAI()->RequestBasicAttack(eAgainstPlayer, 1);1916819169				// Human declaration19170				TeamTypes eAgainstTeam = GET_PLAYER(eAgainstPlayer).getTeam();19171#if defined(MOD_EVENTS_WAR_AND_PEACE)19172				GET_TEAM(eFromTeam).declareWar(eAgainstTeam, false, eFromPlayer);19173#else19174				GET_TEAM(eFromTeam).declareWar(eAgainstTeam);19175#endif1917619177				int iLockedTurns = /*15*/ GC.getCOOP_WAR_LOCKED_LENGTH();19178				GET_TEAM(GetPlayer()->getTeam()).ChangeNumTurnsLockedIntoWar(eAgainstTeam, iLockedTurns);19179				GET_TEAM(eFromTeam).ChangeNumTurnsLockedIntoWar(eAgainstTeam, iLockedTurns);1918019181				if(bActivePlayer)19182				{19183#if defined(MOD_DIPLOMACY_STFU)19184					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_COOP_WAR_YES, LEADERHEAD_ANIM_POSITIVE);19185#else19186					strText = GetDiploStringForMessage(DIPLO_MESSAGE_COOP_WAR_YES);19187					gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19188#endif19189				}19190			}19191			// Soon19192			else if(eAcceptableState == COOP_WAR_STATE_SOON)19193			{19194				if(bActivePlayer)19195				{19196#if defined(MOD_DIPLOMACY_STFU)19197					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_COOP_WAR_SOON, LEADERHEAD_ANIM_POSITIVE);19198#else19199					strText = GetDiploStringForMessage(DIPLO_MESSAGE_COOP_WAR_SOON);19200					gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19201#endif19202				}19203			}19204			// Rejected19205			else19206			{19207				if(bActivePlayer)19208				{19209#if defined(MOD_DIPLOMACY_STFU)19210					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_COOP_WAR_NO, LEADERHEAD_ANIM_NEGATIVE);19211#else19212					strText = GetDiploStringForMessage(DIPLO_MESSAGE_COOP_WAR_NO);19213					gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);19214#endif19215				}19216			}19217		}1921819219		break;19220	}1922119222	// *********************************************19223	// AI asked human if he'd declare war against someone19224	// *********************************************19225	case FROM_UI_DIPLO_EVENT_COOP_WAR_RESPONSE:19226	{19227		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1922819229		PlayerTypes eAgainstPlayer = (PlayerTypes) iArg2;1923019231		SetCoopWarCounter(eFromPlayer, eAgainstPlayer, 0);1923219233		// Human says sorry, no19234		if(iArg1 == 1 || iArg1 == 2)19235		{19236			// TODO: diplo penalty if we were friends19237			if(bActivePlayer)19238			{19239#if defined(MOD_DIPLOMACY_STFU)19240				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_DISAPPOINTED, LEADERHEAD_ANIM_NEGATIVE);19241#else19242				strText = GetDiploStringForMessage(DIPLO_MESSAGE_DISAPPOINTED);19243				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);19244#endif19245			}19246		}19247		// Human says "soon"19248		if(iArg1 == 3)19249		{19250			SetCoopWarAcceptedState(eFromPlayer, eAgainstPlayer, COOP_WAR_STATE_SOON);1925119252			if(bActivePlayer)19253			{19254#if defined(MOD_DIPLOMACY_STFU)19255				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_PLEASED, LEADERHEAD_ANIM_POSITIVE);19256#else19257				strText = GetDiploStringForMessage(DIPLO_MESSAGE_PLEASED);19258				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19259#endif19260			}19261		}19262		// Human agrees19263		else if(iArg1 == 4)19264		{19265			SetCoopWarAcceptedState(eFromPlayer, eAgainstPlayer, COOP_WAR_STATE_ACCEPTED);1926619267			if(bActivePlayer)19268			{19269#if defined(MOD_DIPLOMACY_STFU)19270				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_PLEASED, LEADERHEAD_ANIM_POSITIVE);19271#else19272				strText = GetDiploStringForMessage(DIPLO_MESSAGE_PLEASED);19273				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19274#endif19275			}1927619277			// AI declaration19278			DeclareWar(eAgainstPlayer);19279			GetPlayer()->GetMilitaryAI()->RequestBasicAttack(eAgainstPlayer, 1);1928019281			// Human declaration19282			TeamTypes eAgainstTeam = GET_PLAYER(eAgainstPlayer).getTeam();19283#if defined(MOD_EVENTS_WAR_AND_PEACE)19284			GET_TEAM(eFromTeam).declareWar(eAgainstTeam, false, eFromPlayer);19285#else19286			GET_TEAM(eFromTeam).declareWar(eAgainstTeam);19287#endif1928819289			int iLockedTurns = /*15*/ GC.getCOOP_WAR_LOCKED_LENGTH();19290			GET_TEAM(GetPlayer()->getTeam()).ChangeNumTurnsLockedIntoWar(eAgainstTeam, iLockedTurns);19291			GET_TEAM(eFromTeam).ChangeNumTurnsLockedIntoWar(eAgainstTeam, iLockedTurns);19292		}1929319294		break;19295	}1929619297	// *********************************************19298	// AI asked human if he'd declare war against someone earlier, and now it's time to put your money where your mouth is19299	// *********************************************19300	case FROM_UI_DIPLO_EVENT_COOP_WAR_NOW_RESPONSE:19301	{19302		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1930319304		PlayerTypes eAgainstPlayer = (PlayerTypes) iArg2;1930519306		SetCoopWarCounter(eFromPlayer, eAgainstPlayer, 0);1930719308		// Human agrees19309		if(iArg1 == 1)19310		{19311			SetCoopWarAcceptedState(eFromPlayer, eAgainstPlayer, COOP_WAR_STATE_ACCEPTED);1931219313			if(bActivePlayer)19314			{19315#if defined(MOD_DIPLOMACY_STFU)19316				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_PLEASED, LEADERHEAD_ANIM_POSITIVE);19317#else19318				strText = GetDiploStringForMessage(DIPLO_MESSAGE_PLEASED);19319				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19320#endif19321			}1932219323			// AI declaration19324			DeclareWar(eAgainstPlayer);19325			GetPlayer()->GetMilitaryAI()->RequestBasicAttack(eAgainstPlayer, 1);1932619327			// Human declaration19328			TeamTypes eAgainstTeam = GET_PLAYER(eAgainstPlayer).getTeam();19329#if defined(MOD_EVENTS_WAR_AND_PEACE)19330			GET_TEAM(eFromTeam).declareWar(eAgainstTeam, false, eFromPlayer);19331#else19332			GET_TEAM(eFromTeam).declareWar(eAgainstTeam);19333#endif1933419335			int iLockedTurns = /*15*/ GC.getCOOP_WAR_LOCKED_LENGTH();19336			GET_TEAM(GetPlayer()->getTeam()).ChangeNumTurnsLockedIntoWar(eAgainstTeam, iLockedTurns);19337			GET_TEAM(eFromTeam).ChangeNumTurnsLockedIntoWar(eAgainstTeam, iLockedTurns);19338		}19339		// Human says no19340		if(iArg1 == 2)19341		{19342			SetCoopWarAcceptedState(eFromPlayer, eAgainstPlayer, NO_COOP_WAR_STATE);19343			SetPlayerBrokenCoopWarPromise(eFromPlayer, true);1934419345			if(bActivePlayer)19346			{19347#if defined(MOD_DIPLOMACY_STFU)19348				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_DISAPPOINTED, LEADERHEAD_ANIM_NEGATIVE);19349#else19350				strText = GetDiploStringForMessage(DIPLO_MESSAGE_DISAPPOINTED);19351				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);19352#endif19353			}19354		}1935519356		break;19357	}1935819359	// *********************************************19360	// Human made a demand. NOTE: Unlike the other messages in here, this one is actually triggered from inside CvDealAI on a player's local machine19361	// *********************************************19362	case FROM_UI_DIPLO_EVENT_HUMAN_DEMAND:19363	{19364		// **** NOTE **** - iArg1 is RESPONSE TYPE from CvDealAI::DoHumanDemand()19365		DemandResponseTypes eResponse = (DemandResponseTypes) iArg1;1936619367		// THIS is the important part of the message - it seeds the demand timer on all players' machines19368		DoDemandMade(eFromPlayer);1936919370		if(bActivePlayer)19371		{19372			// Demand agreed to19373			if(eResponse == DEMAND_RESPONSE_ACCEPT)19374			{19375#if defined(MOD_DIPLOMACY_STFU)19376				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_RETURN_TO_ROOT, DIPLO_MESSAGE_HUMAN_DEMAND_YES, LEADERHEAD_ANIM_YES);19377#else19378				strText = GetPlayer()->GetDiplomacyAI()->GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_DEMAND_YES);19379				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_RETURN_TO_ROOT, strText, LEADERHEAD_ANIM_YES);19380#endif19381			}19382			// Demand rebuffed19383			else19384			{19385#if defined(MOD_DIPLOMACY_STFU)19386				if(eResponse == DEMAND_RESPONSE_REFUSE_WEAK)19387					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_RETURN_TO_ROOT, DIPLO_MESSAGE_HUMAN_DEMAND_REFUSE_WEAK, LEADERHEAD_ANIM_NO);19388				else if(eResponse == DEMAND_RESPONSE_REFUSE_HOSTILE)19389					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_RETURN_TO_ROOT, DIPLO_MESSAGE_HUMAN_DEMAND_REFUSE_HOSTILE, LEADERHEAD_ANIM_NO);19390				else if(eResponse == DEMAND_RESPONSE_REFUSE_TOO_MUCH)19391					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_RETURN_TO_ROOT, DIPLO_MESSAGE_HUMAN_DEMAND_REFUSE_TOO_MUCH, LEADERHEAD_ANIM_NO);19392				else if(eResponse == DEMAND_RESPONSE_REFUSE_TOO_SOON)19393					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_RETURN_TO_ROOT, DIPLO_MESSAGE_HUMAN_DEMAND_REFUSE_TOO_SOON, LEADERHEAD_ANIM_NO);19394#else19395				if(eResponse == DEMAND_RESPONSE_REFUSE_WEAK)19396					strText = GetPlayer()->GetDiplomacyAI()->GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_DEMAND_REFUSE_WEAK);19397				else if(eResponse == DEMAND_RESPONSE_REFUSE_HOSTILE)19398					strText = GetPlayer()->GetDiplomacyAI()->GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_DEMAND_REFUSE_HOSTILE);19399				else if(eResponse == DEMAND_RESPONSE_REFUSE_TOO_MUCH)19400					strText = GetPlayer()->GetDiplomacyAI()->GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_DEMAND_REFUSE_TOO_MUCH);19401				else if(eResponse == DEMAND_RESPONSE_REFUSE_TOO_SOON)19402					strText = GetPlayer()->GetDiplomacyAI()->GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_DEMAND_REFUSE_TOO_SOON);1940319404				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_RETURN_TO_ROOT, strText, LEADERHEAD_ANIM_NO);19405#endif19406			}19407		}1940819409		break;19410	}1941119412	// *********************************************19413	// AI asked human if he'd like to make a Research Agreement in the future19414	// *********************************************19415	case FROM_UI_DIPLO_EVENT_PLAN_RA_RESPONSE:19416	{19417		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1941819419		// Human agrees19420		if(iArg1 == 1)19421		{19422			if(bActivePlayer)19423			{19424#if defined(MOD_DIPLOMACY_STFU)19425				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_PLEASED, LEADERHEAD_ANIM_POSITIVE);19426#else19427				strText = GetDiploStringForMessage(DIPLO_MESSAGE_PLEASED);19428				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19429#endif19430			}19431		}19432		// Human says sorry, no19433		else if(iArg1 == 2)19434		{19435			if(bActivePlayer)19436			{19437#if defined(MOD_DIPLOMACY_STFU)19438				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_DISAPPOINTED, LEADERHEAD_ANIM_NEGATIVE);19439#else19440				strText = GetDiploStringForMessage(DIPLO_MESSAGE_DISAPPOINTED);19441				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);19442#endif19443			}1944419445			DoCancelWantsResearchAgreementWithPlayer(eFromPlayer);19446		}1944719448		break;19449	}1945019451	// *********************************************19452	// AI asked human if he'd denounce a third party19453	// *********************************************19454	case FROM_UI_DIPLO_EVENT_AI_REQUEST_DENOUNCE_RESPONSE:19455	{19456		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua19457		PlayerTypes eAgainstPlayer = (PlayerTypes) iArg2;1945819459		// Human agrees19460		if(iArg1 == 1)19461		{19462			GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DoDenouncePlayer(eAgainstPlayer);1946319464			if(bActivePlayer)19465			{19466#if defined(MOD_DIPLOMACY_STFU)19467				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_PLEASED, LEADERHEAD_ANIM_POSITIVE);19468#else19469				strText = GetDiploStringForMessage(DIPLO_MESSAGE_PLEASED);19470				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19471#endif19472			}19473		}19474		// Human says sorry, no19475		else if(iArg1 == 2)19476		{19477			// Oh, you're gonna say no, are you?19478			if(IsFriendDenounceRefusalUnacceptable(eFromPlayer, eAgainstPlayer))19479			{19480				DoDenouncePlayer(eFromPlayer);19481				LogDenounce(eFromPlayer, /*bBackstab*/ false, /*bRefusal*/ true);1948219483#if defined(MOD_DIPLOMACY_STFU)19484				DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_MEAN_AI, DIPLO_MESSAGE_DOF_NOT_HONORED, LEADERHEAD_ANIM_HATE_NEGATIVE);19485#else19486				strText = GetDiploStringForMessage(DIPLO_MESSAGE_DOF_NOT_HONORED);19487				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION_MEAN_AI, strText, LEADERHEAD_ANIM_HATE_NEGATIVE);19488#endif19489			}19490			else if(bActivePlayer)19491			{19492#if defined(MOD_DIPLOMACY_STFU)19493				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_DISAPPOINTED, LEADERHEAD_ANIM_NEGATIVE);19494#else19495				strText = GetDiploStringForMessage(DIPLO_MESSAGE_DISAPPOINTED);19496				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);19497#endif19498			}19499		}1950019501		break;19502	}1950319504	// *********************************************19505	// AI warned human about spying19506	// *********************************************19507	case FROM_UI_DIPLO_EVENT_CAUGHT_YOUR_SPY_RESPONSE:19508	{19509		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1951019511		// Human told the AI it's none of his business19512		if(iArg1 == 1)19513		{19514			SetPlayerIgnoredSpyPromise(eFromPlayer, true);19515			if(bActivePlayer)19516			{19517#if defined(MOD_DIPLOMACY_STFU)19518				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_CAUGHT_YOUR_SPY_BAD, LEADERHEAD_ANIM_HATE_NEGATIVE);19519#else19520				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_CAUGHT_YOUR_SPY_BAD);19521				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_HATE_NEGATIVE);19522#endif19523			}19524		}19525		// Human said he'd withdraw19526		else if(iArg1 == 2)19527		{19528			SetPlayerMadeSpyPromise(eFromPlayer, true);19529			if(bActivePlayer)19530			{19531#if defined(MOD_DIPLOMACY_STFU)19532				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_CAUGHT_YOUR_SPY_GOOD, LEADERHEAD_ANIM_POSITIVE);19533#else19534				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_CAUGHT_YOUR_SPY_GOOD);19535				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19536#endif19537			}19538		}1953919540		break;19541	}1954219543	// *********************************************19544	// Human warn AI about spying19545	// *********************************************19546	case FROM_UI_DIPLO_EVENT_KILLED_MY_SPY_RESPONSE:19547	{19548		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1954919550		// Human did not forgive AI player19551		if(iArg1 == 1)19552		{19553			if(bActivePlayer)19554			{19555#if defined(MOD_DIPLOMACY_STFU)19556				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_KILLED_MY_SPY_UNFORGIVEN, LEADERHEAD_ANIM_NEGATIVE);19557#else19558				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_KILLED_MY_SPY_UNFORGIVEN);19559				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_NEGATIVE);19560#endif19561			}19562		}19563		// Human forgave AI player19564		else if(iArg1 == 2)19565		{19566			SetPlayerForgaveForSpying(eFromPlayer, true);19567			if(bActivePlayer)19568			{19569#if defined(MOD_DIPLOMACY_STFU)19570				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_KILLED_MY_SPY_FORGIVEN, LEADERHEAD_ANIM_POSITIVE);19571#else19572				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_KILLED_MY_SPY_FORGIVEN);19573				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19574#endif19575			}19576			19577#if defined(MOD_DIPLOMACY_STFU)19578			if (MOD_DIPLOMACY_STFU)19579			{19580				// The (human) player just forgave the AI for spying on them, so make sure the AI doesn't immediately ask for forgiveness!19581				DoAddNewStatementToDiploLog(eFromPlayer, DIPLO_STATEMENT_KILLED_MY_SPY);19582				CUSTOMLOG("AI player %i will NOT ask human player %i for forgiveness for spying, as that player just forgave them!", eMyPlayer, eFromPlayer);19583			}19584#endif19585		}1958619587		break;19588	}1958919590	case FROM_UI_DIPLO_EVENT_HUMAN_DISCUSSION_SHARE_INTRIGUE:19591	{19592		PlayerTypes ePlottingPlayer = (PlayerTypes)iArg1;19593		CvIntrigueType eIntrigueType = (CvIntrigueType)iArg2;19594		CvAssert(CvPlayerAI::IsValid(ePlottingPlayer));19595		if (CvPlayerAI::IsValid(ePlottingPlayer))19596		{19597			ChangeNumTimesIntrigueSharedBy(eFromPlayer, 1);19598			GET_PLAYER(eFromPlayer).GetEspionage()->MarkRecentIntrigueAsShared(eMyPlayer, ePlottingPlayer, eIntrigueType);19599			if (bActivePlayer)19600			{19601#if !defined(NO_ACHIEVEMENTS)19602				if(GET_PLAYER(eFromPlayer).GetEspionage()->HasSharedIntrigueAboutMe(eMyPlayer))19603				{19604					gDLL->UnlockAchievement(ACHIEVEMENT_XP1_37);19605				}1960619607				bool bUsingXP1Scenario3 = gDLL->IsModActivated(CIV5_XP1_SCENARIO3_MODID);19608				if(bUsingXP1Scenario3)19609				{19610					gDLL->UnlockAchievement(ACHIEVEMENT_XP1_45);19611				}19612#endif1961319614#if defined(MOD_DIPLOMACY_STFU)19615				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, DIPLO_MESSAGE_WARNED_ABOUT_INTRIGUE, NO_PLAYER, GET_PLAYER(ePlottingPlayer).getCivilizationAdjectiveKey(), LEADERHEAD_ANIM_POSITIVE);19616#else19617				strText = GetDiploStringForMessage(DIPLO_MESSAGE_WARNED_ABOUT_INTRIGUE, NO_PLAYER, GET_PLAYER(ePlottingPlayer).getCivilizationAdjectiveKey());19618				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_DISCUSS_HUMAN_INVOKED, strText, LEADERHEAD_ANIM_POSITIVE);19619#endif19620			}19621		}19622		break;19623	}1962419625	// *********************************************19626	// AI warned about religious conversions19627	// *********************************************19628	case FROM_UI_DIPLO_EVENT_STOP_CONVERSIONS:19629	{19630		// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1963119632		// Human told the AI it's none of his business19633		if(iArg1 == 1)19634		{19635			SetPlayerIgnoredNoConvertPromise(eFromPlayer, true);19636			if(bActivePlayer)19637			{19638#if defined(MOD_DIPLOMACY_STFU)19639				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_STOP_CONVERSIONS_BAD, LEADERHEAD_ANIM_HATE_NEGATIVE);19640#else19641				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_STOP_CONVERSIONS_BAD);19642				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_HATE_NEGATIVE);19643#endif19644			}19645		}19646		// Human said he'd withdraw19647		else if(iArg1 == 2)19648		{19649			SetPlayerMadeNoConvertPromise(eFromPlayer, true);19650			int iAdjustmentToJustBelowThreshold = GC.getRELIGION_DIPLO_HIT_THRESHOLD() - GetNegativeReligiousConversionPoints(eFromPlayer) - 1;19651			ChangeNegativeReligiousConversionPoints(eFromPlayer, iAdjustmentToJustBelowThreshold);19652			if(bActivePlayer)19653			{19654#if defined(MOD_DIPLOMACY_STFU)19655				GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_STOP_CONVERSIONS_GOOD, LEADERHEAD_ANIM_POSITIVE);19656#else19657				strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_STOP_CONVERSIONS_GOOD);19658				gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19659#endif19660			}19661		}1966219663		break;19664	}196651966619667	// *********************************************19668	// AI warned about Digging on my turf19669	// *********************************************19670	case FROM_UI_DIPLO_EVENT_STOP_DIGGING:19671		{19672			// **** NOTE **** - iArg1 is BUTTON ID from DiscussionDialog.lua1967319674			// Human told the AI it's none of his business19675			if(iArg1 == 1)19676			{19677				SetPlayerIgnoredNoDiggingPromise(eFromPlayer, true);19678				if(bActivePlayer)19679				{19680#if defined(MOD_DIPLOMACY_STFU)19681					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_STOP_DIGGING_BAD, LEADERHEAD_ANIM_HATE_NEGATIVE);19682#else19683					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_STOP_DIGGING_BAD);19684					gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_HATE_NEGATIVE);19685#endif19686				}19687			}19688			// Human said he'd withdraw19689			else if(iArg1 == 2)19690			{19691				SetPlayerMadeNoDiggingPromise(eFromPlayer, true);19692				// TODO: arch -- do something here19693				ChangeNegativeArchaeologyPoints(eFromPlayer, -10);19694				if(bActivePlayer)19695				{19696#if defined(MOD_DIPLOMACY_STFU)19697					GET_PLAYER(eFromPlayer).GetDiplomacyAI()->DisplayAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_HUMAN_STOP_DIGGING_GOOD, LEADERHEAD_ANIM_POSITIVE);19698#else19699					strText = GetDiploStringForMessage(DIPLO_MESSAGE_HUMAN_STOP_DIGGING_GOOD);19700					gDLL->GameplayDiplomacyAILeaderMessage(eMyPlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);19701#endif19702				}19703			}1970419705			break;19706		}1970719708	// Should always have a state we're handling19709	default:19710		CvAssert(false);19711		break;19712	}19713}

Calls

Called by