diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj index b0970f43d1..331c6c1829 100644 --- a/OpenRA.Game/OpenRA.Game.csproj +++ b/OpenRA.Game/OpenRA.Game.csproj @@ -173,7 +173,6 @@ - diff --git a/OpenRA.Mods.Cnc/IonCannonPower.cs b/OpenRA.Mods.Cnc/IonCannonPower.cs index 3a96806c10..78be5acc6a 100644 --- a/OpenRA.Mods.Cnc/IonCannonPower.cs +++ b/OpenRA.Mods.Cnc/IonCannonPower.cs @@ -28,8 +28,10 @@ namespace OpenRA.Mods.Cnc return new SelectGenericPowerTarget(order, manager, "ioncannon", MouseButton.Left); } - public override void Activate(Actor self, Order order) + public override void Activate(Actor self, Order order, SupportPowerManager manager) { + base.Activate(self, order, manager); + self.World.AddFrameEndTask(w => { Sound.Play(Info.LaunchSound, order.TargetLocation.CenterPosition); diff --git a/OpenRA.Mods.RA/AttackBomber.cs b/OpenRA.Mods.RA/AttackBomber.cs index 622b8840d0..f39df8820c 100644 --- a/OpenRA.Mods.RA/AttackBomber.cs +++ b/OpenRA.Mods.RA/AttackBomber.cs @@ -23,48 +23,34 @@ namespace OpenRA.Mods.RA [Desc("Armament name")] public readonly string Guns = "secondary"; public readonly int FacingTolerance = 2; - public readonly WRange VisionRange = WRange.FromCells(10); public override object Create(ActorInitializer init) { return new AttackBomber(init.self, this); } } - class AttackBomber : AttackBase, ISync, INotifyKilled + class AttackBomber : AttackBase, ISync, INotifyRemovedFromWorld { AttackBomberInfo info; - Actor camera; [Sync] Target target; + [Sync] bool inAttackRange; + + public event Action OnRemovedFromWorld = self => { }; + public event Action OnEnteredAttackRange = self => { }; + public event Action OnExitedAttackRange = self => { }; public AttackBomber(Actor self, AttackBomberInfo info) : base(self, info) { this.info = info; - this.camera = null; } public override void Tick(Actor self) { base.Tick(self); - var facing = self.TraitOrDefault(); var cp = self.CenterPosition; var bombTarget = Target.FromPos(cp - new WVec(0, 0, cp.Z)); - - // Provide vision - if (this.camera == null && - target.IsInRange(self.CenterPosition, this.info.VisionRange)) - { - this.camera = self.World.CreateActor("camera", new TypeDictionary - { - new LocationInit(target.CenterPosition.ToCPos()), - new OwnerInit(self.Owner), - }); - } - else if (this.camera != null && - !target.IsInRange(self.CenterPosition, this.info.VisionRange)) - { - self.World.Remove(this.camera); - this.camera = null; - } + var wasInAttackRange = inAttackRange; + inAttackRange = false; // Bombs drop anywhere in range foreach (var a in Armaments.Where(a => a.Info.Name == info.Bombs)) @@ -72,39 +58,43 @@ namespace OpenRA.Mods.RA if (!target.IsInRange(self.CenterPosition, a.Weapon.Range)) continue; - a.CheckFire(self, this, facing, bombTarget); + inAttackRange = true; + a.CheckFire(self, this, facing.Value, bombTarget); } // Guns only fire when approaching the target - var facingToTarget = Util.GetFacing(target.CenterPosition - self.CenterPosition, facing.Facing); - if (Math.Abs(facingToTarget - facing.Facing) % 256 > info.FacingTolerance) - return; - - foreach (var a in Armaments.Where(a => a.Info.Name == info.Guns)) + var f = facing.Value.Facing; + var facingToTarget = Util.GetFacing(target.CenterPosition - self.CenterPosition, f); + if (Math.Abs(facingToTarget - f) % 256 <= info.FacingTolerance) { - if (!target.IsInRange(self.CenterPosition, a.Weapon.Range)) - continue; + foreach (var a in Armaments.Where(a => a.Info.Name == info.Guns)) + { + if (!target.IsInRange(self.CenterPosition, a.Weapon.Range)) + continue; - var t = Target.FromPos(cp - new WVec(0, a.Weapon.Range.Range / 2, cp.Z).Rotate(WRot.FromFacing(facing.Facing))); - a.CheckFire(self, this, facing, t); + var t = Target.FromPos(cp - new WVec(0, a.Weapon.Range.Range / 2, cp.Z).Rotate(WRot.FromFacing(f))); + inAttackRange = true; + a.CheckFire(self, this, facing.Value, t); + } } + + if (inAttackRange && !wasInAttackRange) + OnEnteredAttackRange(self); + + if (!inAttackRange && wasInAttackRange) + OnExitedAttackRange(self); } public void SetTarget(WPos pos) { target = Target.FromPos(pos); } - public void Killed(Actor self, AttackInfo e) + public void RemovedFromWorld(Actor self) { - if (this.camera != null) - { - self.World.Remove(this.camera); - this.camera = null; - } + OnRemovedFromWorld(self); } public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove) { - // TODO: Player controlled units want this too! - throw new NotImplementedException("CarpetBomb requires a scripted target"); + throw new NotImplementedException("AttackBomber requires a scripted target"); } } } diff --git a/OpenRA.Mods.RA/Effects/GravityBomb.cs b/OpenRA.Mods.RA/Effects/GravityBomb.cs index 1bf03491cc..2eecc4a053 100644 --- a/OpenRA.Mods.RA/Effects/GravityBomb.cs +++ b/OpenRA.Mods.RA/Effects/GravityBomb.cs @@ -63,6 +63,10 @@ namespace OpenRA.Mods.RA.Effects public IEnumerable Render(WorldRenderer wr) { + var cell = pos.ToCPos(); + if (args.SourceActor.World.FogObscures(cell)) + return SpriteRenderable.None; + return anim.Render(pos, wr.Palette("effect")); } } diff --git a/OpenRA.Game/Traits/Waypoint.cs b/OpenRA.Mods.RA/Immobile.cs similarity index 75% rename from OpenRA.Game/Traits/Waypoint.cs rename to OpenRA.Mods.RA/Immobile.cs index a0cf83becd..424395b6c7 100644 --- a/OpenRA.Game/Traits/Waypoint.cs +++ b/OpenRA.Mods.RA/Immobile.cs @@ -1,6 +1,6 @@ #region Copyright & License Information /* - * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) + * Copyright 2007-2014 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, @@ -10,19 +10,20 @@ using System.Collections.Generic; using OpenRA.FileFormats; +using OpenRA.Traits; -namespace OpenRA.Traits +namespace OpenRA.Mods.RA { - class WaypointInfo : ITraitInfo, IOccupySpaceInfo + class ImmobileInfo : ITraitInfo, IOccupySpaceInfo { - public object Create( ActorInitializer init ) { return new Waypoint( init ); } + public object Create(ActorInitializer init) { return new Immobile(init); } } - class Waypoint : IOccupySpace, ISync, INotifyAddedToWorld, INotifyRemovedFromWorld + class Immobile : IOccupySpace, ISync, INotifyAddedToWorld, INotifyRemovedFromWorld { [Sync] readonly CPos location; - public Waypoint(ActorInitializer init) + public Immobile(ActorInitializer init) { this.location = init.Get(); } diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 4e19ed923b..8a83a0958c 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -481,6 +481,7 @@ + diff --git a/OpenRA.Mods.RA/SupportPowers/AirstrikePower.cs b/OpenRA.Mods.RA/SupportPowers/AirstrikePower.cs index 35a484a28f..2bf7756d76 100755 --- a/OpenRA.Mods.RA/SupportPowers/AirstrikePower.cs +++ b/OpenRA.Mods.RA/SupportPowers/AirstrikePower.cs @@ -1,6 +1,6 @@ #region Copyright & License Information /* - * Copyright 2007-2013 The OpenRA Developers (see AUTHORS) + * Copyright 2007-2014 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, @@ -9,6 +9,8 @@ #endregion using System; +using System.Collections.Generic; +using System.Linq; using OpenRA.FileFormats; using OpenRA.Mods.RA.Activities; using OpenRA.Mods.RA.Air; @@ -27,8 +29,18 @@ namespace OpenRA.Mods.RA public readonly WRange Cordon = new WRange(5120); [ActorReference] - public readonly string FlareType = null; - public readonly int FlareTime = 3000; // 2 minutes + [Desc("Actor to spawn when the aircraft first enter the map")] + public readonly string FlareActor = null; + + [Desc("Amount of time to keep the flare alive after the aircraft have finished attacking")] + public readonly int FlareRemoveDelay = 25; + + [ActorReference] + [Desc("Actor to spawn when the aircraft start attacking")] + public readonly string CameraActor = null; + + [Desc("Amount of time to keep the camera alive after the aircraft have finished attacking")] + public readonly int CameraRemoveDelay = 25; public override object Create(ActorInitializer init) { return new AirstrikePower(init.self, this); } } @@ -38,10 +50,11 @@ namespace OpenRA.Mods.RA public AirstrikePower(Actor self, AirstrikePowerInfo info) : base(self, info) { } - public override void Activate(Actor self, Order order) + public override void Activate(Actor self, Order order, SupportPowerManager manager) { - var info = Info as AirstrikePowerInfo; + base.Activate(self, order, manager); + var info = Info as AirstrikePowerInfo; var attackFacing = Util.QuantizeFacing(self.World.SharedRandom.Next(256), info.QuantizedFacings) * (256 / info.QuantizedFacings); var attackRotation = WRot.FromFacing(attackFacing); var delta = new WVec(0, -1024, 0).Rotate(attackRotation); @@ -51,24 +64,74 @@ namespace OpenRA.Mods.RA var startEdge = target - (self.World.DistanceToMapEdge(target, -delta) + info.Cordon).Range * delta / 1024; var finishEdge = target + (self.World.DistanceToMapEdge(target, delta) + info.Cordon).Range * delta / 1024; + Actor flare = null; + Actor camera = null; + Dictionary aircraftInRange = new Dictionary(); + + Action onEnterRange = a => + { + // Spawn a camera and remove the beacon when the first plane enters the target area + if (info.CameraActor != null && !aircraftInRange.Any(kv => kv.Value)) + { + self.World.AddFrameEndTask(w => + { + camera = w.CreateActor(info.CameraActor, new TypeDictionary + { + new LocationInit(order.TargetLocation), + new OwnerInit(self.Owner), + }); + }); + } + + if (beacon != null) + { + self.World.AddFrameEndTask(w => + { + w.Remove(beacon); + beacon = null; + }); + } + + aircraftInRange[a] = true; + }; + + Action onExitRange = a => + { + aircraftInRange[a] = false; + + // Remove the camera and flare when the final plane leaves the target area + if (!aircraftInRange.Any(kv => kv.Value)) + { + if (camera != null) + { + camera.QueueActivity(new Wait(info.CameraRemoveDelay)); + camera.QueueActivity(new RemoveSelf()); + } + + if (flare != null) + { + flare.QueueActivity(new Wait(info.FlareRemoveDelay)); + flare.QueueActivity(new RemoveSelf()); + } + + camera = flare = null; + } + }; + self.World.AddFrameEndTask(w => { - var notification = self.Owner.IsAlliedWith(self.World.RenderPlayer) ? Info.LaunchSound : Info.IncomingSound; - Sound.Play(notification); - - Actor flare = null; - if (info.FlareType != null) + if (info.FlareActor != null) { - flare = w.CreateActor(info.FlareType, new TypeDictionary + flare = w.CreateActor(info.FlareActor, new TypeDictionary { new LocationInit(order.TargetLocation), new OwnerInit(self.Owner), }); - - flare.QueueActivity(new Wait(info.FlareTime)); - flare.QueueActivity(new RemoveSelf()); } + var notification = self.Owner.IsAlliedWith(self.World.RenderPlayer) ? Info.LaunchSound : Info.IncomingSound; + Sound.Play(notification); + for (var i = -info.SquadSize / 2; i <= info.SquadSize / 2; i++) { // Even-sized squads skip the lead plane @@ -77,8 +140,8 @@ namespace OpenRA.Mods.RA // Includes the 90 degree rotation between body and world coordinates var so = info.SquadOffset; - var spawnOffset = new WVec(i*so.Y, -Math.Abs(i)*so.X, 0).Rotate(attackRotation); - var targetOffset = new WVec(i*so.Y, 0, 0).Rotate(attackRotation); + var spawnOffset = new WVec(i * so.Y, -Math.Abs(i) * so.X, 0).Rotate(attackRotation); + var targetOffset = new WVec(i * so.Y, 0, 0).Rotate(attackRotation); var a = w.CreateActor(info.UnitType, new TypeDictionary { @@ -87,13 +150,15 @@ namespace OpenRA.Mods.RA new FacingInit(attackFacing), }); - a.Trait().SetTarget(target + targetOffset); - - if (flare != null) - a.QueueActivity(new CallFunc(() => flare.Destroy())); + var attack = a.Trait(); + attack.SetTarget(target + targetOffset); + attack.OnEnteredAttackRange += onEnterRange; + attack.OnExitedAttackRange += onExitRange; + attack.OnRemovedFromWorld += onExitRange; a.QueueActivity(new Fly(a, Target.FromPos(finishEdge + spawnOffset))); a.QueueActivity(new RemoveSelf()); + aircraftInRange.Add(a, false); } }); } diff --git a/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs b/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs index 23f3195317..58daddbfc1 100644 --- a/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs @@ -34,8 +34,10 @@ namespace OpenRA.Mods.RA return new SelectTarget(order, manager, this); } - public override void Activate(Actor self, Order order) + public override void Activate(Actor self, Order order, SupportPowerManager manager) { + base.Activate(self, order, manager); + foreach (var target in UnitsInRange(order.ExtraLocation)) { var cs = target.Trait(); diff --git a/OpenRA.Mods.RA/SupportPowers/GpsPower.cs b/OpenRA.Mods.RA/SupportPowers/GpsPower.cs index 6f03183fdd..7eef20f56d 100755 --- a/OpenRA.Mods.RA/SupportPowers/GpsPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/GpsPower.cs @@ -97,8 +97,10 @@ namespace OpenRA.Mods.RA self.Owner.PlayerActor.Trait().Powers[key].Activate(new Order()); } - public override void Activate(Actor self, Order order) + public override void Activate(Actor self, Order order, SupportPowerManager manager) { + base.Activate(self, order, manager); + self.World.AddFrameEndTask(w => { Sound.PlayToPlayer(self.Owner, Info.LaunchSound); diff --git a/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs b/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs index 31cdf45257..1d78b2eafc 100644 --- a/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs @@ -34,8 +34,10 @@ namespace OpenRA.Mods.RA return new SelectTarget(order, manager, this); } - public override void Activate(Actor self, Order order) + public override void Activate(Actor self, Order order, SupportPowerManager manager) { + base.Activate(self, order, manager); + self.Trait().PlayCustomAnim(self, "active"); Sound.Play("ironcur9.aud", order.TargetLocation.CenterPosition); diff --git a/OpenRA.Mods.RA/SupportPowers/NukePower.cs b/OpenRA.Mods.RA/SupportPowers/NukePower.cs index 715e0d0835..d62da05d6d 100755 --- a/OpenRA.Mods.RA/SupportPowers/NukePower.cs +++ b/OpenRA.Mods.RA/SupportPowers/NukePower.cs @@ -38,8 +38,10 @@ namespace OpenRA.Mods.RA return new SelectGenericPowerTarget(order, manager, "nuke", MouseButton.Left); } - public override void Activate(Actor self, Order order) + public override void Activate(Actor self, Order order, SupportPowerManager manager) { + base.Activate(self, order, manager); + if (self.Owner.IsAlliedWith(self.World.RenderPlayer)) Sound.Play(Info.LaunchSound); else diff --git a/OpenRA.Mods.RA/SupportPowers/ParatroopersPower.cs b/OpenRA.Mods.RA/SupportPowers/ParatroopersPower.cs index 85a764017d..8bf95cd3c1 100755 --- a/OpenRA.Mods.RA/SupportPowers/ParatroopersPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/ParatroopersPower.cs @@ -33,8 +33,10 @@ namespace OpenRA.Mods.RA { public ParatroopersPower(Actor self, ParatroopersPowerInfo info) : base(self, info) { } - public override void Activate(Actor self, Order order) + public override void Activate(Actor self, Order order, SupportPowerManager manager) { + base.Activate(self, order, manager); + var items = (Info as ParatroopersPowerInfo).DropItems; var startPos = self.World.ChooseRandomEdgeCell(); diff --git a/OpenRA.Mods.RA/SupportPowers/SonarPulsePower.cs b/OpenRA.Mods.RA/SupportPowers/SonarPulsePower.cs index 3c65745a2a..621ff46278 100755 --- a/OpenRA.Mods.RA/SupportPowers/SonarPulsePower.cs +++ b/OpenRA.Mods.RA/SupportPowers/SonarPulsePower.cs @@ -18,8 +18,10 @@ namespace OpenRA.Mods.RA public class SonarPulsePower : SupportPower { public SonarPulsePower(Actor self, SonarPulsePowerInfo info) : base(self, info) { } - public override void Activate(Actor self, Order order) + public override void Activate(Actor self, Order order, SupportPowerManager manager) { + base.Activate(self, order, manager); + // TODO: Reveal submarines // Should this play for all players? diff --git a/OpenRA.Mods.RA/SupportPowers/SpyPlanePower.cs b/OpenRA.Mods.RA/SupportPowers/SpyPlanePower.cs index 722a504613..fde15507aa 100755 --- a/OpenRA.Mods.RA/SupportPowers/SpyPlanePower.cs +++ b/OpenRA.Mods.RA/SupportPowers/SpyPlanePower.cs @@ -25,8 +25,10 @@ namespace OpenRA.Mods.RA { public SpyPlanePower(Actor self, SpyPlanePowerInfo info) : base(self, info) { } - public override void Activate(Actor self, Order order) + public override void Activate(Actor self, Order order, SupportPowerManager manager) { + base.Activate(self, order, manager); + var enterCell = self.World.ChooseRandomEdgeCell(); var altitude = Rules.Info["u2"].Traits.Get().CruiseAltitude; diff --git a/OpenRA.Mods.RA/SupportPowers/SupportPower.cs b/OpenRA.Mods.RA/SupportPowers/SupportPower.cs index f55b13c043..6817ab41de 100755 --- a/OpenRA.Mods.RA/SupportPowers/SupportPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/SupportPower.cs @@ -1,6 +1,6 @@ #region Copyright & License Information /* - * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) + * Copyright 2007-2014 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, @@ -8,6 +8,7 @@ */ #endregion +using OpenRA.Mods.RA.Effects; using OpenRA.Traits; namespace OpenRA.Mods.RA @@ -45,6 +46,7 @@ namespace OpenRA.Mods.RA { public readonly Actor self; public readonly SupportPowerInfo Info; + protected Beacon beacon; public SupportPower(Actor self, SupportPowerInfo info) { @@ -62,7 +64,26 @@ namespace OpenRA.Mods.RA Sound.PlayToPlayer(self.Owner, Info.EndChargeSound); } - public virtual void Activate(Actor self, Order order) { } + public virtual void Activate(Actor self, Order order, SupportPowerManager manager) + { + if (Info.DisplayBeacon) + { + beacon = new Beacon( + order.Player, + order.TargetLocation.CenterPosition, + Info.BeaconDuration, + Info.BeaconPalettePrefix); + + self.World.Add(beacon); + } + + if (Info.DisplayRadarPing && manager.RadarPings != null) + manager.RadarPings.Value.Add( + () => order.Player.IsAlliedWith(self.World.RenderPlayer), + order.TargetLocation.CenterPosition, + order.Player.Color.RGB, + Info.BeaconDuration); + } public virtual IOrderGenerator OrderGenerator(string order, SupportPowerManager manager) { diff --git a/OpenRA.Mods.RA/SupportPowers/SupportPowerManager.cs b/OpenRA.Mods.RA/SupportPowers/SupportPowerManager.cs index 9a09541944..7369dfc21e 100755 --- a/OpenRA.Mods.RA/SupportPowers/SupportPowerManager.cs +++ b/OpenRA.Mods.RA/SupportPowers/SupportPowerManager.cs @@ -188,24 +188,10 @@ namespace OpenRA.Mods.RA var power = Instances.First(i => !InstanceDisabled(i)); // Note: order.Subject is the *player* actor - power.Activate(power.self, order); + power.Activate(power.self, order, Manager); RemainingTime = TotalTime; notifiedCharging = notifiedReady = false; - if (power.Info.DisplayBeacon) - power.self.World.Add(new Beacon( - order.Player, - order.TargetLocation.CenterPosition, - power.Info.BeaconDuration, - power.Info.BeaconPalettePrefix)); - - if (power.Info.DisplayRadarPing && Manager.RadarPings != null) - Manager.RadarPings.Value.Add( - () => order.Player.IsAlliedWith(power.self.World.RenderPlayer), - order.TargetLocation.CenterPosition, - order.Player.Color.RGB, - power.Info.BeaconDuration); - if (Info.OneShot) Disabled = true; } diff --git a/OpenRA.Utility/UpgradeRules.cs b/OpenRA.Utility/UpgradeRules.cs index 0c8930ddd4..33154ffab3 100644 --- a/OpenRA.Utility/UpgradeRules.cs +++ b/OpenRA.Utility/UpgradeRules.cs @@ -143,6 +143,13 @@ namespace OpenRA.Utility ConvertFloatToRange(ref node.Value.Value); } + // Waypoint was renamed to Immobile + if (engineVersion < 20140312) + { + if (depth == 1 && node.Key == "Waypoint") + node.Key = "Immobile"; + } + UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); } } diff --git a/mods/cnc/rules/structures.yaml b/mods/cnc/rules/structures.yaml index d0f4c254e7..8961845dc1 100644 --- a/mods/cnc/rules/structures.yaml +++ b/mods/cnc/rules/structures.yaml @@ -385,6 +385,7 @@ HQ: UnitType: a10 DisplayBeacon: True DisplayRadarPing: True + CameraActor: camera SupportPowerChargeBar: FIX: diff --git a/mods/cnc/rules/system-actors.yaml b/mods/cnc/rules/system-actors.yaml index 467150a1bd..27a1412a54 100644 --- a/mods/cnc/rules/system-actors.yaml +++ b/mods/cnc/rules/system-actors.yaml @@ -31,17 +31,17 @@ CRATE: BodyOrientation: mpspawn: - Waypoint: + Immobile: RenderEditorOnly: BodyOrientation: waypoint: - Waypoint: + Immobile: RenderEditorOnly: BodyOrientation: CAMERA: - Aircraft: + Immobile: Health: HP: 1000 RevealsShroud: diff --git a/mods/d2k/rules/atreides.yaml b/mods/d2k/rules/atreides.yaml index 6c98002bc2..c601c4d67d 100644 --- a/mods/d2k/rules/atreides.yaml +++ b/mods/d2k/rules/atreides.yaml @@ -59,7 +59,6 @@ PALACEA: LongDesc: Ornithopter drops a load of parachuted\nbombs on your target UnitType: orni.bomber SelectTargetSound: - FlareType: CanPowerDown: DisabledOverlay: RequiresPower: diff --git a/mods/d2k/rules/ordos.yaml b/mods/d2k/rules/ordos.yaml index c414e0b203..53437f9f25 100644 --- a/mods/d2k/rules/ordos.yaml +++ b/mods/d2k/rules/ordos.yaml @@ -88,7 +88,6 @@ PALACEO: LongDesc: Ornithopter drops a load of parachuted\nbombs on your target UnitType: orni.bomber SelectTargetSound: - FlareType: CanPowerDown: DisabledOverlay: RequiresPower: diff --git a/mods/d2k/rules/system-actors.yaml b/mods/d2k/rules/system-actors.yaml index c3d4be1122..4542a03daa 100644 --- a/mods/d2k/rules/system-actors.yaml +++ b/mods/d2k/rules/system-actors.yaml @@ -85,12 +85,12 @@ CRATE: BodyOrientation: mpspawn: - Waypoint: + Immobile: RenderEditorOnly: BodyOrientation: waypoint: - Waypoint: + Immobile: RenderEditorOnly: BodyOrientation: diff --git a/mods/ra/rules/system-actors.yaml b/mods/ra/rules/system-actors.yaml index c3b93435aa..1fabf9381a 100644 --- a/mods/ra/rules/system-actors.yaml +++ b/mods/ra/rules/system-actors.yaml @@ -119,7 +119,7 @@ CRATE: BodyOrientation: CAMERA: - Aircraft: + Immobile: Health: HP: 1000 RevealsShroud: @@ -129,7 +129,7 @@ CAMERA: BodyOrientation: FLARE: - Aircraft: + Immobile: Health: HP: 1000 RevealsShroud: @@ -152,7 +152,7 @@ powerproxy.parabombs: AllowMultiple: yes UnitType: badr.bomber SelectTargetSound: slcttgt1.aud - FlareType: flare + FlareActor: flare powerproxy.sonarpulse: SonarPulsePower: @@ -165,12 +165,12 @@ powerproxy.sonarpulse: SelectTargetSound: slcttgt1.aud mpspawn: - Waypoint: + Immobile: RenderEditorOnly: BodyOrientation: waypoint: - Waypoint: + Immobile: RenderEditorOnly: BodyOrientation: diff --git a/mods/ts/rules/system-actors.yaml b/mods/ts/rules/system-actors.yaml index 3420574682..638c103e1a 100644 --- a/mods/ts/rules/system-actors.yaml +++ b/mods/ts/rules/system-actors.yaml @@ -1,10 +1,10 @@ mpspawn: - Waypoint: + Immobile: RenderEditorOnly: BodyOrientation: waypoint: - Waypoint: + Immobile: RenderEditorOnly: BodyOrientation: