(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] =
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.