From 418284672c715c70d037ca62570c50f0ec66ec45 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Wed, 5 Jan 2011 08:58:02 +1300 Subject: [PATCH] clean up some potential fp misbehavior in Repair.cs --- OpenRA.Mods.RA/Activities/Repair.cs | 12 +++++++----- OpenRA.Mods.RA/RepairsUnits.cs | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/OpenRA.Mods.RA/Activities/Repair.cs b/OpenRA.Mods.RA/Activities/Repair.cs index d1ed98bbca..858efc447a 100644 --- a/OpenRA.Mods.RA/Activities/Repair.cs +++ b/OpenRA.Mods.RA/Activities/Repair.cs @@ -30,12 +30,14 @@ namespace OpenRA.Mods.RA.Activities { var health = self.TraitOrDefault(); if (health == null) return NextActivity; - - var unitCost = self.Info.Traits.Get().Cost; + var repairsUnits = host.Info.Traits.Get(); - var costPerHp = (repairsUnits.URepairPercent * unitCost) / health.MaxHP; + var unitCost = self.Info.Traits.Get().Cost; var hpToRepair = Math.Min(host.Info.Traits.Get().URepairStep, health.MaxHP - health.HP); - var cost = (int)Math.Ceiling(costPerHp * hpToRepair); + var costPerHp = (repairsUnits.URepairPercent * unitCost) / health.MaxHP; + var fullRepairCost = (int)(repairsUnits.URepairPercent * unitCost); + var cost = fullRepairCost * hpToRepair / health.MaxHP; + if (!self.Owner.PlayerActor.Trait().TakeCash(cost)) { remainingTicks = 1; @@ -50,7 +52,7 @@ namespace OpenRA.Mods.RA.Activities host.Trait() .PlayCustomAnim(host, "active"); - remainingTicks = (int)(repairsUnits.RepairRate * 60 * 25); + remainingTicks = repairsUnits.Interval; } else --remainingTicks; diff --git a/OpenRA.Mods.RA/RepairsUnits.cs b/OpenRA.Mods.RA/RepairsUnits.cs index 450fa00ac6..8fb17da68c 100644 --- a/OpenRA.Mods.RA/RepairsUnits.cs +++ b/OpenRA.Mods.RA/RepairsUnits.cs @@ -16,7 +16,7 @@ namespace OpenRA.Mods.RA { public readonly float URepairPercent = 0.2f; public readonly int URepairStep = 10; - public readonly float RepairRate = 0.016f; + public readonly int Interval = 24; } public class RepairsUnits { }