From 6dcd2ab955a0e2f404a9044cdc8b603d3fb8cec9 Mon Sep 17 00:00:00 2001
From: Marko Lindqvist <cazfi74@gmail.com>
Date: Sun, 6 Jul 2025 05:04:01 +0300
Subject: [PATCH 76/76] granularity: Allow 6 units on the same tile with
 Strategies

See RM #1575

Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
---
 data/granularity/actions.ruleset | 106 +++++++++++++++++++++++++++++++
 data/granularity/techs.ruleset   |   1 +
 2 files changed, 107 insertions(+)

diff --git a/data/granularity/actions.ruleset b/data/granularity/actions.ruleset
index 9a0d7b1c69..9b2abc1fa3 100644
--- a/data/granularity/actions.ruleset
+++ b/data/granularity/actions.ruleset
@@ -350,6 +350,20 @@ target_reqs   =
       "MaxTopUnitsOnTile", "3",            "Tile"
     }
 
+[enabler_deboard_strategies]
+action        = "Transport Deboard"
+actor_reqs    =
+    { "type",      "name",          "range"
+      "UnitState", "OnLivableTile", "Local"
+      "UnitState", "Transported",   "Local"
+      "Tech",      "Strategies",    "Player"
+    }
+target_reqs   =
+    { "type",              "name",         "range"
+      "UnitState",         "Transporting", "Local"
+      "MaxTopUnitsOnTile", "5",            "Tile"
+    }
+
 [enabler_board]
 action        = "Transport Board"
 actor_reqs    =
@@ -374,6 +388,20 @@ target_reqs   =
       "MaxTopUnitsOnTile", "3",             "Tile"
     }
 
+[enabler_unload_strategies]
+action        = "Transport Unload"
+actor_reqs    =
+    { "type",      "name",         "range"
+      "UnitState", "Transporting", "Local"
+      "Tech",      "Strategies",   "Player"
+    }
+target_reqs   =
+    { "type",              "name",          "range"
+      "UnitState",         "OnLivableTile", "Local"
+      "UnitState",         "Transported",   "Local"
+      "MaxTopUnitsOnTile", "5",             "Tile"
+    }
+
 [enabler_disembark_from_native_tile]
 action        = "Transport Disembark"
 actor_reqs    =
@@ -387,6 +415,20 @@ target_reqs   =
       "MaxTopUnitsOnTile", "3",    "Tile"
     }
 
+[enabler_disembark_from_native_tile_strategies]
+action        = "Transport Disembark"
+actor_reqs    =
+    { "type",         "name",         "range"
+      "UnitState",    "Transported",  "Local"
+      "MinMoveFrags", "5",            "Local"
+      "UnitState",    "OnNativeTile", "Local"
+      "Tech",         "Strategies",   "Player"
+    }
+target_reqs   =
+    { "type",              "name", "range"
+      "MaxTopUnitsOnTile", "5",    "Tile"
+    }
+
 [enabler_disembark_from_native_city]
 action        = "Transport Disembark"
 actor_reqs    =
@@ -400,6 +442,20 @@ target_reqs   =
       "MaxTopUnitsOnTile", "3",    "Tile"
     }
 
+[enabler_disembark_from_native_city_strategies]
+action        = "Transport Disembark"
+actor_reqs    =
+    { "type",         "name",        "range"
+      "UnitState",    "Transported", "Local"
+      "MinMoveFrags", "5",           "Local"
+      "CityTile",     "Center",      "Tile"
+      "Tech",         "Strategies",  "Player"
+    }
+target_reqs   =
+    { "type",              "name", "range"
+      "MaxTopUnitsOnTile", "5",    "Tile"
+    }
+
 [enabler_disembark_from_non_native]
 action        = "Transport Disembark 2"
 actor_reqs    =
@@ -414,6 +470,21 @@ target_reqs   =
       "MaxTopUnitsOnTile", "3",    "Tile"
     }
 
+[enabler_disembark_from_non_native_strategies]
+action        = "Transport Disembark 2"
+actor_reqs    =
+    { "type",         "name",         "range",  "present"
+      "UnitState",    "Transported",  "Local",  TRUE
+      "MinMoveFrags", "5",            "Local",  TRUE
+      "UnitState",    "OnNativeTile", "Local",  FALSE
+      "CityTile",     "Center",       "Tile",   FALSE
+      "Tech",         "Strategies",   "Player", TRUE
+    }
+target_reqs   =
+    { "type",              "name", "range"
+      "MaxTopUnitsOnTile", "5",    "Tile"
+    }
+
 [enabler_embark]
 action        = "Transport Embark"
 actor_reqs    =
@@ -438,6 +509,19 @@ target_reqs   =
       "MaxTopUnitsOnTile", "3",    "Tile"
     }
 
+[enabler_regular_move_strategies]
+action        = "Unit Move"
+actor_reqs    =
+    { "type",         "name",        "range",  "present"
+      "MinMoveFrags", "1",           "Local",  TRUE
+      "UnitState",    "Transported", "Local",  FALSE
+      "Tech",         "Strategies",  "Player", TRUE
+    }
+target_reqs   =
+    { "type",              "name", "range"
+      "MaxTopUnitsOnTile", "5",    "Tile"
+    }
+
 [enabler_relocate]
 action        = "Teleport"
 actor_reqs    =
@@ -451,6 +535,20 @@ target_reqs   =
       "MaxTopUnitsOnTile", "3",    "Tile"
     }
 
+[enabler_relocate_strategies]
+action        = "Teleport"
+actor_reqs    =
+    { "type",         "name",        "range",  "present"
+      "UnitClass",    "Air",         "Local",  TRUE
+      "MinMoveFrags", "5",           "Local",  TRUE
+      "UnitState",    "Transported", "Local",  FALSE
+      "Tech",         "Strategies",  "Player", TRUE
+    }
+target_reqs   =
+    { "type",              "name", "range"
+      "MaxTopUnitsOnTile", "5",    "Tile"
+    }
+
 [enabler_bombard_land]
 action        = "Bombard 2"
 actor_reqs    =
@@ -585,6 +683,14 @@ actor_reqs    =
       "MaxTopUnitsOnTile", "3",    "Tile"
     }
 
+[enabler_finish_unit_strategies]
+action        = "Finish Unit"
+actor_reqs    =
+    { "type",              "name",       "range"
+      "MaxTopUnitsOnTile", "5",          "Tile"
+      "Tech",              "Strategies", "Player"
+    }
+
 [enabler_finish_building]
 action        = "Finish Building"
 actor_reqs    =
diff --git a/data/granularity/techs.ruleset b/data/granularity/techs.ruleset
index 61a621c591..b0913451c0 100644
--- a/data/granularity/techs.ruleset
+++ b/data/granularity/techs.ruleset
@@ -600,6 +600,7 @@ flags       = ""
 graphic     = "a.strategies"
 graphic_alt = "-"
 helptext    = _("\
+Makes it possible to move 6 units to the same tile. \
 Makes it possible to adjust Offensive Strategies policy.\
 ")
 
-- 
2.47.2

