Index: binaries/data/mods/public/simulation/components/Formation.js =================================================================== --- binaries/data/mods/public/simulation/components/Formation.js +++ binaries/data/mods/public/simulation/components/Formation.js @@ -311,6 +311,11 @@ } } + let cmpAura = Engine.QueryInterface(this.entity, IID_Auras); + if(cmpAura && cmpAura.HasFormationAura()){ + cmpAura.ApplyFormationBonus(ents); + } + this.offsets = undefined; // Locate this formation controller in the middle of its members this.MoveToMembersCenter(); @@ -345,7 +350,10 @@ if (ents.indexOf(ent) !== -1) cmpAuras.RemoveFormationBonus(this.members); } - + let cmpAura = Engine.QueryInterface(this.entity, IID_Auras); + if(cmpAura && cmpAura.HasFormationAura()){ + cmpAura.RemoveFormationBonus(ents); + } this.formationMembersWithAura = this.formationMembersWithAura.filter(function(e) { return ents.indexOf(e) == -1; }); // If there's nobody left, destroy the formation @@ -394,6 +402,11 @@ } } + let cmpAura = Engine.QueryInterface(this.entity, IID_Auras); + if(cmpAura && cmpAura.HasFormationAura()){ + cmpAura.ApplyFormationBonus(ents); + } + this.MoveMembersIntoFormation(true, true); }; @@ -433,6 +446,10 @@ cmpAuras.RemoveFormationBonus(this.members); } + let cmpAura = Engine.QueryInterface(this.entity, IID_Auras); + if(cmpAura && cmpAura.HasFormationAura()){ + cmpAura.RemoveFormationBonus(this.members); + } this.members = []; this.inPosition = []; @@ -902,7 +919,9 @@ // merge the members from the twin formation into this one // twin formations should always have exactly the same orders - this.AddMembers(cmpOtherFormation.members); + let otherMembers = cmpOtherFormation.members; + cmpOtherFormation.RemoveMembers(otherMembers); + this.AddMembers(otherMembers); Engine.DestroyEntity(this.twinFormations[i]); this.twinFormations.splice(i,1); } Index: binaries/data/mods/public/simulation/data/auras/formations/formation_column_closed.json =================================================================== --- /dev/null +++ binaries/data/mods/public/simulation/data/auras/formations/formation_column_closed.json @@ -0,0 +1,10 @@ +{ + "type": "formation", + "affects": ["Soldier"], + "modifications": [ + { "value": "UnitMotion/WalkSpeed", "multiply": 1.20 }, + { "value": "UnitMotion/Run/Speed", "multiply": 1.20 } + ], + "auraName": "Forced March bonus", + "auraDescription": "+ 20% speed" +} Index: binaries/data/mods/public/simulation/data/auras/formations/formation_phalanx.json =================================================================== --- /dev/null +++ binaries/data/mods/public/simulation/data/auras/formations/formation_phalanx.json @@ -0,0 +1,16 @@ +{ + "type": "formation", + "affects": ["Soldier"], + "modifications": [ + { "value": "Attack/Melee/Hack", "multiply": 1.20 }, + { "value": "Attack/Melee/Pierce", "multiply": 1.20 }, + { "value": "Attack/Melee/Crush", "multiply": 1.20 }, + { "value": "Armour/Pierce", "multiply": 1.20 }, + { "value": "Armour/Hack", "multiply": 1.20 }, + { "value": "Armour/Crush", "multiply": 1.20 }, + { "value": "UnitMotion/WalkSpeed", "multiply": 0.9 }, + { "value": "UnitMotion/Run/Speed", "multiply": 0.9 } + ], + "auraName": "Phalanx bonus", + "auraDescription": "+20% melee attack, +20% armour, - 10% speed" +} Index: binaries/data/mods/public/simulation/data/auras/formations/formation_syntagma.json =================================================================== --- /dev/null +++ binaries/data/mods/public/simulation/data/auras/formations/formation_syntagma.json @@ -0,0 +1,10 @@ +{ + "type": "formation", + "affects": ["Soldier"], + "modifications": [ + { "value": "UnitMotion/WalkSpeed", "multiply": 0.85 }, + { "value": "UnitMotion/Run/Speed", "multiply": 0.85 } + ], + "auraName": "Syntagma bonus", + "auraDescription": "- 15% speed" +} Index: binaries/data/mods/public/simulation/data/auras/formations/formation_wedge.json =================================================================== --- /dev/null +++ binaries/data/mods/public/simulation/data/auras/formations/formation_wedge.json @@ -0,0 +1,10 @@ +{ + "type": "formation", + "affects": ["Soldier"], + "modifications": [ + { "value": "UnitMotion/WalkSpeed", "multiply": 1.25 }, + { "value": "UnitMotion/Run/Speed", "multiply": 1.25 } + ], + "auraName": "Wedge bonus", + "auraDescription": "+ 25% speed" +} Index: binaries/data/mods/public/simulation/templates/special/formations/column_closed.xml =================================================================== --- binaries/data/mods/public/simulation/templates/special/formations/column_closed.xml +++ binaries/data/mods/public/simulation/templates/special/formations/column_closed.xml @@ -1,11 +1,13 @@ + + formations/formation_column_closed + formations/column_closed.png Forced March 0.75 1.0 - 1.20 3 3 Index: binaries/data/mods/public/simulation/templates/special/formations/phalanx.xml =================================================================== --- binaries/data/mods/public/simulation/templates/special/formations/phalanx.xml +++ binaries/data/mods/public/simulation/templates/special/formations/phalanx.xml @@ -1,5 +1,8 @@ + + formations/formation_phalanx + formations/phalanx.png 10 @@ -11,7 +14,6 @@ 5 20 8 - 0.9 true Index: binaries/data/mods/public/simulation/templates/special/formations/syntagma.xml =================================================================== --- binaries/data/mods/public/simulation/templates/special/formations/syntagma.xml +++ binaries/data/mods/public/simulation/templates/special/formations/syntagma.xml @@ -1,5 +1,8 @@ + + formations/formation_syntagma + formations/syntagma.png 16 @@ -29,7 +32,6 @@ 4..8,1..-1: syntagma_back_run - 0.85 0.15 Index: binaries/data/mods/public/simulation/templates/special/formations/wedge.xml =================================================================== --- binaries/data/mods/public/simulation/templates/special/formations/wedge.xml +++ binaries/data/mods/public/simulation/templates/special/formations/wedge.xml @@ -1,5 +1,8 @@ + + formations/formation_wedge + formations/wedge.png 6 @@ -7,7 +10,6 @@ Wedge triangle true - 1.25 0.25 1.1 1.1