Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chance of disclosure of the enslaving civ to the victim (including AI awareness) #72

Open
LynxAbraxas opened this issue Jan 27, 2019 · 20 comments

Comments

@LynxAbraxas
Copy link
Contributor

LynxAbraxas commented Jan 27, 2019

Does the AI get the info what civ/player successfully took slaves from a city?
During play testing, it often happens that the AI civ declares war on the enslaving civ upon successful enslavement.
A player only gets the info in what city slaves were taken but not by what civ:

(new CityReport("137SlaveCompleteVictim", target_city));

@MartinGuehmann
Copy link
Collaborator

I think, this is a bug. And enslaving shouldn't make the AI declare war. The AI doesn't do it on free slaves, either.

@MartinGuehmann
Copy link
Collaborator

It is in RegardEvent.cpp.

InciteRevolution is a cold war attack and breaks alliances and military pacts.
AssassinateRuler is a cold war attack and breaks alliances and military pacts.
MakeFranchise is a cold war attack.
PlantNuke declares war.
EnslaveSettler declares war, but is a cold war goal.
SlaveRaid declares war, but is a cold war goal.
Lawsuit is a cold war attack.
ExpelUnits
NukeCityUnit declares war.
NukeLocationUnit is a cold war attack and declares war.
UndergroundRailway declares war, but is a cold war goal.
InciteUprising declares war.
BioInfectCity declares war.
PlagueCity declares war.
NanoInfectCity is a cold war attack and declares war.
ConvertCity is a cold war attack and breaks military and trade pacts, and alliances.
IndulgenceSaleMade is a cold war attack and breaks military and trade pacts, and alliances.
CreatePark declares war.
Pillage declares war.
Injoin is a cold war attack and breaks military and trade pacts, and alliances.

@LynxAbraxas
Copy link
Contributor Author

Thanks for looking into this.
So should the AI be changed to not declare war on SlaveRaid or the message to the player changed to include the enslaving civ? I guess, extending the message is the simpler option.

@MartinGuehmann
Copy link
Collaborator

The thing is that those are stealth attacks, so naively I would assume that the victim does not know who it was. Of course for some are indicators, in that case you would know but for others not.

And also I have seen the AIs using InciteRevolution as a very effective strategy to cripple opponents, InciteUprising has actually the same effect, but is harder to execute, because the city needs slaves, but is treated as attack.

The results of these actions and my expectations do not match. You can expect that planting a nuke is a secret action and if the secrecy does not break, the AI should not declare war, even so it is a war crime.

So I would favor not to declare war, actually this can also be changed in RegardEvent.cpp, you just have to change the LogViolationEvent, it should not be ceasefire.

@MartinGuehmann
Copy link
Collaborator

@LynxAbraxas have we resolved that issue?

@LynxAbraxas
Copy link
Contributor Author

Hm, I think not. As far as I remember, one of your commits should have made the AI not to declare war upon "stepping" into a cleric, which might apply also to a slaver (not sure), but here I really meant that the AI seems to "get a message" which civ enslaved while the normal player does not told the enslaving civ, so that is kind of unfair.
What option would you find more appropriate to go for:

a) name enslaving civ in message to the victim?
b) make AI not act as if it knows the attacker?

@MartinGuehmann
Copy link
Collaborator

Well, the AI gets a trust violation event, so it knows that you did something bad to it. But also as human player you can discover, just look at the nice chain icons next to an AI city, so you can know that they stole your citizens. We could add a chance that the attacker is disclosed. If the attacker is disclosed then the chains are in the color of the victim if the attacker is not disclosed then the chains are in the color of the Barbarians.

And if the attacker disclosed then the message tells the player.

@LynxAbraxas
Copy link
Contributor Author

just look at the nice chain icons next to an AI city

In principle yes, but you have to go there with a unit to reveal that state that is otherwise hidden by the fog of war. Also the slave might have been assigned to a city that you have not discovered yet.
I think either the trust violation event to the AI is inappropriate or the attacker sould be disclosed in a message, possibly randomly but then also the AI even should be as random.

@MartinGuehmann
Copy link
Collaborator

So then we go for a random message with random trust violation. However as human you could still discover it and well get mad. So should it in that case be a Barbarian icon?

@LynxAbraxas
Copy link
Contributor Author

So should it in that case be a Barbarian icon?

Hm, how about white? I would guess you could enslave from a barabarian city which should yield a red icon already.

@MartinGuehmann
Copy link
Collaborator

So should it in that case be a Barbarian icon?

Hm, how about white? I would guess you could enslave from a barabarian city which should yield a red icon already.

Yes, you can enslave from Barbarian cities, but they are on war with you, anyway. So what? And in the end it is a player color, which would also cause some additional code.

@LynxAbraxas
Copy link
Contributor Author

LynxAbraxas commented Apr 29, 2019

Was not aware that white is another player color, is it? (Would be bad for the pirating color square in the trade manager which is white if no pirating happens.) If so, how about grey, black white inverted or with stripes? Red is basically always associated with barbarians, which would not be the case if used here.

@MartinGuehmann
Copy link
Collaborator

White isn't a player color, but the slave icons use player colors. But still Barbs come from no man's land, so what is wrong with it?

@LynxAbraxas
Copy link
Contributor Author

Ah, I see you want to use a player color to keep the code changes to a minimum. Then just go for red, I just proposed a non-player color because I would find red irritating if I were not aware of this conversation. Probably something that should go in the documentation of "new features, concepts and changes".

@MartinGuehmann
Copy link
Collaborator

Actually, think it is just enough to add a chance to disclose the attacker, if the attacking slaver was not visible to the victim. If the slaver was visible then the chance is 100 %.

In principle, the AI should send so many slavers that eventual you will be informed, anyway. And you can also work it out if you have some slavers or abolitionists of your own in your cities. They can see slavers.

In fact we, only have to give away the information of the slaver was caught or seen.

@LynxAbraxas
Copy link
Contributor Author

Agreed. NB: Is it not possible to build abolitionists under some circumstances, like being in a theology or when owning slaver?

@MartinGuehmann
Copy link
Collaborator

Agreed. NB: Is it not possible to build abolitionists under some circumstances, like being in a theology or when owning slaver?

You can't build abolitionists if you have slavers or slaves. So you have to decide on which side you stand. Maybe we can put this into the Great Library. And by the way, if you have abolitionists you cannot build slavers, either.

@LynxAbraxas
Copy link
Contributor Author

LynxAbraxas commented Apr 30, 2019

Thanks, that explains my observation, can't remember though if that actually also applied to the AI civs during my play-testing, could it be that the AI can doge that rule?

@MartinGuehmann
Copy link
Collaborator

Thanks, that explains my observation, can't remember though if that actually also applied to the AI civs during my play-testing, could it be that the AI can doge that rule?

No they can't, they just build what is in line with their strategy, most of the AIs build slavers and the rest abolitionists.

@LynxAbraxas
Copy link
Contributor Author

@LynxAbraxas have we resolved that issue?

I do have the impression now that the original issue is solved (AI does not declare war any more upon enslavement), however the ideas in following discussion are not realized so far, so instead of closing this decided to rename the issue.

@LynxAbraxas LynxAbraxas changed the title Player is not told the civ that enslaved but AI sometimes declares war upon enslavement Chance of disclosure of the enslaving civ to the vicim (including AI awareness) Feb 1, 2020
@LynxAbraxas LynxAbraxas changed the title Chance of disclosure of the enslaving civ to the vicim (including AI awareness) Chance of disclosure of the enslaving civ to the victim (including AI awareness) Feb 1, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants