diff --git a/binaries/data/mods/public/art/textures/ui/session/icons/formations/null.png b/binaries/data/mods/public/art/textures/ui/session/icons/formations/null.png
new file mode 100644
index 0000000000..8af429de42
--- /dev/null
+++ b/binaries/data/mods/public/art/textures/ui/session/icons/formations/null.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b20d2afdc9583600c1924710b0b531ca0eb026fe12d1783438c8205acdf9d2af
+size 21704
diff --git a/binaries/data/mods/public/civs/athen.json b/binaries/data/mods/public/civs/athen.json
index 26970118e8..3ce6b26a46 100644
--- a/binaries/data/mods/public/civs/athen.json
+++ b/binaries/data/mods/public/civs/athen.json
@@ -132,7 +132,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/brit.json b/binaries/data/mods/public/civs/brit.json
index 7368dc0ff6..b8b12fec3b 100644
--- a/binaries/data/mods/public/civs/brit.json
+++ b/binaries/data/mods/public/civs/brit.json
@@ -114,7 +114,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/cart.json b/binaries/data/mods/public/civs/cart.json
index b52ba79faf..c6e9efbd0b 100644
--- a/binaries/data/mods/public/civs/cart.json
+++ b/binaries/data/mods/public/civs/cart.json
@@ -135,7 +135,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/celt.json b/binaries/data/mods/public/civs/celt.json
index 56ea6fbebc..b4be9ea543 100644
--- a/binaries/data/mods/public/civs/celt.json
+++ b/binaries/data/mods/public/civs/celt.json
@@ -151,7 +151,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/gaul.json b/binaries/data/mods/public/civs/gaul.json
index f24e2abe4e..bf918a2739 100644
--- a/binaries/data/mods/public/civs/gaul.json
+++ b/binaries/data/mods/public/civs/gaul.json
@@ -110,7 +110,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/hele.json b/binaries/data/mods/public/civs/hele.json
index 1bf748c4cd..fdc4d8a52d 100644
--- a/binaries/data/mods/public/civs/hele.json
+++ b/binaries/data/mods/public/civs/hele.json
@@ -167,7 +167,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/iber.json b/binaries/data/mods/public/civs/iber.json
index c79126dfff..3039a294dd 100644
--- a/binaries/data/mods/public/civs/iber.json
+++ b/binaries/data/mods/public/civs/iber.json
@@ -108,7 +108,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/mace.json b/binaries/data/mods/public/civs/mace.json
index 23cbebe0bd..76ee3dd5ff 100644
--- a/binaries/data/mods/public/civs/mace.json
+++ b/binaries/data/mods/public/civs/mace.json
@@ -137,7 +137,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/maur.json b/binaries/data/mods/public/civs/maur.json
index 24ba75d2e7..5d230aeabd 100644
--- a/binaries/data/mods/public/civs/maur.json
+++ b/binaries/data/mods/public/civs/maur.json
@@ -122,7 +122,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/pers.json b/binaries/data/mods/public/civs/pers.json
index 437587c836..36ad846931 100644
--- a/binaries/data/mods/public/civs/pers.json
+++ b/binaries/data/mods/public/civs/pers.json
@@ -127,7 +127,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/ptol.json b/binaries/data/mods/public/civs/ptol.json
index 63352b31f2..4071b0f1dd 100644
--- a/binaries/data/mods/public/civs/ptol.json
+++ b/binaries/data/mods/public/civs/ptol.json
@@ -136,7 +136,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/rome.json b/binaries/data/mods/public/civs/rome.json
index d1cf9111d0..c79048a444 100644
--- a/binaries/data/mods/public/civs/rome.json
+++ b/binaries/data/mods/public/civs/rome.json
@@ -112,7 +112,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/sele.json b/binaries/data/mods/public/civs/sele.json
index 2277bcd6bf..557ff50aba 100644
--- a/binaries/data/mods/public/civs/sele.json
+++ b/binaries/data/mods/public/civs/sele.json
@@ -133,7 +133,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/spart.json b/binaries/data/mods/public/civs/spart.json
index bc16030a5a..fee64cc3ac 100644
--- a/binaries/data/mods/public/civs/spart.json
+++ b/binaries/data/mods/public/civs/spart.json
@@ -128,7 +128,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/civs/theb.json b/binaries/data/mods/public/civs/theb.json
index 777b69ecc8..262a3d2201 100644
--- a/binaries/data/mods/public/civs/theb.json
+++ b/binaries/data/mods/public/civs/theb.json
@@ -121,7 +121,7 @@
],
"Formations":
[
- "formations/scatter",
+ "formations/null",
"formations/box",
"formations/column_closed",
"formations/line_closed",
diff --git a/binaries/data/mods/public/simulation/helpers/Commands.js b/binaries/data/mods/public/simulation/helpers/Commands.js
index 022838cd44..7f5271dec1 100644
--- a/binaries/data/mods/public/simulation/helpers/Commands.js
+++ b/binaries/data/mods/public/simulation/helpers/Commands.js
@@ -1275,10 +1275,15 @@ function GetFormationUnitAIs(ents, player, formationTemplate)
// TODO: We only check if the formation is usable by some units
// if we move them to it. We should check if we can use formations
// for the other cases.
- if (cmpIdentity && cmpIdentity.CanUseFormation(formationTemplate || "formations/line_closed"))
+ var nullFormation = (formationTemplate || cmpUnitAI.GetLastFormationTemplate()) == "formations/null";
+ if (!nullFormation && cmpIdentity && cmpIdentity.CanUseFormation(formationTemplate || "formations/line_closed"))
formedEnts.push(ent);
else
+ {
+ if (nullFormation)
+ cmpUnitAI.SetLastFormationTemplate("formations/null");
nonformedUnitAIs.push(cmpUnitAI);
+ }
}
if (formedEnts.length == 0)
@@ -1319,6 +1324,7 @@ function GetFormationUnitAIs(ents, player, formationTemplate)
if (cmpFormation)
cmpFormation.RemoveMembers(formation.members[fid]);
}
+
// TODO replace the fixed 60 with something sensible, based on vision range f.e.
var formationSeparation = 60;
var clusters = ClusterEntities(formation.entities, formationSeparation);
@@ -1358,7 +1364,7 @@ function GetFormationUnitAIs(ents, player, formationTemplate)
formationUnitAIs.push(Engine.QueryInterface(formationEnt, IID_UnitAI));
cmpFormation.SetFormationSeparation(formationSeparation);
cmpFormation.SetMembers(cluster);
-
+
for each (var ent in formationEnts)
cmpFormation.RegisterTwinFormation(ent);
diff --git a/binaries/data/mods/public/simulation/templates/template_unit.xml b/binaries/data/mods/public/simulation/templates/template_unit.xml
index 3a565939fa..eb35cf0564 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit.xml
@@ -36,6 +36,16 @@
Unit
Unit ConquestCritical
+
+ formations/null
+ formations/box
+ formations/column_closed
+ formations/line_closed
+ formations/column_open
+ formations/line_open
+ formations/flank
+ formations/battle_line
+