diff --git a/OpenRA.Mods.Common/UpdateRules/Rules/20200503/RenameStances.cs b/OpenRA.Mods.Common/UpdateRules/Rules/20200503/RenameStances.cs new file mode 100644 index 0000000000..cc8f7109ec --- /dev/null +++ b/OpenRA.Mods.Common/UpdateRules/Rules/20200503/RenameStances.cs @@ -0,0 +1,104 @@ +#region Copyright & License Information +/* + * Copyright 2007-2020 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; + +namespace OpenRA.Mods.Common.UpdateRules.Rules +{ + public class RenameStances : UpdateRule + { + public override string Name { get { return "Renamed player 'Stances' to 'Relationships'."; } } + public override string Description + { + get + { + return "'Stances' in regards to a player have been renamed to 'Relationships'.\n" + + "The yaml values did not change."; + } + } + + readonly (string TraitName, string OldName, string NewName)[] traits = + { + ("Disguise", "ValidStances", "ValidRelationships"), + ("Infiltrates", "ValidStances", "ValidRelationships"), + ("AcceptsDeliveredCash", "ValidStances", "ValidRelationships"), + ("AcceptsDeliveredExperience", "ValidStances", "ValidRelationships"), + ("Armament", "TargetStances", "TargetRelationships"), + ("Armament", "ForceTargetStances", "ForceTargetRelationships"), + ("AutoTargetPriority", "ValidStances", "ValidRelationships"), + ("CaptureManagerBotModule", "CapturableStances", "CapturableRelationships"), + ("Capturable", "ValidStances", "ValidRelationships"), + ("Captures", "PlayerExperienceStances", "PlayerExperienceRelationships"), + ("ProximityExternalCondition", "ValidStances", "ValidRelationships"), + ("CreatesShroud", "ValidStances", "ValidRelationships"), + ("Demolition", "TargetStances", "TargetRelationships"), + ("Demolition", "ForceTargetStances", "ForceTargetRelationships"), + ("EngineerRepair", "ValidStances", "ValidRelationships"), + ("GivesBounty", "ValidStances", "ValidRelationships"), + ("GivesExperience", "ValidStances", "ValidRelationships"), + ("JamsMissiles", "DeflectionStances", "DeflectionRelationships"), + ("FrozenUnderFog", "AlwaysVisibleStances", "AlwaysVisibleRelationships"), + ("HiddenUnderShroud", "AlwaysVisibleStances", "AlwaysVisibleRelationships"), + ("HiddenUnderFog", "AlwaysVisibleStances", "AlwaysVisibleRelationships"), + ("AppearsOnRadar", "ValidStances", "ValidRelationships"), + ("CashTricklerBar", "DisplayStances", "DisplayRelationships"), + ("SupportPowerChargeBar", "DisplayStances", "DisplayRelationships"), + ("WithAmmoPipsDecoration", "ValidStances", "ValidRelationships"), + ("WithCargoPipsDecoration", "ValidStances", "ValidRelationships"), + ("WithDecoration", "ValidStances", "ValidRelationships"), + ("WithHarvesterPipsDecoration", "ValidStances", "ValidRelationships"), + ("WithNameTagDecoration", "ValidStances", "ValidRelationships"), + ("WithResourceStoragePipsDecoration", "ValidStances", "ValidRelationships"), + ("WithTextDecoration", "ValidStances", "ValidRelationships"), + ("WithRangeCircle", "ValidStances", "ValidRelationships"), + ("RevealOnDeath", "RevealForStances", "RevealForRelationships"), + ("RevealOnFire", "RevealForStancesRelativeToTarget", "RevealForRelationships"), + ("RevealsMap", "ValidStances", "ValidRelationships"), + ("RevealsShroud", "ValidStances", "ValidRelationships"), + ("VoiceAnnouncement", "ValidStances", "ValidRelationships"), + ("GrantExternalConditionPower", "ValidStances", "ValidRelationships"), + ("NukePower", "CameraStances", "CameraRelationships"), + ("NukePower", "DisplayTimerStances", "DisplayTimerRelationships"), + ("AttackOrderPower", "DisplayTimerStances", "DisplayTimerRelationships"), + ("ChronoshiftPower", "DisplayTimerStances", "DisplayTimerRelationships"), + ("DropPodsPower", "DisplayTimerStances", "DisplayTimerRelationships"), + ("GpsPower", "DisplayTimerStances", "DisplayTimerRelationships"), + ("GrantPrerequisiteChargeDrainPower", "DisplayTimerStances", "DisplayTimerRelationships"), + ("IonCannonPower", "DisplayTimerStances", "DisplayTimerRelationships"), + ("AirstrikePower", "DisplayTimerStances", "DisplayTimerRelationships"), + ("GrantExternalConditionPower", "DisplayTimerStances", "DisplayTimerRelationships"), + ("ParatroopersPower", "DisplayTimerStances", "DisplayTimerRelationships"), + ("ProduceActorPower", "DisplayTimerStances", "DisplayTimerRelationships"), + ("SpawnActorPower", "DisplayTimerStances", "DisplayTimerRelationships"), + ("TooltipDescription", "ValidStances", "ValidRelationships") + }; + + public override IEnumerable UpdateActorNode(ModData modData, MiniYamlNode actorNode) + { + foreach (var field in traits) + foreach (var traitNode in actorNode.ChildrenMatching(field.TraitName)) + traitNode.RenameChildrenMatching(field.OldName, field.NewName); + + yield break; + } + + public override IEnumerable UpdateWeaponNode(ModData modData, MiniYamlNode weaponNode) + { + foreach (var projectileNode in weaponNode.ChildrenMatching("Projectile")) + projectileNode.RenameChildrenMatching("ValidBounceBlockerStances", "ValidBounceBlockerRelationships"); + + foreach (var warheadNode in weaponNode.ChildrenMatching("Warhead")) + warheadNode.RenameChildrenMatching("ValidStances", "ValidRelationships"); + + yield break; + } + } +} diff --git a/OpenRA.Mods.Common/UpdateRules/UpdatePath.cs b/OpenRA.Mods.Common/UpdateRules/UpdatePath.cs index f8affbf61f..c58cb3f278 100644 --- a/OpenRA.Mods.Common/UpdateRules/UpdatePath.cs +++ b/OpenRA.Mods.Common/UpdateRules/UpdatePath.cs @@ -73,6 +73,7 @@ namespace OpenRA.Mods.Common.UpdateRules new RenameSelfHealing(), new ReplaceBurns(), new RemoveMuzzleSplitFacings(), + new RenameStances(), new RemoveTurnToDock(), new RenameSmudgeSmokeFields(), new RenameCircleContrast(),