Add capture bonus to OILB
This commit is contained in:
@@ -14,7 +14,7 @@ using OpenRA.FileFormats;
|
|||||||
|
|
||||||
namespace OpenRA.Mods.RA
|
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
|
class CashTricklerInfo : ITraitInfo
|
||||||
{
|
{
|
||||||
[Desc("Amount of money to give each time.")]
|
[Desc("Amount of money to give each time.")]
|
||||||
@@ -27,11 +27,13 @@ namespace OpenRA.Mods.RA
|
|||||||
public readonly int TickLifetime = 30;
|
public readonly int TickLifetime = 30;
|
||||||
[Desc("Pixels/tick upward movement of the cash tick indicator.")]
|
[Desc("Pixels/tick upward movement of the cash tick indicator.")]
|
||||||
public readonly int TickVelocity = 1;
|
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); }
|
public object Create (ActorInitializer init) { return new CashTrickler(this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
class CashTrickler : ITick, ISync
|
class CashTrickler : ITick, ISync, INotifyCapture
|
||||||
{
|
{
|
||||||
[Sync] int ticks;
|
[Sync] int ticks;
|
||||||
CashTricklerInfo Info;
|
CashTricklerInfo Info;
|
||||||
@@ -44,11 +46,25 @@ namespace OpenRA.Mods.RA
|
|||||||
{
|
{
|
||||||
if (--ticks < 0)
|
if (--ticks < 0)
|
||||||
{
|
{
|
||||||
self.Owner.PlayerActor.Trait<PlayerResources>().GiveCash(Info.Amount);
|
|
||||||
ticks = Info.Period;
|
ticks = Info.Period;
|
||||||
|
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)
|
if (Info.ShowTicks)
|
||||||
self.World.AddFrameEndTask(w => w.Add(new CashTick(Info.Amount, Info.TickLifetime, Info.TickVelocity, self.CenterLocation, self.Owner.Color.RGB)));
|
self.World.AddFrameEndTask(w => w.Add(new CashTick(amount, Info.TickLifetime, Info.TickVelocity, self.CenterLocation, self.Owner.Color.RGB)));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -311,6 +311,7 @@ OILB:
|
|||||||
CashTrickler:
|
CashTrickler:
|
||||||
Period: 250
|
Period: 250
|
||||||
Amount: 100
|
Amount: 100
|
||||||
|
CaptureAmount: 500
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Oil Derrick
|
Name: Oil Derrick
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user