Upgrade rule for AmmoPool.SelfReloads removal

This commit is contained in:
reaperrr
2017-06-23 19:18:17 +02:00
committed by Paul Chote
parent 6f95080aa4
commit ded92f394c
3 changed files with 69 additions and 9 deletions

View File

@@ -1053,6 +1053,66 @@ namespace OpenRA.Mods.Common.UtilityCommands
} }
} }
// Self-reload properties were decoupled from AmmoPool to ReloadAmmoPool.
if (engineVersion < 20171104)
{
var poolNumber = 0;
var ammoPools = node.Value.Nodes.Where(n => n.Key.StartsWith("AmmoPool", StringComparison.Ordinal));
foreach (var pool in ammoPools.ToList())
{
var selfReloads = pool.Value.Nodes.FirstOrDefault(n => n.Key == "SelfReloads");
if (selfReloads != null && FieldLoader.GetValue<bool>("SelfReloads", selfReloads.Value.Value))
{
poolNumber++;
var name = pool.Value.Nodes.FirstOrDefault(n => n.Key == "Name");
var selfReloadDelay = pool.Value.Nodes.FirstOrDefault(n => n.Key == "SelfReloadDelay");
var reloadCount = pool.Value.Nodes.FirstOrDefault(n => n.Key == "ReloadCount");
var reset = pool.Value.Nodes.FirstOrDefault(n => n.Key == "ResetOnFire");
var rearmSound = pool.Value.Nodes.FirstOrDefault(n => n.Key == "RearmSound");
var reloadOnCond = new MiniYamlNode("ReloadAmmoPool@" + poolNumber.ToString(), "");
if (name != null)
{
var rap = new MiniYamlNode("ReloadAmmoPool", name.Value.Value);
reloadOnCond.Value.Nodes.Add(rap);
}
if (selfReloadDelay != null)
{
var rd = selfReloadDelay;
RenameNodeKey(rd, "Delay");
reloadOnCond.Value.Nodes.Add(rd);
pool.Value.Nodes.Remove(selfReloads);
pool.Value.Nodes.Remove(selfReloadDelay);
}
if (reloadCount != null)
{
var rc = reloadCount;
RenameNodeKey(rc, "Count");
reloadOnCond.Value.Nodes.Add(rc);
pool.Value.Nodes.Remove(reloadCount);
}
if (reset != null)
{
reloadOnCond.Value.Nodes.Add(reset);
pool.Value.Nodes.Remove(reset);
}
if (rearmSound != null)
{
var rs = rearmSound;
RenameNodeKey(rs, "Sound");
reloadOnCond.Value.Nodes.Add(rs);
pool.Value.Nodes.Remove(rearmSound);
}
node.Value.Nodes.Add(reloadOnCond);
}
}
}
UpgradeActorRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1); UpgradeActorRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1);
} }

View File

@@ -89,9 +89,6 @@ HELI:
AmmoPool: AmmoPool:
Ammo: 10 Ammo: 10
PipCount: 5 PipCount: 5
SelfReloads: true
ReloadCount: 1
SelfReloadDelay: 40
WithIdleOverlay@ROTORAIR: WithIdleOverlay@ROTORAIR:
Offset: 0,0,85 Offset: 0,0,85
Sequence: rotor Sequence: rotor
@@ -108,6 +105,9 @@ HELI:
EmptyWeapon: HeliExplode EmptyWeapon: HeliExplode
SelectionDecorations: SelectionDecorations:
VisualBounds: 30,24 VisualBounds: 30,24
ReloadAmmoPool:
Delay: 40
Count: 1
ORCA: ORCA:
Inherits: ^Helicopter Inherits: ^Helicopter
@@ -144,9 +144,6 @@ ORCA:
AmmoPool: AmmoPool:
Ammo: 6 Ammo: 6
PipCount: 6 PipCount: 6
SelfReloads: true
ReloadCount: 2
SelfReloadDelay: 100
SpawnActorOnDeath: SpawnActorOnDeath:
Actor: ORCA.Husk Actor: ORCA.Husk
Explodes: Explodes:
@@ -156,6 +153,9 @@ ORCA:
MoveSequence: move MoveSequence: move
SelectionDecorations: SelectionDecorations:
VisualBounds: 30,24 VisualBounds: 30,24
ReloadAmmoPool:
Delay: 100
Count: 2
C17: C17:
Inherits: ^Plane Inherits: ^Plane

View File

@@ -510,9 +510,6 @@ MLRS:
AmmoPool: AmmoPool:
Ammo: 2 Ammo: 2
PipCount: 0 PipCount: 0
SelfReloads: true
ReloadCount: 1
SelfReloadDelay: 45
AttackTurreted: AttackTurreted:
WithReloadingSpriteTurret: WithReloadingSpriteTurret:
AmmoPoolName: primary AmmoPoolName: primary
@@ -521,6 +518,9 @@ MLRS:
RenderRangeCircle: RenderRangeCircle:
SpawnActorOnDeath: SpawnActorOnDeath:
Actor: MLRS.Husk Actor: MLRS.Husk
ReloadAmmoPool:
Delay: 45
Count: 1
STNK: STNK:
Inherits: ^Vehicle Inherits: ^Vehicle