Add capture bonus to OILB

This commit is contained in:
Scott_NZ
2013-05-25 03:16:58 +12:00
parent 37fe6009ee
commit 81563ee5d6
2 changed files with 22 additions and 5 deletions

View File

@@ -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<PlayerResources>().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<PlayerResources>().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<PlayerResources>().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)));
}
}
}

View File

@@ -311,6 +311,7 @@ OILB:
CashTrickler:
Period: 250
Amount: 100
CaptureAmount: 500
Tooltip:
Name: Oil Derrick