Remove TargetableSubmarine

This commit is contained in:
atlimit8
2015-07-16 00:33:25 -05:00
parent ecc15d9ae6
commit a6cd770dcf
4 changed files with 55 additions and 48 deletions

View File

@@ -1974,6 +1974,45 @@ namespace OpenRA.Mods.Common.UtilityCommands
else if (node.Key == "-TargetableUnit" || node.Key == "-TargetableBuilding")
node.Key = "-Targetable";
}
else if (depth == 0)
{
// Split TargetableSubmarine into two Targetable traits
var targetableSubmarine = node.Value.Nodes.FirstOrDefault(n => n.Key == "TargetableSubmarine");
if (targetableSubmarine != null)
{
node.Value.Nodes.RemoveAll(n => n.Key == "-Targetable");
targetableSubmarine.Key = "Targetable";
targetableSubmarine.Value.Nodes.Add(new MiniYamlNode("UpgradeTypes", "underwater"));
targetableSubmarine.Value.Nodes.Add(new MiniYamlNode("UpgradeMaxEnabledLevel", "0"));
var cloakedTargetTypes = targetableSubmarine.Value.Nodes.FirstOrDefault(n => n.Key == "CloakedTargetTypes");
if (cloakedTargetTypes != null)
{
targetableSubmarine.Value.Nodes.Remove(cloakedTargetTypes);
cloakedTargetTypes.Key = "TargetTypes";
}
else
cloakedTargetTypes = new MiniYamlNode("TargetTypes", "");
node.Value.Nodes.Add(new MiniYamlNode("Targetable@UNDERWATER", "", new List<MiniYamlNode> {
cloakedTargetTypes,
new MiniYamlNode("UpgradeTypes", "underwater"),
new MiniYamlNode("UpgradeMinEnabledLevel", "1")
}));
}
// Add `WhileCloakedUpgrades: underwater` to Cloak trait if `CloakTypes: Underwater`
var cloak = node.Value.Nodes.FirstOrDefault(n => (n.Key == "Cloak" || n.Key.StartsWith("Cloak@"))
&& n.Value.Nodes.Any(p => p.Key == "CloakTypes" && p.Value.Value == "Underwater"));
if (cloak != null)
cloak.Value.Nodes.Add(new MiniYamlNode("WhileCloakedUpgrades", "underwater"));
// Remove split traits if TargetableSubmarine was removed
var untargetableSubmarine = node.Value.Nodes.FirstOrDefault(n => n.Key == "-TargetableSubmarine");
if (untargetableSubmarine != null)
{
untargetableSubmarine.Key = "-Targetable";
node.Value.Nodes.Add(new MiniYamlNode("-Targetable@UNDERWATER", ""));
}
}
}
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);

View File

@@ -112,7 +112,6 @@
<Compile Include="Traits\SupportPowers\GpsPower.cs" />
<Compile Include="Traits\SupportPowers\ParatroopersPower.cs" />
<Compile Include="Traits\SpawnActorOnDeath.cs" />
<Compile Include="Traits\TargetableSubmarine.cs" />
<Compile Include="Scripting\Properties\ChronosphereProperties.cs" />
<Compile Include="Scripting\Properties\ParadropProperties.cs" />
<Compile Include="Scripting\Properties\ParatroopersProperties.cs" />

View File

@@ -1,41 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 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. For more information,
* see COPYING.
*/
#endregion
using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
namespace OpenRA.Mods.RA.Traits
{
public class TargetableSubmarineInfo : TargetableInfo, Requires<CloakInfo>
{
public readonly string[] CloakedTargetTypes = { };
public override object Create(ActorInitializer init) { return new TargetableSubmarine(init.Self, this); }
}
public class TargetableSubmarine : Targetable
{
readonly TargetableSubmarineInfo info;
public TargetableSubmarine(Actor self, TargetableSubmarineInfo info)
: base(self, info)
{
this.info = info;
}
public override string[] TargetTypes
{
get
{
return cloak.Cloaked ? info.CloakedTargetTypes : info.TargetTypes;
}
}
}
}

View File

@@ -19,16 +19,21 @@ SS:
Speed: 71
RevealsShroud:
Range: 6c0
-Targetable:
TargetableSubmarine:
Targetable:
TargetTypes: Ground, Water, Repair
CloakedTargetTypes: Underwater, Repair
UpgradeTypes: underwater
UpgradeMaxEnabledLevel: 0
Targetable@UNDERWATER:
TargetTypes: Underwater, Repair
UpgradeTypes: underwater
UpgradeMinEnabledLevel: 1
Cloak:
CloakTypes: Underwater
InitialDelay: 0
CloakDelay: 50
CloakSound: subshow1.aud
UncloakSound: subshow1.aud
WhileCloakedUpgrades: underwater
Armament:
Weapon: TorpTube
LocalOffset: 0,-171,0, 0,171,0
@@ -68,16 +73,21 @@ MSUB:
Speed: 42
RevealsShroud:
Range: 6c0
-Targetable:
TargetableSubmarine:
Targetable:
TargetTypes: Ground, Water, Repair
CloakedTargetTypes: Underwater, Repair
UpgradeTypes: underwater
UpgradeMaxEnabledLevel: 0
Targetable@UNDERWATER:
TargetTypes: Underwater, Repair
UpgradeTypes: underwater
UpgradeMinEnabledLevel: 1
Cloak:
CloakTypes: Underwater
InitialDelay: 0
CloakDelay: 100
CloakSound: subshow1.aud
UncloakSound: subshow1.aud
WhileCloakedUpgrades: underwater
Armament:
Weapon: SubMissile
LocalOffset: 0,-171,0, 0,171,0