Hooks
static bool BeforeCvLuaPlayer_lGetOpinionTable(lua_State* L, int& result);static void AfterCvLuaPlayer_lGetOpinionTable(lua_State* L, int& result);static int ReplaceCvLuaPlayer_lGetOpinionTable(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvLuaPlayer_lGetOpinionTable>(host, &BeforeCvLuaPlayer_lGetOpinionTable);CivRegisterAfter<CivHooks::CvLuaPlayer_lGetOpinionTable>(host, &AfterCvLuaPlayer_lGetOpinionTable);CivRegisterReplace<CivHooks::CvLuaPlayer_lGetOpinionTable>(host, &ReplaceCvLuaPlayer_lGetOpinionTable);
Code
10381int CvLuaPlayer::lGetOpinionTable(lua_State* L)10382{10383 CvPlayerAI* pkPlayer = GetInstance(L);10384 PlayerTypes eWithPlayer = (PlayerTypes)lua_tointeger(L, 2);10385 CvDiplomacyAI* pDiploAI = pkPlayer->GetDiplomacyAI();103861038710388 std::vector<Opinion> aOpinions;10389 int iValue;1039010391 int iVisibleApproach = GET_PLAYER(eWithPlayer).GetDiplomacyAI()->GetApproachTowardsUsGuess(pkPlayer->GetID());10392 if (GET_TEAM(pkPlayer->getTeam()).isAtWar(GET_PLAYER(eWithPlayer).getTeam()))10393 {10394 Opinion kOpinion;10395 kOpinion.m_iValue = 99999;10396 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_AT_WAR");10397 aOpinions.push_back(kOpinion);10398 }10399 else10400 {10401 if (GET_PLAYER(eWithPlayer).GetDiplomacyAI()->GetNumWarsFought(pkPlayer->GetID()) > 0)10402 {10403 if (iVisibleApproach == MAJOR_CIV_APPROACH_FRIENDLY || iVisibleApproach == MAJOR_CIV_APPROACH_NEUTRAL)10404 {10405 Opinion kOpinion;10406 kOpinion.m_iValue = 0;10407 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_PAST_WAR_NEUTRAL");10408 aOpinions.push_back(kOpinion);10409 }10410 else10411 {10412 Opinion kOpinion;10413 kOpinion.m_iValue = 0;10414 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_PAST_WAR_BAD");10415 aOpinions.push_back(kOpinion);10416 }10417 }10418 }1041910420 if (iVisibleApproach != MAJOR_CIV_APPROACH_FRIENDLY) 10421 {10422 // land dispute10423 iValue = pDiploAI->GetLandDisputeLevelScore(eWithPlayer);10424 if (iValue < 0)10425 {10426 Opinion kOpinion;10427 kOpinion.m_iValue = iValue;10428 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_NO_LAND_DISPUTE");10429 aOpinions.push_back(kOpinion);10430 }10431 else if (iValue > 0)10432 {10433 Opinion kOpinion;10434 kOpinion.m_iValue = iValue;10435 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_LAND_DISPUTE");10436 aOpinions.push_back(kOpinion);10437 }1043810439 // wonder dispute10440 iValue = pDiploAI->GetWonderDisputeLevelScore(eWithPlayer);10441 if (iValue != 0)10442 {10443 Opinion kOpinion;10444 kOpinion.m_iValue = iValue;10445 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_WONDER_DISPUTE");10446 aOpinions.push_back(kOpinion);10447 }1044810449 // minor civ dispute10450 iValue = pDiploAI->GetMinorCivDisputeLevelScore(eWithPlayer);10451 if (iValue != 0)10452 {10453 Opinion kOpinion;10454 kOpinion.m_iValue = iValue;10455 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_MINOR_CIV_DISPUTE");10456 aOpinions.push_back(kOpinion);10457 }1045810459 // warmonger dispute10460 iValue = pDiploAI->GetWarmongerThreatScore(eWithPlayer);10461 if (iValue != 0)10462 {10463 Opinion kOpinion;10464 kOpinion.m_iValue = iValue;10465 CvString str;10466 10467 if (pDiploAI->GetWarmongerThreat(eWithPlayer) == THREAT_CRITICAL)10468 {10469 str = Localization::Lookup("TXT_KEY_DIPLO_WARMONGER_THREAT_CRITICAL").toUTF8();10470 }10471 else if (pDiploAI->GetWarmongerThreat(eWithPlayer) == THREAT_SEVERE)10472 {10473 str = Localization::Lookup("TXT_KEY_DIPLO_WARMONGER_THREAT_SEVERE").toUTF8();10474 }10475 else if (pDiploAI->GetWarmongerThreat(eWithPlayer) == THREAT_MAJOR)10476 {10477 str = Localization::Lookup("TXT_KEY_DIPLO_WARMONGER_THREAT_MAJOR").toUTF8();10478 }10479 else 10480 {10481 str = Localization::Lookup("TXT_KEY_DIPLO_WARMONGER_THREAT_MINOR").toUTF8();10482 }1048310484 if (pDiploAI->GetWarmongerHate() >= 7)10485 {10486 str += " ";10487 str += Localization::Lookup("TXT_KEY_WARMONGER_HATE_HIGH").toUTF8();10488 }10489 else if (pDiploAI->GetWarmongerHate() >= 5)10490 {10491 str += " ";10492 str += Localization::Lookup("TXT_KEY_WARMONGER_HATE_MID").toUTF8();10493 }10494 else 10495 {10496 str += " ";10497 str += Localization::Lookup("TXT_KEY_WARMONGER_HATE_LOW").toUTF8();10498 }1049910500 kOpinion.m_str = str;1050110502 aOpinions.push_back(kOpinion);10503 }10504 }1050510506 if (iVisibleApproach == MAJOR_CIV_APPROACH_AFRAID)10507 {10508 Opinion kOpinion;10509 kOpinion.m_iValue = 0;10510 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_AFRAID");10511 aOpinions.push_back(kOpinion);10512 }1051310514 iValue = pDiploAI->GetCiviliansReturnedToMeScore(eWithPlayer);10515 if (iValue != 0)10516 {10517 Opinion kOpinion;10518 kOpinion.m_iValue = iValue;10519 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_CIVILIANS_RETURNED");10520 aOpinions.push_back(kOpinion);10521 }10522 10523 iValue = pDiploAI->GetLandmarksBuiltForMeScore(eWithPlayer);10524 if (iValue != 0)10525 {10526 Opinion kOpinion;10527 kOpinion.m_iValue = iValue;10528 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_LANDMARKS_BUILT");10529 aOpinions.push_back(kOpinion);10530 }1053110532 iValue = pDiploAI->GetResurrectedScore(eWithPlayer);10533 if (iValue != 0)10534 {10535 Opinion kOpinion;10536 kOpinion.m_iValue = iValue;10537 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_RESURRECTED");10538 aOpinions.push_back(kOpinion);10539 }1054010541 iValue = pDiploAI->GetLiberatedCitiesScore(eWithPlayer);10542 if (iValue != 0)10543 {10544 Opinion kOpinion;10545 kOpinion.m_iValue = iValue;10546 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_CITIES_LIBERATED");10547 aOpinions.push_back(kOpinion);10548 }1054910550 iValue = pDiploAI->GetEmbassyScore(eWithPlayer);10551 if (iValue != 0)10552 {10553 Opinion kOpinion;10554 kOpinion.m_iValue = iValue;10555 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_HAS_EMBASSY");10556 aOpinions.push_back(kOpinion);10557 }1055810559 iValue = pDiploAI->GetForgaveForSpyingScore(eWithPlayer);10560 if (iValue != 0)10561 {10562 Opinion kOpinion;10563 kOpinion.m_iValue = iValue;10564 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_FORGAVE_FOR_SPYING");10565 aOpinions.push_back(kOpinion);10566 }10567 10568 iValue = pDiploAI->GetNoSetterRequestScore(eWithPlayer);10569 if (iValue != 0)10570 {10571 Opinion kOpinion;10572 kOpinion.m_iValue = iValue;10573 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_NO_SETTLE_ASKED");10574 aOpinions.push_back(kOpinion);10575 }1057610577 iValue = pDiploAI->GetStopSpyingRequestScore(eWithPlayer);10578 if (iValue != 0)10579 {10580 Opinion kOpinion;10581 kOpinion.m_iValue = iValue;10582 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_STOP_SPYING_ASKED");10583 aOpinions.push_back(kOpinion);10584 }1058510586 iValue = pDiploAI->GetDemandEverMadeScore(eWithPlayer);10587 if (iValue != 0)10588 {10589 Opinion kOpinion;10590 kOpinion.m_iValue = iValue;10591 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_TRADE_DEMAND");10592 aOpinions.push_back(kOpinion);10593 }1059410595 iValue = pDiploAI->GetTimesCultureBombedScore(eWithPlayer);10596 if (iValue != 0)10597 {10598 Opinion kOpinion;10599 kOpinion.m_iValue = iValue;10600 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_CULTURE_BOMB");10601 aOpinions.push_back(kOpinion);10602 }1060310604 iValue = pDiploAI->GetReligiousConversionPointsScore(eWithPlayer);10605 if (iValue != 0)10606 {10607 Opinion kOpinion;10608 kOpinion.m_iValue = iValue;10609 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_RELIGIOUS_CONVERSIONS");10610 aOpinions.push_back(kOpinion);10611 }1061210613 iValue = pDiploAI->GetHasAdoptedHisReligionScore(eWithPlayer);10614 if (iValue != 0)10615 {10616 Opinion kOpinion;10617 kOpinion.m_iValue = iValue;10618 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_ADOPTING_MY_RELIGION");10619 aOpinions.push_back(kOpinion);10620 }1062110622 iValue = pDiploAI->GetHasAdoptedMyReligionScore(eWithPlayer);10623 if (iValue != 0)10624 {10625 Opinion kOpinion;10626 kOpinion.m_iValue = iValue;10627 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_ADOPTING_HIS_RELIGION");10628 aOpinions.push_back(kOpinion);10629 }10630 10631 iValue = pDiploAI->GetSameLatePoliciesScore(eWithPlayer);10632 if (iValue != 0)10633 {10634 Opinion kOpinion;10635 kOpinion.m_iValue = iValue;10636 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_SAME_LATE_POLICY_TREES");10637 PolicyBranchTypes eBranch = pkPlayer->GetPlayerPolicies()->GetLateGamePolicyTree();10638 kOpinion.m_str << GC.getPolicyBranchInfo(eBranch)->GetDescription();10639 aOpinions.push_back(kOpinion);10640 }1064110642 iValue = pDiploAI->GetDifferentLatePoliciesScore(eWithPlayer);10643 if (iValue != 0)10644 {10645 Opinion kOpinion;10646 kOpinion.m_iValue = iValue;10647 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_DIFFERENT_LATE_POLICY_TREES");10648 PolicyBranchTypes eTheirBranch = pkPlayer->GetPlayerPolicies()->GetLateGamePolicyTree();10649 PolicyBranchTypes eMyBranch = GET_PLAYER(eWithPlayer).GetPlayerPolicies()->GetLateGamePolicyTree();10650 kOpinion.m_str << GC.getPolicyBranchInfo(eMyBranch)->GetDescription();10651 kOpinion.m_str << GC.getPolicyBranchInfo(eTheirBranch)->GetDescription();10652 aOpinions.push_back(kOpinion);10653 }1065410655 iValue = pDiploAI->GetTimesRobbedScore(eWithPlayer);10656 if (iValue != 0)10657 {10658 Opinion kOpinion;10659 kOpinion.m_iValue = iValue;10660 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_CAUGHT_STEALING");10661 aOpinions.push_back(kOpinion);10662 }1066310664 iValue = pDiploAI->GetTimesIntrigueSharedScore(eWithPlayer);10665 if (iValue != 0)10666 {10667 Opinion kOpinion;10668 kOpinion.m_iValue = iValue;10669 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_SHARED_INTRIGUE");10670 aOpinions.push_back(kOpinion);10671 }1067210673 iValue = pDiploAI->GetBrokenMilitaryPromiseScore(eWithPlayer);10674 if (iValue != 0)10675 {10676 Opinion kOpinion;10677 kOpinion.m_iValue = iValue;10678 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_MILITARY_PROMISE");10679 aOpinions.push_back(kOpinion);10680 }1068110682 iValue = pDiploAI->GetBrokenMilitaryPromiseWithAnybodyScore(eWithPlayer);10683 if (iValue != 0)10684 {10685 Opinion kOpinion;10686 kOpinion.m_iValue = iValue;10687 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_MILITARY_PROMISE_BROKEN_WITH_OTHERS");10688 aOpinions.push_back(kOpinion);10689 }1069010691 iValue = pDiploAI->GetIgnoredMilitaryPromiseScore(eWithPlayer);10692 if (iValue != 0)10693 {10694 Opinion kOpinion;10695 kOpinion.m_iValue = iValue;10696 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_MILITARY_PROMISE_IGNORED");10697 aOpinions.push_back(kOpinion);10698 }10699 10700 iValue = pDiploAI->GetBrokenExpansionPromiseScore(eWithPlayer);10701 if (iValue != 0)10702 {10703 Opinion kOpinion;10704 kOpinion.m_iValue = iValue;10705 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_EXPANSION_PROMISE");10706 aOpinions.push_back(kOpinion);10707 }1070810709 iValue = pDiploAI->GetIgnoredExpansionPromiseScore(eWithPlayer);10710 if (iValue != 0)10711 {10712 Opinion kOpinion;10713 kOpinion.m_iValue = iValue;10714 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_EXPANSION_PROMISE_IGNORED");10715 aOpinions.push_back(kOpinion);10716 }1071710718 iValue = pDiploAI->GetBrokenBorderPromiseScore(eWithPlayer);10719 if (iValue != 0)10720 {10721 Opinion kOpinion;10722 kOpinion.m_iValue = iValue;10723 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_BORDER_PROMISE");10724 aOpinions.push_back(kOpinion);10725 }1072610727 iValue = pDiploAI->GetIgnoredBorderPromiseScore(eWithPlayer);10728 if (iValue != 0)10729 {10730 Opinion kOpinion;10731 kOpinion.m_iValue = iValue;10732 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_BORDER_PROMISE_IGNORED");10733 aOpinions.push_back(kOpinion);10734 }1073510736 iValue = pDiploAI->GetBrokenAttackCityStatePromiseScore(eWithPlayer);10737 if (iValue != 0)10738 {10739 Opinion kOpinion;10740 kOpinion.m_iValue = iValue;10741 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_CITY_STATE_PROMISE");10742 aOpinions.push_back(kOpinion);10743 }1074410745 iValue = pDiploAI->GetBrokenAttackCityStatePromiseWithAnybodyScore(eWithPlayer);10746 if (iValue != 0)10747 {10748 Opinion kOpinion;10749 kOpinion.m_iValue = iValue;10750 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_CITY_STATE_PROMISE_BROKEN_WITH_OTHERS");10751 aOpinions.push_back(kOpinion);10752 }1075310754 iValue = pDiploAI->GetIgnoredAttackCityStatePromiseScore(eWithPlayer);10755 if (iValue != 0)10756 {10757 Opinion kOpinion;10758 kOpinion.m_iValue = iValue;10759 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_CITY_STATE_PROMISE_IGNORED");10760 aOpinions.push_back(kOpinion);10761 }10762 10763 iValue = pDiploAI->GetBrokenBullyCityStatePromiseScore(eWithPlayer);10764 if (iValue != 0)10765 {10766 Opinion kOpinion;10767 kOpinion.m_iValue = iValue;10768 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_BULLY_CITY_STATE_PROMISE_BROKEN");10769 aOpinions.push_back(kOpinion);10770 }1077110772 iValue = pDiploAI->GetIgnoredBullyCityStatePromiseScore(eWithPlayer);10773 if (iValue != 0)10774 {10775 Opinion kOpinion;10776 kOpinion.m_iValue = iValue;10777 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_BULLY_CITY_STATE_PROMISE_IGNORED");10778 aOpinions.push_back(kOpinion);10779 }1078010781 iValue = pDiploAI->GetBrokenNoConvertPromiseScore(eWithPlayer);10782 if (iValue != 0)10783 {10784 Opinion kOpinion;10785 kOpinion.m_iValue = iValue;10786 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_NO_CONVERT_PROMISE_BROKEN");10787 aOpinions.push_back(kOpinion);10788 }1078910790 iValue = pDiploAI->GetIgnoredNoConvertPromiseScore(eWithPlayer);10791 if (iValue != 0)10792 {10793 Opinion kOpinion;10794 kOpinion.m_iValue = iValue;10795 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_NO_CONVERT_PROMISE_IGNORED");10796 aOpinions.push_back(kOpinion);10797 }1079810799 iValue = pDiploAI->GetBrokenNoDiggingPromiseScore(eWithPlayer);10800 if (iValue != 0)10801 {10802 Opinion kOpinion;10803 kOpinion.m_iValue = iValue;10804 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_NO_DIG_PROMISE_BROKEN");10805 aOpinions.push_back(kOpinion);10806 }1080710808 iValue = pDiploAI->GetIgnoredNoDiggingPromiseScore(eWithPlayer);10809 if (iValue != 0)10810 {10811 Opinion kOpinion;10812 kOpinion.m_iValue = iValue;10813 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_NO_DIG_PROMISE_IGNORED");10814 aOpinions.push_back(kOpinion);10815 }1081610817 iValue = pDiploAI->GetBrokenSpyPromiseScore(eWithPlayer);10818 if (iValue != 0)10819 {10820 Opinion kOpinion;10821 kOpinion.m_iValue = iValue;10822 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_SPY_PROMISE_BROKEN");10823 aOpinions.push_back(kOpinion);10824 }1082510826 iValue = pDiploAI->GetIgnoredSpyPromiseScore(eWithPlayer);10827 if (iValue != 0)10828 {10829 Opinion kOpinion;10830 kOpinion.m_iValue = iValue;10831 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_SPY_PROMISE_IGNORED");10832 aOpinions.push_back(kOpinion);10833 }1083410835 iValue = pDiploAI->GetBrokenCoopWarPromiseScore(eWithPlayer);10836 if (iValue != 0)10837 {10838 Opinion kOpinion;10839 kOpinion.m_iValue = iValue;10840 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_COOP_WAR_PROMISE");10841 aOpinions.push_back(kOpinion);10842 }1084310844 iValue = pDiploAI->GetAngryAboutProtectedMinorKilledScore(eWithPlayer);10845 if (iValue != 0)10846 {10847 Opinion kOpinion;10848 kOpinion.m_iValue = iValue;10849 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_PROTECTED_MINORS_KILLED");10850 aOpinions.push_back(kOpinion);10851 }1085210853 iValue = pDiploAI->GetAngryAboutProtectedMinorAttackedScore(eWithPlayer);10854 if (iValue != 0)10855 {10856 Opinion kOpinion;10857 kOpinion.m_iValue = iValue;10858 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_PROTECTED_MINORS_ATTACKED");10859 aOpinions.push_back(kOpinion);10860 }1086110862 iValue = pDiploAI->GetAngryAboutProtectedMinorBulliedScore(eWithPlayer);10863 if (iValue != 0)10864 {10865 Opinion kOpinion;10866 kOpinion.m_iValue = iValue;10867 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_PROTECTED_MINORS_BULLIED");10868 aOpinions.push_back(kOpinion);10869 }1087010871 iValue = pDiploAI->GetAngryAboutSidedWithProtectedMinorScore(eWithPlayer);10872 if (iValue != 0)10873 {10874 Opinion kOpinion;10875 kOpinion.m_iValue = iValue;10876 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_SIDED_WITH_MINOR");10877 aOpinions.push_back(kOpinion);10878 }1087910880 iValue = pDiploAI->GetDOFAcceptedScore(eWithPlayer);10881 if (iValue != 0)10882 {10883 Opinion kOpinion;10884 kOpinion.m_iValue = iValue;10885 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_DOF");10886 aOpinions.push_back(kOpinion);10887 }1088810889 iValue = pDiploAI->GetDOFWithAnyFriendScore(eWithPlayer);10890 if (iValue != 0)10891 {10892 Opinion kOpinion;10893 kOpinion.m_iValue = iValue;10894 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_MUTUAL_DOF");10895 aOpinions.push_back(kOpinion);10896 }1089710898 iValue = pDiploAI->GetDOFWithAnyEnemyScore(eWithPlayer);10899 if (iValue != 0)10900 {10901 Opinion kOpinion;10902 kOpinion.m_iValue = iValue;10903 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_HUMAN_DOF_WITH_ENEMY");10904 aOpinions.push_back(kOpinion);10905 }1090610907 // TRAITOR BEGIN10908 {10909 iValue = 0;10910 Localization::String str;10911 int iTempValue;1091210913 iTempValue = pDiploAI->GetFriendDenouncementScore(eWithPlayer);10914 if (iTempValue > iValue)10915 {10916 iValue = iTempValue;10917 str = Localization::Lookup("TXT_KEY_DIPLO_DENOUNCED_BY_PEOPLE_WE_TRUST_MORE");10918 }1091910920 iTempValue = pDiploAI->GetWeDenouncedFriendScore(eWithPlayer);10921 if (iTempValue > iValue)10922 {10923 iValue = iTempValue;10924 str = Localization::Lookup("TXT_KEY_DIPLO_HUMAN_DENOUNCED_FRIENDS");10925 }1092610927 iTempValue = pDiploAI->GetFriendDenouncedUsScore(eWithPlayer);10928 if (iTempValue > iValue)10929 {10930 iValue = iTempValue;10931 str = Localization::Lookup("TXT_KEY_DIPLO_HUMAN_FRIEND_DENOUNCED");10932 }1093310934 iTempValue = pDiploAI->GetWeDeclaredWarOnFriendScore(eWithPlayer);10935 if (iTempValue > iValue)10936 {10937 iValue = iTempValue;10938 str = Localization::Lookup("TXT_KEY_DIPLO_HUMAN_DECLARED_WAR_ON_FRIENDS");10939 }1094010941 iTempValue = pDiploAI->GetFriendDeclaredWarOnUsScore(eWithPlayer);10942 if (iTempValue > iValue)10943 {10944 iValue = iTempValue;10945 str = Localization::Lookup("TXT_KEY_DIPLO_HUMAN_FRIEND_DECLARED_WAR");10946 }1094710948 if (iValue != 0)10949 {10950 Opinion kOpinion;10951 kOpinion.m_iValue = iValue;10952 kOpinion.m_str = str;10953 aOpinions.push_back(kOpinion);10954 }10955 }10956 // TRAITOR END1095710958 //iValue = pDiploAI->GetRequestsRefusedScore(eWithPlayer);10959 //if (iValue != 0)10960 //{10961 // Opinion kOpinion;10962 // kOpinion.m_iValue = iValue;10963 // kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_REFUSED_REQUESTS");10964 // aOpinions.push_back(kOpinion);10965 //}1096610967 iValue = pDiploAI->GetDenouncedUsScore(eWithPlayer);10968 if (iValue != 0)10969 {10970 Opinion kOpinion;10971 kOpinion.m_iValue = iValue;10972 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_DENOUNCED_BY_US");10973 aOpinions.push_back(kOpinion);10974 }1097510976 iValue = pDiploAI->GetDenouncedThemScore(eWithPlayer);10977 if (iValue != 0)10978 {10979 Opinion kOpinion;10980 kOpinion.m_iValue = iValue;10981 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_DENOUNCED_BY_THEM");10982 aOpinions.push_back(kOpinion);10983 }1098410985 iValue = pDiploAI->GetDenouncedFriendScore(eWithPlayer);10986 if (iValue != 0)10987 {10988 Opinion kOpinion;10989 kOpinion.m_iValue = iValue;10990 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_HUMAN_DENOUNCED_FRIEND");10991 aOpinions.push_back(kOpinion);10992 }1099310994 iValue = pDiploAI->GetDenouncedEnemyScore(eWithPlayer);10995 if (iValue != 0)10996 {10997 Opinion kOpinion;10998 kOpinion.m_iValue = iValue;10999 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_MUTUAL_ENEMY");11000 aOpinions.push_back(kOpinion);11001 }1100211003 iValue = pDiploAI->GetRecklessExpanderScore(eWithPlayer);11004 if (iValue != 0)11005 {11006 Opinion kOpinion;11007 kOpinion.m_iValue = iValue;11008 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_RECKLESS_EXPANDER");11009 aOpinions.push_back(kOpinion);11010 }1101111012 iValue = pDiploAI->GetRecentTradeScore(eWithPlayer);11013 if (iValue != 0)11014 {11015 Opinion kOpinion;11016 kOpinion.m_iValue = iValue;11017 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_TRADE_PARTNER");11018 aOpinions.push_back(kOpinion);11019 }1102011021 iValue = pDiploAI->GetCommonFoeScore(eWithPlayer);11022 if (iValue != 0)11023 {11024 Opinion kOpinion;11025 kOpinion.m_iValue = iValue;11026 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_COMMON_FOE");11027 aOpinions.push_back(kOpinion);11028 }1102911030 iValue = pDiploAI->GetRecentAssistScore(eWithPlayer);11031 if (iValue != 0)11032 {11033 Opinion kOpinion;11034 kOpinion.m_iValue = iValue;11035 if (iValue > 0)11036 {11037 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_REFUSED_REQUESTS");11038 }11039 else if (iValue < 0)11040 {11041 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_ASSISTANCE_TO_THEM");11042 }11043 aOpinions.push_back(kOpinion);11044 }1104511046 iValue = pDiploAI->GetNukedByScore(eWithPlayer);11047 if (iValue != 0)11048 {11049 Opinion kOpinion;11050 kOpinion.m_iValue = iValue;11051 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_NUKED");11052 aOpinions.push_back(kOpinion);11053 }1105411055 iValue = pDiploAI->GetCapitalCapturedByScore(eWithPlayer);11056 if (iValue != 0)11057 {11058 Opinion kOpinion;11059 kOpinion.m_iValue = iValue;11060 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_CAPTURED_CAPITAL");11061 aOpinions.push_back(kOpinion);11062 }1106311064 iValue = pDiploAI->GetGaveAssistanceToScore(eWithPlayer);11065 if (iValue != 0)11066 {11067 Opinion kOpinion;11068 kOpinion.m_iValue = iValue;11069 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_ASSISTANCE_FROM_THEM");11070 aOpinions.push_back(kOpinion);11071 }1107211073 iValue = pDiploAI->GetPaidTributeToScore(eWithPlayer);11074 if (iValue != 0)11075 {11076 Opinion kOpinion;11077 kOpinion.m_iValue = iValue;11078 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_PAID_TRIBUTE");11079 aOpinions.push_back(kOpinion);11080 }1108111082 iValue = pDiploAI->GetLikedTheirProposalScore(eWithPlayer);11083 if (iValue != 0)11084 {11085 Opinion kOpinion;11086 kOpinion.m_iValue = iValue;11087 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_LIKED_OUR_PROPOSAL");11088 aOpinions.push_back(kOpinion);11089 }11090 11091 iValue = pDiploAI->GetDislikedTheirProposalScore(eWithPlayer);11092 if (iValue != 0)11093 {11094 Opinion kOpinion;11095 kOpinion.m_iValue = iValue;11096 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_DISLIKED_OUR_PROPOSAL");11097 aOpinions.push_back(kOpinion);11098 }1109911100 iValue = pDiploAI->GetSupportedMyProposalScore(eWithPlayer);11101 if (iValue != 0)11102 {11103 Opinion kOpinion;11104 kOpinion.m_iValue = iValue;11105 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_SUPPORTED_THEIR_PROPOSAL");11106 aOpinions.push_back(kOpinion);11107 }1110811109 iValue = pDiploAI->GetFoiledMyProposalScore(eWithPlayer);11110 if (iValue != 0)11111 {11112 Opinion kOpinion;11113 kOpinion.m_iValue = iValue;11114 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_FOILED_THEIR_PROPOSAL");11115 aOpinions.push_back(kOpinion);11116 }1111711118 iValue = pDiploAI->GetSupportedMyHostingScore(eWithPlayer);11119 if (iValue != 0)11120 {11121 Opinion kOpinion;11122 kOpinion.m_iValue = iValue;11123 kOpinion.m_str = Localization::Lookup("TXT_KEY_DIPLO_SUPPORTED_THEIR_HOSTING");11124 aOpinions.push_back(kOpinion);11125 }1112611127#if defined(MOD_EVENTS_DIPLO_MODIFIERS)11128 iValue = pDiploAI->GetDiploModifiers(eWithPlayer, aOpinions);11129#else11130 iValue = pDiploAI->GetScenarioModifier1(eWithPlayer);11131 if (iValue != 0)11132 {11133 Opinion kOpinion;11134 kOpinion.m_iValue = iValue;11135 kOpinion.m_str = Localization::Lookup("TXT_KEY_SPECIFIC_DIPLO_STRING_1");11136 aOpinions.push_back(kOpinion);11137 }1113811139 iValue = pDiploAI->GetScenarioModifier2(eWithPlayer);11140 if (iValue != 0)11141 {11142 Opinion kOpinion;11143 kOpinion.m_iValue = iValue;11144 kOpinion.m_str = Localization::Lookup("TXT_KEY_SPECIFIC_DIPLO_STRING_2");11145 aOpinions.push_back(kOpinion);11146 }1114711148 iValue = pDiploAI->GetScenarioModifier3(eWithPlayer);11149 if (iValue != 0)11150 {11151 Opinion kOpinion;11152 kOpinion.m_iValue = iValue;11153 kOpinion.m_str = Localization::Lookup("TXT_KEY_SPECIFIC_DIPLO_STRING_3");11154 aOpinions.push_back(kOpinion);11155 }11156#endif1115711158 std::stable_sort(aOpinions.begin(), aOpinions.end(), OpinionEval());1115911160 lua_createtable(L, 0, 0);11161 int index = 1;11162 std::string strOutput;11163 const char* strEmpty = "";11164 std::string strEndColor = "[ENDCOLOR]";11165 size_t EndColorFound;11166 std::string strColorPrefix = "[COLOR_";11167 size_t BeginColorPrefixFound;11168 std::string strColorSuffix = "]";11169 size_t BeginColorSuffixFound;11170 std::string strFullPositiveColor = "[COLOR_POSITIVE_TEXT]";11171 std::string strPartialPositiveColor = "[COLOR_FADING_POSITIVE_TEXT]";11172 std::string strNeutralColor = "[COLOR_GREY]";11173 std::string strPartialNegativeColor = "[COLOR_FADING_NEGATIVE_TEXT]";11174 std::string strFullNegativeColor = "[COLOR_NEGATIVE_TEXT]";1117511176 for (uint ui = 0; ui < aOpinions.size(); ui++)11177 {11178 strOutput = aOpinions[ui].m_str.toUTF8();1117911180 EndColorFound = strOutput.rfind(strEndColor);11181 if (EndColorFound != string::npos)11182 {11183 strOutput.replace(EndColorFound, strEndColor.length(), strEmpty);11184 }1118511186 BeginColorPrefixFound = strOutput.find(strColorPrefix);11187 if (BeginColorPrefixFound != string::npos)11188 {11189 BeginColorSuffixFound = strOutput.find(strColorSuffix);11190 if (BeginColorSuffixFound != string::npos)11191 {11192 strOutput.erase(BeginColorPrefixFound, (BeginColorSuffixFound - BeginColorPrefixFound) + 1);11193 }11194 }1119511196 if (aOpinions[ui].m_iValue > 10)11197 {11198 strOutput.insert(0, strFullNegativeColor);11199 }11200 else if (aOpinions[ui].m_iValue > 0)11201 {11202 strOutput.insert(0, strPartialNegativeColor);11203 }11204 else if (aOpinions[ui].m_iValue == 0)11205 {11206 strOutput.insert(0, strNeutralColor);11207 }11208 else if (aOpinions[ui].m_iValue >= -10)11209 {11210 strOutput.insert(0, strPartialPositiveColor);11211 }11212 else if (aOpinions[ui].m_iValue < -10)11213 {11214 strOutput.insert(0, strFullPositiveColor);11215 }11216#if defined(MOD_DIPLOMACY_BY_NUMBERS)11217 if(MOD_DIPLOMACY_BY_NUMBERS)11218 {11219 CvString strTemp;11220 // Reverse the value of the opinion so as to not confuse players11221 strTemp.Format(" (%d)", -(aOpinions[ui].m_iValue));1122211223 strOutput += strTemp;11224 }11225#endif11226 strOutput += strEndColor;1122711228 lua_pushstring(L, strOutput.c_str());11229 lua_rawseti(L, -2, index);11230 index++;11231 }1123211233 return 1;11234}