Refactor BurstDelay to BurstDelays
Allowing to set custom per-burst delays.
This commit is contained in:
@@ -69,8 +69,9 @@ namespace OpenRA.GameRules
|
|||||||
[Desc("What types of targets are unaffected.", "Overrules ValidTargets.")]
|
[Desc("What types of targets are unaffected.", "Overrules ValidTargets.")]
|
||||||
public readonly HashSet<string> InvalidTargets = new HashSet<string>();
|
public readonly HashSet<string> InvalidTargets = new HashSet<string>();
|
||||||
|
|
||||||
[Desc("Delay in ticks between firing shots from the same ammo magazine.")]
|
[Desc("Delay in ticks between firing shots from the same ammo magazine. If one entry, it will be used for all bursts.",
|
||||||
public readonly int BurstDelay = 5;
|
"If multiple entries, their number needs to match Burst - 1.")]
|
||||||
|
public readonly int[] BurstDelays = { 5 };
|
||||||
|
|
||||||
[Desc("The minimum range the weapon can fire.")]
|
[Desc("The minimum range the weapon can fire.")]
|
||||||
public readonly WDist MinRange = WDist.Zero;
|
public readonly WDist MinRange = WDist.Zero;
|
||||||
|
|||||||
@@ -92,6 +92,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
WeaponInfo.Range.Length,
|
WeaponInfo.Range.Length,
|
||||||
ai.TraitInfos<IRangeModifierInfo>().Select(m => m.GetRangeModifierDefault())));
|
ai.TraitInfos<IRangeModifierInfo>().Select(m => m.GetRangeModifierDefault())));
|
||||||
|
|
||||||
|
if (WeaponInfo.Burst > 1 && WeaponInfo.BurstDelays.Length > 1 && (WeaponInfo.BurstDelays.Length != WeaponInfo.Burst - 1))
|
||||||
|
throw new YamlException("Weapon '{0}' has an invalid number of BurstDelays, must be single entry or Burst - 1.".F(weaponToLower));
|
||||||
|
|
||||||
base.RulesetLoaded(rules, ai);
|
base.RulesetLoaded(rules, ai);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -311,7 +314,12 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
protected virtual void UpdateBurst(Actor self, Target target)
|
protected virtual void UpdateBurst(Actor self, Target target)
|
||||||
{
|
{
|
||||||
if (--Burst > 0)
|
if (--Burst > 0)
|
||||||
FireDelay = Weapon.BurstDelay;
|
{
|
||||||
|
if (Weapon.BurstDelays.Length == 1)
|
||||||
|
FireDelay = Weapon.BurstDelays[0];
|
||||||
|
else
|
||||||
|
FireDelay = Weapon.BurstDelays[Weapon.Burst - (Burst + 1)];
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var modifiers = reloadModifiers.ToArray();
|
var modifiers = reloadModifiers.ToArray();
|
||||||
|
|||||||
@@ -1092,6 +1092,11 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Rename BurstDelay to BurstDelays
|
||||||
|
if (engineVersion < 20170818)
|
||||||
|
if (node.Key == "BurstDelay")
|
||||||
|
node.Key = "BurstDelays";
|
||||||
|
|
||||||
UpgradeWeaponRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1);
|
UpgradeWeaponRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user