diff --git a/OpenRA.Mods.Common/Traits/Player/ClassicProductionQueue.cs b/OpenRA.Mods.Common/Traits/Player/ClassicProductionQueue.cs index 718f34caf3..7b181633a1 100644 --- a/OpenRA.Mods.Common/Traits/Player/ClassicProductionQueue.cs +++ b/OpenRA.Mods.Common/Traits/Player/ClassicProductionQueue.cs @@ -122,7 +122,7 @@ namespace OpenRA.Mods.Common.Traits return GetBuildTime(self.World.Map.Rules.Actors[unitString]); } - public override int GetBuildTime(ActorInfo unit) + public override int GetBuildTime(ActorInfo unit, BuildableInfo bi = null) { if (self.World.AllowDevCommands && self.Owner.PlayerActor.Trait().FastBuild) return 0; @@ -131,7 +131,7 @@ namespace OpenRA.Mods.Common.Traits if (info.SpeedUp) { - var type = unit.TraitInfo().BuildAtProductionType ?? info.Type; + var type = (bi ?? unit.TraitInfo()).BuildAtProductionType ?? info.Type; var selfsameProductionsCount = self.World.ActorsWithTrait() .Count(p => p.Actor.Owner == self.Owner && p.Trait.Info.Produces.Contains(type)); diff --git a/OpenRA.Mods.Common/Traits/Player/ProductionQueue.cs b/OpenRA.Mods.Common/Traits/Player/ProductionQueue.cs index fd0ccbc421..5f09e283d5 100644 --- a/OpenRA.Mods.Common/Traits/Player/ProductionQueue.cs +++ b/OpenRA.Mods.Common/Traits/Player/ProductionQueue.cs @@ -275,7 +275,7 @@ namespace OpenRA.Mods.Common.Traits var valued = unit.TraitInfoOrDefault(); var cost = valued != null ? valued.Cost : 0; - var time = GetBuildTime(unit); + var time = GetBuildTime(unit, bi); var amountToBuild = Math.Min(fromLimit, order.ExtraData); for (var n = 0; n < amountToBuild; n++) { @@ -313,7 +313,7 @@ namespace OpenRA.Mods.Common.Traits return GetBuildTime(self.World.Map.Rules.Actors[unitString]); } - public virtual int GetBuildTime(ActorInfo unit) + public virtual int GetBuildTime(ActorInfo unit, BuildableInfo bi = null) { if (self.World.AllowDevCommands && self.Owner.PlayerActor.Trait().FastBuild) return 0; diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ProductionTooltipLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ProductionTooltipLogic.cs index 545c63ea14..95153af7fc 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ProductionTooltipLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ProductionTooltipLogic.cs @@ -81,7 +81,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic powerIcon.IsVisible = () => power != 0; var lowpower = pm.PowerState != PowerState.Normal; - var time = palette.CurrentQueue == null ? 0 : palette.CurrentQueue.GetBuildTime(actor) + var time = palette.CurrentQueue == null ? 0 : palette.CurrentQueue.GetBuildTime(actor, buildable) * (lowpower ? palette.CurrentQueue.Info.LowPowerSlowdown : 1); var timeString = WidgetUtils.FormatTime(time, world.Timestep); timeLabel.GetText = () => timeString;