Shock troopers and tesla tanks standing near a tesla coil will charge it up, enhancing its range, modifying the zap animation and allowing it to work even when player's power is down. The sound for charger weapons edited from https://www.freesound.org/people/JoelAudio/sounds/136542/
42 lines
1.1 KiB
C#
42 lines
1.1 KiB
C#
#region Copyright & License Information
|
|
/*
|
|
* Copyright 2007-2015 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 OpenRA.Traits;
|
|
|
|
namespace OpenRA.Mods.Common.Traits
|
|
{
|
|
[Desc("Needs power to operate.")]
|
|
class RequiresPowerInfo : UpgradableTraitInfo, ITraitInfo
|
|
{
|
|
public override object Create(ActorInitializer init) { return new RequiresPower(init.Self, this); }
|
|
}
|
|
|
|
class RequiresPower : UpgradableTrait<RequiresPowerInfo>, IDisable, INotifyOwnerChanged
|
|
{
|
|
PowerManager playerPower;
|
|
|
|
public RequiresPower(Actor self, RequiresPowerInfo info)
|
|
: base(info)
|
|
{
|
|
playerPower = self.Owner.PlayerActor.Trait<PowerManager>();
|
|
}
|
|
|
|
public bool Disabled
|
|
{
|
|
get { return playerPower.PowerProvided < playerPower.PowerDrained && !IsTraitDisabled; }
|
|
}
|
|
|
|
public void OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
|
{
|
|
playerPower = newOwner.PlayerActor.Trait<PowerManager>();
|
|
}
|
|
}
|
|
}
|