diff --git a/OpenRA.Mods.Common/Traits/Cloak.cs b/OpenRA.Mods.Common/Traits/Cloak.cs index 028594bded..2facb3f929 100644 --- a/OpenRA.Mods.Common/Traits/Cloak.cs +++ b/OpenRA.Mods.Common/Traits/Cloak.cs @@ -64,7 +64,6 @@ namespace OpenRA.Mods.Common.Traits INotifyAttack, ITick, IVisibilityModifier, IRadarColorModifier, INotifyCreated, INotifyHarvesterAction { [Sync] int remainingTime; - [Sync] bool damageDisabled; bool isDocking; ConditionManager conditionManager; @@ -102,8 +101,7 @@ namespace OpenRA.Mods.Common.Traits void INotifyDamage.Damaged(Actor self, AttackInfo e) { - damageDisabled = e.DamageState >= DamageState.Critical; - if (damageDisabled || Info.UncloakOn.HasFlag(UncloakType.Damage)) + if (Info.UncloakOn.HasFlag(UncloakType.Damage)) Uncloak(); } @@ -128,7 +126,7 @@ namespace OpenRA.Mods.Common.Traits { if (!IsTraitDisabled) { - if (remainingTime > 0 && !damageDisabled && !isDocking) + if (remainingTime > 0 && !isDocking) remainingTime--; if (self.IsDisabled()) diff --git a/mods/cnc/rules/defaults.yaml b/mods/cnc/rules/defaults.yaml index cf38e6798c..1c53911fae 100644 --- a/mods/cnc/rules/defaults.yaml +++ b/mods/cnc/rules/defaults.yaml @@ -125,9 +125,12 @@ CloakDelay: 90 CloakSound: trans1.aud UncloakSound: trans1.aud - RequiresCondition: cloak + RequiresCondition: cloak-crate-collected && !cloak-force-disabled ExternalCondition@CLOAK: - Condition: cloak + Condition: cloak-crate-collected + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical ^Vehicle: Inherits@1: ^ExistsInWorld diff --git a/mods/cnc/rules/misc.yaml b/mods/cnc/rules/misc.yaml index efeab016f0..97be8cc0e8 100644 --- a/mods/cnc/rules/misc.yaml +++ b/mods/cnc/rules/misc.yaml @@ -19,7 +19,7 @@ CRATE: GrantExternalConditionCrateAction@cloak: SelectionShares: 5 Effect: cloak - Condition: cloak + Condition: cloak-crate-collected GiveMcvCrateAction: SelectionShares: 0 NoBaseSelectionShares: 120 diff --git a/mods/cnc/rules/vehicles.yaml b/mods/cnc/rules/vehicles.yaml index db4fd3203f..d22ff46b6d 100644 --- a/mods/cnc/rules/vehicles.yaml +++ b/mods/cnc/rules/vehicles.yaml @@ -547,6 +547,10 @@ STNK: CloakDelay: 90 CloakSound: trans1.aud UncloakSound: trans1.aud + RequiresCondition: !cloak-force-disabled + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical Armament: Weapon: 227mm.stnk LocalOffset: 213,43,128, 213,-43,128 diff --git a/mods/d2k/rules/infantry.yaml b/mods/d2k/rules/infantry.yaml index 4e53a40a1c..5631a47ac8 100644 --- a/mods/d2k/rules/infantry.yaml +++ b/mods/d2k/rules/infantry.yaml @@ -154,6 +154,10 @@ fremen: CloakSound: STEALTH1.WAV UncloakSound: STEALTH2.WAV IsPlayerPalette: true + RequiresCondition: !cloak-force-disabled + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical -MustBeDestroyed: Voiced: VoiceSet: FremenVoice @@ -249,6 +253,10 @@ saboteur: UncloakSound: STEALTH2.WAV UncloakOn: Attack, Unload, Infiltrate, Demolish, Move, Damage IsPlayerPalette: true + RequiresCondition: !cloak-force-disabled + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical Voiced: VoiceSet: SaboteurVoice diff --git a/mods/d2k/rules/vehicles.yaml b/mods/d2k/rules/vehicles.yaml index 4a75087fbf..3825dd3a75 100644 --- a/mods/d2k/rules/vehicles.yaml +++ b/mods/d2k/rules/vehicles.yaml @@ -396,6 +396,10 @@ stealth_raider: CloakSound: STEALTH1.WAV UncloakSound: STEALTH2.WAV IsPlayerPalette: true + RequiresCondition: !cloak-force-disabled + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical AutoTarget: InitialStance: HoldFire InitialStanceAI: ReturnFire diff --git a/mods/ra/rules/infantry.yaml b/mods/ra/rules/infantry.yaml index 27353aa729..a2a570bda6 100644 --- a/mods/ra/rules/infantry.yaml +++ b/mods/ra/rules/infantry.yaml @@ -508,6 +508,10 @@ HIJACKER: UncloakOn: Attack, Unload, Infiltrate, Demolish, Move CloakTypes: Cloak, Hijacker IsPlayerPalette: true + RequiresCondition: !cloak-force-disabled + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical Mobile: Speed: 85 @@ -589,6 +593,10 @@ SNIPER: UncloakSound: UncloakOn: Attack, Unload, Infiltrate, Demolish, Move IsPlayerPalette: true + RequiresCondition: !cloak-force-disabled + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical DetectCloaked: CloakTypes: Cloak, Hijacker Range: 6c0 diff --git a/mods/ra/rules/ships.yaml b/mods/ra/rules/ships.yaml index a60e9641a9..bf4d35046d 100644 --- a/mods/ra/rules/ships.yaml +++ b/mods/ra/rules/ships.yaml @@ -36,6 +36,10 @@ SS: UncloakSound: subshow1.aud CloakedCondition: underwater Palette: submerged + RequiresCondition: !cloak-force-disabled + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical Armament: Weapon: TorpTube LocalOffset: 0,-171,0, 0,171,0 @@ -93,6 +97,10 @@ MSUB: UncloakSound: subshow1.aud CloakedCondition: underwater Palette: submerged + RequiresCondition: !cloak-force-disabled + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical Armament@PRIMARY: Weapon: SubMissile LocalOffset: 0,-171,0, 0,171,0 diff --git a/mods/ra/rules/structures.yaml b/mods/ra/rules/structures.yaml index 903482d46b..0e2614d6db 100644 --- a/mods/ra/rules/structures.yaml +++ b/mods/ra/rules/structures.yaml @@ -626,6 +626,10 @@ HBOX: InitialDelay: 125 CloakDelay: 60 IsPlayerPalette: true + RequiresCondition: !cloak-force-disabled + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical Turreted: TurnSpeed: 255 -QuantizeFacingsFromSequence: diff --git a/mods/ra/rules/vehicles.yaml b/mods/ra/rules/vehicles.yaml index b8fe55c8e4..ffe6bd14b0 100644 --- a/mods/ra/rules/vehicles.yaml +++ b/mods/ra/rules/vehicles.yaml @@ -779,6 +779,10 @@ STNK: CloakSound: appear1.aud UncloakSound: appear1.aud IsPlayerPalette: true + RequiresCondition: !cloak-force-disabled + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical DetectCloaked: Range: 7c0 -MustBeDestroyed: diff --git a/mods/ts/rules/nod-vehicles.yaml b/mods/ts/rules/nod-vehicles.yaml index cf38e7380d..71080cbf7e 100644 --- a/mods/ts/rules/nod-vehicles.yaml +++ b/mods/ts/rules/nod-vehicles.yaml @@ -396,6 +396,10 @@ STNK: UncloakSound: cloak5.aud IsPlayerPalette: true UncloakOn: Attack, Unload, Infiltrate, Demolish, Damage + RequiresCondition: !cloak-force-disabled + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical Armament: Weapon: Dragon LocalOffset: 213,43,298, 213,-43,298