Skip to content

Commit

Permalink
Split NukePower MissileImage from MissileWeapon.
Browse files Browse the repository at this point in the history
  • Loading branch information
MustaphaTR authored and Mailaender committed Apr 12, 2022
1 parent 0260884 commit 60b123c
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 5 deletions.
12 changes: 7 additions & 5 deletions OpenRA.Mods.Common/Traits/SupportPowers/NukePower.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,20 @@ public class NukePowerInfo : SupportPowerInfo
{
[WeaponReference]
[FieldLoader.Require]
[Desc("Weapon to use for the impact.",
"Also image to use for the missile.")]
[Desc("Weapon to use for the impact.")]
public readonly string MissileWeapon = "";

[Desc("Delay (in ticks) after launch until the missile is spawned.")]
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.")]
public readonly string MissileUp = "up";

[SequenceReference(nameof(MissileWeapon))]
[SequenceReference(nameof(MissileImage))]
[Desc("Sprite sequence for the descending missile.")]
public readonly string MissileDown = "down";

Expand Down Expand Up @@ -168,7 +170,7 @@ public void Activate(Actor self, WPos targetPosition)
var skipAscent = info.SkipAscent || body == null;
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,
targetPosition, info.DetonationAltitude, info.RemoveMissileOnDetonation,
info.FlightVelocity, info.MissileDelay, info.FlightDelay, skipAscent,
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}
}
}
1 change: 1 addition & 0 deletions OpenRA.Mods.Common/UpdateRules/UpdatePath.cs
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ public class UpdatePath
new AttackBomberFacingTolerance(),
new AttackFrontalFacingTolerance(),
new RenameCloakTypes(),
new SplitNukePowerMissileImage(),
})
};

Expand Down
1 change: 1 addition & 0 deletions mods/cnc/rules/structures.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -806,6 +806,7 @@ TMPL:
LaunchSpeechNotification: NuclearWeaponLaunched
IncomingSpeechNotification: NuclearWarheadApproaching
MissileWeapon: atomic
MissileImage: atomic
MissileDelay: 11
SpawnOffset: 3c0,0,-1c512
DisplayBeacon: True
Expand Down
1 change: 1 addition & 0 deletions mods/d2k/rules/structures.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1066,6 +1066,7 @@ palace:
EndChargeSpeechNotification: DeathHandMissileReady
IncomingSpeechNotification: MissileLaunchDetected
MissileWeapon: deathhand
MissileImage: deathhand
MissileDelay: 18
SpawnOffset: 32,816,0
DetonationAltitude: 3c0
Expand Down
1 change: 1 addition & 0 deletions mods/ra/rules/structures.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ MSLO:
InsufficientPowerSpeechNotification: InsufficientPower
IncomingSpeechNotification: AbombLaunchDetected
MissileWeapon: atomic
MissileImage: atomic
MissileDelay: 5
SpawnOffset: 1c0,427,0
DisplayTimerRelationships: Ally, Neutral, Enemy
Expand Down
1 change: 1 addition & 0 deletions mods/ts/rules/nod-structures.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,7 @@ NAMISL:
IncomingSpeechNotification: MissileLaunchDetected
LaunchSound: icbm1.aud
MissileWeapon: ClusterMissile
MissileImage: ClusterMissile
MissileDelay: 18
DetonationAltitude: 5c0
SpawnOffset: 0, 0c128, 0c512
Expand Down

0 comments on commit 60b123c

Please sign in to comment.