Hooks
static bool BeforeCvDiplomacyAI_LogStatementToPlayer(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes eMessage);static void AfterCvDiplomacyAI_LogStatementToPlayer(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes eMessage);static void ReplaceCvDiplomacyAI_LogStatementToPlayer(void (*original)(CvDiplomacyAI*, PlayerTypes, DiploStatementTypes), CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes eMessage);CivRegisterBefore<CivHooks::CvDiplomacyAI_LogStatementToPlayer>(host, &BeforeCvDiplomacyAI_LogStatementToPlayer);CivRegisterAfter<CivHooks::CvDiplomacyAI_LogStatementToPlayer>(host, &AfterCvDiplomacyAI_LogStatementToPlayer);CivRegisterReplace<CivHooks::CvDiplomacyAI_LogStatementToPlayer>(host, &ReplaceCvDiplomacyAI_LogStatementToPlayer);
Code
27983/// AI sent a message to someone... what is it?!?!? :o27984void CvDiplomacyAI::LogStatementToPlayer(PlayerTypes ePlayer, DiploStatementTypes eMessage)27985{27986 if(GC.getLogging() && GC.getAILogging())27987 {27988 CvString strLogName;2798927990 CvString strOutBuf;27991 CvString strBaseString;2799227993 CvString playerName;27994 CvString otherPlayerName;2799527996 CvString strTemp;2799727998 playerName = GetPlayer()->getCivilizationShortDescription();2799928000 // Open the log file28001 if(GC.getPlayerAndCityAILogSplit())28002 {28003 strLogName = "DiplomacyAI_Messages_Log_" + playerName + ".csv";28004 }28005 else28006 {28007 strLogName = "DiplomacyAI_Messages_Log.csv";28008 }2800928010 FILogFile* pLog;28011 pLog = LOGFILEMGR.GetLog(strLogName, FILogFile::kDontTimeStamp);2801228013 // Turn number28014 strBaseString.Format("%03d, ", GC.getGame().getElapsedGameTurns());2801528016 // Our Name28017 strBaseString += playerName;2801828019 // Their Name28020 otherPlayerName = GET_PLAYER(ePlayer).getCivilizationShortDescription();28021 strBaseString += ", " + otherPlayerName;2802228023 strOutBuf = strBaseString;2802428025 MajorCivApproachTypes eApproach = GetMajorCivApproach(ePlayer, /*bHideTrueFeelings*/ false);2802628027 bool bMinorMessage = false;2802828029 switch(eMessage)28030 {28031 case DIPLO_STATEMENT_REQUEST_PEACE:28032 strTemp.Format("We request peace!!!");28033 break;28034 case DIPLO_STATEMENT_AGGRESSIVE_MILITARY_WARNING:28035 strTemp.Format("Your Military is stationed aggressively!");28036 break;28037 case DIPLO_STATEMENT_KILLED_PROTECTED_CITY_STATE:28038 strTemp.Format("You Killed a Protected City State!");28039 bMinorMessage = true;28040 break;28041 case DIPLO_STATEMENT_ATTACKED_PROTECTED_CITY_STATE:28042 strTemp.Format("You Attacked a Protected City State!");28043 bMinorMessage = true;28044 break;28045 case DIPLO_STATEMENT_BULLIED_PROTECTED_CITY_STATE:28046 strTemp.Format("You Bullied a Protected City State!");28047 bMinorMessage = true;28048 break;28049 case DIPLO_STATEMENT_EXPANSION_SERIOUS_WARNING:28050 strTemp.Format("Expansion SERIOUS Warning!");28051 break;28052 case DIPLO_STATEMENT_EXPANSION_WARNING:28053 strTemp.Format("Expansion Warning!");28054 break;28055 case DIPLO_STATEMENT_EXPANSION_BROKEN_PROMISE:28056 strTemp.Format("Expansion Broken Promise!");28057 break;28058 case DIPLO_STATEMENT_PLOT_BUYING_SERIOUS_WARNING:28059 strTemp.Format("Plot Buying SERIOUS Warning!");28060 break;28061 case DIPLO_STATEMENT_PLOT_BUYING_WARNING:28062 strTemp.Format("Plot Buying Warning!");28063 break;28064 case DIPLO_STATEMENT_PLOT_BUYING_BROKEN_PROMISE:28065 strTemp.Format("Plot Buying Broken Promise!");28066 break;28067 case DIPLO_STATEMENT_WE_ATTACKED_YOUR_MINOR:28068 strTemp.Format("Haha! We attacked your Minor!");28069 bMinorMessage = true;28070 break;28071 case DIPLO_STATEMENT_WE_BULLIED_YOUR_MINOR:28072 strTemp.Format("Haha! We bullied your Minor!");28073 bMinorMessage = true;28074 break;28075 case DIPLO_STATEMENT_WORK_WITH_US:28076 strTemp.Format("Wanna team up?");28077 break;28078 case DIPLO_STATEMENT_END_WORK_WITH_US:28079 strTemp.Format("***** We're done working with you. *****");28080 break;28081 case DIPLO_STATEMENT_DENOUNCE:28082 strTemp.Format("Denounce!");28083 break;28084 case DIPLO_STATEMENT_DENOUNCE_RANDFAILED:28085 strTemp.Format("Denounce RANDFAILED");28086 break;28087 case DIPLO_STATEMENT_END_WORK_AGAINST_SOMEONE:28088 strTemp.Format("***** We're done working against someone with you. *****");28089 break;28090 case DIPLO_STATEMENT_COOP_WAR_REQUEST:28091 strTemp.Format("Wanna coop war against someone?");28092 break;28093 case DIPLO_STATEMENT_COOP_WAR_TIME:28094 strTemp.Format("It's time to coop war against someone!");28095 break;28096 case DIPLO_STATEMENT_NOW_UNFORGIVABLE:28097 strTemp.Format("***** You are Unforgivable! *****");28098 break;28099 case DIPLO_STATEMENT_NOW_ENEMY:28100 strTemp.Format("***** You are an Enemy! *****");28101 break;28102 case DIPLO_STATEMENT_DEMAND:28103 strTemp.Format("***** Give in to my demands or else! *****");28104 break;28105 case DIPLO_STATEMENT_REQUEST:28106 strTemp.Format("***** Can you spare something for a friend? *****");28107 break;28108 case DIPLO_STATEMENT_REQUEST_RANDFAILED:28109 strTemp.Format("***** Request RANDFAILED *****");28110 break;28111 case DIPLO_STATEMENT_LUXURY_TRADE:28112 strTemp.Format("***** You have a Luxury I would like *****");28113 break;28114 case DIPLO_STATEMENT_OPEN_BORDERS_EXCHANGE:28115 strTemp.Format("Open Borders Exchange");28116 break;28117 case DIPLO_STATEMENT_OPEN_BORDERS_OFFER:28118 strTemp.Format("Open Borders Offer");28119 break;28120 case DIPLO_STATEMENT_PLAN_RESEARCH_AGREEMENT:28121 strTemp.Format("Research Plan");28122 break;28123 case DIPLO_STATEMENT_RESEARCH_AGREEMENT_OFFER:28124 strTemp.Format("Research Agreement Offer");28125 break;28126 case DIPLO_STATEMENT_RENEW_DEAL:28127 strTemp.Format("Renew Deal");28128 break;28129 case DIPLO_STATEMENT_INSULT:28130 strTemp.Format("Insult");28131 break;28132 case DIPLO_STATEMENT_COMPLIMENT:28133 if(eApproach == MAJOR_CIV_APPROACH_DECEPTIVE)28134 {28135 strTemp.Format("DECEPTIVE Compliment");28136 }28137 else28138 {28139 strTemp.Format("Compliment");28140 }28141 break;28142 case DIPLO_STATEMENT_BOOT_KISSING:28143 strTemp.Format("Boot Kissing");28144 break;28145 case DIPLO_STATEMENT_WARMONGER:28146 strTemp.Format("Warmonger!");28147 break;28148 case DIPLO_STATEMENT_DENOUNCE_FRIEND:28149 strTemp.Format("***** DENOUNCING A FRIEND *****");28150 break;28151 case DIPLO_STATEMENT_REQUEST_FRIEND_DENOUNCE:28152 strTemp.Format("***** DENOUNCE SOMEONE FOR ME? *****");28153 break;28154 case DIPLO_STATEMENT_REQUEST_FRIEND_DENOUNCE_RANDFAILED:28155 strTemp.Format("***** Denounce someone for me? RANDFAILED *****");28156 break;28157 case DIPLO_STATEMENT_REQUEST_FRIEND_WAR:28158 strTemp.Format("***** DECLARE WAR ON SOMEONE FOR ME? *****");28159 break;28160 case DIPLO_STATEMENT_ANGRY_BEFRIEND_ENEMY:28161 strTemp.Format("***** YOU BEFRIENDED AN ENEMY OF MINE! *****");28162 break;28163 case DIPLO_STATEMENT_ANGRY_BEFRIEND_ENEMY_RANDFAILED:28164 strTemp.Format("***** You befriended an enemy of mine! RANDFAILED *****");28165 break;28166 case DIPLO_STATEMENT_ANGRY_DENOUNCED_FRIEND:28167 strTemp.Format("***** YOU DENOUNCED A FRIEND OF MINE! *****");28168 break;28169 case DIPLO_STATEMENT_ANGRY_DENOUNCED_FRIEND_RANDFAILED:28170 strTemp.Format("***** You denounced a friend of mine! RANDFAILED *****");28171 break;28172 case DIPLO_STATEMENT_HAPPY_DENOUNCED_ENEMY:28173 strTemp.Format("***** YAY - YOU DENOUNCED AN ENEMY! *****");28174 break;28175 case DIPLO_STATEMENT_HAPPY_DENOUNCED_ENEMY_RANDFAILED:28176 strTemp.Format("***** Yay - you denounced an enemy! RANDFAILED *****");28177 break;28178 case DIPLO_STATEMENT_HAPPY_BEFRIENDED_FRIEND:28179 strTemp.Format("***** YAY - YOU BEFRIENDED A FRIEND! *****");28180 break;28181 case DIPLO_STATEMENT_HAPPY_BEFRIENDED_FRIEND_RANDFAILED:28182 strTemp.Format("***** Yay - you befriended a friend! RANDFAILED *****");28183 break;28184 case DIPLO_STATEMENT_FYI_BEFRIEND_HUMAN_ENEMY:28185 strTemp.Format("***** JUST FYI - I BEFRIENDED YOUR ENEMY! *****");28186 break;28187 case DIPLO_STATEMENT_FYI_BEFRIEND_HUMAN_ENEMY_RANDFAILED:28188 strTemp.Format("***** Just FYI - I befriended your enemy! RANDFAILED *****");28189 break;28190 case DIPLO_STATEMENT_FYI_DENOUNCED_HUMAN_FRIEND:28191 strTemp.Format("***** JUST FYI - I DENOUNCED YOUR FRIEND! *****");28192 break;28193 case DIPLO_STATEMENT_FYI_DENOUNCED_HUMAN_FRIEND_RANDFAILED:28194 strTemp.Format("***** Just FYI - I denounced your friend! RANDFAILED *****");28195 break;28196 case DIPLO_STATEMENT_FYI_DENOUNCED_HUMAN_ENEMY:28197 strTemp.Format("***** JUST FYI - I DENOUNCED YOUR ENEMY! *****");28198 break;28199 case DIPLO_STATEMENT_FYI_DENOUNCED_HUMAN_ENEMY_RANDFAILED:28200 strTemp.Format("***** Just FYI - I denounced your enemy! RANDFAILED *****");28201 break;28202 case DIPLO_STATEMENT_FYI_BEFRIEND_HUMAN_FRIEND:28203 strTemp.Format("***** JUST FYI - I BEFRIENDED YOUR FRIEND! *****");28204 break;28205 case DIPLO_STATEMENT_FYI_BEFRIEND_HUMAN_FRIEND_RANDFAILED:28206 strTemp.Format("***** Just FYI - I befriended your friend! RANDFAILED *****");28207 break;28208 case DIPLO_STATEMENT_SAME_POLICIES_AUTOCRACY:28209 case DIPLO_STATEMENT_SAME_POLICIES_FREEDOM:28210 case DIPLO_STATEMENT_SAME_POLICIES_ORDER:28211 strTemp.Format("***** Yay! We like the same late game social policy tree *****");28212 break;28213 case DIPLO_STATEMENT_WE_LIKED_THEIR_PROPOSAL:28214 strTemp.Format("***** We liked their World Congress proposal *****");28215 break;28216 case DIPLO_STATEMENT_WE_DISLIKED_THEIR_PROPOSAL:28217 strTemp.Format("***** We disliked their World Congress proposal *****");28218 break;28219 case DIPLO_STATEMENT_THEY_SUPPORTED_OUR_PROPOSAL:28220 strTemp.Format("***** They supported our World Congress proposal *****");28221 break;28222 case DIPLO_STATEMENT_THEY_FOILED_OUR_PROPOSAL:28223 strTemp.Format("***** They foiled our World Congress proposal *****");28224 break;28225 case DIPLO_STATEMENT_THEY_SUPPORTED_OUR_HOSTING:28226 strTemp.Format("***** They supported our World Congress hosting *****");28227 break;28228 case DIPLO_STATEMENT_YOUR_IDEOLOGY_CAUSING_CIVIL_UNREST_FREEDOM:28229 case DIPLO_STATEMENT_YOUR_IDEOLOGY_CAUSING_CIVIL_UNREST_ORDER:28230 case DIPLO_STATEMENT_YOUR_IDEOLOGY_CAUSING_CIVIL_UNREST_AUTOCRACY:28231 strTemp.Format("***** Your ideology is causing civil unrest in our civ *****");28232 break;28233 case DIPLO_STATEMENT_OUR_IDEOLOGY_CAUSING_CIVIL_UNREST_FREEDOM:28234 case DIPLO_STATEMENT_OUR_IDEOLOGY_CAUSING_CIVIL_UNREST_ORDER:28235 case DIPLO_STATEMENT_OUR_IDEOLOGY_CAUSING_CIVIL_UNREST_AUTOCRACY:28236 strTemp.Format("***** Taunt - our ideology is causing unrest in your civ *****");28237 break;28238 case DIPLO_STATEMENT_SWITCH_OUR_IDEOLOGY_FREEDOM:28239 case DIPLO_STATEMENT_SWITCH_OUR_IDEOLOGY_ORDER:28240 case DIPLO_STATEMENT_SWITCH_OUR_IDEOLOGY_AUTOCRACY:28241 strTemp.Format("***** Yay! They switched to our ideology *****");28242 break;28243 case DIPLO_STATEMENT_YOUR_CULTURE_INFLUENTIAL:28244 strTemp.Format("***** Your culture is now influential over us *****");28245 break;28246 case DIPLO_STATEMENT_OUR_CULTURE_INFLUENTIAL:28247 strTemp.Format("***** Taunt - Our culture is now influential over you *****");28248 break;28249 default:28250 strTemp.Format("Unknown message!!!");28251 break;28252 }2825328254 strOutBuf += ", " + strTemp;2825528256 // Don't log these messages for now - they have their own function28257 if(eMessage != DIPLO_STATEMENT_DENOUNCE &&28258 eMessage != DIPLO_STATEMENT_COOP_WAR_REQUEST)28259 pLog->Msg(strOutBuf);2826028261 // Also send message to Minor Civ log if applicable28262 if(bMinorMessage)28263 {28264 // Open the log file28265 if(GC.getPlayerAndCityAILogSplit())28266 strLogName = "DiplomacyAI_MinorCiv_Log_" + playerName + ".csv";28267 else28268 strLogName = "DiplomacyAI_MinorCiv_Log.csv";2826928270 pLog = LOGFILEMGR.GetLog(strLogName, FILogFile::kDontTimeStamp);28271 pLog->Msg(strOutBuf);28272 }2827328274 OutputDebugString("\n");28275 OutputDebugString(strOutBuf);28276 OutputDebugString("\n");28277 }28278}