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}