From c827dbe1833647fc96fc81d27b925a93be77b098 Mon Sep 17 00:00:00 2001 From: atlimit8 Date: Fri, 25 Sep 2015 16:55:33 -0500 Subject: [PATCH] Replace IDisableMove with upgradability --- OpenRA.Game/Traits/TraitsInterfaces.cs | 1 - OpenRA.Mods.Common/Activities/Move/Drag.cs | 6 ++-- OpenRA.Mods.Common/Activities/Move/Move.cs | 9 +----- OpenRA.Mods.Common/Activities/Turn.cs | 7 +++-- OpenRA.Mods.Common/OpenRA.Mods.Common.csproj | 1 - OpenRA.Mods.Common/Traits/Cargo.cs | 3 +- OpenRA.Mods.Common/Traits/Mobile.cs | 5 +--- .../Upgrades/DisableMovementOnUpgrade.cs | 28 ------------------- .../Traits/Upgrades/DisableOnUpgrade.cs | 3 +- .../UtilityCommands/UpgradeRules.cs | 26 +++++++++++++++++ OpenRA.Mods.D2k/Traits/Carryable.cs | 9 +----- mods/cnc/rules/ships.yaml | 3 ++ mods/cnc/rules/vehicles.yaml | 3 ++ mods/d2k/rules/defaults.yaml | 3 ++ mods/d2k/rules/infantry.yaml | 5 ++-- mods/ra/rules/ships.yaml | 3 ++ mods/ra/rules/vehicles.yaml | 9 ++++++ mods/ts/rules/civilian-vehicles.yaml | 10 +++---- mods/ts/rules/defaults.yaml | 16 +++++++++-- mods/ts/rules/gdi-vehicles.yaml | 1 + mods/ts/rules/nod-vehicles.yaml | 1 + mods/ts/rules/shared-vehicles.yaml | 5 +--- mods/ts/weapons/superweapons.yaml | 2 +- 23 files changed, 82 insertions(+), 77 deletions(-) delete mode 100644 OpenRA.Mods.Common/Traits/Upgrades/DisableMovementOnUpgrade.cs diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index a0fb5eeae0..c1fdbeda35 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -127,7 +127,6 @@ namespace OpenRA.Traits public interface INotifyCapture { void OnCapture(Actor self, Actor captor, Player oldOwner, Player newOwner); } public interface INotifyInfiltrated { void Infiltrated(Actor self, Actor infiltrator); } public interface INotifyDiscovered { void OnDiscovered(Actor self, Player discoverer, bool playNotification); } - public interface IDisableMove { bool MoveDisabled(Actor self); } public interface ISeedableResource { void Seed(Actor self); } diff --git a/OpenRA.Mods.Common/Activities/Move/Drag.cs b/OpenRA.Mods.Common/Activities/Move/Drag.cs index 0095b9d6c7..96285bac56 100644 --- a/OpenRA.Mods.Common/Activities/Move/Drag.cs +++ b/OpenRA.Mods.Common/Activities/Move/Drag.cs @@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Activities { readonly IPositionable positionable; readonly IMove movement; - readonly IDisableMove[] moveDisablers; + readonly IDisabledTrait disableable; WPos start, end; int length; int ticks = 0; @@ -28,7 +28,7 @@ namespace OpenRA.Mods.Common.Activities { positionable = self.Trait(); movement = self.TraitOrDefault(); - moveDisablers = self.TraitsImplementing().ToArray(); + disableable = movement as IDisabledTrait; this.start = start; this.end = end; this.length = length; @@ -36,7 +36,7 @@ namespace OpenRA.Mods.Common.Activities public override Activity Tick(Actor self) { - if (moveDisablers.Any(d => d.MoveDisabled(self))) + if (disableable != null && disableable.IsTraitDisabled) return this; var pos = length > 1 diff --git a/OpenRA.Mods.Common/Activities/Move/Move.cs b/OpenRA.Mods.Common/Activities/Move/Move.cs index b3e31e93ff..37e99bedfd 100644 --- a/OpenRA.Mods.Common/Activities/Move/Move.cs +++ b/OpenRA.Mods.Common/Activities/Move/Move.cs @@ -25,7 +25,6 @@ namespace OpenRA.Mods.Common.Activities static readonly List NoPath = new List(); readonly Mobile mobile; - readonly IDisableMove[] moveDisablers; readonly WDist nearEnough; readonly Func> getPath; readonly Actor ignoredActor; @@ -43,7 +42,6 @@ namespace OpenRA.Mods.Common.Activities public Move(Actor self, CPos destination) { mobile = self.Trait(); - moveDisablers = self.TraitsImplementing().ToArray(); getPath = () => { @@ -65,7 +63,6 @@ namespace OpenRA.Mods.Common.Activities public Move(Actor self, CPos destination, WDist nearEnough) { mobile = self.Trait(); - moveDisablers = self.TraitsImplementing().ToArray(); getPath = () => self.World.WorldActor.Trait() .FindUnitPath(mobile.ToCell, destination, self); @@ -76,7 +73,6 @@ namespace OpenRA.Mods.Common.Activities public Move(Actor self, CPos destination, SubCell subCell, WDist nearEnough) { mobile = self.Trait(); - moveDisablers = self.TraitsImplementing().ToArray(); getPath = () => self.World.WorldActor.Trait() .FindUnitPathToRange(mobile.FromCell, subCell, self.World.Map.CenterOfSubCell(destination, subCell), nearEnough, self); @@ -87,7 +83,6 @@ namespace OpenRA.Mods.Common.Activities public Move(Actor self, CPos destination, Actor ignoredActor) { mobile = self.Trait(); - moveDisablers = self.TraitsImplementing().ToArray(); getPath = () => { @@ -107,7 +102,6 @@ namespace OpenRA.Mods.Common.Activities public Move(Actor self, Target target, WDist range) { mobile = self.Trait(); - moveDisablers = self.TraitsImplementing().ToArray(); getPath = () => { @@ -125,7 +119,6 @@ namespace OpenRA.Mods.Common.Activities public Move(Actor self, Func> getPath) { mobile = self.Trait(); - moveDisablers = self.TraitsImplementing().ToArray(); this.getPath = getPath; @@ -155,7 +148,7 @@ namespace OpenRA.Mods.Common.Activities if (IsCanceled) return NextActivity; - if (mobile.IsTraitDisabled || moveDisablers.Any(d => d.MoveDisabled(self))) + if (mobile.IsTraitDisabled) return this; if (destination == mobile.ToCell) diff --git a/OpenRA.Mods.Common/Activities/Turn.cs b/OpenRA.Mods.Common/Activities/Turn.cs index fe5d986edd..c7096c7567 100644 --- a/OpenRA.Mods.Common/Activities/Turn.cs +++ b/OpenRA.Mods.Common/Activities/Turn.cs @@ -11,18 +11,19 @@ using System.Collections.Generic; using System.Linq; using OpenRA.Activities; +using OpenRA.Mods.Common.Traits; using OpenRA.Traits; namespace OpenRA.Mods.Common.Activities { public class Turn : Activity { - readonly IDisableMove[] moveDisablers; + readonly IDisabledTrait disablable; readonly int desiredFacing; public Turn(Actor self, int desiredFacing) { - moveDisablers = self.TraitsImplementing().ToArray(); + disablable = self.TraitOrDefault() as IDisabledTrait; this.desiredFacing = desiredFacing; } @@ -30,7 +31,7 @@ namespace OpenRA.Mods.Common.Activities { if (IsCanceled) return NextActivity; - if (moveDisablers.Any(d => d.MoveDisabled(self))) + if (disablable != null && disablable.IsTraitDisabled) return this; var facing = self.Trait(); diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index a753d8c425..b30729bc3b 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -483,7 +483,6 @@ - diff --git a/OpenRA.Mods.Common/Traits/Cargo.cs b/OpenRA.Mods.Common/Traits/Cargo.cs index 3f9ff05acf..a0d23ca5d8 100644 --- a/OpenRA.Mods.Common/Traits/Cargo.cs +++ b/OpenRA.Mods.Common/Traits/Cargo.cs @@ -59,7 +59,7 @@ namespace OpenRA.Mods.Common.Traits } public class Cargo : IPips, IIssueOrder, IResolveOrder, IOrderVoice, INotifyCreated, INotifyKilled, - INotifyOwnerChanged, INotifyAddedToWorld, ITick, INotifySold, IDisableMove, INotifyActorDisposing + INotifyOwnerChanged, INotifyAddedToWorld, ITick, INotifySold, INotifyActorDisposing { public readonly CargoInfo Info; readonly Actor self; @@ -228,7 +228,6 @@ namespace OpenRA.Mods.Common.Traits return Info.UnloadVoice; } - public bool MoveDisabled(Actor self) { return reserves.Any(); } public bool HasSpace(int weight) { return totalWeight + reservedWeight + weight <= Info.MaxWeight; } public bool IsEmpty(Actor self) { return cargo.Count == 0; } diff --git a/OpenRA.Mods.Common/Traits/Mobile.cs b/OpenRA.Mods.Common/Traits/Mobile.cs index 804a3b7312..49a23db464 100644 --- a/OpenRA.Mods.Common/Traits/Mobile.cs +++ b/OpenRA.Mods.Common/Traits/Mobile.cs @@ -695,14 +695,12 @@ namespace OpenRA.Mods.Common.Traits { readonly Mobile mobile; readonly bool rejectMove; - readonly IDisableMove[] moveDisablers; public bool OverrideSelection { get { return false; } } public MoveOrderTargeter(Actor self, Mobile unit) { this.mobile = unit; rejectMove = !self.AcceptsOrder("Move"); - moveDisablers = self.TraitsImplementing().ToArray(); } public string OrderID { get { return "Move"; } } @@ -723,8 +721,7 @@ namespace OpenRA.Mods.Common.Traits if (mobile.IsTraitDisabled || (!explored && !mobile.Info.MoveIntoShroud) - || (explored && mobile.Info.MovementCostForCell(self.World, location) == int.MaxValue) - || moveDisablers.Any(d => d.MoveDisabled(self))) + || (explored && mobile.Info.MovementCostForCell(self.World, location) == int.MaxValue)) cursor = mobile.Info.BlockedCursor; return true; diff --git a/OpenRA.Mods.Common/Traits/Upgrades/DisableMovementOnUpgrade.cs b/OpenRA.Mods.Common/Traits/Upgrades/DisableMovementOnUpgrade.cs deleted file mode 100644 index 7d92a4f600..0000000000 --- a/OpenRA.Mods.Common/Traits/Upgrades/DisableMovementOnUpgrade.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2015 The OpenRA Developers (see AUTHORS) - * This file is part of OpenRA, which is free software. It is made - * available to you under the terms of the GNU General Public License - * as published by the Free Software Foundation. For more information, - * see COPYING. - */ -#endregion - -using OpenRA.Traits; - -namespace OpenRA.Mods.Common.Traits -{ - [Desc("Disable the ability to move and turn of the actor when this trait is enabled by an upgrade.")] - public class DisableMovementInfo : UpgradableTraitInfo - { - public override object Create(ActorInitializer init) { return new DisableMovementOnUpgrade(this); } - } - - public class DisableMovementOnUpgrade : UpgradableTrait, IDisableMove - { - public DisableMovementOnUpgrade(DisableMovementInfo info) - : base(info) { } - - public bool MoveDisabled(Actor self) { return !IsTraitDisabled; } - } -} diff --git a/OpenRA.Mods.Common/Traits/Upgrades/DisableOnUpgrade.cs b/OpenRA.Mods.Common/Traits/Upgrades/DisableOnUpgrade.cs index c2a917ec3e..3e8927d6ab 100644 --- a/OpenRA.Mods.Common/Traits/Upgrades/DisableOnUpgrade.cs +++ b/OpenRA.Mods.Common/Traits/Upgrades/DisableOnUpgrade.cs @@ -18,12 +18,11 @@ namespace OpenRA.Mods.Common.Traits public override object Create(ActorInitializer init) { return new DisableOnUpgrade(this); } } - public class DisableOnUpgrade : UpgradableTrait, IDisable, IDisableMove + public class DisableOnUpgrade : UpgradableTrait, IDisable { public DisableOnUpgrade(DisableOnUpgradeInfo info) : base(info) { } public bool Disabled { get { return !IsTraitDisabled; } } - public bool MoveDisabled(Actor self) { return !IsTraitDisabled; } } } diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs index d4a5a21b7b..818c4be6f8 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs @@ -2510,6 +2510,32 @@ namespace OpenRA.Mods.Common.UtilityCommands } } + // Notify how to restore blocking movement of Mobile actors with Carryable and/or Cargo + if (engineVersion < 20151204 && depth == 2) + { + if (node.Key == "Carryable") + { + Console.WriteLine("Use CarryableUpgrades of Carryable to disable Mobile while " + parent.Key + " is waiting or being carried."); + } + else if (node.Key == "Cargo") + { + Console.WriteLine("Use LoadingUpgrades of Cargo to disable Mobile while " + parent.Key + " is loading cargo."); + } + else if (node.Key == "DeployToUpgrade") + { + Console.WriteLine("Use Upgrades of DeployToUpgrade to disable Mobile while " + parent.Key + " is deployed (instead of DisableUpgrade)."); + } + else if (node.Key == "DisableUpgrade") + { + Console.WriteLine("DisableUpgrade no longer disables Mobile. Use Mobile upgradablility instead for " + parent.Key + "."); + } + else if (node.Key == "DisableMovementOnUpgrade") + { + parent.Value.Nodes.Remove(node); + Console.WriteLine("DisableMovementOnUpgrade is removed. Use Mobile upgradablility instead for " + parent.Key + "."); + } + } + UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); } } diff --git a/OpenRA.Mods.D2k/Traits/Carryable.cs b/OpenRA.Mods.D2k/Traits/Carryable.cs index 6cdc5e0e41..8974b344a7 100644 --- a/OpenRA.Mods.D2k/Traits/Carryable.cs +++ b/OpenRA.Mods.D2k/Traits/Carryable.cs @@ -29,7 +29,7 @@ namespace OpenRA.Mods.D2k.Traits public object Create(ActorInitializer init) { return new Carryable(init.Self, this); } } - public class Carryable : IDisableMove, INotifyHarvesterAction, ICallForTransport + public class Carryable : INotifyHarvesterAction, ICallForTransport { readonly CarryableInfo info; readonly Actor self; @@ -196,12 +196,5 @@ namespace OpenRA.Mods.D2k.Traits return true; } - - // IMoveDisabled - public bool MoveDisabled(Actor self) - { - // We do not want to move while being locked. The carrier will try to pick us up. - return locked; - } } } diff --git a/mods/cnc/rules/ships.yaml b/mods/cnc/rules/ships.yaml index 8217d2cc23..937ac16c50 100644 --- a/mods/cnc/rules/ships.yaml +++ b/mods/cnc/rules/ships.yaml @@ -47,6 +47,8 @@ LST: BuildPaletteOrder: 1000 Prerequisites: ~disabled Mobile: + UpgradeTypes: notmobile + UpgradeMaxEnabledLevel: 0 Crushes: crate TerrainSpeeds: Clear: 100 @@ -76,4 +78,5 @@ LST: MaxWeight: 5 PipCount: 5 PassengerFacing: 0 + LoadingUpgrades: notmobile diff --git a/mods/cnc/rules/vehicles.yaml b/mods/cnc/rules/vehicles.yaml index 17fab2ef02..e29b147a65 100644 --- a/mods/cnc/rules/vehicles.yaml +++ b/mods/cnc/rules/vehicles.yaml @@ -89,6 +89,8 @@ APC: Prerequisites: pyle Queue: Vehicle.GDI Mobile: + UpgradeTypes: notmobile + UpgradeMaxEnabledLevel: 0 ROT: 8 Speed: 128 Health: @@ -120,6 +122,7 @@ APC: Types: Infantry MaxWeight: 5 PipCount: 5 + LoadingUpgrades: notmobile SpawnActorOnDeath: Actor: APC.Husk diff --git a/mods/d2k/rules/defaults.yaml b/mods/d2k/rules/defaults.yaml index d7ef14dc1a..b27824fa6a 100644 --- a/mods/d2k/rules/defaults.yaml +++ b/mods/d2k/rules/defaults.yaml @@ -58,6 +58,8 @@ Inherits@2: ^GainsExperience Inherits@3: ^SpriteActor Mobile: + UpgradeTypes: notmobile + UpgradeMaxEnabledLevel: 0 Crushes: crate, spicebloom TerrainSpeeds: Sand: 100 @@ -92,6 +94,7 @@ Voiced: VoiceSet: VehicleVoice Carryable: + CarryableUpgrades: notmobile WithDecorationCarryable: Image: pips Sequence: pickup-indicator diff --git a/mods/d2k/rules/infantry.yaml b/mods/d2k/rules/infantry.yaml index 78ef1fdbb7..9e35b61a15 100644 --- a/mods/d2k/rules/infantry.yaml +++ b/mods/d2k/rules/infantry.yaml @@ -93,6 +93,8 @@ thumper: RevealsShroud: Range: 2c768 Mobile: + UpgradeTypes: deployed + UpgradeMaxEnabledLevel: 0 Speed: 43 DeployToUpgrade: DeployedUpgrades: deployed @@ -119,9 +121,6 @@ thumper: Falloff: 0, 0, 0, 100, 100, 100, 25, 11, 6, 4, 3, 2, 1, 0 UpgradeTypes: deployed UpgradeMinEnabledLevel: 1 - DisableOnUpgrade: - UpgradeTypes: deployed - UpgradeMinEnabledLevel: 1 Passenger: PipType: Blue Voiced: diff --git a/mods/ra/rules/ships.yaml b/mods/ra/rules/ships.yaml index a496b33edd..1b690addc2 100644 --- a/mods/ra/rules/ships.yaml +++ b/mods/ra/rules/ships.yaml @@ -226,6 +226,8 @@ LST: Armor: Type: Heavy Mobile: + UpgradeTypes: notmobile + UpgradeMaxEnabledLevel: 0 ROT: 10 Speed: 113 RevealsShroud: @@ -239,6 +241,7 @@ LST: MaxWeight: 5 PipCount: 5 PassengerFacing: 0 + LoadingUpgrades: notmobile -Chronoshiftable: PT: diff --git a/mods/ra/rules/vehicles.yaml b/mods/ra/rules/vehicles.yaml index 7f15891566..0f6a93a45c 100644 --- a/mods/ra/rules/vehicles.yaml +++ b/mods/ra/rules/vehicles.yaml @@ -334,6 +334,8 @@ JEEP: Mobile: ROT: 10 Speed: 170 + UpgradeTypes: notmobile + UpgradeMaxEnabledLevel: 0 RevealsShroud: Range: 8c0 Turreted: @@ -350,6 +352,7 @@ JEEP: Types: Infantry MaxWeight: 1 PipCount: 1 + LoadingUpgrades: notmobile ProducibleWithLevel: Prerequisites: vehicles.upgraded @@ -371,6 +374,8 @@ APC: Mobile: Speed: 142 Crushes: wall, mine, crate, infantry + UpgradeTypes: notmobile + UpgradeMaxEnabledLevel: 0 RevealsShroud: Range: 5c0 Armament: @@ -384,6 +389,7 @@ APC: Types: Infantry MaxWeight: 5 PipCount: 5 + LoadingUpgrades: notmobile ProducibleWithLevel: Prerequisites: vehicles.upgraded @@ -727,6 +733,8 @@ STNK: Mobile: Speed: 142 Crushes: wall, mine, crate, infantry + UpgradeTypes: notmobile + UpgradeMaxEnabledLevel: 0 RevealsShroud: Range: 7c0 AutoTarget: @@ -743,6 +751,7 @@ STNK: Types: Infantry MaxWeight: 4 PipCount: 4 + LoadingUpgrades: notmobile Cloak: InitialDelay: 125 CloakDelay: 250 diff --git a/mods/ts/rules/civilian-vehicles.yaml b/mods/ts/rules/civilian-vehicles.yaml index 19b4e3ec7c..b8dff29a9e 100644 --- a/mods/ts/rules/civilian-vehicles.yaml +++ b/mods/ts/rules/civilian-vehicles.yaml @@ -98,6 +98,7 @@ BUS: MaxWeight: 20 PipCount: 5 UnloadVoice: Unload + LoadingUpgrades: notmobile PICK: Inherits: ^CivilianVoxelVehicle @@ -119,6 +120,7 @@ PICK: MaxWeight: 2 PipCount: 5 UnloadVoice: Unload + LoadingUpgrades: notmobile CAR: Inherits: ^CivilianVoxelVehicle @@ -140,6 +142,7 @@ CAR: MaxWeight: 4 PipCount: 5 UnloadVoice: Unload + LoadingUpgrades: notmobile WINI: Inherits: ^CivilianVoxelVehicle @@ -161,6 +164,7 @@ WINI: MaxWeight: 5 PipCount: 5 UnloadVoice: Unload + LoadingUpgrades: notmobile LOCOMOTIVE: Inherits: ^Train @@ -169,10 +173,8 @@ LOCOMOTIVE: Tooltip: Name: Train Locomotive Cargo: - Types: Infantry MaxWeight: 2 PipCount: 2 - UnloadVoice: Unload TRAINCAR: Inherits: ^Train @@ -181,10 +183,8 @@ TRAINCAR: Tooltip: Name: Passenger Car Cargo: - Types: Infantry MaxWeight: 10 PipCount: 5 - UnloadVoice: Unload CARGOCAR: Inherits: ^Train @@ -193,8 +193,6 @@ CARGOCAR: Tooltip: Name: Cargo Car Cargo: - Types: Infantry MaxWeight: 10 PipCount: 5 - UnloadVoice: Unload diff --git a/mods/ts/rules/defaults.yaml b/mods/ts/rules/defaults.yaml index 316e5157ff..55383bd3e7 100644 --- a/mods/ts/rules/defaults.yaml +++ b/mods/ts/rules/defaults.yaml @@ -73,6 +73,12 @@ UpgradeTypes: empdisable Modifier: 0 +^EmpDisableMobile: + Inherits: ^EmpDisable + Mobile: + UpgradeTypes: notmobile + UpgradeMaxEnabledLevel: 0 + ^BasicBuilding: Inherits@1: ^ExistsInWorld Inherits@2: ^SpriteActor @@ -334,7 +340,7 @@ ^Cyborg: Inherits@1: ^Infantry - Inherits@2: ^EmpDisable + Inherits@2: ^EmpDisableMobile RevealsShroud: Range: 4c0 MustBeDestroyed: @@ -361,7 +367,7 @@ ^Vehicle: Inherits@1: ^GainsExperience Inherits@2: ^ExistsInWorld - Inherits@3: ^EmpDisable + Inherits@3: ^EmpDisableMobile DrawLineToTarget: Mobile: Crushes: crate @@ -656,7 +662,7 @@ ActorLostNotification: ^Train: - Inherits@1: ^EmpDisable + Inherits@1: ^EmpDisableMobile Inherits@2: ^ExistsInWorld RenderVoxels: WithVoxelBody: @@ -667,6 +673,10 @@ ROT: 5 Voice: Move Speed: 113 + Cargo: + Types: Infantry + UnloadVoice: Unload + LoadingUpgrades: notmobile Health: HP: 100 Armor: diff --git a/mods/ts/rules/gdi-vehicles.yaml b/mods/ts/rules/gdi-vehicles.yaml index 04c0f0a2c2..0a140c7ff3 100644 --- a/mods/ts/rules/gdi-vehicles.yaml +++ b/mods/ts/rules/gdi-vehicles.yaml @@ -27,6 +27,7 @@ APC: MaxWeight: 5 PipCount: 5 UnloadVoice: Unload + LoadingUpgrades: notmobile -WithVoxelBody: WithVoxelWaterBody: LeavesTrails: diff --git a/mods/ts/rules/nod-vehicles.yaml b/mods/ts/rules/nod-vehicles.yaml index c3ea24fa90..51d1895d20 100644 --- a/mods/ts/rules/nod-vehicles.yaml +++ b/mods/ts/rules/nod-vehicles.yaml @@ -226,6 +226,7 @@ SAPC: MaxWeight: 5 PipCount: 5 UnloadVoice: Unload + LoadingUpgrades: notmobile SUBTANK: Inherits: ^VoxelTank diff --git a/mods/ts/rules/shared-vehicles.yaml b/mods/ts/rules/shared-vehicles.yaml index d1fe767309..caf38fc2cb 100644 --- a/mods/ts/rules/shared-vehicles.yaml +++ b/mods/ts/rules/shared-vehicles.yaml @@ -127,7 +127,7 @@ LPST: gdi: lpst.gdi nod: lpst.nod DeployToUpgrade: - DeployedUpgrades: deployed + DeployedUpgrades: deployed, notmobile UndeployedUpgrades: undeployed DeployAnimation: make Facing: 160 @@ -141,9 +141,6 @@ LPST: WithSpriteBody@deployed: UpgradeTypes: undeployed UpgradeMaxEnabledLevel: 0 - DisableOnUpgrade: - UpgradeTypes: undeployed - UpgradeMaxEnabledLevel: 0 DetectCloaked: UpgradeTypes: deployed UpgradeMinEnabledLevel: 1 diff --git a/mods/ts/weapons/superweapons.yaml b/mods/ts/weapons/superweapons.yaml index 2d3143a87f..0f066f6596 100644 --- a/mods/ts/weapons/superweapons.yaml +++ b/mods/ts/weapons/superweapons.yaml @@ -90,7 +90,7 @@ EMPulseCannon: Warhead@emp: GrantUpgrade Range: 3c0 Duration: 250 - Upgrades: empdisable + Upgrades: empdisable, notmobile ClusterMissile: ValidTargets: Ground, Water, Air