diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
index 2c89600621..1d05253fa4 100644
--- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
+++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
@@ -333,7 +333,6 @@
-
@@ -499,6 +498,7 @@
+
diff --git a/OpenRA.Mods.Common/Traits/GrantConditionOnPrerequisite.cs b/OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnPrerequisite.cs
similarity index 88%
rename from OpenRA.Mods.Common/Traits/GrantConditionOnPrerequisite.cs
rename to OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnPrerequisite.cs
index 6cff1f85c9..6f1394b25e 100644
--- a/OpenRA.Mods.Common/Traits/GrantConditionOnPrerequisite.cs
+++ b/OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnPrerequisite.cs
@@ -29,15 +29,14 @@ namespace OpenRA.Mods.Common.Traits
public object Create(ActorInitializer init) { return new GrantConditionOnPrerequisite(init.Self, this); }
}
- public class GrantConditionOnPrerequisite : INotifyCreated, INotifyAddedToWorld, INotifyRemovedFromWorld
+ public class GrantConditionOnPrerequisite : INotifyCreated, INotifyAddedToWorld, INotifyRemovedFromWorld, INotifyOwnerChanged
{
readonly GrantConditionOnPrerequisiteInfo info;
- readonly GrantConditionOnPrerequisiteManager globalManager;
-
- ConditionManager conditionManager;
- int conditionToken = ConditionManager.InvalidConditionToken;
bool wasAvailable;
+ ConditionManager conditionManager;
+ GrantConditionOnPrerequisiteManager globalManager;
+ int conditionToken = ConditionManager.InvalidConditionToken;
public GrantConditionOnPrerequisite(Actor self, GrantConditionOnPrerequisiteInfo info)
{
@@ -62,6 +61,11 @@ namespace OpenRA.Mods.Common.Traits
globalManager.Unregister(self, this, info.Prerequisites);
}
+ void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
+ {
+ globalManager = newOwner.PlayerActor.Trait();
+ }
+
public void PrerequisitesUpdated(Actor self, bool available)
{
if (available == wasAvailable || conditionManager == null)