Author: sveinung
Date: Fri Jun 10 12:25:35 2016
New Revision: 32819

URL: http://svn.gna.org/viewcvs/freeciv?rev=32819&view=rev
Log:
Hard code domestic target via ruleset adjustment.

The rule that certain actions must have a domestic target can be expressed
in a requirement vector. Putting it there makes it visible to code that gets
its information from requirement vectors.

Move the hard coding of the rule that "Upgrade Unit" must have a foreign
target to autoadjust_ruleset_data(). Add it to the bundled rulesets.

See patch #7254

Modified:
    trunk/data/alien/game.ruleset
    trunk/data/civ1/game.ruleset
    trunk/data/civ2/game.ruleset
    trunk/data/civ2civ3/game.ruleset
    trunk/data/classic/game.ruleset
    trunk/data/experimental/game.ruleset
    trunk/data/multiplayer/game.ruleset
    trunk/data/sandbox/game.ruleset
    trunk/fc_version
    trunk/server/rssanity.c

Modified: trunk/data/alien/game.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/alien/game.ruleset?rev=32819&r1=32818&r2=32819&view=diff
==============================================================================
--- trunk/data/alien/game.ruleset       (original)
+++ trunk/data/alien/game.ruleset       Fri Jun 10 12:25:35 2016
@@ -503,6 +503,10 @@
 
 [actionenabler_upgrade_unit]
 action = "Upgrade Unit"
+actor_reqs    =
+    { "type",    "name",       "range", "present"
+      "DiplRel", "Is foreign", "Local", FALSE
+    }
 
 [actionenabler_airlift_unit]
 action = "Airlift Unit"

Modified: trunk/data/civ1/game.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/civ1/game.ruleset?rev=32819&r1=32818&r2=32819&view=diff
==============================================================================
--- trunk/data/civ1/game.ruleset        (original)
+++ trunk/data/civ1/game.ruleset        Fri Jun 10 12:25:35 2016
@@ -453,6 +453,10 @@
 
 [actionenabler_upgrade_unit]
 action = "Upgrade Unit"
+actor_reqs    =
+    { "type",    "name",       "range", "present"
+      "DiplRel", "Is foreign", "Local", FALSE
+    }
 
 [actionenabler_airlift_unit]
 action = "Airlift Unit"

Modified: trunk/data/civ2/game.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/civ2/game.ruleset?rev=32819&r1=32818&r2=32819&view=diff
==============================================================================
--- trunk/data/civ2/game.ruleset        (original)
+++ trunk/data/civ2/game.ruleset        Fri Jun 10 12:25:35 2016
@@ -553,6 +553,10 @@
 
 [actionenabler_upgrade_unit]
 action = "Upgrade Unit"
+actor_reqs    =
+    { "type",    "name",       "range", "present"
+      "DiplRel", "Is foreign", "Local", FALSE
+    }
 
 [actionenabler_airlift_unit]
 action = "Airlift Unit"

Modified: trunk/data/civ2civ3/game.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/civ2civ3/game.ruleset?rev=32819&r1=32818&r2=32819&view=diff
==============================================================================
--- trunk/data/civ2civ3/game.ruleset    (original)
+++ trunk/data/civ2civ3/game.ruleset    Fri Jun 10 12:25:35 2016
@@ -592,6 +592,10 @@
 
 [actionenabler_upgrade_unit]
 action = "Upgrade Unit"
+actor_reqs    =
+    { "type",    "name",       "range", "present"
+      "DiplRel", "Is foreign", "Local", FALSE
+    }
 
 [actionenabler_airlift_unit]
 action = "Airlift Unit"

Modified: trunk/data/classic/game.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/classic/game.ruleset?rev=32819&r1=32818&r2=32819&view=diff
==============================================================================
--- trunk/data/classic/game.ruleset     (original)
+++ trunk/data/classic/game.ruleset     Fri Jun 10 12:25:35 2016
@@ -557,6 +557,10 @@
 
 [actionenabler_upgrade_unit]
 action = "Upgrade Unit"
