[freeciv-ai] Re: Questions on advdiplomacy
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
Jordi Negrevernis i Font wrote:
I was looking at advdiplomacy.c /Freeciv 2.0.0 Beta 8) and found 3 issues:
* When we evaluate an exchange of a city, we check for the capital city
to deny a request.
Why we don't check to see if it's the last city?
There was one game where an AI player traded me his last city (PR#12287).
/* If this lucky fella got a ceasefire with da boss, then
* let him live. */
if (pplayer_get_diplstate(aplayer, ai->diplomacy.alliance_leader)->type
== DS_CEASEFIRE && pclause->type == CLAUSE_CEASEFIRE) {
notify(aplayer, _("*%s (AI)* %s recommended that I give you a
ceasefire."
" This is your lucky day."), pplayer->name,
ai->diplomacy.alliance_leader->name);
Why we do not accept a peace state with the boss to give a cease-fire
to an enemy?
Personally I don't understand/like any of the AI alliance leader
concepts. They make diplomacy very hard (sometimes you can't even do
diplomacy with one player until you contact another) and make alliances
too rigid.
*
/* Remember: pplayers_allied() returns true when aplayer == eplayer */
if (!cancel_excuse && pplayers_allied(aplayer, eplayer)) {
if (ds == DS_CEASEFIRE) {
kill_desire -= kill_desire / 10; /* 10% off */
} else if (ds == DS_NEUTRAL) {
kill_desire -= kill_desire / 7; /* 15% off */
} else if (ds == DS_PEACE) {
kill_desire -= kill_desire / 5; /* 20% off */
} else if (ds == DS_ALLIANCE) {
kill_desire -= kill_desire / 3; /* 33% off here, more later */
}
}
} players_iterate_end;
In computing the desire for war, i think that the first check should
exchange DS_NEUTRAL and DS_CEASEFIRE because you get a higher penalty
for breaking a cease-fire instead of a neutral treaty.
Yes, absolutely. ceasefire is one step "up" from neutral.
-jason
|
|