diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index 836500e69f..5d346b99d0 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -297,7 +297,6 @@ - @@ -325,6 +324,7 @@ + diff --git a/OpenRA.Mods.Common/Scripting/Properties/DemolitionProperties.cs b/OpenRA.Mods.Common/Scripting/Properties/DemolitionProperties.cs index 19fe72e7dd..dc488b5bcc 100644 --- a/OpenRA.Mods.Common/Scripting/Properties/DemolitionProperties.cs +++ b/OpenRA.Mods.Common/Scripting/Properties/DemolitionProperties.cs @@ -17,21 +17,21 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Scripting { [ScriptPropertyGroup("Combat")] - public class DemolitionProperties : ScriptActorProperties, Requires, Requires + public class DemolitionProperties : ScriptActorProperties, Requires, Requires { - readonly C4DemolitionInfo info; + readonly DemolitionInfo info; public DemolitionProperties(ScriptContext context, Actor self) : base(context, self) { - info = Self.Info.TraitInfo(); + info = Self.Info.TraitInfo(); } [ScriptActorPropertyActivity] [Desc("Demolish the target actor.")] public void Demolish(Actor target) { - Self.QueueActivity(new Demolish(Self, target, info.EnterBehaviour, info.C4Delay, + Self.QueueActivity(new Demolish(Self, target, info.EnterBehaviour, info.DetonationDelay, info.Flashes, info.FlashesDelay, info.FlashInterval, info.FlashDuration)); } } diff --git a/OpenRA.Mods.Common/Traits/C4Demolition.cs b/OpenRA.Mods.Common/Traits/Demolition.cs similarity index 83% rename from OpenRA.Mods.Common/Traits/C4Demolition.cs rename to OpenRA.Mods.Common/Traits/Demolition.cs index 5c0f97a6af..c979613b68 100644 --- a/OpenRA.Mods.Common/Traits/C4Demolition.cs +++ b/OpenRA.Mods.Common/Traits/Demolition.cs @@ -18,11 +18,11 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { - class C4DemolitionInfo : ITraitInfo + class DemolitionInfo : ITraitInfo { - [Desc("Delay to demolish the target once the C4 is planted. " + + [Desc("Delay to demolish the target once the explosive device is planted. " + "Measured in game ticks. Default is 1.8 seconds.")] - public readonly int C4Delay = 45; + public readonly int DetonationDelay = 45; [Desc("Number of times to flash the target.")] public readonly int Flashes = 3; @@ -43,21 +43,21 @@ namespace OpenRA.Mods.Common.Traits [Desc("Voice string when planting explosive charges.")] [VoiceReference] public readonly string Voice = "Action"; - public object Create(ActorInitializer init) { return new C4Demolition(this); } + public object Create(ActorInitializer init) { return new Demolition(this); } } - class C4Demolition : IIssueOrder, IResolveOrder, IOrderVoice + class Demolition : IIssueOrder, IResolveOrder, IOrderVoice { - readonly C4DemolitionInfo info; + readonly DemolitionInfo info; - public C4Demolition(C4DemolitionInfo info) + public Demolition(DemolitionInfo info) { this.info = info; } public IEnumerable Orders { - get { yield return new C4DemolitionOrderTargeter(); } + get { yield return new DemolitionOrderTargeter("c4"); } } public Order IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued) @@ -88,7 +88,7 @@ namespace OpenRA.Mods.Common.Traits self.CancelActivity(); self.SetTargetLine(target, Color.Red); - self.QueueActivity(new Demolish(self, target.Actor, info.EnterBehaviour, info.C4Delay, + self.QueueActivity(new Demolish(self, target.Actor, info.EnterBehaviour, info.DetonationDelay, info.Flashes, info.FlashesDelay, info.FlashInterval, info.FlashDuration)); } @@ -97,10 +97,10 @@ namespace OpenRA.Mods.Common.Traits return order.OrderString == "C4" ? info.Voice : null; } - class C4DemolitionOrderTargeter : UnitOrderTargeter + class DemolitionOrderTargeter : UnitOrderTargeter { - public C4DemolitionOrderTargeter() - : base("C4", 6, "c4", true, false) { } + public DemolitionOrderTargeter(string cursor) + : base("C4", 6, cursor, true, false) { } public override bool CanTargetActor(Actor self, Actor target, TargetModifiers modifiers, ref string cursor) { diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs index 8d32a6d8de..4fa6ad33ba 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs @@ -777,6 +777,17 @@ namespace OpenRA.Mods.Common.UtilityCommands node.Value.Nodes.RemoveAll(x => x.Key == "StartsRevealed"); } + if (engineVersion < 20160515) + { + // Use generic naming for building demolition using explosives. + if (node.Key == "C4Demolition") + node.Key = "Demolition"; + + foreach (var n in node.Value.Nodes) + if (n.Key == "C4Delay") + n.Key = "DetonationDelay"; + } + UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); } } diff --git a/mods/cnc/rules/infantry.yaml b/mods/cnc/rules/infantry.yaml index dbf50f99a9..defa48affd 100644 --- a/mods/cnc/rules/infantry.yaml +++ b/mods/cnc/rules/infantry.yaml @@ -174,8 +174,8 @@ RMBO: Range: 6c0 AutoTarget: ScanRadius: 6 - C4Demolition: - C4Delay: 45 + Demolition: + DetonationDelay: 45 Voice: Demolish Armament: Weapon: Sniper diff --git a/mods/d2k/rules/infantry.yaml b/mods/d2k/rules/infantry.yaml index dc9f4fe5f9..428c22c8f2 100644 --- a/mods/d2k/rules/infantry.yaml +++ b/mods/d2k/rules/infantry.yaml @@ -241,8 +241,8 @@ saboteur: HP: 400 Mobile: Speed: 43 - C4Demolition: - C4Delay: 0 + Demolition: + DetonationDelay: 0 Flashes: 0 EnterBehaviour: Suicide -AutoTarget: diff --git a/mods/ra/rules/infantry.yaml b/mods/ra/rules/infantry.yaml index d663b5b0d7..0e7bf67f78 100644 --- a/mods/ra/rules/infantry.yaml +++ b/mods/ra/rules/infantry.yaml @@ -267,8 +267,8 @@ E7: Voice: Move RevealsShroud: Range: 6c0 - C4Demolition: - C4Delay: 45 + Demolition: + DetonationDelay: 45 Voice: Demolish Passenger: PipType: Red diff --git a/mods/ts/rules/gdi-infantry.yaml b/mods/ts/rules/gdi-infantry.yaml index a0b5e26d9b..2d46d946df 100644 --- a/mods/ts/rules/gdi-infantry.yaml +++ b/mods/ts/rules/gdi-infantry.yaml @@ -125,8 +125,8 @@ GHOST: CrushSound: squishy2.aud AttackFrontal: Voice: Attack - C4Demolition: - C4Delay: 45 + Demolition: + DetonationDelay: 45 Voice: Attack WithInfantryBody: AttackSequence: shoot