From df95b90de2cd2f636d4612232326a61606b9073e Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 3 Jun 2018 18:37:52 +0100 Subject: [PATCH] Remove CheckDeathTypes lint test. This causes false positive errors when mods use SpawnActorOnDeath to implement special-case death effects. --- OpenRA.Mods.Common/Lint/CheckDeathTypes.cs | 64 -------------------- OpenRA.Mods.Common/OpenRA.Mods.Common.csproj | 1 - 2 files changed, 65 deletions(-) delete mode 100644 OpenRA.Mods.Common/Lint/CheckDeathTypes.cs diff --git a/OpenRA.Mods.Common/Lint/CheckDeathTypes.cs b/OpenRA.Mods.Common/Lint/CheckDeathTypes.cs deleted file mode 100644 index a3c6b4604f..0000000000 --- a/OpenRA.Mods.Common/Lint/CheckDeathTypes.cs +++ /dev/null @@ -1,64 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2018 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; -using System.Linq; -using OpenRA.Mods.Common.Traits; -using OpenRA.Mods.Common.Traits.Render; -using OpenRA.Mods.Common.Warheads; -using OpenRA.Traits; - -namespace OpenRA.Mods.Common.Lint -{ - class CheckDeathTypes : ILintRulesPass - { - public void Run(Action emitError, Action emitWarning, Ruleset rules) - { - foreach (var actorInfo in rules.Actors) - { - var animations = actorInfo.Value.TraitInfos().ToList(); - if (!animations.Any()) - continue; - - var deathAnimationDeathtypes = animations.SelectMany(x => x.DeathTypes.Select(y => y.Key)).ToList(); - var spawnActorDeathtypes = actorInfo.Value.TraitInfos().Where(s => !string.IsNullOrEmpty(s.DeathType)).Select(a => a.DeathType); - var spawnActorOnAnyDeathType = actorInfo.Value.TraitInfos().Any(s => s.DeathType == null); - var deathTypes = deathAnimationDeathtypes.Concat(spawnActorDeathtypes).Distinct(); - if (!deathTypes.Any() || spawnActorOnAnyDeathType) - continue; - - var targetable = actorInfo.Value.GetAllTargetTypes(); - if (targetable.IsEmpty) - continue; - - foreach (var weaponInfo in rules.Weapons) - { - var warheads = weaponInfo.Value.Warheads.OfType().Where(dw => dw.Damage > 0); - - foreach (var warhead in warheads) - { - // This is a special warhead, like the one on `weathering` in D2k. - if (!warhead.DamageTypes.Any()) - continue; - - // This warhead cannot affect this actor. - if (!warhead.ValidTargets.Overlaps(targetable)) - continue; - - if (!warhead.DamageTypes.Overlaps(deathTypes)) - emitError("Actor type {0} doesn't define a death animation or spawn an actor on death for weapon {1}!" - .F(actorInfo.Key, weaponInfo.Key)); - } - } - } - } - } -} diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index 6140867220..ad5fb33e39 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -186,7 +186,6 @@ -