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 +