From 01cd6efbd01fd14a5782c8c24c35e0afb492112c Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 9 Aug 2014 22:04:20 +1200 Subject: [PATCH] Convert firepower modifiers to integer percentages. --- OpenRA.Game/Traits/TraitsInterfaces.cs | 2 +- OpenRA.Mods.D2k/ThrowsShrapnel.cs | 4 +++- OpenRA.Mods.RA/Armament.cs | 4 +++- OpenRA.Mods.RA/GainsStatUpgrades.cs | 6 +++--- OpenRA.Utility/UpgradeRules.cs | 3 +++ 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index 14e000f83b..cc89da3fa0 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -157,7 +157,7 @@ namespace OpenRA.Traits public interface IRenderModifier { IEnumerable ModifyRender(Actor self, WorldRenderer wr, IEnumerable r); } public interface IDamageModifier { int GetDamageModifier(Actor attacker, DamageWarhead warhead); } public interface ISpeedModifier { int GetSpeedModifier(); } - public interface IFirepowerModifier { float GetFirepowerModifier(); } + public interface IFirepowerModifier { int GetFirepowerModifier(); } public interface ILoadsPalettes { void LoadPalettes(WorldRenderer wr); } public interface IPaletteModifier { void AdjustPalette(IReadOnlyDictionary b); } public interface IPips { IEnumerable GetPips(Actor self); } diff --git a/OpenRA.Mods.D2k/ThrowsShrapnel.cs b/OpenRA.Mods.D2k/ThrowsShrapnel.cs index 6a219bd97b..32e963acad 100644 --- a/OpenRA.Mods.D2k/ThrowsShrapnel.cs +++ b/OpenRA.Mods.D2k/ThrowsShrapnel.cs @@ -48,8 +48,10 @@ namespace OpenRA.Mods.D2k { Weapon = wep, Facing = self.World.SharedRandom.Next(-1, 255), + + // TODO: Convert to ints FirepowerModifier = self.TraitsImplementing() - .Select(a => a.GetFirepowerModifier()) + .Select(a => a.GetFirepowerModifier() / 100f) .Product(), Source = self.CenterPosition, diff --git a/OpenRA.Mods.RA/Armament.cs b/OpenRA.Mods.RA/Armament.cs index aee2b84e2f..176488022e 100644 --- a/OpenRA.Mods.RA/Armament.cs +++ b/OpenRA.Mods.RA/Armament.cs @@ -153,8 +153,10 @@ namespace OpenRA.Mods.RA { Weapon = Weapon, Facing = legacyFacing, + + // TODO: Convert to ints FirepowerModifier = self.TraitsImplementing() - .Select(a => a.GetFirepowerModifier()) + .Select(a => a.GetFirepowerModifier() / 100f) .Product(), Source = muzzlePosition, diff --git a/OpenRA.Mods.RA/GainsStatUpgrades.cs b/OpenRA.Mods.RA/GainsStatUpgrades.cs index 7849a4b931..2e1527ed70 100644 --- a/OpenRA.Mods.RA/GainsStatUpgrades.cs +++ b/OpenRA.Mods.RA/GainsStatUpgrades.cs @@ -19,7 +19,7 @@ namespace OpenRA.Mods.RA public class GainsStatUpgradesInfo : ITraitInfo { public readonly string FirepowerUpgrade = "firepower"; - public readonly float[] FirepowerModifier = { 1.1f, 1.15f, 1.2f, 1.5f }; + public readonly int[] FirepowerModifier = { 110, 115, 120, 150 }; public readonly string ArmorUpgrade = "armor"; public readonly int[] ArmorModifier = { 110, 120, 130, 150 }; @@ -65,9 +65,9 @@ namespace OpenRA.Mods.RA return armorLevel > 0 ? 1 / info.ArmorModifier[armorLevel - 1] : 100; } - public float GetFirepowerModifier() + public int GetFirepowerModifier() { - return firepowerLevel > 0 ? info.FirepowerModifier[firepowerLevel - 1] : 1; + return firepowerLevel > 0 ? info.FirepowerModifier[firepowerLevel - 1] : 100; } public int GetSpeedModifier() diff --git a/OpenRA.Utility/UpgradeRules.cs b/OpenRA.Utility/UpgradeRules.cs index c4100d840e..652890ec81 100644 --- a/OpenRA.Utility/UpgradeRules.cs +++ b/OpenRA.Utility/UpgradeRules.cs @@ -428,6 +428,9 @@ namespace OpenRA.Utility if (depth == 2 && node.Key == "SpeedModifier" && parentKey == "GainsStatUpgrades") ConvertFloatArrayToPercentArray(ref node.Value.Value); + + if (depth == 2 && node.Key == "FirepowerModifier" && parentKey == "GainsStatUpgrades") + ConvertFloatArrayToPercentArray(ref node.Value.Value); } UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);