diff --git a/OpenRA.Mods.Common/Traits/CashTrickler.cs b/OpenRA.Mods.Common/Traits/CashTrickler.cs index 741bbbc000..3be8872a76 100644 --- a/OpenRA.Mods.Common/Traits/CashTrickler.cs +++ b/OpenRA.Mods.Common/Traits/CashTrickler.cs @@ -18,12 +18,17 @@ namespace OpenRA.Mods.Common.Traits class CashTricklerInfo : ConditionalTraitInfo { [Desc("Number of ticks to wait between giving money.")] - public readonly int Period = 50; + public readonly int Interval = 50; + [Desc("Amount of money to give each time.")] public readonly int Amount = 15; - [Desc("Whether to show the cash tick indicators (+$15 rising from actor).")] + + [Desc("Whether to show the cash tick indicators rising from the actor.")] public readonly bool ShowTicks = true; + [Desc("How long to show the cash tick indicator when enabled.")] + public readonly int DisplayDuration = 30; + public override object Create(ActorInitializer init) { return new CashTrickler(this); } } @@ -31,29 +36,32 @@ namespace OpenRA.Mods.Common.Traits { readonly CashTricklerInfo info; [Sync] int ticks; + public CashTrickler(CashTricklerInfo info) : base(info) { this.info = info; } - public void Tick(Actor self) + void ITick.Tick(Actor self) { if (IsTraitDisabled) return; if (--ticks < 0) { - ticks = info.Period; + ticks = info.Interval; self.Owner.PlayerActor.Trait().GiveCash(info.Amount); - MaybeAddCashTick(self, info.Amount); + + if (info.ShowTicks) + AddCashTick(self, info.Amount); } } - void MaybeAddCashTick(Actor self, int amount) + void AddCashTick(Actor self, int amount) { - if (info.ShowTicks) - self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, self.Owner.Color.RGB, FloatingText.FormatCashTick(amount), 30))); + self.World.AddFrameEndTask(w => w.Add( + new FloatingText(self.CenterPosition, self.Owner.Color.RGB, FloatingText.FormatCashTick(amount), info.DisplayDuration))); } } } diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs index 0f6a1dff81..b97b4cd553 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs @@ -740,6 +740,10 @@ namespace OpenRA.Mods.Common.UtilityCommands node.Value.Nodes.Add(gcoc); RenameNodeKey(capture, "Amount"); } + + var period = trickler.Value.Nodes.FirstOrDefault(n => n.Key == "Period"); + if (period != null) + period.Key = "Interval"; } } diff --git a/mods/ra/maps/bomber-john/rules.yaml b/mods/ra/maps/bomber-john/rules.yaml index 2d92b36338..e4fd0104ac 100644 --- a/mods/ra/maps/bomber-john/rules.yaml +++ b/mods/ra/maps/bomber-john/rules.yaml @@ -91,7 +91,7 @@ MNLYR: Offset: 0,0 Facing: 96 CashTrickler: - Period: 150 + Interval: 150 Amount: 20 RenderSprites: Image: MNLY @@ -108,7 +108,7 @@ FTUR: MustBeDestroyed: RequiredForShortGame: true CashTrickler: - Period: 150 + Interval: 150 Amount: 30 ChronoshiftPower: Icon: chrono diff --git a/mods/ra/maps/fort-lonestar/rules.yaml b/mods/ra/maps/fort-lonestar/rules.yaml index 2c2183987f..7a6eb009b9 100644 --- a/mods/ra/maps/fort-lonestar/rules.yaml +++ b/mods/ra/maps/fort-lonestar/rules.yaml @@ -117,7 +117,7 @@ OILB: RevealsShroud: Range: 3c0 CashTrickler: - Period: 250 + Interval: 250 Amount: 50 MOBILETENT: diff --git a/mods/ra/rules/civilian.yaml b/mods/ra/rules/civilian.yaml index 92b5a43b0e..22c3ae0d59 100644 --- a/mods/ra/rules/civilian.yaml +++ b/mods/ra/rules/civilian.yaml @@ -364,7 +364,7 @@ OILB: ExternalCapturableBar: EngineerRepairable: CashTrickler: - Period: 375 + Interval: 375 Amount: 100 Tooltip: Name: Oil Derrick