Why does AI tell me I "Kept My Promise?"

jimc52

Chieftain
Joined
Dec 8, 2007
Messages
24
Hi everyone. I posted this last night, but apparently, for some reason, it never posted properly. I came back to check and see and cannot find it.

I have BNW, been playing CIV for many years all the way back to the original game. Since CIV V came out, I have noticed a logic error and wonder if anyone else has noticed this. It is a minor annoyance (something that makes no sense but the AI does it anyway). In no way does it degrade game play or cause problems other then something happens that makes no sense.

Here is the situation. I am buying up land near an opponent. The opponent feels threatened because I get a message through diplomatic channels (the diplomacy screen) from the opponent saying they notice I am buying up land they consider to be (their own).

I tell them basically, to mind their own business, I do what I want. That is NOT a promise, remember. It is just a statement of fact that I will buy what I want when I feel like it........They come back saying they are disappointed in me (as if I care).

Well, for whatever reason, I get on with playing the game and don't happen to buy additional land that was in question near that opponent. Maybe 30 - 50 moves later, I get a message pop up at me saying:

"YOU KEPT YOUR PROMISE!"

Point in question is, I never promised not to buy more land near that opponent, I just decided to play the game elsewhere and do other things and in the mix, buying land, just go lost...but I never promised, I told the opponent to mind their own business and I would do what I wanted to do. It is illogical for the game to come back and say I kept a promise I never made.

Can the game developers figure out this logic glitch and fix it? Has anyone else noticed this? I did the search thing on this forum for any similar report and could find nothing.

Anyone else notice this?

Thanks guys.
 
On screens like these your response is simply a flavor that doesn't affect the civ's decision-making. It is your actions (not buying tiles) that actually affect the diplomacy.

Other similar requests where your response doesn't really matter: to stop settling near AI; to stop spying; to stop converting AI's Holy City.
 
On screens like these your response is simply a flavor that doesn't affect the civ's decision-making. It is your actions (not buying tiles) that actually affect the diplomacy.

Other similar requests where your response doesn't really matter: to stop settling near AI; to stop spying; to stop converting AI's Holy City.

I don't think this is strictly true. I would agree that some responses are for fun, but if you actually do make a promise to the AI and then break that promise, you will take a diplomatic hit, possibly with more than the one civ you made the promise to. I know this doesn't answer the original question though.
 
Thanks for the explanation. I agree this is what is happening, but if the developers have time to look at their logic branch for this, it should be something like:

Promise Made = Boolean
Response = Integer
Action = Integer

If Response = "No" {to their request then};

Promise Made = FALSE
Hit Points = 0
Message saying "You have Kept your Promise" = 0 {do not display message}

Endif;

If Response = "Yes" {to their request then};

Promise Made = TRUE AND Action = 0
{Condition 1: If you keep promise then};
Hit Points = 0
Message saying "You have Kept your Promise" = 1 {display the message}

Elseif;

Promise Made = TRUE AND Action = 1
{Condition 2: You broke your promise};
Hit Points = (some negative number or other consequences)
Message saying "You broke Your Promise" = 1 {display the message}

Endif;

This is the logic I am proposing, although the programmer will have to translate my conditional logic to their programming language. Hope this helps to fix the problem!

Thanks guys for responding...
 
Thank you very much for moving this to the bug report. I appreciate it! Have a great Thanksgiving.
 
So even though he was rude to the AI, the AI just assumed that he decided to do as he was told because he didn`t actually expand into his area.

Hmmm. Not so implausible. I`ve seen one person warn another (in real life) not to say, let his dog into his garden or they`ll be trouble. The dog owner swears and says he`ll do what he wants, but never lets the dog go into the other person`s garden again. The other person watches and, after a while, notes that his neighbour did as he was told.

Not impossible.

What happened with you is you just forgot about it and it could be reasonable that the AI has assumed you obeyed in the end, after watching you carefully for many turns, like the neighbour. Even if it isn`t programmed to think that. It does work out.

I suppose what should also be done is to have the AI sometimes react first to your response: instead of waiting to see if you heed the warning, just acts against you straight away instead.

So Firaxis should make the AI `wait and see` which is what it basically does and an AI alternative (percentage decision based on personality) that acts out of anger due to your response, negating any `wait and see` attitude.

Sorry for the waffle. :)
 
Thanks for the explanation. I agree this is what is happening, but if the developers have time to look at their logic branch for this, it should be something like:

Promise Made = Boolean
Response = Integer
Action = Integer

If Response = "No" {to their request then};

Promise Made = FALSE
Hit Points = 0
Message saying "You have Kept your Promise" = 0 {do not display message}

Endif;

If Response = "Yes" {to their request then};

Promise Made = TRUE AND Action = 0
{Condition 1: If you keep promise then};
Hit Points = 0
Message saying "You have Kept your Promise" = 1 {display the message}

Elseif;

Promise Made = TRUE AND Action = 1
{Condition 2: You broke your promise};
Hit Points = (some negative number or other consequences)
Message saying "You broke Your Promise" = 1 {display the message}

Endif;

This is the logic I am proposing, although the programmer will have to translate my conditional logic to their programming language. Hope this helps to fix the problem!

Thanks guys for responding...

That is more or less how it is coded right now. Look inside CvDiplomacyAI.cpp if you are curious... has more sophistication than that, of course, but the main idea is exactly what you proposed.

Also, I reviewed it yesterday (the code), and couldn't find any bug or logic error... I remember seeing what OP reports in earlier versions, but don't remember seeing it lately... perhaps they corrected the bug for the latest patches and OP is running an earlier version?
 
Back
Top Bottom