diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs
index db845b31c3..69a6b4cc3f 100644
--- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs
+++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs
@@ -627,6 +627,22 @@ namespace OpenRA.Mods.Common.UtilityCommands
node.Key = "KillsSelf";
node.Value.Nodes.Add(new MiniYamlNode("RemoveInstead", new MiniYaml("true")));
}
+
+ if (depth == 1 && node.Key.StartsWith("UnitUpgradeCrateAction"))
+ {
+ var parts = node.Key.Split('@');
+ node.Key = "GrantUpgradeCrateAction";
+ if (parts.Length > 1)
+ node.Key += "@" + parts[1];
+ }
+
+ if (depth == 1 && node.Key.StartsWith("-UnitUpgradeCrateAction"))
+ {
+ var parts = node.Key.Split('@');
+ node.Key = "-GrantUpgradeCrateAction";
+ if (parts.Length > 1)
+ node.Key += "@" + parts[1];
+ }
}
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
diff --git a/OpenRA.Mods.RA/Crates/UnitUpgradeCrateAction.cs b/OpenRA.Mods.RA/Crates/GrantUpgradeCrateAction.cs
similarity index 88%
rename from OpenRA.Mods.RA/Crates/UnitUpgradeCrateAction.cs
rename to OpenRA.Mods.RA/Crates/GrantUpgradeCrateAction.cs
index 47228af0ea..6a9e7be7dc 100644
--- a/OpenRA.Mods.RA/Crates/UnitUpgradeCrateAction.cs
+++ b/OpenRA.Mods.RA/Crates/GrantUpgradeCrateAction.cs
@@ -14,7 +14,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA.Crates
{
[Desc("Grants an upgrade to the collector.")]
- public class UnitUpgradeCrateActionInfo : CrateActionInfo
+ public class GrantUpgradeCrateActionInfo : CrateActionInfo
{
[Desc("The upgrades to apply.")]
public readonly string[] Upgrades = { };
@@ -28,15 +28,15 @@ namespace OpenRA.Mods.RA.Crates
[Desc("The maximum number of extra collectors to grant the crate action to.", "-1 = no limit")]
public readonly int MaxExtraCollectors = 4;
- public override object Create(ActorInitializer init) { return new UnitUpgradeCrateAction(init.self, this); }
+ public override object Create(ActorInitializer init) { return new GrantUpgradeCrateAction(init.self, this); }
}
- public class UnitUpgradeCrateAction : CrateAction
+ public class GrantUpgradeCrateAction : CrateAction
{
readonly Actor self;
- readonly UnitUpgradeCrateActionInfo info;
+ readonly GrantUpgradeCrateActionInfo info;
- public UnitUpgradeCrateAction(Actor self, UnitUpgradeCrateActionInfo info)
+ public GrantUpgradeCrateAction(Actor self, GrantUpgradeCrateActionInfo info)
: base(self, info)
{
this.self = self;
diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
index cf8c78884a..6161f5ef86 100644
--- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
+++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
@@ -127,7 +127,6 @@
-
@@ -568,6 +567,7 @@
+
diff --git a/mods/cnc/maps/gdi04a/map.yaml b/mods/cnc/maps/gdi04a/map.yaml
index 29f30066c1..78413c9b44 100644
--- a/mods/cnc/maps/gdi04a/map.yaml
+++ b/mods/cnc/maps/gdi04a/map.yaml
@@ -568,7 +568,7 @@ Rules:
-GiveMcvCrateAction:
-GiveCashCrateAction:
-ExplodeCrateAction@fire:
- -UnitUpgradeCrateAction@cloak:
+ -GrantUpgradeCrateAction@cloak:
ScriptTriggers:
Sequences:
diff --git a/mods/cnc/maps/gdi04b/map.yaml b/mods/cnc/maps/gdi04b/map.yaml
index 89b76c6ea6..1221868408 100644
--- a/mods/cnc/maps/gdi04b/map.yaml
+++ b/mods/cnc/maps/gdi04b/map.yaml
@@ -650,7 +650,7 @@ Rules:
-GiveMcvCrateAction:
-GiveCashCrateAction:
-ExplodeCrateAction@fire:
- -UnitUpgradeCrateAction@cloak:
+ -GrantUpgradeCrateAction@cloak:
Sequences:
diff --git a/mods/cnc/maps/the-hot-box/map.yaml b/mods/cnc/maps/the-hot-box/map.yaml
index dc896e5f10..0953efc9e6 100644
--- a/mods/cnc/maps/the-hot-box/map.yaml
+++ b/mods/cnc/maps/the-hot-box/map.yaml
@@ -211,7 +211,7 @@ Rules:
-GiveMcvCrateAction:
-RevealMapCrateAction:
-HideMapCrateAction:
- -UnitUpgradeCrateAction@cloak:
+ -GrantUpgradeCrateAction@cloak:
-ExplodeCrateAction@nuke:
-ExplodeCrateAction@boom:
-ExplodeCrateAction@fire:
diff --git a/mods/cnc/rules/misc.yaml b/mods/cnc/rules/misc.yaml
index f432decebe..decde903ac 100644
--- a/mods/cnc/rules/misc.yaml
+++ b/mods/cnc/rules/misc.yaml
@@ -14,7 +14,7 @@ CRATE:
ExplodeCrateAction@fire:
Weapon: Napalm.Crate
SelectionShares: 5
- UnitUpgradeCrateAction@cloak:
+ GrantUpgradeCrateAction@cloak:
SelectionShares: 5
Effect: cloak
Upgrades: cloak
diff --git a/mods/ra/rules/misc.yaml b/mods/ra/rules/misc.yaml
index 2dd34bf0fe..08bbc5973b 100644
--- a/mods/ra/rules/misc.yaml
+++ b/mods/ra/rules/misc.yaml
@@ -147,7 +147,7 @@ CRATE:
Units: e1,e1,e4,e4,e3,e3,e3
ValidRaces: soviet
TimeDelay: 4500
- UnitUpgradeCrateAction@invuln:
+ GrantUpgradeCrateAction@invuln:
SelectionShares: 5
Effect: invuln
Notification: ironcur9.aud