diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index 179b0fa288..fb791dc7cd 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -419,7 +419,6 @@ - diff --git a/OpenRA.Mods.Common/Traits/Render/WithBuildingExplosion.cs b/OpenRA.Mods.Common/Traits/Render/WithBuildingExplosion.cs deleted file mode 100644 index b31f1a1985..0000000000 --- a/OpenRA.Mods.Common/Traits/Render/WithBuildingExplosion.cs +++ /dev/null @@ -1,64 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2016 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, either version 3 of - * the License, or (at your option) any later version. For more - * information, see COPYING. - */ -#endregion - -using System.Collections.Generic; -using OpenRA.Effects; -using OpenRA.Mods.Common.Effects; -using OpenRA.Traits; - -namespace OpenRA.Mods.Common.Traits.Render -{ - [Desc("Display explosions over the building footprint when it is destroyed.")] - class WithBuildingExplosionInfo : ITraitInfo, Requires - { - [Desc("'Image' where Sequences are looked up.")] - public readonly string Image = "explosion"; - - [Desc("Explosion sequence names to use.")] - [SequenceReference("Image")] public readonly string[] Sequences = { "building" }; - - [Desc("Delay the explosions by this many ticks.")] - public readonly int Delay = 0; - - [Desc("Custom palette name.")] - [PaletteReference] public readonly string Palette = "effect"; - - public object Create(ActorInitializer init) { return new WithBuildingExplosion(init.Self, this); } - } - - class WithBuildingExplosion : INotifyKilled - { - readonly WithBuildingExplosionInfo info; - readonly BuildingInfo buildingInfo; - - public WithBuildingExplosion(Actor self, WithBuildingExplosionInfo info) - { - this.info = info; - buildingInfo = self.Info.TraitInfo(); - } - - public void Killed(Actor self, AttackInfo e) - { - var cells = FootprintUtils.UnpathableTiles(self.Info.Name, buildingInfo, self.Location); - - if (info.Delay > 0) - self.World.AddFrameEndTask(w => w.Add(new DelayedAction(info.Delay, () => SpawnExplosions(self.World, cells)))); - else - SpawnExplosions(self.World, cells); - } - - void SpawnExplosions(World world, IEnumerable cells) - { - foreach (var c in cells) - world.AddFrameEndTask(w => w.Add(new SpriteEffect(w.Map.CenterOfCell(c), w, info.Image, info.Sequences.Random(w.SharedRandom), info.Palette))); - } - } -} diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs index 35d2495410..80c360ea8f 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs @@ -542,6 +542,19 @@ namespace OpenRA.Mods.Common.UtilityCommands RenameNodeKey(node, "LegacyBridgeLayer"); } + // Removed WithBuildingExplosion + if (engineVersion < 20161210) + { + if (node.Key == "WithBuildingExplosion") + { + node.Value.Nodes.Add(new MiniYamlNode("Type", "Footprint")); + node.Value.Nodes.Add(new MiniYamlNode("Weapon", "UnitExplodeSmall")); + node.Key = "Explodes"; + Console.WriteLine("The trait WithBuildingExplosion has been removed and superseded by additional 'Explodes' functionality."); + Console.WriteLine("If you need a delayed building explosion, use 'Explodes' with 'Type: Footprint' and a cosmetic weapon with warhead delay."); + } + } + UpgradeActorRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1); }