diff --git a/OpenRA.Mods.Common/Traits/Crates/GrantUpgradeCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/GrantUpgradeCrateAction.cs index 9db05ff227..7af55fa76c 100644 --- a/OpenRA.Mods.Common/Traits/Crates/GrantUpgradeCrateAction.cs +++ b/OpenRA.Mods.Common/Traits/Crates/GrantUpgradeCrateAction.cs @@ -47,7 +47,8 @@ namespace OpenRA.Mods.Common.Traits bool AcceptsUpgrade(Actor a) { var um = a.TraitOrDefault(); - return um != null && info.Upgrades.Any(u => um.AcceptsUpgrade(a, u)); + return um != null && (info.Duration > 0 ? + info.Upgrades.Any(u => um.AcknowledgesUpgrade(a, u)) : info.Upgrades.Any(u => um.AcceptsUpgrade(a, u))); } public override int GetSelectionShares(Actor collector) @@ -73,13 +74,16 @@ namespace OpenRA.Mods.Common.Traits var um = a.TraitOrDefault(); foreach (var u in info.Upgrades) { - if (!um.AcceptsUpgrade(a, u)) - continue; - if (info.Duration > 0) - um.GrantTimedUpgrade(a, u, info.Duration); + { + if (um.AcknowledgesUpgrade(a, u)) + um.GrantTimedUpgrade(a, u, info.Duration); + } else - um.GrantUpgrade(a, u, this); + { + if (um.AcceptsUpgrade(a, u)) + um.GrantUpgrade(a, u, this); + } } } }); diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/GrantUpgradePower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/GrantUpgradePower.cs index e78e5822cd..1e7f7a1109 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/GrantUpgradePower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/GrantUpgradePower.cs @@ -65,13 +65,16 @@ namespace OpenRA.Mods.Common.Traits foreach (var u in info.Upgrades) { - if (!um.AcceptsUpgrade(a, u)) - continue; - if (info.Duration > 0) - um.GrantTimedUpgrade(a, u, info.Duration); + { + if (um.AcknowledgesUpgrade(a, u)) + um.GrantTimedUpgrade(a, u, info.Duration); + } else - um.GrantUpgrade(a, u, this); + { + if (um.AcceptsUpgrade(a, u)) + um.GrantUpgrade(a, u, this); + } } } } @@ -90,7 +93,8 @@ namespace OpenRA.Mods.Common.Traits return false; var um = a.TraitOrDefault(); - return um != null && info.Upgrades.Any(u => um.AcceptsUpgrade(a, u)); + return um != null && (info.Duration > 0 ? + info.Upgrades.Any(u => um.AcknowledgesUpgrade(a, u)) : info.Upgrades.Any(u => um.AcceptsUpgrade(a, u))); }); } diff --git a/OpenRA.Mods.Common/Traits/Upgrades/UpgradeActorsNear.cs b/OpenRA.Mods.Common/Traits/Upgrades/UpgradeActorsNear.cs index adadbb936e..9fbe748e11 100644 --- a/OpenRA.Mods.Common/Traits/Upgrades/UpgradeActorsNear.cs +++ b/OpenRA.Mods.Common/Traits/Upgrades/UpgradeActorsNear.cs @@ -116,7 +116,7 @@ namespace OpenRA.Mods.Common.Traits var um = produced.TraitOrDefault(); if (um != null) foreach (var u in info.Upgrades) - if (um.AcceptsUpgrade(produced, u)) + if (um.AcknowledgesUpgrade(produced, u)) um.GrantTimedUpgrade(produced, u, 1); } } diff --git a/mods/ra/rules/defaults.yaml b/mods/ra/rules/defaults.yaml index f90fd9582c..a832ead541 100644 --- a/mods/ra/rules/defaults.yaml +++ b/mods/ra/rules/defaults.yaml @@ -55,7 +55,7 @@ UpgradeMinEnabledLevel: 1 DamageMultiplier@IRONCURTAIN: UpgradeTypes: invulnerability - Modifier: 0, 0 + Modifier: 0 TimedUpgradeBar: Upgrade: invulnerability diff --git a/mods/ts/rules/defaults.yaml b/mods/ts/rules/defaults.yaml index 3f3ac37626..6d77dc4077 100644 --- a/mods/ts/rules/defaults.yaml +++ b/mods/ts/rules/defaults.yaml @@ -359,12 +359,10 @@ UpgradeOverlay@EMPDISABLE: UpgradeTypes: empdisable UpgradeMinEnabledLevel: 1 - UpgradeMaxAcceptedLevel: 2 Palette: disabled DisableUpgrade@EMPDISABLE: UpgradeTypes: empdisable UpgradeMinEnabledLevel: 1 - UpgradeMaxAcceptedLevel: 2 TimedUpgradeBar@EMPDISABLE: Upgrade: empdisable Color: 255,255,255 @@ -377,11 +375,9 @@ ShowToEnemies: true ZOffset: 512 UpgradeMinEnabledLevel: 1 - UpgradeMaxAcceptedLevel: 2 Cloak@CLOAKGENERATOR: UpgradeTypes: cloakgenerator UpgradeMinEnabledLevel: 1 - UpgradeMaxAcceptedLevel: 2 InitialDelay: 0 CloakDelay: 90 MustBeDestroyed: