(PR#10078) AIs often agress on cease fire just for one turn
"Mateusz Stefek" <mstefek-IjDXvh/[email protected]>
| Newsgroups | gmane.games.freeciv.ai |
|---|---|
| Message-ID | <[email protected]> |
<URL: http://rt.freeciv.org/Ticket/Display.html?id=10078 > The reason is that ai_players_can_agree_on_ceasefire() isn't restrictive enough. This patch fixes it. Also change the method of calculating ai.love gravitation. Now it's better rounded. -- mateusz
cease_fire_restriction.diff
(text/x-patch, 1.3 KB)
Index: advdiplomacy.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/ai/advdiplomacy.c,v
retrieving revision 1.37
diff -u -r1.37 advdiplomacy.c
--- advdiplomacy.c 6 Sep 2004 09:00:32 -0000 1.37
+++ advdiplomacy.c 13 Sep 2004 07:34:50 -0000
@@ -173,8 +173,7 @@
struct ai_data *ai1;
ai1 = ai_data_get(player1);
return (ai1->diplomacy.target != player2 &&
- (player1 == ai1->diplomacy.alliance_leader ||
- !pplayers_at_war(player2, ai1->diplomacy.alliance_leader)) &&
+ ai1->diplomacy.player_intel[player2->player_no].at_war_with_ally &&
player1->ai.love[player2->player_no] > -40 &&
(ai1->diplomacy.target == NULL ||
!pplayers_allied(ai1->diplomacy.target, player2)));
@@ -743,8 +742,9 @@
/* Massage our numbers to keep love and its opposite on the ground.
* Gravitate towards zero. */
- pplayer->ai.love[aplayer->player_no] -=
- (pplayer->ai.love[aplayer->player_no] * ai->diplomacy.love_coeff / 100);
+ pplayer->ai.love[aplayer->player_no] =
+ (pplayer->ai.love[aplayer->player_no] *
+ (100 - ai->diplomacy.love_coeff) / 100);
/* ai love should always be in range [-100..100] */
pplayer->ai.love[aplayer->player_no] =