diff --git a/OpenRA.Game/Traits/LintAttributes.cs b/OpenRA.Game/Traits/LintAttributes.cs index e65029bef7..005ad50c31 100644 --- a/OpenRA.Game/Traits/LintAttributes.cs +++ b/OpenRA.Game/Traits/LintAttributes.cs @@ -29,7 +29,7 @@ namespace OpenRA.Traits [AttributeUsage(AttributeTargets.Field)] public sealed class SequenceReferenceAttribute : Attribute { - public readonly string ImageReference; // the field name in the same trait info that contains the image name + public readonly string ImageReference; // The field name in the same trait info that contains the image name. public readonly bool Prefix; public SequenceReferenceAttribute(string imageReference = null, bool prefix = false) { @@ -37,4 +37,7 @@ namespace OpenRA.Traits Prefix = prefix; } } + + [AttributeUsage(AttributeTargets.Field)] + public sealed class UpgradeGrantedReferenceAttribute : Attribute { } } diff --git a/OpenRA.Mods.Common/Scripting/ScriptUpgradesCache.cs b/OpenRA.Mods.Common/Scripting/ScriptUpgradesCache.cs index 8ed69dfc0c..2016665991 100644 --- a/OpenRA.Mods.Common/Scripting/ScriptUpgradesCache.cs +++ b/OpenRA.Mods.Common/Scripting/ScriptUpgradesCache.cs @@ -15,6 +15,7 @@ namespace OpenRA.Mods.Common.Scripting [Desc("Allows granting upgrades to actors from Lua scripts.")] public class ScriptUpgradesCacheInfo : ITraitInfo { + [UpgradeGrantedReference] [Desc("Upgrades that can be granted from the scripts.")] public readonly string[] Upgrades = { }; diff --git a/OpenRA.Mods.Common/Traits/Crates/GrantUpgradeCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/GrantUpgradeCrateAction.cs index 3c2d20bf5f..52737ec4e1 100644 --- a/OpenRA.Mods.Common/Traits/Crates/GrantUpgradeCrateAction.cs +++ b/OpenRA.Mods.Common/Traits/Crates/GrantUpgradeCrateAction.cs @@ -9,12 +9,14 @@ #endregion using System.Linq; +using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { [Desc("Grants an upgrade to the collector.")] public class GrantUpgradeCrateActionInfo : CrateActionInfo { + [UpgradeGrantedReference] [Desc("The upgrades to apply.")] public readonly string[] Upgrades = { }; diff --git a/OpenRA.Mods.Common/Traits/GlobalUpgradable.cs b/OpenRA.Mods.Common/Traits/GlobalUpgradable.cs index f02b748503..a49b854d9b 100644 --- a/OpenRA.Mods.Common/Traits/GlobalUpgradable.cs +++ b/OpenRA.Mods.Common/Traits/GlobalUpgradable.cs @@ -16,6 +16,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Grants upgrades to the actor this is attached to when prerequisites are available.")] public class GlobalUpgradableInfo : ITraitInfo, Requires { + [UpgradeGrantedReference] [Desc("List of upgrades to apply.")] public readonly string[] Upgrades = { }; diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/GrantUpgradePower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/GrantUpgradePower.cs index 18f2e1aaae..2e4b8f3ab1 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/GrantUpgradePower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/GrantUpgradePower.cs @@ -19,6 +19,7 @@ namespace OpenRA.Mods.Common.Traits { class GrantUpgradePowerInfo : SupportPowerInfo { + [UpgradeGrantedReference] [Desc("The upgrades to apply.")] public readonly string[] Upgrades = { }; diff --git a/OpenRA.Mods.Common/Traits/Upgrades/DeployToUpgrade.cs b/OpenRA.Mods.Common/Traits/Upgrades/DeployToUpgrade.cs index e22fcb2cc2..379b5e62a2 100644 --- a/OpenRA.Mods.Common/Traits/Upgrades/DeployToUpgrade.cs +++ b/OpenRA.Mods.Common/Traits/Upgrades/DeployToUpgrade.cs @@ -18,6 +18,7 @@ namespace OpenRA.Mods.Common.Traits { public class DeployToUpgradeInfo : ITraitInfo, Requires { + [UpgradeGrantedReference] [Desc("The upgrades to grant when deploying and revoke when undeploying.")] public readonly string[] Upgrades = { }; diff --git a/OpenRA.Mods.Common/Traits/Upgrades/UpgradeActorsNear.cs b/OpenRA.Mods.Common/Traits/Upgrades/UpgradeActorsNear.cs index 7ed534b575..1dd9bd049c 100644 --- a/OpenRA.Mods.Common/Traits/Upgrades/UpgradeActorsNear.cs +++ b/OpenRA.Mods.Common/Traits/Upgrades/UpgradeActorsNear.cs @@ -18,6 +18,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Applies an upgrade to actors within a specified range.")] public class UpgradeActorsNearInfo : ITraitInfo { + [UpgradeGrantedReference] [Desc("The upgrades to grant.")] public readonly string[] Upgrades = { }; diff --git a/OpenRA.Mods.Common/Warheads/GrantUpgradeWarhead.cs b/OpenRA.Mods.Common/Warheads/GrantUpgradeWarhead.cs index fb8976fd95..d06509ec11 100644 --- a/OpenRA.Mods.Common/Warheads/GrantUpgradeWarhead.cs +++ b/OpenRA.Mods.Common/Warheads/GrantUpgradeWarhead.cs @@ -20,6 +20,7 @@ namespace OpenRA.Mods.Common.Warheads { public class GrantUpgradeWarhead : Warhead { + [UpgradeGrantedReference] [Desc("The upgrades to apply.")] public readonly string[] Upgrades = { };