diff --git a/OpenRA.Mods.Cnc/Traits/SupportPowers/IonCannonPower.cs b/OpenRA.Mods.Cnc/Traits/SupportPowers/IonCannonPower.cs
index fa8606f45a..7d0c42a258 100644
--- a/OpenRA.Mods.Cnc/Traits/SupportPowers/IonCannonPower.cs
+++ b/OpenRA.Mods.Cnc/Traits/SupportPowers/IonCannonPower.cs
@@ -10,7 +10,7 @@
using OpenRA.Mods.Cnc.Effects;
using OpenRA.Mods.Common.Activities;
-using OpenRA.Mods.RA.Traits;
+using OpenRA.Mods.Common.Traits;
using OpenRA.Primitives;
using OpenRA.Traits;
diff --git a/OpenRA.Mods.RA/Activities/Demolish.cs b/OpenRA.Mods.Common/Activities/Demolish.cs
similarity index 95%
rename from OpenRA.Mods.RA/Activities/Demolish.cs
rename to OpenRA.Mods.Common/Activities/Demolish.cs
index 0f9d0ad43c..1ce0282d2a 100644
--- a/OpenRA.Mods.RA/Activities/Demolish.cs
+++ b/OpenRA.Mods.Common/Activities/Demolish.cs
@@ -11,12 +11,10 @@
using System.Collections.Generic;
using System.Linq;
using OpenRA.Effects;
-using OpenRA.Mods.Common.Activities;
using OpenRA.Mods.Common.Traits;
-using OpenRA.Mods.RA.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Activities
+namespace OpenRA.Mods.Common.Activities
{
class Demolish : Enter
{
diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
index e8858e3933..3414364aad 100644
--- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
+++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
@@ -73,6 +73,7 @@
+
@@ -204,6 +205,7 @@
+
@@ -211,6 +213,7 @@
+
@@ -233,6 +236,7 @@
+
@@ -288,6 +292,7 @@
+
@@ -325,12 +330,22 @@
+
+
+
+
+
+
+
+
+
+
@@ -377,6 +392,7 @@
+
@@ -396,13 +412,18 @@
+
+
+
+
+
diff --git a/OpenRA.Mods.RA/C4Demolition.cs b/OpenRA.Mods.Common/Traits/C4Demolition.cs
similarity index 97%
rename from OpenRA.Mods.RA/C4Demolition.cs
rename to OpenRA.Mods.Common/Traits/C4Demolition.cs
index 7d631676e1..e0cc121c40 100644
--- a/OpenRA.Mods.RA/C4Demolition.cs
+++ b/OpenRA.Mods.Common/Traits/C4Demolition.cs
@@ -11,12 +11,11 @@
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
-using OpenRA.Mods.Common;
+using OpenRA.Mods.Common.Activities;
using OpenRA.Mods.Common.Orders;
-using OpenRA.Mods.RA.Activities;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
class C4DemolitionInfo : ITraitInfo
{
diff --git a/OpenRA.Mods.RA/EmitInfantryOnSell.cs b/OpenRA.Mods.Common/Traits/EmitInfantryOnSell.cs
similarity index 96%
rename from OpenRA.Mods.RA/EmitInfantryOnSell.cs
rename to OpenRA.Mods.Common/Traits/EmitInfantryOnSell.cs
index d28cf7b071..a64be601ee 100644
--- a/OpenRA.Mods.RA/EmitInfantryOnSell.cs
+++ b/OpenRA.Mods.Common/Traits/EmitInfantryOnSell.cs
@@ -9,11 +9,10 @@
#endregion
using System.Linq;
-using OpenRA.Mods.Common.Traits;
using OpenRA.Primitives;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Spawn new actors when sold.")]
class EmitInfantryOnSellInfo : TraitInfo
diff --git a/OpenRA.Mods.RA/Invulnerable.cs b/OpenRA.Mods.Common/Traits/Invulnerable.cs
similarity index 94%
rename from OpenRA.Mods.RA/Invulnerable.cs
rename to OpenRA.Mods.Common/Traits/Invulnerable.cs
index 28add78a15..8962b96fe7 100644
--- a/OpenRA.Mods.RA/Invulnerable.cs
+++ b/OpenRA.Mods.Common/Traits/Invulnerable.cs
@@ -11,7 +11,7 @@
using OpenRA.GameRules;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.Common.Traits
{
[Desc("This unit cannot be damaged.")]
class InvulnerableInfo : TraitInfo { }
diff --git a/OpenRA.Mods.RA/SupportPowers/SupportPowerChargeBar.cs b/OpenRA.Mods.Common/Traits/Render/SupportPowerChargeBar.cs
similarity index 97%
rename from OpenRA.Mods.RA/SupportPowers/SupportPowerChargeBar.cs
rename to OpenRA.Mods.Common/Traits/Render/SupportPowerChargeBar.cs
index 20dbdbe1c8..9ef7495053 100644
--- a/OpenRA.Mods.RA/SupportPowers/SupportPowerChargeBar.cs
+++ b/OpenRA.Mods.Common/Traits/Render/SupportPowerChargeBar.cs
@@ -12,7 +12,7 @@ using System.Drawing;
using System.Linq;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Display the time remaining until the super weapon attached to the actor is ready to the player and his allies.")]
class SupportPowerChargeBarInfo : ITraitInfo
diff --git a/OpenRA.Mods.RA/SupportPowers/AirstrikePower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/AirstrikePower.cs
similarity index 97%
rename from OpenRA.Mods.RA/SupportPowers/AirstrikePower.cs
rename to OpenRA.Mods.Common/Traits/SupportPowers/AirstrikePower.cs
index 37fb741927..69c6af5492 100644
--- a/OpenRA.Mods.RA/SupportPowers/AirstrikePower.cs
+++ b/OpenRA.Mods.Common/Traits/SupportPowers/AirstrikePower.cs
@@ -14,13 +14,12 @@ using System.Linq;
using OpenRA.Mods.Common.Activities;
using OpenRA.Mods.Common.Effects;
using OpenRA.Mods.Common.Traits;
-using OpenRA.Mods.RA.Activities;
using OpenRA.Primitives;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
- class AirstrikePowerInfo : SupportPowerInfo
+ public class AirstrikePowerInfo : SupportPowerInfo
{
[ActorReference]
public readonly string UnitType = "badr.bomber";
@@ -43,7 +42,7 @@ namespace OpenRA.Mods.RA.Traits
public override object Create(ActorInitializer init) { return new AirstrikePower(init.Self, this); }
}
- class AirstrikePower : SupportPower
+ public class AirstrikePower : SupportPower
{
public AirstrikePower(Actor self, AirstrikePowerInfo info)
: base(self, info) { }
diff --git a/OpenRA.Mods.RA/SupportPowers/GrantUpgradePower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/GrantUpgradePower.cs
similarity index 98%
rename from OpenRA.Mods.RA/SupportPowers/GrantUpgradePower.cs
rename to OpenRA.Mods.Common/Traits/SupportPowers/GrantUpgradePower.cs
index 260eae151d..71eeb15d39 100644
--- a/OpenRA.Mods.RA/SupportPowers/GrantUpgradePower.cs
+++ b/OpenRA.Mods.Common/Traits/SupportPowers/GrantUpgradePower.cs
@@ -12,10 +12,9 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.Graphics;
-using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
class GrantUpgradePowerInfo : SupportPowerInfo
{
diff --git a/OpenRA.Mods.RA/SupportPowers/NukePower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/NukePower.cs
similarity index 97%
rename from OpenRA.Mods.RA/SupportPowers/NukePower.cs
rename to OpenRA.Mods.Common/Traits/SupportPowers/NukePower.cs
index 5a67bc8c54..3efdae40cf 100644
--- a/OpenRA.Mods.RA/SupportPowers/NukePower.cs
+++ b/OpenRA.Mods.Common/Traits/SupportPowers/NukePower.cs
@@ -12,12 +12,10 @@ using System;
using OpenRA.Effects;
using OpenRA.Mods.Common.Activities;
using OpenRA.Mods.Common.Effects;
-using OpenRA.Mods.Common.Traits;
-using OpenRA.Mods.RA.Activities;
using OpenRA.Primitives;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
class NukePowerInfo : SupportPowerInfo, Requires
{
diff --git a/OpenRA.Mods.RA/SupportPowers/SpawnActorPower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/SpawnActorPower.cs
similarity index 95%
rename from OpenRA.Mods.RA/SupportPowers/SpawnActorPower.cs
rename to OpenRA.Mods.Common/Traits/SupportPowers/SpawnActorPower.cs
index 9145de2404..8a0bf90400 100644
--- a/OpenRA.Mods.RA/SupportPowers/SpawnActorPower.cs
+++ b/OpenRA.Mods.Common/Traits/SupportPowers/SpawnActorPower.cs
@@ -10,11 +10,10 @@
using OpenRA.Effects;
using OpenRA.Mods.Common.Activities;
-using OpenRA.Mods.RA.Activities;
-using OpenRA.Mods.RA.Effects;
+using OpenRA.Mods.Common.Effects;
using OpenRA.Primitives;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Spawns an actor that stays for a limited amount of time.")]
public class SpawnActorPowerInfo : SupportPowerInfo
diff --git a/OpenRA.Mods.RA/SupportPowers/SupportPower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs
old mode 100755
new mode 100644
similarity index 97%
rename from OpenRA.Mods.RA/SupportPowers/SupportPower.cs
rename to OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs
index 46a6c22e71..4505370ee7
--- a/OpenRA.Mods.RA/SupportPowers/SupportPower.cs
+++ b/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs
@@ -8,10 +8,9 @@
*/
#endregion
-using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
public abstract class SupportPowerInfo : ITraitInfo
{
diff --git a/OpenRA.Mods.RA/SupportPowers/SupportPowerManager.cs b/OpenRA.Mods.Common/Traits/SupportPowers/SupportPowerManager.cs
similarity index 99%
rename from OpenRA.Mods.RA/SupportPowers/SupportPowerManager.cs
rename to OpenRA.Mods.Common/Traits/SupportPowers/SupportPowerManager.cs
index 95acbd54a6..672f0b97ef 100644
--- a/OpenRA.Mods.RA/SupportPowers/SupportPowerManager.cs
+++ b/OpenRA.Mods.Common/Traits/SupportPowers/SupportPowerManager.cs
@@ -12,10 +12,9 @@ using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Graphics;
-using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Attach this to the player actor.")]
public class SupportPowerManagerInfo : ITraitInfo, Requires, Requires
diff --git a/OpenRA.Mods.RA/Transforms.cs b/OpenRA.Mods.Common/Traits/Transforms.cs
similarity index 93%
rename from OpenRA.Mods.RA/Transforms.cs
rename to OpenRA.Mods.Common/Traits/Transforms.cs
index d12763d3e9..f30ed50368 100644
--- a/OpenRA.Mods.RA/Transforms.cs
+++ b/OpenRA.Mods.Common/Traits/Transforms.cs
@@ -11,14 +11,12 @@
using System.Collections.Generic;
using OpenRA.Mods.Common.Activities;
using OpenRA.Mods.Common.Orders;
-using OpenRA.Mods.Common.Traits;
-using OpenRA.Mods.RA.Activities;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Actor becomes a specified actor type when this trait is triggered.")]
- class TransformsInfo : ITraitInfo
+ public class TransformsInfo : ITraitInfo
{
[ActorReference] public readonly string IntoActor = null;
public readonly CVec Offset = CVec.Zero;
@@ -29,7 +27,7 @@ namespace OpenRA.Mods.RA.Traits
public virtual object Create(ActorInitializer init) { return new Transforms(init, this); }
}
- class Transforms : IIssueOrder, IResolveOrder, IOrderVoice
+ public class Transforms : IIssueOrder, IResolveOrder, IOrderVoice
{
readonly Actor self;
readonly TransformsInfo info;
diff --git a/OpenRA.Mods.RA/DisableUpgrade.cs b/OpenRA.Mods.Common/Traits/Upgrades/DisableUpgrade.cs
similarity index 94%
rename from OpenRA.Mods.RA/DisableUpgrade.cs
rename to OpenRA.Mods.Common/Traits/Upgrades/DisableUpgrade.cs
index 4cd321e7f5..1a567ea310 100644
--- a/OpenRA.Mods.RA/DisableUpgrade.cs
+++ b/OpenRA.Mods.Common/Traits/Upgrades/DisableUpgrade.cs
@@ -11,10 +11,9 @@
using System;
using System.Collections.Generic;
using OpenRA.GameRules;
-using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.Common.Traits
{
public class DisableUpgradeInfo : UpgradableTraitInfo, ITraitInfo
{
diff --git a/OpenRA.Mods.RA/GainsStatUpgrades.cs b/OpenRA.Mods.Common/Traits/Upgrades/GainsStatUpgrades.cs
similarity index 98%
rename from OpenRA.Mods.RA/GainsStatUpgrades.cs
rename to OpenRA.Mods.Common/Traits/Upgrades/GainsStatUpgrades.cs
index 231717af87..9aec86e9bb 100644
--- a/OpenRA.Mods.RA/GainsStatUpgrades.cs
+++ b/OpenRA.Mods.Common/Traits/Upgrades/GainsStatUpgrades.cs
@@ -11,10 +11,9 @@
using System;
using System.Collections.Generic;
using OpenRA.GameRules;
-using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.Common.Traits
{
[Desc("This actor has properties that upgrade when a specific criteria is met.")]
public class GainsStatUpgradesInfo : ITraitInfo
diff --git a/OpenRA.Mods.RA/UpgradeActorsNear.cs b/OpenRA.Mods.Common/Traits/Upgrades/UpgradeActorsNear.cs
similarity index 98%
rename from OpenRA.Mods.RA/UpgradeActorsNear.cs
rename to OpenRA.Mods.Common/Traits/Upgrades/UpgradeActorsNear.cs
index 97779b9e68..468e164157 100644
--- a/OpenRA.Mods.RA/UpgradeActorsNear.cs
+++ b/OpenRA.Mods.Common/Traits/Upgrades/UpgradeActorsNear.cs
@@ -11,10 +11,9 @@
using System;
using System.Collections.Generic;
using OpenRA.GameRules;
-using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Applies an upgrade to actors within a specified range.")]
public class UpgradeActorsNearInfo : ITraitInfo
diff --git a/OpenRA.Mods.RA/Warheads/GrantUpgradeWarhead.cs b/OpenRA.Mods.Common/Warheads/GrantUpgradeWarhead.cs
similarity index 95%
rename from OpenRA.Mods.RA/Warheads/GrantUpgradeWarhead.cs
rename to OpenRA.Mods.Common/Warheads/GrantUpgradeWarhead.cs
index 883eead2de..fb8976fd95 100644
--- a/OpenRA.Mods.RA/Warheads/GrantUpgradeWarhead.cs
+++ b/OpenRA.Mods.Common/Warheads/GrantUpgradeWarhead.cs
@@ -12,11 +12,11 @@ using System.Collections.Generic;
using System.Linq;
using OpenRA.Effects;
using OpenRA.GameRules;
+using OpenRA.Mods.Common.Effects;
using OpenRA.Mods.Common.Traits;
-using OpenRA.Mods.RA.Effects;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.Common.Warheads
{
public class GrantUpgradeWarhead : Warhead
{
diff --git a/OpenRA.Mods.RA/Widgets/Logic/SupportPowerBinLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/SupportPowerBinLogic.cs
similarity index 97%
rename from OpenRA.Mods.RA/Widgets/Logic/SupportPowerBinLogic.cs
rename to OpenRA.Mods.Common/Widgets/Logic/SupportPowerBinLogic.cs
index 73e0de7435..1045b65345 100644
--- a/OpenRA.Mods.RA/Widgets/Logic/SupportPowerBinLogic.cs
+++ b/OpenRA.Mods.Common/Widgets/Logic/SupportPowerBinLogic.cs
@@ -11,7 +11,7 @@
using System;
using OpenRA.Widgets;
-namespace OpenRA.Mods.RA.Widgets.Logic
+namespace OpenRA.Mods.Common.Widgets.Logic
{
public class SupportPowerBinLogic
{
diff --git a/OpenRA.Mods.RA/Widgets/Logic/SupportPowerTooltipLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/SupportPowerTooltipLogic.cs
similarity index 96%
rename from OpenRA.Mods.RA/Widgets/Logic/SupportPowerTooltipLogic.cs
rename to OpenRA.Mods.Common/Widgets/Logic/SupportPowerTooltipLogic.cs
index 8fc9e0bca0..129168ea64 100644
--- a/OpenRA.Mods.RA/Widgets/Logic/SupportPowerTooltipLogic.cs
+++ b/OpenRA.Mods.Common/Widgets/Logic/SupportPowerTooltipLogic.cs
@@ -9,10 +9,10 @@
#endregion
using System;
-using OpenRA.Mods.RA.Traits;
+using OpenRA.Mods.Common.Traits;
using OpenRA.Widgets;
-namespace OpenRA.Mods.RA.Widgets.Logic
+namespace OpenRA.Mods.Common.Widgets.Logic
{
public class SupportPowerTooltipLogic
{
diff --git a/OpenRA.Mods.RA/Widgets/ObserverSupportPowerIconsWidget.cs b/OpenRA.Mods.Common/Widgets/ObserverSupportPowerIconsWidget.cs
similarity index 97%
rename from OpenRA.Mods.RA/Widgets/ObserverSupportPowerIconsWidget.cs
rename to OpenRA.Mods.Common/Widgets/ObserverSupportPowerIconsWidget.cs
index f6fd129640..83d1720e29 100644
--- a/OpenRA.Mods.RA/Widgets/ObserverSupportPowerIconsWidget.cs
+++ b/OpenRA.Mods.Common/Widgets/ObserverSupportPowerIconsWidget.cs
@@ -13,10 +13,10 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.Graphics;
-using OpenRA.Mods.RA.Traits;
+using OpenRA.Mods.Common.Traits;
using OpenRA.Widgets;
-namespace OpenRA.Mods.RA.Widgets
+namespace OpenRA.Mods.Common.Widgets
{
public class ObserverSupportPowerIconsWidget : Widget
{
diff --git a/OpenRA.Mods.RA/Widgets/SupportPowerTimerWidget.cs b/OpenRA.Mods.Common/Widgets/SupportPowerTimerWidget.cs
similarity index 96%
rename from OpenRA.Mods.RA/Widgets/SupportPowerTimerWidget.cs
rename to OpenRA.Mods.Common/Widgets/SupportPowerTimerWidget.cs
index 5cb9bb9643..e53fb129d1 100644
--- a/OpenRA.Mods.RA/Widgets/SupportPowerTimerWidget.cs
+++ b/OpenRA.Mods.Common/Widgets/SupportPowerTimerWidget.cs
@@ -11,11 +11,11 @@
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
-using OpenRA.Mods.RA.Traits;
+using OpenRA.Mods.Common.Traits;
using OpenRA.Primitives;
using OpenRA.Widgets;
-namespace OpenRA.Mods.RA.Widgets
+namespace OpenRA.Mods.Common.Widgets
{
public class SupportPowerTimerWidget : Widget
{
diff --git a/OpenRA.Mods.RA/Widgets/SupportPowersWidget.cs b/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs
similarity index 98%
rename from OpenRA.Mods.RA/Widgets/SupportPowersWidget.cs
rename to OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs
index 93afaf307d..bd174a98e9 100644
--- a/OpenRA.Mods.RA/Widgets/SupportPowersWidget.cs
+++ b/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs
@@ -13,10 +13,10 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.Graphics;
-using OpenRA.Mods.RA.Traits;
+using OpenRA.Mods.Common.Traits;
using OpenRA.Widgets;
-namespace OpenRA.Mods.RA.Widgets
+namespace OpenRA.Mods.Common.Widgets
{
public class SupportPowersWidget : Widget
{
diff --git a/OpenRA.Mods.D2k/Widgets/SupportPowerBinWidget.cs b/OpenRA.Mods.D2k/Widgets/SupportPowerBinWidget.cs
index 537f2ffee6..d94454db27 100644
--- a/OpenRA.Mods.D2k/Widgets/SupportPowerBinWidget.cs
+++ b/OpenRA.Mods.D2k/Widgets/SupportPowerBinWidget.cs
@@ -13,7 +13,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.Graphics;
-using OpenRA.Mods.RA.Traits;
+using OpenRA.Mods.Common.Traits;
using OpenRA.Primitives;
using OpenRA.Widgets;
diff --git a/OpenRA.Mods.RA/Effects/Parachute.cs b/OpenRA.Mods.RA/Effects/Parachute.cs
index dd884dc679..d3981152f8 100644
--- a/OpenRA.Mods.RA/Effects/Parachute.cs
+++ b/OpenRA.Mods.RA/Effects/Parachute.cs
@@ -13,6 +13,7 @@ using System.Linq;
using OpenRA.Effects;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Traits;
+using OpenRA.Mods.RA.Traits;
using OpenRA.Traits;
namespace OpenRA.Mods.RA.Effects
diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
index bd692b3b31..425369810f 100644
--- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
+++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
@@ -83,7 +83,6 @@
-
@@ -97,12 +96,11 @@
-
+
-
@@ -122,8 +120,6 @@
-
-
@@ -131,7 +127,7 @@
-
+
@@ -139,16 +135,11 @@
-
+
-
-
-
-
-
@@ -156,8 +147,7 @@
-
-
+
@@ -184,8 +174,6 @@
-
-
@@ -227,32 +215,23 @@
-
+
-
-
+
-
-
-
-
-
-
-
-
-
+
diff --git a/OpenRA.Mods.RA/Scripting/Properties/AirstrikeProperties.cs b/OpenRA.Mods.RA/Scripting/Properties/AirstrikeProperties.cs
index 90b4995756..6856427619 100644
--- a/OpenRA.Mods.RA/Scripting/Properties/AirstrikeProperties.cs
+++ b/OpenRA.Mods.RA/Scripting/Properties/AirstrikeProperties.cs
@@ -10,7 +10,7 @@
using System.Linq;
using Eluant;
-using OpenRA.Mods.RA.Traits;
+using OpenRA.Mods.Common.Traits;
using OpenRA.Scripting;
using OpenRA.Traits;
diff --git a/OpenRA.Mods.RA/Scripting/Properties/TransformProperties.cs b/OpenRA.Mods.RA/Scripting/Properties/TransformProperties.cs
index 9fce1c0cce..a812024102 100644
--- a/OpenRA.Mods.RA/Scripting/Properties/TransformProperties.cs
+++ b/OpenRA.Mods.RA/Scripting/Properties/TransformProperties.cs
@@ -8,6 +8,7 @@
*/
#endregion
+using OpenRA.Mods.Common.Traits;
using OpenRA.Mods.RA.Traits;
using OpenRA.Scripting;
using OpenRA.Traits;
diff --git a/OpenRA.Mods.RA/Cloneable.cs b/OpenRA.Mods.RA/Traits/Cloneable.cs
similarity index 95%
rename from OpenRA.Mods.RA/Cloneable.cs
rename to OpenRA.Mods.RA/Traits/Cloneable.cs
index b1d9455bd0..ba3b90356f 100644
--- a/OpenRA.Mods.RA/Cloneable.cs
+++ b/OpenRA.Mods.RA/Traits/Cloneable.cs
@@ -11,7 +11,7 @@
using System;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Actors with the \"ClonesProducedUnits\" trait will produce a free duplicate of me.")]
public class CloneableInfo : TraitInfo
diff --git a/OpenRA.Mods.RA/Disguise.cs b/OpenRA.Mods.RA/Traits/Disguise.cs
similarity index 100%
rename from OpenRA.Mods.RA/Disguise.cs
rename to OpenRA.Mods.RA/Traits/Disguise.cs
diff --git a/OpenRA.Mods.RA/EjectOnDeath.cs b/OpenRA.Mods.RA/Traits/EjectOnDeath.cs
similarity index 100%
rename from OpenRA.Mods.RA/EjectOnDeath.cs
rename to OpenRA.Mods.RA/Traits/EjectOnDeath.cs
diff --git a/OpenRA.Mods.RA/InvulnerabilityUpgrade.cs b/OpenRA.Mods.RA/Traits/InvulnerabilityUpgrade.cs
similarity index 100%
rename from OpenRA.Mods.RA/InvulnerabilityUpgrade.cs
rename to OpenRA.Mods.RA/Traits/InvulnerabilityUpgrade.cs
diff --git a/OpenRA.Mods.RA/ParaDrop.cs b/OpenRA.Mods.RA/Traits/ParaDrop.cs
similarity index 98%
rename from OpenRA.Mods.RA/ParaDrop.cs
rename to OpenRA.Mods.RA/Traits/ParaDrop.cs
index 2d0b7f34cb..4a99936df5 100644
--- a/OpenRA.Mods.RA/ParaDrop.cs
+++ b/OpenRA.Mods.RA/Traits/ParaDrop.cs
@@ -13,10 +13,9 @@ using System.Collections.Generic;
using OpenRA.Mods.Common.Traits;
using OpenRA.Mods.RA.Activities;
using OpenRA.Mods.RA.Effects;
-using OpenRA.Mods.RA.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.RA.Traits
{
[Desc("This unit can spawn and eject other actors while flying.")]
public class ParaDropInfo : ITraitInfo, Requires
diff --git a/OpenRA.Mods.RA/Parachutable.cs b/OpenRA.Mods.RA/Traits/Parachutable.cs
similarity index 98%
rename from OpenRA.Mods.RA/Parachutable.cs
rename to OpenRA.Mods.RA/Traits/Parachutable.cs
index 49c93c3140..682c493f1c 100644
--- a/OpenRA.Mods.RA/Parachutable.cs
+++ b/OpenRA.Mods.RA/Traits/Parachutable.cs
@@ -10,10 +10,9 @@
using OpenRA.Mods.Common.Effects;
using OpenRA.Mods.Common.Traits;
-using OpenRA.Mods.RA.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Can be paradropped by a ParaDrop actor.")]
class ParachutableInfo : ITraitInfo
diff --git a/OpenRA.Mods.RA/Traits/SupportPowers/ChronoshiftPower.cs b/OpenRA.Mods.RA/Traits/SupportPowers/ChronoshiftPower.cs
index fbc535b34b..4baa8ea8ce 100644
--- a/OpenRA.Mods.RA/Traits/SupportPowers/ChronoshiftPower.cs
+++ b/OpenRA.Mods.RA/Traits/SupportPowers/ChronoshiftPower.cs
@@ -12,6 +12,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.Graphics;
+using OpenRA.Mods.Common.Traits;
using OpenRA.Mods.RA.Activities;
namespace OpenRA.Mods.RA.Traits
diff --git a/OpenRA.Mods.RA/Traits/SupportPowers/GpsPower.cs b/OpenRA.Mods.RA/Traits/SupportPowers/GpsPower.cs
index 94c8bcc234..8ef924c0c9 100644
--- a/OpenRA.Mods.RA/Traits/SupportPowers/GpsPower.cs
+++ b/OpenRA.Mods.RA/Traits/SupportPowers/GpsPower.cs
@@ -11,6 +11,7 @@
using System.Collections.Generic;
using System.Linq;
using OpenRA.Effects;
+using OpenRA.Mods.Common.Traits;
using OpenRA.Mods.RA.Effects;
using OpenRA.Traits;
diff --git a/OpenRA.Mods.RA/TransformOnPassenger.cs b/OpenRA.Mods.RA/Traits/TransformOnPassenger.cs
similarity index 98%
rename from OpenRA.Mods.RA/TransformOnPassenger.cs
rename to OpenRA.Mods.RA/Traits/TransformOnPassenger.cs
index 9a7381ebda..532768d0a5 100644
--- a/OpenRA.Mods.RA/TransformOnPassenger.cs
+++ b/OpenRA.Mods.RA/Traits/TransformOnPassenger.cs
@@ -13,7 +13,7 @@ using OpenRA.Mods.Common.Activities;
using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.RA.Traits
{
public class TransformOnPassengerInfo : ITraitInfo
{
diff --git a/OpenRA.Mods.RA/Widgets/Logic/ObserverStatsLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/ObserverStatsLogic.cs
index 31950b0d50..5aaefe18f9 100644
--- a/OpenRA.Mods.RA/Widgets/Logic/ObserverStatsLogic.cs
+++ b/OpenRA.Mods.RA/Widgets/Logic/ObserverStatsLogic.cs
@@ -14,6 +14,7 @@ using System.Drawing;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Traits;
+using OpenRA.Mods.Common.Widgets;
using OpenRA.Mods.RA.Traits;
using OpenRA.Network;
using OpenRA.Traits;