Index: binaries/data/mods/public/globalscripts/Templates.js =================================================================== --- binaries/data/mods/public/globalscripts/Templates.js +++ binaries/data/mods/public/globalscripts/Templates.js @@ -398,8 +398,9 @@ ret.speed = { "walk": getEntityValue("UnitMotion/WalkSpeed"), }; - if (template.UnitMotion.Run) - ret.speed.run = getEntityValue("UnitMotion/Run/Speed"); + ret.speed.run = getEntityValue("UnitMotion/WalkSpeed"); + if (template.UnitMotion.RunMultiplier) + ret.speed.run *= getEntityValue("UnitMotion/RunMultiplier"); } if (template.Upgrade) 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 @@ -858,7 +858,7 @@ minSpeed *= this.GetSpeedMultiplier(); var cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion); - cmpUnitMotion.SetSpeed(minSpeed); + cmpUnitMotion.SetSpeedRatio(minSpeed / cmpUnitMotion.GetWalkSpeed()); }; Formation.prototype.ShapeUpdate = function() Index: binaries/data/mods/public/simulation/components/GuiInterface.js =================================================================== --- binaries/data/mods/public/simulation/components/GuiInterface.js +++ binaries/data/mods/public/simulation/components/GuiInterface.js @@ -502,7 +502,7 @@ if (cmpUnitMotion) ret.speed = { "walk": cmpUnitMotion.GetWalkSpeed(), - "run": cmpUnitMotion.GetRunSpeed() + "run": cmpUnitMotion.GetWalkSpeed() * cmpUnitMotion.GetRunSpeedMultiplier() }; return ret; Index: binaries/data/mods/public/simulation/components/UnitAI.js =================================================================== --- binaries/data/mods/public/simulation/components/UnitAI.js +++ binaries/data/mods/public/simulation/components/UnitAI.js @@ -1660,7 +1660,7 @@ }, "leave": function(msg) { - this.SetMoveSpeed(this.GetWalkSpeed()); + this.ResetMoveSpeed(); this.StopTimer(); this.SetDefaultAnimationVariant(); }, @@ -1675,13 +1675,13 @@ { var speed = cmpUnitAI.GetWalkSpeed(); if (speed < this.GetWalkSpeed()) - this.SetMoveSpeed(speed); + this.SetMoveSpeedRatio(speed / this.GetWalkSpeed()); } } }, "MoveCompleted": function() { - this.SetMoveSpeed(this.GetWalkSpeed()); + this.ResetMoveSpeed(); if (!this.MoveToTargetRangeExplicit(this.isGuardOf, 0, this.guardRange)) this.SetNextState("GUARDING"); }, @@ -1738,19 +1738,16 @@ this.PlaySound("panic"); // Run quickly - var speed = this.GetRunSpeed(); this.SelectAnimation("move"); - this.SetMoveSpeed(speed); + this.SetMoveSpeedRatio(this.GetRunMultiplier()); }, "HealthChanged": function() { - var speed = this.GetRunSpeed(); - this.SetMoveSpeed(speed); + this.SetMoveSpeedRatio(this.GetRunMultiplier()); }, "leave": function() { - // Reset normal speed - this.SetMoveSpeed(this.GetWalkSpeed()); + this.ResetMoveSpeed(); }, "MoveCompleted": function() { @@ -2034,8 +2031,7 @@ if (cmpUnitAI && cmpUnitAI.IsFleeing()) { // Run after a fleeing target - var speed = this.GetRunSpeed(); - this.SetMoveSpeed(speed); + this.SetMoveSpeedRatio(this.GetRunMultiplier()); } this.StartTimer(1000, 1000); }, @@ -2044,13 +2040,12 @@ var cmpUnitAI = Engine.QueryInterface(this.order.data.target, IID_UnitAI); if (!cmpUnitAI || !cmpUnitAI.IsFleeing()) return; - var speed = this.GetRunSpeed(); - this.SetMoveSpeed(speed); + this.SetMoveSpeedRatio(this.GetRunMultiplier()); }, "leave": function() { // Reset normal speed in case it was changed - this.SetMoveSpeed(this.GetWalkSpeed()); + this.ResetMoveSpeed(); // Show carried resources when walking. this.SetDefaultAnimationVariant(); @@ -3132,7 +3127,7 @@ "ROAMING": { "enter": function() { // Walk in a random direction - this.SelectAnimation("walk", false, this.GetWalkSpeed()); + this.SelectAnimation("walk", false, 1); this.SetFacePointAfterMove(false); this.MoveRandomly(+this.template.RoamDistance); // Set a random timer to switch to feeding state @@ -3978,20 +3973,18 @@ UnitAI.prototype.GetWalkSpeed = function() { - var cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion); + let cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion); + if (!cmpUnitMotion) + return 0; return cmpUnitMotion.GetWalkSpeed(); }; -UnitAI.prototype.GetRunSpeed = function() +UnitAI.prototype.GetRunMultiplier = function() { var cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion); - var runSpeed = cmpUnitMotion.GetRunSpeed(); - var walkSpeed = cmpUnitMotion.GetWalkSpeed(); - if (runSpeed <= walkSpeed) - return runSpeed; - var cmpHealth = Engine.QueryInterface(this.entity, IID_Health); - var health = cmpHealth.GetHitpoints()/cmpHealth.GetMaxHitpoints(); - return (health*runSpeed + (1-health)*walkSpeed); + if (!cmpUnitMotion) + return 0; + return cmpUnitMotion.GetRunSpeedMultiplier(); }; /** @@ -4227,7 +4220,7 @@ if (name == "move") { // Speed to switch from walking to running animations - cmpVisual.SelectMovementAnimation((this.GetWalkSpeed() + this.GetRunSpeed()) / 2); + cmpVisual.SelectMovementAnimation(this.GetWalkSpeed()); return; } @@ -5595,11 +5588,19 @@ return this.stance; }; +/* + * Make the unit walk at its normal pace. + */ +UnitAI.prototype.ResetMoveSpeed = function() +{ + let cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion); + cmpUnitMotion.SetSpeedRatio(1); +}; -UnitAI.prototype.SetMoveSpeed = function(speed) +UnitAI.prototype.SetMoveSpeedRatio = function(speed) { - var cmpMotion = Engine.QueryInterface(this.entity, IID_UnitMotion); - cmpMotion.SetSpeed(speed); + let cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion); + cmpUnitMotion.SetSpeedRatio(speed); }; UnitAI.prototype.SetHeldPosition = function(x, z) Index: binaries/data/mods/public/simulation/components/UnitMotionFlying.js =================================================================== --- binaries/data/mods/public/simulation/components/UnitMotionFlying.js +++ binaries/data/mods/public/simulation/components/UnitMotionFlying.js @@ -304,14 +304,14 @@ return +this.template.MaxSpeed; }; -UnitMotionFlying.prototype.SetSpeed = function() +UnitMotionFlying.prototype.SetSpeedRatio = function() { // ignore this, the speed is always the walk speed }; -UnitMotionFlying.prototype.GetRunSpeed = function() +UnitMotionFlying.prototype.GetRunSpeedMultiplier = function() { - return this.GetWalkSpeed(); + return 1; }; UnitMotionFlying.prototype.GetCurrentSpeed = function() @@ -319,6 +319,11 @@ return this.speed; }; +UnitMotionFlying.prototype.GetSpeedRatio = function() +{ + return this.GetCurrentSpeed() / this.GetWalkSpeed(); +} + UnitMotionFlying.prototype.GetPassabilityClassName = function() { return this.template.PassabilityClass; Index: binaries/data/mods/public/simulation/components/tests/test_UnitAI.js =================================================================== --- binaries/data/mods/public/simulation/components/tests/test_UnitAI.js +++ binaries/data/mods/public/simulation/components/tests/test_UnitAI.js @@ -137,7 +137,8 @@ }); AddMock(controller, IID_UnitMotion, { - SetSpeed: function(speed) { }, + GetWalkSpeed: function() { return 1; }, + SetSpeedRatio: function(speed) { }, MoveToPointRange: function(x, z, minRange, maxRange) { }, GetPassabilityClassName: function() { return "default"; }, }); @@ -280,7 +281,8 @@ }); AddMock(controller, IID_UnitMotion, { - SetSpeed: function(speed) { }, + GetWalkSpeed: function() { return 1; }, + SetSpeedRatio: function(speed) { }, MoveToPointRange: function(x, z, minRange, maxRange) { }, IsInTargetRange: function(target, min, max) { return true; }, StopMoving: function() { }, Index: binaries/data/mods/public/simulation/components/tests/test_UnitMotionFlying.js =================================================================== --- binaries/data/mods/public/simulation/components/tests/test_UnitMotionFlying.js +++ binaries/data/mods/public/simulation/components/tests/test_UnitMotionFlying.js @@ -26,13 +26,12 @@ "PassabilityClass": "unrestricted" }); -TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetWalkSpeed(), 1.0); -TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetRunSpeed(), 1.0); +TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetSpeedRatio(), 0); +TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetRunSpeedMultiplier(), 1); TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetCurrentSpeed(), 0); - -cmpUnitMotionFlying.SetSpeed(2.0); -TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetWalkSpeed(), 1.0); -TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetRunSpeed(), 1.0); +cmpUnitMotionFlying.SetSpeedRatio(2); +TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetSpeedRatio(), 0); +TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetRunSpeedMultiplier(), 1); TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetCurrentSpeed(), 0); TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetPassabilityClassName(), "unrestricted"); @@ -81,6 +80,7 @@ TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetCurrentSpeed(), 0); cmpUnitMotionFlying.OnUpdate({ "turnLength": 500 }); TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetCurrentSpeed(), 0); +TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetSpeedRatio(), 0); TS_ASSERT_EQUALS(cmpUnitMotionFlying.MoveToTargetRange(target, 0, 10), true); TS_ASSERT_EQUALS(cmpUnitMotionFlying.MoveToPointRange(100, 200, 0, 20), true); @@ -100,6 +100,7 @@ TS_ASSERT_EQUALS(height, 55); cmpUnitMotionFlying.OnUpdate({ "turnLength": 500 }); TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetCurrentSpeed(), 1); +TS_ASSERT_EQUALS(cmpUnitMotionFlying.GetSpeedRatio(), 1); TS_ASSERT_EQUALS(height, 105); // Fly Index: binaries/data/mods/public/simulation/data/auras/structures/maur_pillar.json =================================================================== --- binaries/data/mods/public/simulation/data/auras/structures/maur_pillar.json +++ binaries/data/mods/public/simulation/data/auras/structures/maur_pillar.json @@ -3,8 +3,7 @@ "radius": 75, "affects": ["Trader"], "modifications": [ - { "value": "UnitMotion/WalkSpeed", "multiply": 1.20 }, - { "value": "UnitMotion/Run/Speed", "multiply": 1.20 } + { "value": "UnitMotion/WalkSpeed", "multiply": 1.20 } ], "auraName": "Edict of Ashoka", "auraDescription": "+20% movement speed for traders.", Index: binaries/data/mods/public/simulation/data/auras/units/catafalques/brit_catafalque_1.json =================================================================== --- binaries/data/mods/public/simulation/data/auras/units/catafalques/brit_catafalque_1.json +++ binaries/data/mods/public/simulation/data/auras/units/catafalques/brit_catafalque_1.json @@ -3,8 +3,7 @@ "affects": ["Soldier"], "modifications": [ { "value": "Vision/Range", "multiply": 1.15 }, - { "value": "UnitMotion/WalkSpeed", "multiply": 1.15 }, - { "value": "UnitMotion/Run/Speed", "multiply": 1.15 } + { "value": "UnitMotion/WalkSpeed", "multiply": 1.15 } ], "auraName": "Guerrilla Tactics", "auraDescription": "Seeing entrenched defense to be useless against the Roman army, Cassivellaunus resorted to guerrilla tactics. This was later employed by other chieftains too.\n+15% movement speed and vision range for all soldiers." Index: binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_1.json =================================================================== --- binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_1.json +++ binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_1.json @@ -5,8 +5,7 @@ { "value": "Armour/Pierce", "add": 3 }, { "value": "Armour/Hack", "add": 3 }, { "value": "Armour/Crush", "add": 3 }, - { "value": "UnitMotion/WalkSpeed", "multiply": 1.15 }, - { "value": "UnitMotion/Run/Speed", "multiply": 1.15 } + { "value": "UnitMotion/WalkSpeed", "multiply": 1.15 } ], "auraName": "Formation Reforms", "auraDescription": "All soldiers in his formation +15% speed and +3 armor." Index: binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_2.json =================================================================== --- binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_2.json +++ binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_2.json @@ -2,8 +2,7 @@ "type": "global", "affects": ["Javelin Infantry"], "modifications": [ - { "value": "UnitMotion/WalkSpeed", "multiply": 1.15 }, - { "value": "UnitMotion/Run/Speed", "multiply": 1.15 } + { "value": "UnitMotion/WalkSpeed", "multiply": 1.15 } ], "auraName": "Peltast Reforms", "auraDescription": "All javelin infantry +15% speed." Index: binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_themistocles_1.json =================================================================== --- binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_themistocles_1.json +++ binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_themistocles_1.json @@ -4,7 +4,6 @@ "affectedPlayers": ["MutualAlly"], "modifications": [ { "value": "UnitMotion/WalkSpeed", "multiply": 1.5 }, - { "value": "UnitMotion/Run/Speed", "multiply": 1.5 }, { "value": "ProductionQueue/BatchTimeModifier", "multiply": 0.7 } ], "auraName": "Naval Commander", Index: binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_boudicca.json =================================================================== --- binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_boudicca.json +++ binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_boudicca.json @@ -4,7 +4,6 @@ "affects": ["Champion"], "modifications": [ { "value": "UnitMotion/WalkSpeed", "multiply": 1.1 }, - { "value": "UnitMotion/Run/Speed", "multiply": 1.1 }, { "value": "Attack/Melee/Hack", "multiply": 1.2 }, { "value": "Attack/Melee/Pierce", "multiply": 1.2 }, { "value": "Attack/Melee/Crush", "multiply": 1.2 }, Index: binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_caratacos.json =================================================================== --- binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_caratacos.json +++ binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_caratacos.json @@ -3,7 +3,6 @@ "affects": ["Soldier", "Siege"], "modifications": [ { "value": "UnitMotion/WalkSpeed", "multiply": 1.15 }, - { "value": "UnitMotion/Run/Speed", "multiply": 1.15 }, { "value": "Armour/Pierce", "add": 1 }, { "value": "Armour/Hack", "add": 1 }, { "value": "Armour/Crush", "add": 1 } Index: binaries/data/mods/public/simulation/data/auras/units/heroes/cart_hero_hamilcar_1.json =================================================================== --- binaries/data/mods/public/simulation/data/auras/units/heroes/cart_hero_hamilcar_1.json +++ binaries/data/mods/public/simulation/data/auras/units/heroes/cart_hero_hamilcar_1.json @@ -3,8 +3,7 @@ "radius": 60, "affects": ["Soldier", "Siege"], "modifications": [ - { "value": "UnitMotion/WalkSpeed", "multiply": 1.15 }, - { "value": "UnitMotion/Run/Speed", "multiply": 1.15 } + { "value": "UnitMotion/WalkSpeed", "multiply": 1.15 } ], "auraName": "Lightning General", "auraDescription": "Nearby soldiers and siege engines +15% speed." Index: binaries/data/mods/public/simulation/data/auras/units/heroes/iber_hero_viriato_1.json =================================================================== --- binaries/data/mods/public/simulation/data/auras/units/heroes/iber_hero_viriato_1.json +++ binaries/data/mods/public/simulation/data/auras/units/heroes/iber_hero_viriato_1.json @@ -3,8 +3,7 @@ "radius": 60, "affects": ["Soldier"], "modifications": [ - { "value": "UnitMotion/WalkSpeed", "multiply": 1.2 }, - { "value": "UnitMotion/Run/Speed", "multiply": 1.2 } + { "value": "UnitMotion/WalkSpeed", "multiply": 1.2 } ], "auraDescription": "+20% movement speed for soldiers.", "auraName": "Guerrilla Tactics", Index: binaries/data/mods/public/simulation/data/auras/units/heroes/pers_hero_darius.json =================================================================== --- binaries/data/mods/public/simulation/data/auras/units/heroes/pers_hero_darius.json +++ binaries/data/mods/public/simulation/data/auras/units/heroes/pers_hero_darius.json @@ -2,8 +2,7 @@ "type": "global", "affects": ["Soldier", "Siege", "Trader"], "modifications": [ - { "value": "UnitMotion/WalkSpeed", "multiply": 1.15 }, - { "value": "UnitMotion/Run/Speed", "multiply": 1.15 } + { "value": "UnitMotion/WalkSpeed", "multiply": 1.15 } ], "auraName": "Leadership", "auraDescription": "+15% movement speed for all soldiers, siege engines and traders." Index: binaries/data/mods/public/simulation/data/auras/units/heroes/sele_hero_seleucus_victor.json =================================================================== --- binaries/data/mods/public/simulation/data/auras/units/heroes/sele_hero_seleucus_victor.json +++ binaries/data/mods/public/simulation/data/auras/units/heroes/sele_hero_seleucus_victor.json @@ -4,7 +4,6 @@ "affects": ["Elephant Champion"], "modifications": [ { "value": "UnitMotion/WalkSpeed", "multiply": 1.2 }, - { "value": "UnitMotion/Run/Speed", "multiply": 1.2 }, { "value": "Attack/Melee/Hack", "multiply": 1.2 }, { "value": "Attack/Melee/Crush", "multiply": 1.2 } ], Index: binaries/data/mods/public/simulation/templates/gaia/fauna_camel.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_camel.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_camel.xml @@ -32,9 +32,6 @@ 0.45 - - 0.45 - fauna/camel.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_chicken.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_chicken.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_chicken.xml @@ -40,9 +40,6 @@ 0.15 - - 0.15 - fauna/chicken.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_crocodile.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_crocodile.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_crocodile.xml @@ -39,9 +39,6 @@ 0.3 - - 0.3 - fauna/crocodile.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe.xml @@ -32,9 +32,6 @@ 0.6 - - 0.6 - fauna/giraffe_adult.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe_infant.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe_infant.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe_infant.xml @@ -21,9 +21,6 @@ 0.6 - - 0.6 - fauna/giraffe_baby.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_goat.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_goat.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_goat.xml @@ -27,9 +27,6 @@ 0.45 - - 0.45 - fauna/goat.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_horse.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_horse.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_horse.xml @@ -27,9 +27,6 @@ 0.8 - - 0.8 - fauna/horse.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_lion.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_lion.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_lion.xml @@ -30,9 +30,6 @@ 0.45 - - 0.45 - fauna/lion.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_lioness.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_lioness.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_lioness.xml @@ -30,9 +30,6 @@ 0.45 - - 0.45 - fauna/lioness.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_peacock.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_peacock.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_peacock.xml @@ -33,9 +33,6 @@ 0.3 - - 0.3 - fauna/peacock.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_pig.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_pig.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_pig.xml @@ -25,9 +25,6 @@ 0.45 - - 0.45 - fauna/pig1.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_pig_flaming.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_pig_flaming.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_pig_flaming.xml @@ -30,9 +30,6 @@ 3.5 - - 3.5 - Index: binaries/data/mods/public/simulation/templates/gaia/fauna_pony.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_pony.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_pony.xml @@ -5,9 +5,7 @@ 0.8 - - 0.8 - + 0.8 fauna/pony.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml @@ -46,9 +46,6 @@ ship-small 0.6 - - 0.6 - false Index: binaries/data/mods/public/simulation/templates/gaia/fauna_sheep.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_sheep.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_sheep.xml @@ -25,9 +25,6 @@ 0.45 - - 0.45 - fauna/sheep3.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_wildebeest.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_wildebeest.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_wildebeest.xml @@ -18,9 +18,6 @@ 0.9 - - 0.9 - fauna/wildebeest.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_zebra.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_zebra.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_zebra.xml @@ -18,9 +18,6 @@ 0.9 - - 0.9 - fauna/zebra.xml Index: binaries/data/mods/public/simulation/templates/gaia/fauna_zebu.xml =================================================================== --- binaries/data/mods/public/simulation/templates/gaia/fauna_zebu.xml +++ binaries/data/mods/public/simulation/templates/gaia/fauna_zebu.xml @@ -18,11 +18,7 @@ 6.0 - - 15.0 - 600.0 - 5.0 - + 2.5 fauna/zebu.xml Index: binaries/data/mods/public/simulation/templates/template_formation.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_formation.xml +++ binaries/data/mods/public/simulation/templates/template_formation.xml @@ -49,14 +49,15 @@ aggressive - 12.0 true + 12.0 true true true 1.0 + 100.0 large Index: binaries/data/mods/public/simulation/templates/template_unit.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit.xml +++ binaries/data/mods/public/simulation/templates/template_unit.xml @@ -110,15 +110,9 @@ false - 9.0 - - 15.0 - 50.0 - 0.0 - 0.1 - 0.2 - default + 9.0 + 2.0 false Index: binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml +++ binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml @@ -39,9 +39,6 @@ large 0.55 - - 0.55 - units/global/catafalque.xml Index: binaries/data/mods/public/simulation/templates/template_unit_cavalry.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_cavalry.xml +++ binaries/data/mods/public/simulation/templates/template_unit_cavalry.xml @@ -97,9 +97,6 @@ 1.95 - - 1.95 - 92 Index: binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_spearman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_spearman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_spearman.xml @@ -26,8 +26,5 @@ 1.1 - - 1.1 - Index: binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_swordsman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_swordsman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_swordsman.xml @@ -28,8 +28,5 @@ 1.2 - - 1.2 - Index: binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry.xml @@ -59,9 +59,6 @@ 2.25 - - 2.25 - 96 Index: binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml @@ -36,8 +36,5 @@ 1.1 - - 1.1 - Index: binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_swordsman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_swordsman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_swordsman.xml @@ -30,8 +30,5 @@ 1.2 - - 1.2 - Index: binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml @@ -58,9 +58,6 @@ large 0.95 - - 0.95 - 100 Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml @@ -33,8 +33,5 @@ 1.2 - - 1.2 - Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelinist.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelinist.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelinist.xml @@ -33,8 +33,5 @@ 1.75 - - 1.75 - Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_maceman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_maceman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_maceman.xml @@ -33,8 +33,6 @@ 1.4 - - 1.4 - + 1.4 Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml @@ -41,8 +41,5 @@ 0.8 - - 0.8 - Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml @@ -39,8 +39,5 @@ 1.3 - - 1.3 - Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_swordsman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_swordsman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_swordsman.xml @@ -33,8 +33,5 @@ 1.4 - - 1.4 - Index: binaries/data/mods/public/simulation/templates/template_unit_dog.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_dog.xml +++ binaries/data/mods/public/simulation/templates/template_unit_dog.xml @@ -81,9 +81,7 @@ 1.6 - - 1.6 - + 2.5 30 Index: binaries/data/mods/public/simulation/templates/template_unit_fauna.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_fauna.xml +++ binaries/data/mods/public/simulation/templates/template_unit_fauna.xml @@ -32,9 +32,6 @@ 0.7 - - 0.7 - true Index: binaries/data/mods/public/simulation/templates/template_unit_fauna_decorative.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_fauna_decorative.xml +++ binaries/data/mods/public/simulation/templates/template_unit_fauna_decorative.xml @@ -36,9 +36,6 @@ false 1.2 - - 1.2 - unrestricted default Index: binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_elephant.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_elephant.xml +++ binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_elephant.xml @@ -52,9 +52,6 @@ large 0.5 - - 0.5 - fauna/elephant_african_forest.xml Index: binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_whale.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_whale.xml +++ binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_whale.xml @@ -53,8 +53,6 @@ ship-small 1.8 - - 1.8 - + 1.0 Index: binaries/data/mods/public/simulation/templates/template_unit_fauna_wild_aggressive_dog.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_fauna_wild_aggressive_dog.xml +++ binaries/data/mods/public/simulation/templates/template_unit_fauna_wild_aggressive_dog.xml @@ -24,8 +24,5 @@ 1.6 - - 1.6 - Index: binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry.xml @@ -43,9 +43,6 @@ 1.85 - - 1.85 - 100 Index: binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelinist.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelinist.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelinist.xml @@ -32,8 +32,5 @@ 1.05 - - 1.05 - Index: binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_spearman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_spearman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_spearman.xml @@ -28,8 +28,5 @@ 1.0 - - 1.0 - Index: binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_swordsman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_swordsman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_swordsman.xml @@ -27,8 +27,5 @@ 1.0 - - 1.0 - Index: binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml @@ -51,9 +51,6 @@ large 0.95 - - 0.95 - 80 Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry.xml @@ -24,10 +24,4 @@ Infantry Hero - - 1.0 - - 1.0 - - Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml @@ -31,8 +31,5 @@ 0.95 - - 0.95 - Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml @@ -31,8 +31,5 @@ 1.0 - - 1.0 - Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_swordsman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_swordsman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_swordsman.xml @@ -27,9 +27,6 @@ 1.05 - - 1.05 - 80 Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml @@ -36,8 +36,5 @@ 0.8 - - 0.8 - Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml @@ -32,8 +32,5 @@ 0.95 - - 0.95 - Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_swordsman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_swordsman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_swordsman.xml @@ -27,8 +27,5 @@ 1.05 - - 1.05 - Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml @@ -32,8 +32,5 @@ 1.1 - - 1.1 - Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelinist.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelinist.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelinist.xml @@ -31,8 +31,5 @@ 1.4 - - 1.4 - Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml @@ -32,8 +32,5 @@ 1.2 - - 1.2 - Index: binaries/data/mods/public/simulation/templates/template_unit_mechanical.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_mechanical.xml +++ binaries/data/mods/public/simulation/templates/template_unit_mechanical.xml @@ -22,4 +22,7 @@ 4.0 + + 1.0 + Index: binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml +++ binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml @@ -71,8 +71,5 @@ 1.55 - - 1.55 - Index: binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fire.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fire.xml +++ binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fire.xml @@ -54,9 +54,6 @@ ship-small 1.6 - - 1.6 - 60 Index: binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml +++ binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml @@ -62,9 +62,6 @@ ship-small 1.1 - - 1.1 - 30 Index: binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml +++ binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml @@ -61,9 +61,6 @@ ship-small 1.35 - - 1.35 - 50 Index: binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml +++ binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml @@ -79,9 +79,6 @@ 1.8 - - 1.8 - 110 Index: binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml +++ binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml @@ -71,8 +71,5 @@ 1.8 - - 1.8 - Index: binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ballista.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ballista.xml +++ binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ballista.xml @@ -75,9 +75,6 @@ 0.9 - - 0.9 - 120 Index: binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_onager.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_onager.xml +++ binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_onager.xml @@ -78,9 +78,6 @@ 0.8 - - 0.8 - 120 Index: binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ram.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ram.xml +++ binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ram.xml @@ -45,9 +45,6 @@ 0.9 - - 0.9 - 80 Index: binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_tower.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_tower.xml +++ binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_tower.xml @@ -78,9 +78,6 @@ 0.7 - - 0.7 - 80 Index: binaries/data/mods/public/simulation/templates/template_unit_support_slave.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_support_slave.xml +++ binaries/data/mods/public/simulation/templates/template_unit_support_slave.xml @@ -49,7 +49,6 @@ 1 - 2.0 1.0 0.5 Index: binaries/data/mods/public/simulation/templates/units/athen_mechanical_siege_lithobolos_unpacked.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/athen_mechanical_siege_lithobolos_unpacked.xml +++ binaries/data/mods/public/simulation/templates/units/athen_mechanical_siege_lithobolos_unpacked.xml @@ -9,9 +9,6 @@ 0.001 - - 0.001 - units/athenians/siege_rock_pivot.xml Index: binaries/data/mods/public/simulation/templates/units/athen_mechanical_siege_oxybeles_unpacked.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/athen_mechanical_siege_oxybeles_unpacked.xml +++ binaries/data/mods/public/simulation/templates/units/athen_mechanical_siege_oxybeles_unpacked.xml @@ -9,9 +9,6 @@ 0.001 - - 0.001 - units/athenians/siege_spear_pivot.xml Index: binaries/data/mods/public/simulation/templates/units/brit_ship_trireme.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/brit_ship_trireme.xml +++ binaries/data/mods/public/simulation/templates/units/brit_ship_trireme.xml @@ -21,9 +21,6 @@ 0.9 - - 0.9 - structures/celts/warship.xml Index: binaries/data/mods/public/simulation/templates/units/cart_mechanical_siege_ballista_unpacked.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/cart_mechanical_siege_ballista_unpacked.xml +++ binaries/data/mods/public/simulation/templates/units/cart_mechanical_siege_ballista_unpacked.xml @@ -9,9 +9,6 @@ 0.001 - - 0.001 - units/carthaginians/siege_rock_pivot.xml Index: binaries/data/mods/public/simulation/templates/units/cart_mechanical_siege_oxybeles_unpacked.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/cart_mechanical_siege_oxybeles_unpacked.xml +++ binaries/data/mods/public/simulation/templates/units/cart_mechanical_siege_oxybeles_unpacked.xml @@ -9,9 +9,6 @@ 0.001 - - 0.001 - units/carthaginians/siege_spear_pivot.xml Index: binaries/data/mods/public/simulation/templates/units/gaul_champion_fanatic.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/gaul_champion_fanatic.xml +++ binaries/data/mods/public/simulation/templates/units/gaul_champion_fanatic.xml @@ -20,9 +20,6 @@ 1.4 - - 1.4 - units/gauls/infantry_spearman_c.xml Index: binaries/data/mods/public/simulation/templates/units/gaul_ship_trireme.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/gaul_ship_trireme.xml +++ binaries/data/mods/public/simulation/templates/units/gaul_ship_trireme.xml @@ -21,9 +21,6 @@ 0.9 - - 0.9 - structures/celts/warship.xml Index: binaries/data/mods/public/simulation/templates/units/iber_ship_trireme.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/iber_ship_trireme.xml +++ binaries/data/mods/public/simulation/templates/units/iber_ship_trireme.xml @@ -21,9 +21,6 @@ 0.9 - - 0.9 - structures/iberians/warship.xml Index: binaries/data/mods/public/simulation/templates/units/kush_infantry_clubman_b.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/kush_infantry_clubman_b.xml +++ binaries/data/mods/public/simulation/templates/units/kush_infantry_clubman_b.xml @@ -38,9 +38,6 @@ 1.1 - - 1.1 - units/kushites/infantry_clubman_b.xml Index: binaries/data/mods/public/simulation/templates/units/mace_mechanical_siege_lithobolos_unpacked.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/mace_mechanical_siege_lithobolos_unpacked.xml +++ binaries/data/mods/public/simulation/templates/units/mace_mechanical_siege_lithobolos_unpacked.xml @@ -9,9 +9,6 @@ 0.001 - - 0.001 - units/athenians/siege_rock_pivot.xml Index: binaries/data/mods/public/simulation/templates/units/mace_mechanical_siege_oxybeles_unpacked.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/mace_mechanical_siege_oxybeles_unpacked.xml +++ binaries/data/mods/public/simulation/templates/units/mace_mechanical_siege_oxybeles_unpacked.xml @@ -9,9 +9,6 @@ 0.001 - - 0.001 - units/athenians/siege_spear_pivot.xml Index: binaries/data/mods/public/simulation/templates/units/maur_elephant_archer_b.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/maur_elephant_archer_b.xml +++ binaries/data/mods/public/simulation/templates/units/maur_elephant_archer_b.xml @@ -67,9 +67,6 @@ large 0.5 - - 0.5 - units/mauryans/elephantry_archer_b_m.xml Index: binaries/data/mods/public/simulation/templates/units/maur_ship_trireme.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/maur_ship_trireme.xml +++ binaries/data/mods/public/simulation/templates/units/maur_ship_trireme.xml @@ -21,9 +21,6 @@ 0.9 - - 0.9 - structures/mauryans/trireme.xml Index: binaries/data/mods/public/simulation/templates/units/maur_support_elephant.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/maur_support_elephant.xml +++ binaries/data/mods/public/simulation/templates/units/maur_support_elephant.xml @@ -69,9 +69,6 @@ large 0.6 - - 0.6 - 50 Index: binaries/data/mods/public/simulation/templates/units/ptol_mechanical_siege_lithobolos_unpacked.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/ptol_mechanical_siege_lithobolos_unpacked.xml +++ binaries/data/mods/public/simulation/templates/units/ptol_mechanical_siege_lithobolos_unpacked.xml @@ -9,9 +9,6 @@ 0.001 - - 0.001 - units/ptolemies/siege_rock_pivot.xml Index: binaries/data/mods/public/simulation/templates/units/ptol_mechanical_siege_polybolos_unpacked.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/ptol_mechanical_siege_polybolos_unpacked.xml +++ binaries/data/mods/public/simulation/templates/units/ptol_mechanical_siege_polybolos_unpacked.xml @@ -9,9 +9,6 @@ 0.001 - - 0.001 - units/ptolemies/siege_spear_pivot.xml Index: binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_ballista_unpacked.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_ballista_unpacked.xml +++ binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_ballista_unpacked.xml @@ -14,9 +14,6 @@ 0.001 - - 0.001 - units/romans/siege_rock_pivot.xml Index: binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_onager.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_onager.xml +++ binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_onager.xml @@ -36,9 +36,6 @@ 0.001 - - 0.001 - 88 Index: binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_scorpio_unpacked.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_scorpio_unpacked.xml +++ binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_scorpio_unpacked.xml @@ -10,9 +10,6 @@ 0.001 - - 0.001 - units/romans/siege_scorpio.xml Index: binaries/data/mods/public/simulation/templates/units/sele_mechanical_siege_lithobolos_unpacked.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/sele_mechanical_siege_lithobolos_unpacked.xml +++ binaries/data/mods/public/simulation/templates/units/sele_mechanical_siege_lithobolos_unpacked.xml @@ -9,9 +9,6 @@ 0.001 - - 0.001 - units/athenians/siege_rock_pivot.xml Index: binaries/data/mods/public/simulation/templates/units/spart_mechanical_siege_oxybeles_unpacked.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/spart_mechanical_siege_oxybeles_unpacked.xml +++ binaries/data/mods/public/simulation/templates/units/spart_mechanical_siege_oxybeles_unpacked.xml @@ -9,9 +9,6 @@ 0.001 - - 0.001 - units/athenians/siege_spear_pivot.xml Index: source/simulation2/components/CCmpUnitMotion.cpp =================================================================== --- source/simulation2/components/CCmpUnitMotion.cpp +++ source/simulation2/components/CCmpUnitMotion.cpp @@ -131,14 +131,18 @@ // Template state: bool m_FormationController; - fixed m_WalkSpeed, m_OriginalWalkSpeed; // in metres per second - fixed m_RunSpeed, m_OriginalRunSpeed; + + fixed m_TemplateWalkSpeed, m_TemplateRunSpeedMultiplier; pass_class_t m_PassClass; std::string m_PassClassName; // Dynamic state: entity_pos_t m_Clearance; + + // cached for efficiency + fixed m_WalkSpeed, m_RunSpeedMultiplier; + bool m_Moving; bool m_FacePointAfterMove; @@ -229,7 +233,10 @@ entity_pos_t m_TargetMinRange; entity_pos_t m_TargetMaxRange; + // Actual unit speed, after technology and ratio fixed m_Speed; + // Convenience variable to avoid recomputing the ratio every time. Synchronised. + fixed m_SpeedRatio; // Current mean speed (over the last turn). fixed m_CurSpeed; @@ -259,14 +266,8 @@ "" "" "" - "" - "" - "" - "" - "" - "" - "" - "" + "" + "" "" "" "" @@ -281,14 +282,13 @@ m_Moving = false; m_FacePointAfterMove = true; - m_WalkSpeed = m_OriginalWalkSpeed = paramNode.GetChild("WalkSpeed").ToFixed(); - m_Speed = m_WalkSpeed; + m_WalkSpeed = m_TemplateWalkSpeed = m_Speed = paramNode.GetChild("WalkSpeed").ToFixed(); + m_SpeedRatio = fixed::FromInt(1); m_CurSpeed = fixed::Zero(); - if (paramNode.GetChild("Run").IsOk()) - m_RunSpeed = m_OriginalRunSpeed = paramNode.GetChild("Run").GetChild("Speed").ToFixed(); - else - m_RunSpeed = m_OriginalRunSpeed = m_WalkSpeed; + m_RunSpeedMultiplier = m_TemplateRunSpeedMultiplier = fixed::FromInt(1); + if (paramNode.GetChild("RunMultiplier").IsOk()) + m_RunSpeedMultiplier = m_TemplateRunSpeedMultiplier = paramNode.GetChild("RunMultiplier").ToFixed(); CmpPtr cmpPathfinder(GetSystemEntity()); if (cmpPathfinder) @@ -338,7 +338,8 @@ serialize.NumberFixed_Unbounded("target min range", m_TargetMinRange); serialize.NumberFixed_Unbounded("target max range", m_TargetMaxRange); - serialize.NumberFixed_Unbounded("speed", m_Speed); + serialize.NumberFixed_Unbounded("speed ratio", m_SpeedRatio); + serialize.NumberFixed_Unbounded("current speed", m_CurSpeed); serialize.Bool("moving", m_Moving); @@ -417,17 +418,13 @@ if (!cmpValueModificationManager) break; - fixed newWalkSpeed = cmpValueModificationManager->ApplyModifications(L"UnitMotion/WalkSpeed", m_OriginalWalkSpeed, GetEntityId()); - fixed newRunSpeed = cmpValueModificationManager->ApplyModifications(L"UnitMotion/Run/Speed", m_OriginalRunSpeed, GetEntityId()); + m_WalkSpeed = cmpValueModificationManager->ApplyModifications(L"UnitMotion/WalkSpeed", m_TemplateWalkSpeed, GetEntityId()); + m_RunSpeedMultiplier = cmpValueModificationManager->ApplyModifications(L"UnitMotion/RunMultiplier", m_TemplateRunSpeedMultiplier, GetEntityId()); - // update m_Speed (the actual speed) if set to one of the variables - if (m_Speed == m_WalkSpeed) - m_Speed = newWalkSpeed; - else if (m_Speed == m_RunSpeed) - m_Speed = newRunSpeed; + // Adjust our speed. UnitMotion cannot know if this speed is on purpose or not so always adjust and let unitAI and such adapt. + m_SpeedRatio = std::min(m_SpeedRatio, m_RunSpeedMultiplier); + m_Speed = m_SpeedRatio.Multiply(GetWalkSpeed()); - m_WalkSpeed = newWalkSpeed; - m_RunSpeed = newRunSpeed; break; } } @@ -444,14 +441,30 @@ return m_Moving; } - virtual fixed GetWalkSpeed() const + virtual fixed GetSpeedRatio() const { - return m_WalkSpeed; + return m_SpeedRatio; + } + + virtual fixed GetRunSpeedMultiplier() const + { + return m_RunSpeedMultiplier; + } + + virtual void SetSpeedRatio(fixed ratio) + { + m_SpeedRatio = std::min(ratio, m_RunSpeedMultiplier); + m_Speed = m_SpeedRatio.Multiply(GetWalkSpeed()); } - virtual fixed GetRunSpeed() const + virtual fixed GetSpeed() const { - return m_RunSpeed; + return m_Speed; + } + + virtual fixed GetWalkSpeed() const + { + return m_WalkSpeed; } virtual pass_class_t GetPassabilityClass() const @@ -477,11 +490,6 @@ return m_CurSpeed; } - virtual void SetSpeed(fixed speed) - { - m_Speed = speed; - } - virtual void SetFacePointAfterMove(bool facePointAfterMove) { m_FacePointAfterMove = facePointAfterMove; @@ -855,12 +863,7 @@ // Keep track of the current unit's position during the update CFixedVector2D pos = initialPos; - // If in formation, run to keep up; otherwise just walk - fixed basicSpeed; - if (IsFormationMember()) - basicSpeed = GetRunSpeed(); - else - basicSpeed = m_Speed; // (typically but not always WalkSpeed) + fixed basicSpeed = m_Speed; // Find the speed factor of the underlying terrain // (We only care about the tile we start on - it doesn't matter if we're moving Index: source/simulation2/components/ICmpUnitMotion.h =================================================================== --- source/simulation2/components/ICmpUnitMotion.h +++ source/simulation2/components/ICmpUnitMotion.h @@ -92,25 +92,37 @@ virtual fixed GetCurrentSpeed() const = 0; /** - * Set the current movement speed. + * Get whether the unit is moving. */ - virtual void SetSpeed(fixed speed) = 0; + virtual bool IsMoving() const = 0; /** - * Get whether the unit is moving. + * Get how much faster/slower we are than normal. */ - virtual bool IsMoving() const = 0; + virtual fixed GetSpeedRatio() const = 0; /** - * Get the default speed that this unit will have when walking, in metres per second. + * Get how much faster than our regular speed we can go. */ - virtual fixed GetWalkSpeed() const = 0; + virtual fixed GetRunSpeedMultiplier() const = 0; /** - * Get the default speed that this unit will have when running, in metres per second. + * Set the current movement speed. + * @param speed A ratio of GetWalkSpeed(). */ - virtual fixed GetRunSpeed() const = 0; + virtual void SetSpeedRatio(fixed ratio) = 0; + /** + * Get the unit theoretical speed in metres per second. + * This is affected by SetSpeedRatio. + */ + virtual fixed GetSpeed() const = 0; + + /** + * Get the unit "raw"/template walk speed after technologies. + * Calls to SetSpeedRatio have no effect on this (as that affects actual speed, not template). + */ + virtual fixed GetWalkSpeed() const = 0; /** * Set whether the unit will turn to face the target point after finishing moving. */ Index: source/simulation2/components/ICmpUnitMotion.cpp =================================================================== --- source/simulation2/components/ICmpUnitMotion.cpp +++ source/simulation2/components/ICmpUnitMotion.cpp @@ -31,10 +31,11 @@ DEFINE_INTERFACE_METHOD_2("FaceTowardsPoint", void, ICmpUnitMotion, FaceTowardsPoint, entity_pos_t, entity_pos_t) DEFINE_INTERFACE_METHOD_0("StopMoving", void, ICmpUnitMotion, StopMoving) DEFINE_INTERFACE_METHOD_CONST_0("GetCurrentSpeed", fixed, ICmpUnitMotion, GetCurrentSpeed) -DEFINE_INTERFACE_METHOD_1("SetSpeed", void, ICmpUnitMotion, SetSpeed, fixed) +DEFINE_INTERFACE_METHOD_CONST_0("GetRunSpeedMultiplier", fixed, ICmpUnitMotion, GetRunSpeedMultiplier) +DEFINE_INTERFACE_METHOD_1("SetSpeedRatio", void, ICmpUnitMotion, SetSpeedRatio, fixed) DEFINE_INTERFACE_METHOD_CONST_0("IsMoving", bool, ICmpUnitMotion, IsMoving) +DEFINE_INTERFACE_METHOD_CONST_0("GetSpeed", fixed, ICmpUnitMotion, GetSpeed) DEFINE_INTERFACE_METHOD_CONST_0("GetWalkSpeed", fixed, ICmpUnitMotion, GetWalkSpeed) -DEFINE_INTERFACE_METHOD_CONST_0("GetRunSpeed", fixed, ICmpUnitMotion, GetRunSpeed) DEFINE_INTERFACE_METHOD_CONST_0("GetPassabilityClassName", std::string, ICmpUnitMotion, GetPassabilityClassName) DEFINE_INTERFACE_METHOD_CONST_0("GetUnitClearance", entity_pos_t, ICmpUnitMotion, GetUnitClearance) DEFINE_INTERFACE_METHOD_1("SetFacePointAfterMove", void, ICmpUnitMotion, SetFacePointAfterMove, bool) @@ -86,9 +87,14 @@ return m_Script.Call("GetCurrentSpeed"); } - virtual void SetSpeed(fixed speed) + virtual void SetSpeedRatio(fixed ratio) { - m_Script.CallVoid("SetSpeed", speed); + m_Script.CallVoid("SetSpeedRatio", ratio); + } + + virtual fixed GetRunSpeedMultiplier() const + { + return m_Script.Call("GetRunSpeedMultiplier"); } virtual bool IsMoving() const @@ -96,14 +102,14 @@ return m_Script.Call("IsMoving"); } - virtual fixed GetWalkSpeed() const + virtual fixed GetSpeed() const { - return m_Script.Call("GetWalkSpeed"); + return m_Script.Call("GetSpeed"); } - virtual fixed GetRunSpeed() const + virtual fixed GetWalkSpeed() const { - return m_Script.Call("GetRunSpeed"); + return m_Script.Call("GetWalkSpeed"); } virtual void SetFacePointAfterMove(bool facePointAfterMove) @@ -116,6 +122,11 @@ return m_Script.Call("GetPassabilityClass"); } + virtual fixed GetSpeedRatio() const + { + return m_Script.Call("GetSpeedRatio"); + } + virtual std::string GetPassabilityClassName() const { return m_Script.Call("GetPassabilityClassName"); Index: source/tools/atlas/GameInterface/ActorViewer.cpp =================================================================== --- source/tools/atlas/GameInterface/ActorViewer.cpp +++ source/tools/atlas/GameInterface/ActorViewer.cpp @@ -395,7 +395,7 @@ { CmpPtr cmpUnitMotion(m.Simulation2, m.Entity); if (cmpUnitMotion) - speed = cmpUnitMotion->GetRunSpeed().ToFloat(); + speed = cmpUnitMotion->GetWalkSpeed().ToFloat() * cmpUnitMotion->GetRunSpeedMultiplier().ToFloat(); else speed = 12.f; // typical unit speed