From 81563ee5d6092fd571e82e520da17b2a2b419f6b Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Sat, 25 May 2013 03:16:58 +1200 Subject: [PATCH] Add capture bonus to OILB --- OpenRA.Mods.RA/CashTrickler.cs | 26 +++++++++++++++++++++----- mods/ra/rules/civilian.yaml | 1 + 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/OpenRA.Mods.RA/CashTrickler.cs b/OpenRA.Mods.RA/CashTrickler.cs index 1a230d76ab..ca4130736b 100644 --- a/OpenRA.Mods.RA/CashTrickler.cs +++ b/OpenRA.Mods.RA/CashTrickler.cs @@ -14,7 +14,7 @@ using OpenRA.FileFormats; namespace OpenRA.Mods.RA { - [Desc("Let's the object generate cash in a set periodic time.")] + [Desc("Lets the actor generate cash in a set periodic time.")] class CashTricklerInfo : ITraitInfo { [Desc("Amount of money to give each time.")] @@ -27,11 +27,13 @@ namespace OpenRA.Mods.RA public readonly int TickLifetime = 30; [Desc("Pixels/tick upward movement of the cash tick indicator.")] public readonly int TickVelocity = 1; + [Desc("Amount of money awarded for capturing the actor.")] + public readonly int CaptureAmount = 0; public object Create (ActorInitializer init) { return new CashTrickler(this); } } - class CashTrickler : ITick, ISync + class CashTrickler : ITick, ISync, INotifyCapture { [Sync] int ticks; CashTricklerInfo Info; @@ -44,11 +46,25 @@ namespace OpenRA.Mods.RA { if (--ticks < 0) { - self.Owner.PlayerActor.Trait().GiveCash(Info.Amount); ticks = Info.Period; - if (Info.ShowTicks) - self.World.AddFrameEndTask(w => w.Add(new CashTick(Info.Amount, Info.TickLifetime, Info.TickVelocity, self.CenterLocation, self.Owner.Color.RGB))); + self.Owner.PlayerActor.Trait().GiveCash(Info.Amount); + MaybeAddCashTick(self, Info.Amount); } } + + public void OnCapture(Actor self, Actor captor, Player oldOwner, Player newOwner) + { + if (Info.CaptureAmount > 0) + { + newOwner.PlayerActor.Trait().GiveCash(Info.CaptureAmount); + MaybeAddCashTick(self, Info.CaptureAmount); + } + } + + void MaybeAddCashTick(Actor self, int amount) + { + if (Info.ShowTicks) + self.World.AddFrameEndTask(w => w.Add(new CashTick(amount, Info.TickLifetime, Info.TickVelocity, self.CenterLocation, self.Owner.Color.RGB))); + } } } diff --git a/mods/ra/rules/civilian.yaml b/mods/ra/rules/civilian.yaml index 2353f99d16..08cddcdf9f 100644 --- a/mods/ra/rules/civilian.yaml +++ b/mods/ra/rules/civilian.yaml @@ -311,6 +311,7 @@ OILB: CashTrickler: Period: 250 Amount: 100 + CaptureAmount: 500 Tooltip: Name: Oil Derrick