Author: pepeto
Date: Mon Aug 25 17:43:30 2014
New Revision: 26034

URL: http://svn.gna.org/viewcvs/freeciv?rev=26034&view=rev
Log:
Emit the "tech_researched" script signal for all players sharing the same
research.

See gna bug #22474

Modified:
    trunk/server/diplhand.c
    trunk/server/scripting/api_server_edit.c
    trunk/server/techtools.c

Modified: trunk/server/diplhand.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/diplhand.c?rev=26034&r1=26033&r2=26034&view=diff
==============================================================================
--- trunk/server/diplhand.c     (original)
+++ trunk/server/diplhand.c     Mon Aug 25 17:43:30 2014
@@ -454,11 +454,13 @@
                  advance_name,
                  nation_plural_for_player(pgiver));
 
-            script_server_signal_emit("tech_researched", 3,
-                                      API_TYPE_TECH_TYPE,
-                                      advance_by_number(pclause->value),
-                                      API_TYPE_PLAYER, pdest,
-                                      API_TYPE_STRING, "traded");
+            research_players_iterate(presearch, member) {
+              script_server_signal_emit("tech_researched", 3,
+                                        API_TYPE_TECH_TYPE,
+                                        advance_by_number(pclause->value),
+                                        API_TYPE_PLAYER, member,
+                                        API_TYPE_STRING, "traded");
+            } research_players_iterate_end;
             do_dipl_cost(pdest, pclause->value);
             found_new_tech(presearch, pclause->value, FALSE, TRUE);
           }

Modified: trunk/server/scripting/api_server_edit.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/scripting/api_server_edit.c?rev=26034&r1=26033&r2=26034&view=diff
==============================================================================
--- trunk/server/scripting/api_server_edit.c    (original)
+++ trunk/server/scripting/api_server_edit.c    Mon Aug 25 17:43:30 2014
@@ -282,10 +282,12 @@
     do_free_cost(pplayer, id);
     found_new_tech(presearch, id, FALSE, TRUE);
     result = advance_by_number(id);
-    script_server_signal_emit("tech_researched", 3,
-                              API_TYPE_TECH_TYPE, result,
-                              API_TYPE_PLAYER, pplayer,
-                              API_TYPE_STRING, reason);
+    research_players_iterate(presearch, member) {
+      script_server_signal_emit("tech_researched", 3,
+                                API_TYPE_TECH_TYPE, result,
+                                API_TYPE_PLAYER, member,
+                                API_TYPE_STRING, reason);
+    } research_players_iterate_end;
     return result;
   } else {
     return NULL;

Modified: trunk/server/techtools.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/techtools.c?rev=26034&r1=26033&r2=26034&view=diff
==============================================================================
--- trunk/server/techtools.c    (original)
+++ trunk/server/techtools.c    Mon Aug 25 17:43:30 2014
@@ -122,11 +122,13 @@
   /* do all the updates needed after finding new tech */
   found_new_tech(research, research->researching, TRUE, TRUE);
 
-  script_server_signal_emit("tech_researched", 3,
-                            API_TYPE_TECH_TYPE,
-                            advance_by_number(researched_tech),
-                            API_TYPE_PLAYER, plr,
-                            API_TYPE_STRING, "researched");
+  research_players_iterate(research, member) {
+    script_server_signal_emit("tech_researched", 3,
+                              API_TYPE_TECH_TYPE,
+                              advance_by_number(researched_tech),
+                              API_TYPE_PLAYER, member,
+                              API_TYPE_STRING, "researched");
+  } research_players_iterate_end;
 }
 
 /****************************************************************************
@@ -188,11 +190,13 @@
          do_free_cost(pplayer, i);
           found_new_tech(presearch, i, FALSE, TRUE);
 
-          script_server_signal_emit("tech_researched", 3,
-                                    API_TYPE_TECH_TYPE,
-                                    advance_by_number(i),
-                                    API_TYPE_PLAYER, pplayer,
-                                    API_TYPE_STRING, "stolen");
+          research_players_iterate(presearch, member) {
+            script_server_signal_emit("tech_researched", 3,
+                                      API_TYPE_TECH_TYPE,
+                                      advance_by_number(i),
+                                      API_TYPE_PLAYER, member,
+                                      API_TYPE_STRING, "stolen");
+          } research_players_iterate_end;
          break;
        }
       }
@@ -1255,11 +1259,13 @@
     do_conquer_cost(pplayer, stolen_tech);
     found_new_tech(presearch, stolen_tech, FALSE, TRUE);
 
-    script_server_signal_emit("tech_researched", 3,
-                              API_TYPE_TECH_TYPE,
-                              advance_by_number(stolen_tech),
-                              API_TYPE_PLAYER, pplayer,
-                              API_TYPE_STRING, "stolen");
+    research_players_iterate(presearch, member) {
+      script_server_signal_emit("tech_researched", 3,
+                                API_TYPE_TECH_TYPE,
+                                advance_by_number(stolen_tech),
+                                API_TYPE_PLAYER, member,
+                                API_TYPE_STRING, "stolen");
+    } research_players_iterate_end;
 
     return stolen_tech;
   };


_______________________________________________
Freeciv-commits mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to