From a154ad26b1134c8821ebbce1a3edfc211cbd8a97 Mon Sep 17 00:00:00 2001
From: Marko Lindqvist <cazfi74@gmail.com>
Date: Thu, 12 Jun 2025 08:09:35 +0300
Subject: [PATCH 95/95] granularity: Allow max 4 units on tile

See RM #1517

Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
---
 data/granularity/actions.ruleset | 35 ++++++++++++++++++++++++++------
 1 file changed, 29 insertions(+), 6 deletions(-)

diff --git a/data/granularity/actions.ruleset b/data/granularity/actions.ruleset
index 75634c8403..9a0d7b1c69 100644
--- a/data/granularity/actions.ruleset
+++ b/data/granularity/actions.ruleset
@@ -345,8 +345,9 @@ actor_reqs    =
       "UnitState", "Transported",   "Local"
     }
 target_reqs   =
-    { "type",      "name",         "range"
-      "UnitState", "Transporting", "Local"
+    { "type",              "name",         "range"
+      "UnitState",         "Transporting", "Local"
+      "MaxTopUnitsOnTile", "3",            "Tile"
     }
 
 [enabler_board]
@@ -367,9 +368,10 @@ actor_reqs    =
       "UnitState", "Transporting", "Local"
     }
 target_reqs   =
-    { "type",      "name",          "range"
-      "UnitState", "OnLivableTile", "Local"
-      "UnitState", "Transported",   "Local"
+    { "type",              "name",          "range"
+      "UnitState",         "OnLivableTile", "Local"
+      "UnitState",         "Transported",   "Local"
+      "MaxTopUnitsOnTile", "3",             "Tile"
     }
 
 [enabler_disembark_from_native_tile]
@@ -380,6 +382,10 @@ actor_reqs    =
       "MinMoveFrags", "5",            "Local"
       "UnitState",    "OnNativeTile", "Local"
     }
+target_reqs   =
+    { "type",              "name", "range"
+      "MaxTopUnitsOnTile", "3",    "Tile"
+    }
 
 [enabler_disembark_from_native_city]
 action        = "Transport Disembark"
@@ -389,6 +395,10 @@ actor_reqs    =
       "MinMoveFrags", "5",           "Local"
       "CityTile",     "Center",      "Tile"
     }
+target_reqs   =
+    { "type",              "name", "range"
+      "MaxTopUnitsOnTile", "3",    "Tile"
+    }
 
 [enabler_disembark_from_non_native]
 action        = "Transport Disembark 2"
@@ -399,6 +409,10 @@ actor_reqs    =
       "UnitState",      "OnNativeTile", "Local", FALSE
       "CityTile",       "Center",       "Tile",  FALSE
     }
+target_reqs   =
+    { "type",              "name", "range"
+      "MaxTopUnitsOnTile", "3",    "Tile"
+    }
 
 [enabler_embark]
 action        = "Transport Embark"
@@ -419,6 +433,10 @@ actor_reqs    =
       "MinMoveFrags", "1",           "Local", TRUE
       "UnitState",    "Transported", "Local", FALSE
     }
+target_reqs   =
+    { "type",              "name", "range"
+      "MaxTopUnitsOnTile", "3",    "Tile"
+    }
 
 [enabler_relocate]
 action        = "Teleport"
@@ -428,6 +446,10 @@ actor_reqs    =
       "MinMoveFrags", "5",           "Local", TRUE
       "UnitState",    "Transported", "Local", FALSE
     }
+target_reqs   =
+    { "type",              "name", "range"
+      "MaxTopUnitsOnTile", "3",    "Tile"
+    }
 
 [enabler_bombard_land]
 action        = "Bombard 2"
@@ -559,7 +581,8 @@ actor_reqs    =
 [enabler_finish_unit]
 action        = "Finish Unit"
 actor_reqs    =
-    { "type", "name", "range", "present"
+    { "type",              "name", "range"
+      "MaxTopUnitsOnTile", "3",    "Tile"
     }
 
 [enabler_finish_building]
-- 
2.47.2

