[Freeciv-Dev] Re: (PR#11373) Beta Crashing
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
<URL: http://rt.freeciv.org/Ticket/Display.html?id=11373 >
Marko Lindqvist wrote:
>
> I'm already testing fix for this
Ok, that bigger fix is going to be too big for S2_0 anyway so it
should hold back simple, and somewhat urgently needed, fix for stable.
- ML
diff -Nurd -X.diff_ignore freeciv/server/unittools.c freeciv/server/unittools.c
--- freeciv/server/unittools.c 2004-12-07 01:27:32.093750000 +0200
+++ freeciv/server/unittools.c 2004-12-07 02:51:47.031250000 +0200
@@ -629,6 +629,9 @@
unit_list_iterate(punit->tile->units,
punit2) {
if (is_ground_unit(punit2)) {
+ /* Unfog (increase seen counter) first, fog (decrease counter)
+ * later, so tiles that are within vision range both before and
+ * after are not even temporarily marked fogged. */
unfog_area(pplayer, punit2->tile,
unit_type(punit2)->vision_range);
fog_area(pplayer, punit2->tile,
@@ -659,6 +662,9 @@
freelog(LOG_VERBOSE, "Watchtower(2) pillaged!");
unit_list_iterate(punit->tile->units, punit2) {
if (is_ground_unit(punit2)) {
+ /* Unfog (increase seen counter) first, fog (decrease counter)
+ * later, so tiles that are within vision range both before and
+ * after are not even temporarily marked fogged. */
unfog_area(pplayer, punit2->tile,
unit_type(punit2)->vision_range);
fog_area(pplayer, punit2->tile,
@@ -695,10 +701,13 @@
if (player_knows_techs_with_flag(pplayer, TF_WATCHTOWER)) {
unit_list_iterate(ptile->units, punit) {
if (is_ground_unit(punit)) {
- fog_area(pplayer, punit->tile,
- unit_type(punit)->vision_range);
+ /* Unfog (increase seen counter) first, fog (decrease counter)
+ * later, so tiles that are within vision range both before and
+ * after are not even temporarily marked fogged. */
unfog_area(pplayer, punit->tile,
get_watchtower_vision(punit));
+ fog_area(pplayer, punit->tile,
+ unit_type(punit)->vision_range);
}
}
unit_list_iterate_end;
@@ -1383,7 +1392,12 @@
conn_list_do_buffer(&pplayer->connections);
- /* apply new vision range */
+ /* Apply new vision range
+ *
+ * Unfog (increase seen counter) first, fog (decrease counter)
+ * later, so tiles that are within vision range both before and
+ * after are not even temporarily marked fogged. */
+
if (map_has_special(punit->tile, S_FORTRESS)
&& unit_profits_of_watchtower(punit))
unfog_area(pplayer, punit->tile, get_watchtower_vision(punit));
|
|