diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
index 30ee595c3d..0ac18fcaaf 100644
--- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
+++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
@@ -408,6 +408,7 @@
+
diff --git a/OpenRA.Mods.RA/Scripting/Properties/PowerProperties.cs b/OpenRA.Mods.RA/Scripting/Properties/PowerProperties.cs
new file mode 100644
index 0000000000..dd1fd455df
--- /dev/null
+++ b/OpenRA.Mods.RA/Scripting/Properties/PowerProperties.cs
@@ -0,0 +1,73 @@
+#region Copyright & License Information
+/*
+ * Copyright 2007-2014 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 Eluant;
+using OpenRA.Mods.Common.Power;
+using OpenRA.Scripting;
+using OpenRA.Traits;
+
+namespace OpenRA.Mods.RA.Scripting
+{
+ [ScriptPropertyGroup("Power")]
+ public class PlayerPowerProperties : ScriptPlayerProperties, Requires
+ {
+ readonly PowerManager pm;
+
+ public PlayerPowerProperties(ScriptContext context, Player player)
+ : base(context, player)
+ {
+ pm = player.PlayerActor.Trait();
+ }
+
+ [Desc("Returns the total of the power the player has.")]
+ public int PowerProvided
+ {
+ get { return pm.PowerProvided; }
+ }
+
+ [Desc("Returns the power used by the player.")]
+ public int PowerDrained
+ {
+ get { return pm.PowerDrained; }
+ }
+
+ [Desc("Returns the player's power state " +
+ "(\"Normal\", \"Low\" or \"Critical\").")]
+ public string PowerState
+ {
+ get { return pm.PowerState.ToString(); }
+ }
+
+ [Desc("Triggers low power for the chosen amount of ticks.")]
+ public void TriggerPowerOutage(int ticks)
+ {
+ pm.TriggerPowerOutage(ticks);
+ }
+ }
+
+ [ScriptPropertyGroup("Power")]
+ public class ActorPowerProperties : ScriptActorProperties, Requires
+ {
+ readonly PowerInfo pi;
+
+ public ActorPowerProperties(ScriptContext context, Actor self)
+ : base(context, self)
+ {
+ pi = self.Info.Traits.GetOrDefault();
+ }
+
+ [Desc("Returns the power drained/provided by this actor.")]
+ public int Power
+ {
+ get { return pi.Amount; }
+ }
+ }
+}
\ No newline at end of file