diff --git a/OpenRA.Mods.RA/Buildings/CustomBuildTimeValue.cs b/OpenRA.Mods.RA/Buildings/CustomBuildTimeValue.cs index f881894de8..cf3204c84e 100755 --- a/OpenRA.Mods.RA/Buildings/CustomBuildTimeValue.cs +++ b/OpenRA.Mods.RA/Buildings/CustomBuildTimeValue.cs @@ -16,8 +16,25 @@ namespace OpenRA.Mods.RA.Buildings public class CustomBuildTimeValueInfo : TraitInfo { - public readonly int Value = 0; //in milisecons + public readonly int Value = 0; } public class CustomBuildTimeValue { } + + public static class CustomBuildTimeValueExts + { + public static int GetBuildTime(this ActorInfo a) + { + var csv = a.Traits.GetOrDefault(); + if (csv != null) + return csv.Value; + + var cost = a.Traits.Contains() ? a.Traits.Get().Cost : 0; + var time = cost + * (25 * 60) /* frames per min */ + / 1000; + return + time; + } + } } diff --git a/OpenRA.Mods.RA/Player/ClassicProductionQueue.cs b/OpenRA.Mods.RA/Player/ClassicProductionQueue.cs index bdb2b353e6..f535020bea 100755 --- a/OpenRA.Mods.RA/Player/ClassicProductionQueue.cs +++ b/OpenRA.Mods.RA/Player/ClassicProductionQueue.cs @@ -87,8 +87,8 @@ namespace OpenRA.Mods.RA if (unit == null || ! unit.Traits.Contains()) return 0; - if (self.World.LobbyInfo.GlobalSettings.AllowCheats && self.Owner.PlayerActor.Trait().FastBuild) return 0; - var cost = unit.Traits.Contains() ? unit.Traits.Get().Cost : 0; + if (self.World.LobbyInfo.GlobalSettings.AllowCheats && self.Owner.PlayerActor.Trait().FastBuild) + return 0; var selfsameBuildings = self.World.ActorsWithTrait() .Where(p => p.Trait.Info.Produces.Contains(unit.Traits.Get().Queue)) @@ -99,11 +99,8 @@ namespace OpenRA.Mods.RA var speedUp = 1 - (selfsameQueue.SpeedUp * (selfsameBuildings.Count() - 1)).Clamp(0, selfsameQueue.MaxSpeedUp); - var time = cost - * Info.BuildSpeed - * (25 * 60) /* frames per min */ - * speedUp - / 1000; + var time = unit.GetBuildTime() * Info.BuildSpeed * speedUp; + return (int) time; } diff --git a/OpenRA.Mods.RA/Player/ProductionQueue.cs b/OpenRA.Mods.RA/Player/ProductionQueue.cs index d682510dc5..93ac9835db 100755 --- a/OpenRA.Mods.RA/Player/ProductionQueue.cs +++ b/OpenRA.Mods.RA/Player/ProductionQueue.cs @@ -259,15 +259,10 @@ namespace OpenRA.Mods.RA if (unit == null || ! unit.Traits.Contains()) return 0; - if (self.World.LobbyInfo.GlobalSettings.AllowCheats && self.Owner.PlayerActor.Trait().FastBuild) return 0; - var cost = unit.Traits.Contains() ? unit.Traits.Get().Cost : 0; - var time = cost - * Info.BuildSpeed - * (25 * 60) /* frames per min */ - / 1000; + if (self.World.LobbyInfo.GlobalSettings.AllowCheats && self.Owner.PlayerActor.Trait().FastBuild) + return 0; - if (unit.Traits.Contains()) - time = unit.Traits.Get().Value * (1 / Info.BuildSpeed); + var time = unit.GetBuildTime() * Info.BuildSpeed; return (int) time; } diff --git a/mods/cnc-classic/rules/structures.yaml b/mods/cnc-classic/rules/structures.yaml index 7cfc8da439..d9f61ceafd 100644 --- a/mods/cnc-classic/rules/structures.yaml +++ b/mods/cnc-classic/rules/structures.yaml @@ -59,7 +59,7 @@ PROC: Tooltip: Name: Tiberium Refinery Icon: procicnh - Description: Processes raw Tiberium into useable resources + Description: Processes raw Tiberium to sell it for cash. Buildable: BuildPaletteOrder: 20 Prerequisites: anypower @@ -89,7 +89,7 @@ PROC: CustomSellValue: Value: 600 CustomBuildTimeValue: - Value: 80 + Value: 900 FreeActor: Actor: HARV InitialActivity: FindResources