Complete.Org: Mailing Lists: Archives: freeciv-dev: August 2003:
[Freeciv-Dev] Re: (PR#5107) tile marked as unavailable but seems to be a
Home

[Freeciv-Dev] Re: (PR#5107) tile marked as unavailable but seems to be a

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: undisclosed-recipients: ;
Subject: [Freeciv-Dev] Re: (PR#5107) tile marked as unavailable but seems to be available
From: "Jason Short" <jdorje@xxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 15 Aug 2003 10:11:58 -0700
Reply-to: rt@xxxxxxxxxxxxxx

Jason Short wrote:
> Per I. Mathisen wrote:
> 
>>On Fri, 15 Aug 2003, Jason Short wrote:
>>
>>
>>>There are lots and lots of messages like this:
>>>
>>>1: Tile at Jerusalem->1,2 marked as unavailable but seems to be available!
>>>
>>>Which seems to be a significant bug. I thought it was caused by a
>>>recent change of mine, but I don't think so anymore. I don't know why
>>>it happens.
>>
>>I think it is because the AI is omniscient but has some of its city tiles
>>unrevealed and therefore unable to use them. This is something the AI/the
>>server is unable to properly reconcile.
> 
> 
> The tile is marked unavailable because a DS_NO_CONTACT unit is on it. 
> Then when contact is made this unit becomes DS_NEUTRAL so the tile is 
> now available to be worked.
> 
> The easy fix is that city maps should be updated when contact is made.
> 
> I dunno if this situation exists with other diplomatic state transitions.

See attached patch.

Note that if NO_CONTACT was equivalent to NEUTRAL this wouldn't be a 
problem.  But I don't think this code should rely on that.

jason

? rc
? shuffled_players.diff
Index: server/plrhand.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/plrhand.c,v
retrieving revision 1.286
diff -u -r1.286 plrhand.c
--- server/plrhand.c    2003/08/08 22:11:42     1.286
+++ server/plrhand.c    2003/08/15 17:07:51
@@ -1450,6 +1450,9 @@
     send_player_info(pplayer2, pplayer1);
     send_player_info(pplayer1, pplayer1);
     send_player_info(pplayer2, pplayer2);
+
+    check_city_workers(pplayer1);
+    check_city_workers(pplayer2);
     return;
   }
   if (player_has_embassy(pplayer1, pplayer2)

[Prev in Thread] Current Thread [Next in Thread]