+actor_reqs    =
+    { "type",    "name",       "range", "present"
+      "DiplRel", "Is foreign", "Local", FALSE
+    }
 
 [actionenabler_airlift_unit]
 action = "Airlift Unit"

Modified: trunk/data/experimental/game.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/experimental/game.ruleset?rev=32819&r1=32818&r2=32819&view=diff
==============================================================================
--- trunk/data/experimental/game.ruleset        (original)
+++ trunk/data/experimental/game.ruleset        Fri Jun 10 12:25:35 2016
@@ -573,6 +573,10 @@
 
 [actionenabler_upgrade_unit]
 action = "Upgrade Unit"
+actor_reqs    =
+    { "type",    "name",       "range", "present"
+      "DiplRel", "Is foreign", "Local", FALSE
+    }
 
 [actionenabler_airlift_unit]
 action = "Airlift Unit"

Modified: trunk/data/multiplayer/game.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/multiplayer/game.ruleset?rev=32819&r1=32818&r2=32819&view=diff
==============================================================================
--- trunk/data/multiplayer/game.ruleset (original)
+++ trunk/data/multiplayer/game.ruleset Fri Jun 10 12:25:35 2016
@@ -540,6 +540,10 @@
 
 [actionenabler_upgrade_unit]
 action = "Upgrade Unit"
+actor_reqs    =
+    { "type",    "name",       "range", "present"
+      "DiplRel", "Is foreign", "Local", FALSE
+    }
 
 [actionenabler_airlift_unit]
 action = "Airlift Unit"

Modified: trunk/data/sandbox/game.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/sandbox/game.ruleset?rev=32819&r1=32818&r2=32819&view=diff
==============================================================================
--- trunk/data/sandbox/game.ruleset     (original)
+++ trunk/data/sandbox/game.ruleset     Fri Jun 10 12:25:35 2016
@@ -718,6 +718,10 @@
 
 [actionenabler_upgrade_unit]
 action = "Upgrade Unit"
+actor_reqs    =
+    { "type",    "name",       "range", "present"
+      "DiplRel", "Is foreign", "Local", FALSE
+    }
 
 [actionenabler_airlift_light_unit]
 action = "Airlift Unit"

Modified: trunk/fc_version
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/fc_version?rev=32819&r1=32818&r2=32819&view=diff
==============================================================================
--- trunk/fc_version    (original)
+++ trunk/fc_version    Fri Jun 10 12:25:35 2016
@@ -56,7 +56,7 @@
 #   - Avoid adding a new mandatory capability to the development branch for
 #     as long as possible.  We want to maintain network compatibility with
 #     the stable branch for as long as possible.
-NETWORK_CAPSTRING_MANDATORY="+Freeciv.Devel-3.0-2016.Jun.08"
+NETWORK_CAPSTRING_MANDATORY="+Freeciv.Devel-3.0-2016.Jun.10"
 NETWORK_CAPSTRING_OPTIONAL=""
 
 FREECIV_DISTRIBUTOR=""

Modified: trunk/server/rssanity.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/rssanity.c?rev=32819&r1=32818&r2=32819&view=diff
==============================================================================
--- trunk/server/rssanity.c     (original)
+++ trunk/server/rssanity.c     Fri Jun 10 12:25:35 2016
@@ -1139,6 +1139,22 @@
         requirement_vector_append(&enabler->actor_reqs, req);
       }
     }
+
+    if (action == ACTION_UPGRADE_UNIT) {
+      /* Why this is a hard requirement: Keep the old rules. Need to work
+       * out corner cases. */
+
+      struct requirement req
+          = req_from_values(VUT_DIPLREL, REQ_RANGE_LOCAL,
+                            FALSE, FALSE, TRUE, DRO_FOREIGN);
+
+      if (!is_req_in_vec(&req, &enabler->actor_reqs)) {
+        log_debug("Autorequiring that %s has a domestic target.",
+                  action_get_rule_name(action));
+
+        requirement_vector_append(&enabler->actor_reqs, req);
+      }
+    }
   } action_enablers_iterate_end;
 
   return ok;


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

Reply via email to