diff --git a/binaries/data/mods/public/globalscripts/Templates.js b/binaries/data/mods/public/globalscripts/Templates.js index a9e46fcbb4..8250848a44 100644 --- a/binaries/data/mods/public/globalscripts/Templates.js +++ b/binaries/data/mods/public/globalscripts/Templates.js @@ -398,8 +398,9 @@ function GetTemplateDataHelper(template, player, auraTemplates, resources, damag 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) diff --git a/binaries/data/mods/public/simulation/components/Formation.js b/binaries/data/mods/public/simulation/components/Formation.js index 153d0343c5..4b643f3ced 100644 --- a/binaries/data/mods/public/simulation/components/Formation.js +++ b/binaries/data/mods/public/simulation/components/Formation.js @@ -858,7 +858,7 @@ Formation.prototype.ComputeMotionParameters = function() minSpeed *= this.GetSpeedMultiplier(); var cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion); - cmpUnitMotion.SetSpeed(minSpeed); + cmpUnitMotion.SetSpeedRatio(minSpeed / cmpUnitMotion.GetWalkSpeed()); }; Formation.prototype.ShapeUpdate = function() diff --git a/binaries/data/mods/public/simulation/components/GuiInterface.js b/binaries/data/mods/public/simulation/components/GuiInterface.js index 3dd7700222..46627c156f 100644 --- a/binaries/data/mods/public/simulation/components/GuiInterface.js +++ b/binaries/data/mods/public/simulation/components/GuiInterface.js @@ -502,7 +502,7 @@ GuiInterface.prototype.GetEntityState = function(player, ent) if (cmpUnitMotion) ret.speed = { "walk": cmpUnitMotion.GetWalkSpeed(), - "run": cmpUnitMotion.GetRunSpeed() + "run": cmpUnitMotion.GetWalkSpeed() * cmpUnitMotion.GetRunSpeedMultiplier() }; return ret; diff --git a/binaries/data/mods/public/simulation/components/UnitAI.js b/binaries/data/mods/public/simulation/components/UnitAI.js index 0ba8bf6565..83d5453e63 100644 --- a/binaries/data/mods/public/simulation/components/UnitAI.js +++ b/binaries/data/mods/public/simulation/components/UnitAI.js @@ -1660,7 +1660,7 @@ UnitAI.prototype.UnitFsmSpec = { }, "leave": function(msg) { - this.SetMoveSpeed(this.GetWalkSpeed()); + this.ResetMoveSpeed(); this.StopTimer(); this.SetDefaultAnimationVariant(); }, @@ -1675,13 +1675,13 @@ UnitAI.prototype.UnitFsmSpec = { { 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 @@ UnitAI.prototype.UnitFsmSpec = { 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,23 +2031,12 @@ UnitAI.prototype.UnitFsmSpec = { if (cmpUnitAI && cmpUnitAI.IsFleeing()) { // Run after a fleeing target - var speed = this.GetRunSpeed(); - this.SetMoveSpeed(speed); + this.SetMoveSpeedRatio(this.GetRunMultiplier()); } this.StartTimer(1000, 1000); }, - "HealthChanged": function() { - var cmpUnitAI = Engine.QueryInterface(this.order.data.target, IID_UnitAI); - if (!cmpUnitAI || !cmpUnitAI.IsFleeing()) - return; - var speed = this.GetRunSpeed(); - this.SetMoveSpeed(speed); - }, - "leave": function() { - // Reset normal speed in case it was changed - this.SetMoveSpeed(this.GetWalkSpeed()); // Show carried resources when walking. this.SetDefaultAnimationVariant(); @@ -3132,7 +3118,7 @@ UnitAI.prototype.UnitFsmSpec = { "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 @@ -3976,20 +3962,18 @@ UnitAI.prototype.OnPackFinished = function(msg) 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(); }; /** @@ -4225,7 +4209,7 @@ UnitAI.prototype.SelectAnimation = function(name, once = false, speed = 1.0) if (name == "move") { // Speed to switch from walking to running animations - cmpVisual.SelectMovementAnimation((this.GetWalkSpeed() + this.GetRunSpeed()) / 2); + cmpVisual.SelectMovementAnimation(this.GetWalkSpeed()); return; } @@ -5593,11 +5577,21 @@ UnitAI.prototype.GetStanceName = function() return this.stance; }; - -UnitAI.prototype.SetMoveSpeed = function(speed) +/* + * Make the unit walk at its normal pace. + */ +UnitAI.prototype.ResetMoveSpeed = function() { - var cmpMotion = Engine.QueryInterface(this.entity, IID_UnitMotion); - cmpMotion.SetSpeed(speed); + let cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion); + if (cmpUnitMotion) + cmpUnitMotion.SetSpeedRatio(1); +}; + +UnitAI.prototype.SetMoveSpeedRatio = function(speed) +{ + let cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion); + if (cmpUnitMotion) + cmpUnitMotion.SetSpeedRatio(speed); }; UnitAI.prototype.SetHeldPosition = function(x, z) diff --git a/binaries/data/mods/public/simulation/components/UnitMotionFlying.js b/binaries/data/mods/public/simulation/components/UnitMotionFlying.js index 665629928f..1e355196e2 100644 --- a/binaries/data/mods/public/simulation/components/UnitMotionFlying.js +++ b/binaries/data/mods/public/simulation/components/UnitMotionFlying.js @@ -304,14 +304,14 @@ UnitMotionFlying.prototype.GetWalkSpeed = function() 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 @@ UnitMotionFlying.prototype.GetCurrentSpeed = function() return this.speed; }; +UnitMotionFlying.prototype.GetSpeedRatio = function() +{ + return this.GetCurrentSpeed() / this.GetWalkSpeed(); +} + UnitMotionFlying.prototype.GetPassabilityClassName = function() { return this.template.PassabilityClass; diff --git a/binaries/data/mods/public/simulation/components/tests/test_UnitAI.js b/binaries/data/mods/public/simulation/components/tests/test_UnitAI.js index 9a07d31873..7d2f942362 100644 --- a/binaries/data/mods/public/simulation/components/tests/test_UnitAI.js +++ b/binaries/data/mods/public/simulation/components/tests/test_UnitAI.js @@ -137,7 +137,8 @@ function TestFormationExiting(mode) }); 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 @@ function TestMoveIntoFormationWhileAttacking() }); 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() { }, diff --git a/binaries/data/mods/public/simulation/components/tests/test_UnitMotionFlying.js b/binaries/data/mods/public/simulation/components/tests/test_UnitMotionFlying.js index deb977edc7..b62127b660 100644 --- a/binaries/data/mods/public/simulation/components/tests/test_UnitMotionFlying.js +++ b/binaries/data/mods/public/simulation/components/tests/test_UnitMotionFlying.js @@ -26,13 +26,12 @@ let cmpUnitMotionFlying = ConstructComponent(entity, "UnitMotionFlying", { "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 @@ AddMock(entity, IID_WaterManager, { 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(cmpUnitMotionFlying.GetCurrentSpeed(), 0.75); 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 diff --git a/binaries/data/mods/public/simulation/data/auras/structures/maur_pillar.json b/binaries/data/mods/public/simulation/data/auras/structures/maur_pillar.json index 05ce233fe9..c2d41c2cfe 100644 --- a/binaries/data/mods/public/simulation/data/auras/structures/maur_pillar.json +++ b/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.", diff --git a/binaries/data/mods/public/simulation/data/auras/units/catafalques/brit_catafalque_1.json b/binaries/data/mods/public/simulation/data/auras/units/catafalques/brit_catafalque_1.json index 43a2078a6a..73db140df4 100644 --- a/binaries/data/mods/public/simulation/data/auras/units/catafalques/brit_catafalque_1.json +++ b/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." diff --git a/binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_1.json b/binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_1.json index cbf2bc842e..f6cb88a5e1 100644 --- a/binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_1.json +++ b/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." diff --git a/binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_2.json b/binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_2.json index 7fb7e0e356..a466516ad1 100644 --- a/binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_2.json +++ b/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." diff --git a/binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_themistocles_1.json b/binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_themistocles_1.json index 52515d48db..21ecb5788e 100644 --- a/binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_themistocles_1.json +++ b/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", diff --git a/binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_boudicca.json b/binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_boudicca.json index 1c64c73154..8c64b41fa8 100644 --- a/binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_boudicca.json +++ b/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 }, diff --git a/binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_caratacos.json b/binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_caratacos.json index b20b50b6b1..88242e1e72 100644 --- a/binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_caratacos.json +++ b/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 } diff --git a/binaries/data/mods/public/simulation/data/auras/units/heroes/cart_hero_hamilcar_1.json b/binaries/data/mods/public/simulation/data/auras/units/heroes/cart_hero_hamilcar_1.json index 0b0f21ed42..4123f3ec68 100644 --- a/binaries/data/mods/public/simulation/data/auras/units/heroes/cart_hero_hamilcar_1.json +++ b/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." diff --git a/binaries/data/mods/public/simulation/data/auras/units/heroes/iber_hero_viriato_1.json b/binaries/data/mods/public/simulation/data/auras/units/heroes/iber_hero_viriato_1.json index ebbd95b9c6..9f97dd3cc0 100644 --- a/binaries/data/mods/public/simulation/data/auras/units/heroes/iber_hero_viriato_1.json +++ b/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", diff --git a/binaries/data/mods/public/simulation/data/auras/units/heroes/pers_hero_darius.json b/binaries/data/mods/public/simulation/data/auras/units/heroes/pers_hero_darius.json index d70a3e3747..3ca08fdf47 100644 --- a/binaries/data/mods/public/simulation/data/auras/units/heroes/pers_hero_darius.json +++ b/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." diff --git a/binaries/data/mods/public/simulation/data/auras/units/heroes/sele_hero_seleucus_victor.json b/binaries/data/mods/public/simulation/data/auras/units/heroes/sele_hero_seleucus_victor.json index d507ed3959..ca040af95e 100644 --- a/binaries/data/mods/public/simulation/data/auras/units/heroes/sele_hero_seleucus_victor.json +++ b/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 } ], diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_camel.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_camel.xml index 9a392fcdbc..03abc1c6bf 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_camel.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_camel.xml @@ -32,9 +32,6 @@ 0.45 - - 0.45 - fauna/camel.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_chicken.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_chicken.xml index 76d0060d78..4061c64d19 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_chicken.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_chicken.xml @@ -40,9 +40,6 @@ 0.15 - - 0.15 - fauna/chicken.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_crocodile.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_crocodile.xml index 548122681c..493a152f9b 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_crocodile.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_crocodile.xml @@ -38,9 +38,6 @@ 0.3 - - 0.3 - fauna/crocodile.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe.xml index 84650ce8bd..09aacedc7e 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe.xml @@ -32,9 +32,6 @@ 0.6 - - 0.6 - fauna/giraffe_adult.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe_infant.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe_infant.xml index 5aa47f1d17..0276e2220f 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe_infant.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe_infant.xml @@ -21,9 +21,6 @@ 0.6 - - 0.6 - fauna/giraffe_baby.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_goat.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_goat.xml index 91d07a4062..74e57dadfd 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_goat.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_goat.xml @@ -27,9 +27,6 @@ 0.45 - - 0.45 - fauna/goat.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_horse.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_horse.xml index 43c23f0277..68aa18ff0a 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_horse.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_horse.xml @@ -27,9 +27,6 @@ 0.8 - - 0.8 - fauna/horse.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_lion.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_lion.xml index c2976b276f..d38ed0e636 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_lion.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_lion.xml @@ -30,9 +30,6 @@ 0.45 - - 0.45 - fauna/lion.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_peacock.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_peacock.xml index 386f6f2f5a..b419bc0618 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_peacock.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_peacock.xml @@ -32,9 +32,6 @@ 0.3 - - 0.3 - fauna/peacock.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_pig.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_pig.xml index 68c19dc8b2..c5f08ec138 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_pig.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_pig.xml @@ -25,9 +25,6 @@ 0.45 - - 0.45 - fauna/pig1.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_pig_flaming.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_pig_flaming.xml index bcf6272e84..115e5780a8 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_pig_flaming.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_pig_flaming.xml @@ -29,9 +29,6 @@ 3.5 - - 3.5 - diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_piglet.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_piglet.xml index 73173ba77a..40385d6aaa 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_piglet.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_piglet.xml @@ -18,8 +18,5 @@ 0.25 - - 0.25 - diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_pony.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_pony.xml index 54ed9f384e..53196d071c 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_pony.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_pony.xml @@ -5,9 +5,6 @@ 0.8 - - 0.8 - fauna/pony.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml index 4520fcaa92..11ddb21d72 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml @@ -45,9 +45,6 @@ ship-small 0.6 - - 0.6 - false diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_sheep.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_sheep.xml index f92002a542..fe13a4bf88 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_sheep.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_sheep.xml @@ -25,9 +25,6 @@ 0.45 - - 0.45 - fauna/sheep3.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_wildebeest.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_wildebeest.xml index 95ae24be46..0de8cb4e74 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_wildebeest.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_wildebeest.xml @@ -18,9 +18,6 @@ 0.9 - - 0.9 - fauna/wildebeest.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_zebra.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_zebra.xml index 6d4312a576..4f885ed439 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_zebra.xml +++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_zebra.xml @@ -18,9 +18,6 @@ 0.9 - - 0.9 - fauna/zebra.xml diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_zebu.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_zebu.xml index 457232d222..d5b4771787 100644 --- a/binaries/data/mods/public/simulation/templates/gaia/fauna_zebu.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/template_formation.xml b/binaries/data/mods/public/simulation/templates/template_formation.xml index 4a9b31666a..d0f6775fa4 100644 --- a/binaries/data/mods/public/simulation/templates/template_formation.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/template_unit.xml b/binaries/data/mods/public/simulation/templates/template_unit.xml index 81f89a8abf..ef64d2d90b 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit.xml @@ -120,15 +120,9 @@ false - 9.0 - - 15.0 - 50.0 - 0.0 - 0.1 - 0.2 - default + 9.0 + 1.67 false diff --git a/binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml b/binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml index d17e444e26..40c191cee7 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml @@ -39,9 +39,6 @@ large 0.55 - - 0.55 - units/global/catafalque.xml diff --git a/binaries/data/mods/public/simulation/templates/template_unit_cavalry.xml b/binaries/data/mods/public/simulation/templates/template_unit_cavalry.xml index ab16a5cf9d..5dde911f20 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_cavalry.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_cavalry.xml @@ -97,9 +97,6 @@ 1.95 - - 1.95 - 92 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_spearman.xml b/binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_spearman.xml index c6e38215b8..2d95c9c4d7 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_spearman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_spearman.xml @@ -26,8 +26,5 @@ 1.1 - - 1.1 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_swordsman.xml b/binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_swordsman.xml index b18db305b5..d07f224610 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_swordsman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_swordsman.xml @@ -28,8 +28,5 @@ 1.2 - - 1.2 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry.xml b/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry.xml index cdb110a4ac..251a59c96f 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry.xml @@ -59,9 +59,6 @@ 2.25 - - 2.25 - 96 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml b/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml index 9cccd146b9..7b52109eb0 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml @@ -36,8 +36,5 @@ 1.1 - - 1.1 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_swordsman.xml b/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_swordsman.xml index 393577d4c2..461e810926 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_swordsman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_swordsman.xml @@ -30,8 +30,5 @@ 1.2 - - 1.2 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml b/binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml index 0c997cef59..d68c50658c 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml @@ -58,9 +58,6 @@ large 0.95 - - 0.95 - 100 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml b/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml index f0468109bc..eb59a4a834 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml @@ -36,8 +36,5 @@ 1.2 - - 1.2 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelinist.xml b/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelinist.xml index 9ad616d6f8..d57ab46744 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelinist.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelinist.xml @@ -36,8 +36,5 @@ 1.75 - - 1.75 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_maceman.xml b/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_maceman.xml index 9df8ec2f27..7b39b4a4e7 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_maceman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_maceman.xml @@ -33,8 +33,5 @@ 1.4 - - 1.4 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml b/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml index 6a49492b97..6905226aba 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml @@ -41,8 +41,5 @@ 0.8 - - 0.8 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml b/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml index 677c2f9f9b..371338c725 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml @@ -39,8 +39,5 @@ 1.3 - - 1.3 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_swordsman.xml b/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_swordsman.xml index 1663939e2a..10f6bd2799 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_swordsman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_swordsman.xml @@ -33,8 +33,5 @@ 1.4 - - 1.4 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_dog.xml b/binaries/data/mods/public/simulation/templates/template_unit_dog.xml index 34f2951181..035f1764eb 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_dog.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_dog.xml @@ -81,9 +81,7 @@ 1.6 - - 1.6 - + 2.5 30 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_fauna.xml b/binaries/data/mods/public/simulation/templates/template_unit_fauna.xml index f9410d13db..f592e3785a 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_fauna.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_fauna.xml @@ -31,9 +31,6 @@ 0.7 - - 0.7 - true diff --git a/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_elephant.xml b/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_elephant.xml index 3d57c36429..deb2406ee4 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_elephant.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_whale.xml b/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_whale.xml index bc7c5a6a75..988590ec48 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_whale.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_whale.xml @@ -50,8 +50,6 @@ ship-small 1.8 - - 1.8 - + 1 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_fauna_wild_aggressive_dog.xml b/binaries/data/mods/public/simulation/templates/template_unit_fauna_wild_aggressive_dog.xml index 50b94491e4..f11e23aaaf 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_fauna_wild_aggressive_dog.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_fauna_wild_aggressive_dog.xml @@ -24,8 +24,5 @@ 1.6 - - 1.6 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry.xml b/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry.xml index 859fb1c135..76fef73021 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry.xml @@ -43,9 +43,6 @@ 1.85 - - 1.85 - 100 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelinist.xml b/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelinist.xml index e883b93da6..e240fc99d7 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelinist.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelinist.xml @@ -35,8 +35,5 @@ 1.05 - - 1.05 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_spearman.xml b/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_spearman.xml index 535b23f424..bd719a1f0b 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_spearman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_spearman.xml @@ -28,8 +28,5 @@ 1.0 - - 1.0 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_swordsman.xml b/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_swordsman.xml index 38a0f2d61b..dd35803c32 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_swordsman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_swordsman.xml @@ -27,8 +27,5 @@ 1.0 - - 1.0 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml b/binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml index b1b7d9aa2e..4e4be20262 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml @@ -51,9 +51,6 @@ large 0.95 - - 0.95 - 80 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry.xml b/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry.xml index 48d2e59e45..a20dd128b0 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry.xml @@ -24,10 +24,4 @@ Infantry Hero - - 1.0 - - 1.0 - - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml b/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml index ea7fc75b05..436211f728 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml @@ -31,8 +31,5 @@ 0.95 - - 0.95 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml b/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml index 0a50baa071..6430e6663c 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml @@ -29,10 +29,4 @@ special/formations/testudo - - 1.0 - - 1.0 - - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_swordsman.xml b/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_swordsman.xml index 1d1ec9a466..168b57dfdd 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_swordsman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_swordsman.xml @@ -27,9 +27,6 @@ 1.05 - - 1.05 - 80 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml b/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml index fda4f76f3e..b30d169de7 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml @@ -36,8 +36,5 @@ 0.8 - - 0.8 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml b/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml index 5678fde69d..51655f7b94 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml @@ -32,8 +32,5 @@ 0.95 - - 0.95 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_swordsman.xml b/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_swordsman.xml index 1e3037eb64..a0138b24e0 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_swordsman.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_swordsman.xml @@ -27,8 +27,5 @@ 1.05 - - 1.05 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml b/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml index 076d8b6816..e9f5d7c7cf 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml @@ -34,8 +34,5 @@ 1.1 - - 1.1 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelinist.xml b/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelinist.xml index b7dd8dc8ee..ac51e2c4ef 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelinist.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelinist.xml @@ -33,8 +33,5 @@ 1.4 - - 1.4 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml b/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml index c954b7f08b..c3e1744853 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml @@ -34,8 +34,5 @@ 1.2 - - 1.2 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical.xml index ee3c3e4aae..6c22576166 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical.xml @@ -22,4 +22,7 @@ 4.0 + + 1 + diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml index 35d0454a7a..162a809717 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml @@ -74,8 +74,5 @@ 1.55 - - 1.55 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fire.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fire.xml index d6e7701112..6fe6e661f0 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fire.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fire.xml @@ -54,9 +54,6 @@ ship-small 1.6 - - 1.6 - 60 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml index 0ecea4bcfa..3d85643e8c 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml @@ -62,9 +62,6 @@ ship-small 1.1 - - 1.1 - 30 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml index 7897862f2f..7b1d467b39 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml @@ -61,9 +61,6 @@ ship-small 1.35 - - 1.35 - 50 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml index 71cf2c7aeb..1c37c408c0 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml @@ -82,9 +82,6 @@ 1.8 - - 1.8 - 110 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml index f4512340fd..2d31b89551 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml @@ -74,8 +74,5 @@ 1.8 - - 1.8 - diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ballista.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ballista.xml index c5de30babd..ca0de4206b 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ballista.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ballista.xml @@ -78,9 +78,6 @@ 0.9 - - 0.9 - 120 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_onager.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_onager.xml index 9f34dcd625..cc48a33e12 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_onager.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_onager.xml @@ -79,9 +79,6 @@ 0.8 - - 0.8 - 120 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ram.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ram.xml index 7c9601ba05..cf44ed4e86 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ram.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ram.xml @@ -45,9 +45,6 @@ 0.9 - - 0.9 - 80 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_tower.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_tower.xml index 242b87fe80..3168078fad 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_tower.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_tower.xml @@ -81,9 +81,6 @@ 0.7 - - 0.7 - 80 diff --git a/binaries/data/mods/public/simulation/templates/template_unit_support_slave.xml b/binaries/data/mods/public/simulation/templates/template_unit_support_slave.xml index 2ab71dff9e..69904e5237 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit_support_slave.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit_support_slave.xml @@ -49,7 +49,6 @@ 1 - 2.0 1.0 0.5 diff --git a/binaries/data/mods/public/simulation/templates/units/athen_mechanical_siege_lithobolos_unpacked.xml b/binaries/data/mods/public/simulation/templates/units/athen_mechanical_siege_lithobolos_unpacked.xml index f2606520ea..cf226bfa71 100644 --- a/binaries/data/mods/public/simulation/templates/units/athen_mechanical_siege_lithobolos_unpacked.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/athen_mechanical_siege_oxybeles_unpacked.xml b/binaries/data/mods/public/simulation/templates/units/athen_mechanical_siege_oxybeles_unpacked.xml index e78b617df8..51c3137800 100644 --- a/binaries/data/mods/public/simulation/templates/units/athen_mechanical_siege_oxybeles_unpacked.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/brit_ship_trireme.xml b/binaries/data/mods/public/simulation/templates/units/brit_ship_trireme.xml index 4dd613a3bb..5609a3e127 100644 --- a/binaries/data/mods/public/simulation/templates/units/brit_ship_trireme.xml +++ b/binaries/data/mods/public/simulation/templates/units/brit_ship_trireme.xml @@ -21,9 +21,6 @@ 0.9 - - 0.9 - structures/celts/warship.xml diff --git a/binaries/data/mods/public/simulation/templates/units/cart_mechanical_siege_ballista_unpacked.xml b/binaries/data/mods/public/simulation/templates/units/cart_mechanical_siege_ballista_unpacked.xml index a3af13229e..a9a45cd3ed 100644 --- a/binaries/data/mods/public/simulation/templates/units/cart_mechanical_siege_ballista_unpacked.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/cart_mechanical_siege_oxybeles_unpacked.xml b/binaries/data/mods/public/simulation/templates/units/cart_mechanical_siege_oxybeles_unpacked.xml index 776d2096ef..6f67e84669 100644 --- a/binaries/data/mods/public/simulation/templates/units/cart_mechanical_siege_oxybeles_unpacked.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/gaul_champion_fanatic.xml b/binaries/data/mods/public/simulation/templates/units/gaul_champion_fanatic.xml index f1e36f2a0b..61252e2a79 100644 --- a/binaries/data/mods/public/simulation/templates/units/gaul_champion_fanatic.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/gaul_ship_trireme.xml b/binaries/data/mods/public/simulation/templates/units/gaul_ship_trireme.xml index 7c57dfbf79..b35f53b351 100644 --- a/binaries/data/mods/public/simulation/templates/units/gaul_ship_trireme.xml +++ b/binaries/data/mods/public/simulation/templates/units/gaul_ship_trireme.xml @@ -21,9 +21,6 @@ 0.9 - - 0.9 - structures/celts/warship.xml diff --git a/binaries/data/mods/public/simulation/templates/units/iber_ship_trireme.xml b/binaries/data/mods/public/simulation/templates/units/iber_ship_trireme.xml index 001690b013..e694f9e243 100644 --- a/binaries/data/mods/public/simulation/templates/units/iber_ship_trireme.xml +++ b/binaries/data/mods/public/simulation/templates/units/iber_ship_trireme.xml @@ -21,9 +21,6 @@ 0.9 - - 0.9 - structures/iberians/warship.xml diff --git a/binaries/data/mods/public/simulation/templates/units/kush_infantry_clubman_b.xml b/binaries/data/mods/public/simulation/templates/units/kush_infantry_clubman_b.xml index ea174dc656..997f0b51b6 100644 --- a/binaries/data/mods/public/simulation/templates/units/kush_infantry_clubman_b.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/mace_mechanical_siege_lithobolos_unpacked.xml b/binaries/data/mods/public/simulation/templates/units/mace_mechanical_siege_lithobolos_unpacked.xml index 73cda1d5e7..4613491255 100644 --- a/binaries/data/mods/public/simulation/templates/units/mace_mechanical_siege_lithobolos_unpacked.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/mace_mechanical_siege_oxybeles_unpacked.xml b/binaries/data/mods/public/simulation/templates/units/mace_mechanical_siege_oxybeles_unpacked.xml index ed8b6ea79f..bb95fb1927 100644 --- a/binaries/data/mods/public/simulation/templates/units/mace_mechanical_siege_oxybeles_unpacked.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/maur_elephant_archer_b.xml b/binaries/data/mods/public/simulation/templates/units/maur_elephant_archer_b.xml index 1c6f665930..c88b81c890 100644 --- a/binaries/data/mods/public/simulation/templates/units/maur_elephant_archer_b.xml +++ b/binaries/data/mods/public/simulation/templates/units/maur_elephant_archer_b.xml @@ -67,9 +67,6 @@ large 0.5 - - 0.5 - units/mauryas/elephantry_archer_b_m.xml diff --git a/binaries/data/mods/public/simulation/templates/units/maur_ship_trireme.xml b/binaries/data/mods/public/simulation/templates/units/maur_ship_trireme.xml index e793d3b99a..fe85c86dc9 100644 --- a/binaries/data/mods/public/simulation/templates/units/maur_ship_trireme.xml +++ b/binaries/data/mods/public/simulation/templates/units/maur_ship_trireme.xml @@ -21,9 +21,6 @@ 0.9 - - 0.9 - structures/mauryas/trireme.xml diff --git a/binaries/data/mods/public/simulation/templates/units/maur_support_elephant.xml b/binaries/data/mods/public/simulation/templates/units/maur_support_elephant.xml index fd829430fd..8785936aec 100644 --- a/binaries/data/mods/public/simulation/templates/units/maur_support_elephant.xml +++ b/binaries/data/mods/public/simulation/templates/units/maur_support_elephant.xml @@ -69,9 +69,6 @@ large 0.6 - - 0.6 - 50 diff --git a/binaries/data/mods/public/simulation/templates/units/ptol_mechanical_siege_lithobolos_unpacked.xml b/binaries/data/mods/public/simulation/templates/units/ptol_mechanical_siege_lithobolos_unpacked.xml index b391bb1f42..a01930c869 100644 --- a/binaries/data/mods/public/simulation/templates/units/ptol_mechanical_siege_lithobolos_unpacked.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/ptol_mechanical_siege_polybolos_unpacked.xml b/binaries/data/mods/public/simulation/templates/units/ptol_mechanical_siege_polybolos_unpacked.xml index 6ee749f67d..08eab9126c 100644 --- a/binaries/data/mods/public/simulation/templates/units/ptol_mechanical_siege_polybolos_unpacked.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_ballista_unpacked.xml b/binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_ballista_unpacked.xml index 4e1a0b2c66..6427bf795d 100644 --- a/binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_ballista_unpacked.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_onager.xml b/binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_onager.xml index 4235d713f0..8f3ce8e20d 100644 --- a/binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_onager.xml +++ b/binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_onager.xml @@ -38,9 +38,6 @@ 0.001 - - 0.001 - 88 diff --git a/binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_scorpio_unpacked.xml b/binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_scorpio_unpacked.xml index 24a0c4d3ea..75f7cb0a8d 100644 --- a/binaries/data/mods/public/simulation/templates/units/rome_mechanical_siege_scorpio_unpacked.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/sele_mechanical_siege_lithobolos_unpacked.xml b/binaries/data/mods/public/simulation/templates/units/sele_mechanical_siege_lithobolos_unpacked.xml index e3b643b466..0453b50cb5 100644 --- a/binaries/data/mods/public/simulation/templates/units/sele_mechanical_siege_lithobolos_unpacked.xml +++ b/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 diff --git a/binaries/data/mods/public/simulation/templates/units/spart_mechanical_siege_oxybeles_unpacked.xml b/binaries/data/mods/public/simulation/templates/units/spart_mechanical_siege_oxybeles_unpacked.xml index 546b99e008..9437818c40 100644 --- a/binaries/data/mods/public/simulation/templates/units/spart_mechanical_siege_oxybeles_unpacked.xml +++ b/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 diff --git a/source/simulation2/components/CCmpUnitMotion.cpp b/source/simulation2/components/CCmpUnitMotion.cpp index d37728993c..cf8aa4db4a 100644 --- a/source/simulation2/components/CCmpUnitMotion.cpp +++ b/source/simulation2/components/CCmpUnitMotion.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2017 Wildfire Games. +/* Copyright (C) 2019 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -131,14 +131,18 @@ public: // 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 @@ public: 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 @@ public: "" "" "" - "" - "" - "" - "" - "" - "" - "" - "" + "" + "" "" "" "" @@ -281,14 +282,13 @@ public: 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 @@ public: 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 @@ public: 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,16 +441,32 @@ public: return m_Moving; } + virtual fixed GetSpeedRatio() const + { + 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 GetSpeed() const + { + return m_Speed; + } + virtual fixed GetWalkSpeed() const { return m_WalkSpeed; } - virtual fixed GetRunSpeed() const - { - return m_RunSpeed; - } - virtual pass_class_t GetPassabilityClass() const { return m_PassClass; @@ -477,11 +490,6 @@ public: return m_CurSpeed; } - virtual void SetSpeed(fixed speed) - { - m_Speed = speed; - } - virtual void SetFacePointAfterMove(bool facePointAfterMove) { m_FacePointAfterMove = facePointAfterMove; @@ -855,12 +863,10 @@ void CCmpUnitMotion::Move(fixed dt) // Keep track of the current unit's position during the update CFixedVector2D pos = initialPos; + fixed basicSpeed = m_Speed; // 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) + basicSpeed = m_Speed.Multiply(m_RunSpeedMultiplier); // 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 diff --git a/source/simulation2/components/ICmpUnitMotion.cpp b/source/simulation2/components/ICmpUnitMotion.cpp index cea6d384fb..89d253d87d 100644 --- a/source/simulation2/components/ICmpUnitMotion.cpp +++ b/source/simulation2/components/ICmpUnitMotion.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2017 Wildfire Games. +/* Copyright (C) 2019 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -31,10 +31,11 @@ DEFINE_INTERFACE_METHOD_3("MoveToFormationOffset", void, ICmpUnitMotion, MoveToF 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 @@ public: 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,16 +102,16 @@ public: return m_Script.Call("IsMoving"); } + virtual fixed GetSpeed() const + { + return m_Script.Call("GetSpeed"); + } + virtual fixed GetWalkSpeed() const { return m_Script.Call("GetWalkSpeed"); } - virtual fixed GetRunSpeed() const - { - return m_Script.Call("GetRunSpeed"); - } - virtual void SetFacePointAfterMove(bool facePointAfterMove) { m_Script.CallVoid("SetFacePointAfterMove", facePointAfterMove); @@ -116,6 +122,11 @@ public: return m_Script.Call("GetPassabilityClass"); } + virtual fixed GetSpeedRatio() const + { + return m_Script.Call("GetSpeedRatio"); + } + virtual std::string GetPassabilityClassName() const { return m_Script.Call("GetPassabilityClassName"); diff --git a/source/simulation2/components/ICmpUnitMotion.h b/source/simulation2/components/ICmpUnitMotion.h index c87234980e..48e877993c 100644 --- a/source/simulation2/components/ICmpUnitMotion.h +++ b/source/simulation2/components/ICmpUnitMotion.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2017 Wildfire Games. +/* Copyright (C) 2019 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -91,26 +91,38 @@ public: */ virtual fixed GetCurrentSpeed() const = 0; - /** - * Set the current movement speed. - */ - virtual void SetSpeed(fixed speed) = 0; - /** * Get whether the unit is moving. */ virtual bool IsMoving() const = 0; /** - * Get the default speed that this unit will have when walking, in metres per second. + * Get how much faster/slower we are than normal. */ - virtual fixed GetWalkSpeed() const = 0; + virtual fixed GetSpeedRatio() const = 0; /** - * Get the default speed that this unit will have when running, in metres per second. + * Get how much faster than our regular speed we can go. */ - virtual fixed GetRunSpeed() const = 0; + virtual fixed GetRunSpeedMultiplier() const = 0; + /** + * Set the current movement speed. + * @param speed A ratio of GetWalkSpeed(). + */ + 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. */ diff --git a/source/tools/atlas/GameInterface/ActorViewer.cpp b/source/tools/atlas/GameInterface/ActorViewer.cpp index b7b5f769a0..446f901965 100644 --- a/source/tools/atlas/GameInterface/ActorViewer.cpp +++ b/source/tools/atlas/GameInterface/ActorViewer.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2018 Wildfire Games. +/* Copyright (C) 2019 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -395,7 +395,7 @@ void ActorViewer::SetActor(const CStrW& name, const CStrW& animation, player_id_ { 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