Author: cazfi
Date: Tue Dec 30 05:34:39 2014
New Revision: 27448

URL: http://svn.gna.org/viewcvs/freeciv?rev=27448&view=rev
Log:
Moved printing the message about how city survived a disaster without any 
serious effects
to the default.lua script, so lua scripts can suppress it if scripts themself 
implement some effect.

Requested by Jacob Nevins <jtn>

See bug #22082

Modified:
    trunk/data/default/default.lua
    trunk/server/cityturn.c
    trunk/server/scripting/script_server.c

Modified: trunk/data/default/default.lua
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/default/default.lua?rev=27448&r1=27447&r2=27448&view=diff
==============================================================================
--- trunk/data/default/default.lua      (original)
+++ trunk/data/default/default.lua      Tue Dec 30 05:34:39 2014
@@ -188,3 +188,15 @@
 end
 
 signal.connect("city_lost", "default_make_partisans_callback")
+
+
+-- Notify player about the fact that disaster had no effect if that's
+-- the case
+function harmless_disaster_message(disaster, city, had_internal_effect)
+  if not had_internal_effect then
+    notify.event(city.owner, city.tile, E.DISASTER,
+        _("We survived the disaster without serious damages."))
+  end
+end
+
+signal.connect("disaster", "harmless_disaster_message")

Modified: trunk/server/cityturn.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/cityturn.c?rev=27448&r1=27447&r2=27448&view=diff
==============================================================================
--- trunk/server/cityturn.c     (original)
+++ trunk/server/cityturn.c     Tue Dec 30 05:34:39 2014
@@ -3403,7 +3403,7 @@
 {
   struct player *pplayer = city_owner(pcity);
   struct tile *ptile = city_tile(pcity);
-  bool had_effect = FALSE;
+  bool had_internal_effect = FALSE;
 
   log_debug("%s at %s", disaster_rule_name(pdis), city_name(pcity));
 
@@ -3417,7 +3417,7 @@
     if (place_pollution(pcity, EC_POLLUTION)) {
       notify_player(pplayer, ptile, E_DISASTER, ftc_server,
                     _("Tile polluted"));
-      had_effect = TRUE;
+      had_internal_effect = TRUE;
     }
   }
 
@@ -3425,7 +3425,7 @@
     if (place_pollution(pcity, EC_FALLOUT)) {
       notify_player(pplayer, ptile, E_DISASTER, ftc_server,
                     _("Fallout contaminated tile."));
-      had_effect = TRUE;
+      had_internal_effect = TRUE;
     }
   }
 
@@ -3441,7 +3441,7 @@
                     _("Some population lost."));
     }
 
-    had_effect = TRUE;
+    had_internal_effect = TRUE;
   }
 
   if (pcity && disaster_has_effect(pdis, DE_DESTROY_BUILDING)) {
@@ -3463,7 +3463,7 @@
                     _("%s destroyed."),
                     improvement_name_translation(imprs[num]));
 
-      had_effect = TRUE;
+      had_internal_effect = TRUE;
     }
   }
 
@@ -3474,7 +3474,7 @@
       notify_player(pplayer, ptile, E_DISASTER, ftc_server,
                     _("Foodbox emptied."));
 
-      had_effect = TRUE;
+      had_internal_effect = TRUE;
     }
   }
 
@@ -3485,19 +3485,15 @@
       notify_player(pplayer, ptile, E_DISASTER, ftc_server,
                     _("Production box emptied."));
 
-      had_effect = TRUE;
-
-    }
-  }
-
-  if (!had_effect) {
-    notify_player(pplayer, ptile, E_DISASTER, ftc_server,
-                  _("We survived the disaster without serious damages."));
-  }
-
-  script_server_signal_emit("disaster", 2,
+      had_internal_effect = TRUE;
+
+    }
+  }
+
+  script_server_signal_emit("disaster", 3,
                             API_TYPE_DISASTER, pdis,
-                            API_TYPE_CITY, pcity);
+                            API_TYPE_CITY, pcity,
+                            API_TYPE_BOOL, had_internal_effect);
 }
 
 /**************************************************************************

Modified: trunk/server/scripting/script_server.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/scripting/script_server.c?rev=27448&r1=27447&r2=27448&view=diff
==============================================================================
--- trunk/server/scripting/script_server.c      (original)
+++ trunk/server/scripting/script_server.c      Tue Dec 30 05:34:39 2014
@@ -387,8 +387,8 @@
   luascript_signal_create(fcl, "unit_lost", 3,
                           API_TYPE_UNIT, API_TYPE_PLAYER, API_TYPE_STRING);
 
-  luascript_signal_create(fcl, "disaster", 2,
-                          API_TYPE_DISASTER, API_TYPE_CITY);
+  luascript_signal_create(fcl, "disaster", 3,
+                          API_TYPE_DISASTER, API_TYPE_CITY, API_TYPE_BOOL);
 
   luascript_signal_create(fcl, "achievement_gained", 3,
                           API_TYPE_ACHIEVEMENT, API_TYPE_PLAYER,


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to