Split NukePower MissileImage from MissileWeapon.

This commit is contained in:
Mustafa Alperen Seki
2022-03-14 18:45:37 +03:00
committed by Matthias Mailänder
parent 0260884369
commit 60b123c641
7 changed files with 52 additions and 5 deletions

View File

@@ -25,18 +25,20 @@ namespace OpenRA.Mods.Common.Traits
{ {
[WeaponReference] [WeaponReference]
[FieldLoader.Require] [FieldLoader.Require]
[Desc("Weapon to use for the impact.", [Desc("Weapon to use for the impact.")]
"Also image to use for the missile.")]
public readonly string MissileWeapon = ""; public readonly string MissileWeapon = "";
[Desc("Delay (in ticks) after launch until the missile is spawned.")] [Desc("Delay (in ticks) after launch until the missile is spawned.")]
public readonly int MissileDelay = 0; public readonly int MissileDelay = 0;
[SequenceReference(nameof(MissileWeapon))] [Desc("Image to use for the missile.")]
public readonly string MissileImage = null;
[SequenceReference(nameof(MissileImage))]
[Desc("Sprite sequence for the ascending missile.")] [Desc("Sprite sequence for the ascending missile.")]
public readonly string MissileUp = "up"; public readonly string MissileUp = "up";
[SequenceReference(nameof(MissileWeapon))] [SequenceReference(nameof(MissileImage))]
[Desc("Sprite sequence for the descending missile.")] [Desc("Sprite sequence for the descending missile.")]
public readonly string MissileDown = "down"; public readonly string MissileDown = "down";
@@ -168,7 +170,7 @@ namespace OpenRA.Mods.Common.Traits
var skipAscent = info.SkipAscent || body == null; var skipAscent = info.SkipAscent || body == null;
var launchPos = skipAscent ? WPos.Zero : self.CenterPosition + body.LocalToWorld(info.SpawnOffset); var launchPos = skipAscent ? WPos.Zero : self.CenterPosition + body.LocalToWorld(info.SpawnOffset);
var missile = new NukeLaunch(self.Owner, info.MissileWeapon, info.WeaponInfo, palette, info.MissileUp, info.MissileDown, var missile = new NukeLaunch(self.Owner, info.MissileImage, info.WeaponInfo, palette, info.MissileUp, info.MissileDown,
launchPos, launchPos,
targetPosition, info.DetonationAltitude, info.RemoveMissileOnDetonation, targetPosition, info.DetonationAltitude, info.RemoveMissileOnDetonation,
info.FlightVelocity, info.MissileDelay, info.FlightDelay, skipAscent, info.FlightVelocity, info.MissileDelay, info.FlightDelay, skipAscent,

View File

@@ -0,0 +1,40 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 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 System.Linq;
namespace OpenRA.Mods.Common.UpdateRules.Rules
{
public class SplitNukePowerMissileImage : UpdateRule
{
public override string Name => "NukePower now defines the image for the missile with MissileImage.";
public override string Description =>
"NukePower used MissileWeapon field for as the name for missile image too.\n" +
"This function has been moved to its own MissileImage field.";
public override IEnumerable<string> UpdateActorNode(ModData modData, MiniYamlNode actorNode)
{
foreach (var nukePowerNode in actorNode.ChildrenMatching("NukePower"))
{
var missileWeaponNode = nukePowerNode.ChildrenMatching("MissileWeapon").FirstOrDefault();
if (missileWeaponNode != null)
{
var weapon = missileWeaponNode.NodeValue<string>();
nukePowerNode.AddNode(new MiniYamlNode("MissileImage", weapon));
}
}
yield break;
}
}
}

View File

@@ -92,6 +92,7 @@ namespace OpenRA.Mods.Common.UpdateRules
new AttackBomberFacingTolerance(), new AttackBomberFacingTolerance(),
new AttackFrontalFacingTolerance(), new AttackFrontalFacingTolerance(),
new RenameCloakTypes(), new RenameCloakTypes(),
new SplitNukePowerMissileImage(),
}) })
}; };

View File

@@ -806,6 +806,7 @@ TMPL:
LaunchSpeechNotification: NuclearWeaponLaunched LaunchSpeechNotification: NuclearWeaponLaunched
IncomingSpeechNotification: NuclearWarheadApproaching IncomingSpeechNotification: NuclearWarheadApproaching
MissileWeapon: atomic MissileWeapon: atomic
MissileImage: atomic
MissileDelay: 11 MissileDelay: 11
SpawnOffset: 3c0,0,-1c512 SpawnOffset: 3c0,0,-1c512
DisplayBeacon: True DisplayBeacon: True

View File

@@ -1066,6 +1066,7 @@ palace:
EndChargeSpeechNotification: DeathHandMissileReady EndChargeSpeechNotification: DeathHandMissileReady
IncomingSpeechNotification: MissileLaunchDetected IncomingSpeechNotification: MissileLaunchDetected
MissileWeapon: deathhand MissileWeapon: deathhand
MissileImage: deathhand
MissileDelay: 18 MissileDelay: 18
SpawnOffset: 32,816,0 SpawnOffset: 32,816,0
DetonationAltitude: 3c0 DetonationAltitude: 3c0

View File

@@ -45,6 +45,7 @@ MSLO:
InsufficientPowerSpeechNotification: InsufficientPower InsufficientPowerSpeechNotification: InsufficientPower
IncomingSpeechNotification: AbombLaunchDetected IncomingSpeechNotification: AbombLaunchDetected
MissileWeapon: atomic MissileWeapon: atomic
MissileImage: atomic
MissileDelay: 5 MissileDelay: 5
SpawnOffset: 1c0,427,0 SpawnOffset: 1c0,427,0
DisplayTimerRelationships: Ally, Neutral, Enemy DisplayTimerRelationships: Ally, Neutral, Enemy

View File

@@ -527,6 +527,7 @@ NAMISL:
IncomingSpeechNotification: MissileLaunchDetected IncomingSpeechNotification: MissileLaunchDetected
LaunchSound: icbm1.aud LaunchSound: icbm1.aud
MissileWeapon: ClusterMissile MissileWeapon: ClusterMissile
MissileImage: ClusterMissile
MissileDelay: 18 MissileDelay: 18
DetonationAltitude: 5c0 DetonationAltitude: 5c0
SpawnOffset: 0, 0c128, 0c512 SpawnOffset: 0, 0c128, 0c512