diff --git a/OpenRA.Mods.RA/InfiltrateForCash.cs b/OpenRA.Mods.RA/InfiltrateForCash.cs new file mode 100644 index 0000000000..5ec0ae9cff --- /dev/null +++ b/OpenRA.Mods.RA/InfiltrateForCash.cs @@ -0,0 +1,48 @@ +#region Copyright & License Information +/* + * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see COPYING. + */ +#endregion + +using System; +using System.Linq; +using OpenRA.Traits; +using OpenRA.FileFormats; + +namespace OpenRA.Mods.RA +{ + class InfiltrateForCashInfo : ITraitInfo + { + public readonly int Percentage = 50; + public readonly int Minimum = 500; + public readonly string SoundToVictim = "credit1.aud"; + + public object Create(ActorInitializer init) { return new InfiltrateForCash(this); } + } + + class InfiltrateForCash : IAcceptSpy + { + InfiltrateForCashInfo info; + + public InfiltrateForCash(InfiltrateForCashInfo info) { this.info = info; } + + public void OnInfiltrate(Actor self, Actor spy) + { + var targetResources = self.Owner.PlayerActor.Trait(); + var spyResources = spy.Owner.PlayerActor.Trait(); + + var toTake = (targetResources.Cash + targetResources.Ore) * info.Percentage / 100; + var toGive = Math.Max(toTake, info.Minimum); + + targetResources.TakeCash(toTake); + spyResources.GiveCash(toGive); + + Sound.PlayToPlayer(self.Owner, info.SoundToVictim); + } + } +} + diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 98ed145ae1..6dba681598 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -359,6 +359,7 @@ + diff --git a/mods/ra/rules/structures.yaml b/mods/ra/rules/structures.yaml index b8d48c9acd..60b84f8e67 100644 --- a/mods/ra/rules/structures.yaml +++ b/mods/ra/rules/structures.yaml @@ -669,6 +669,10 @@ PROC: InitialActivity: FindResources SpawnOffset: 1,2 Facing: 64 + InfiltrateForCash: + Percentage: 50 + Minimum: 500 + SoundToVictim: credit1.aud SILO: Inherits: ^Building