Introduce MinDistance to AreaBeam projectile

This commit is contained in:
Gustas
2022-08-31 17:45:10 +03:00
committed by Matthias Mailänder
parent f7286b525c
commit a9da6bb2d8
2 changed files with 17 additions and 1 deletions

View File

@@ -42,6 +42,9 @@ namespace OpenRA.Mods.Common.Projectiles
[Desc("How far beyond the target the projectile keeps on travelling.")] [Desc("How far beyond the target the projectile keeps on travelling.")]
public readonly WDist BeyondTargetRange = new WDist(0); public readonly WDist BeyondTargetRange = new WDist(0);
[Desc("The minimum distance the beam travels.")]
public readonly WDist MinDistance = WDist.Zero;
[Desc("Damage modifier applied at each range step.")] [Desc("Damage modifier applied at each range step.")]
public readonly int[] Falloff = { 100, 100 }; public readonly int[] Falloff = { 100, 100 };
@@ -136,7 +139,19 @@ namespace OpenRA.Mods.Common.Projectiles
// Update the target position with the range we shoot beyond the target by // Update the target position with the range we shoot beyond the target by
// I.e. we can deliberately overshoot, so aim for that position // I.e. we can deliberately overshoot, so aim for that position
var dir = new WVec(0, -1024, 0).Rotate(WRot.FromYaw(towardsTargetFacing)); var dir = new WVec(0, -1024, 0).Rotate(WRot.FromYaw(towardsTargetFacing));
target += dir * info.BeyondTargetRange.Length / 1024; var dist = (args.SourceActor.CenterPosition - target).Length;
int extraDist;
if (info.MinDistance.Length > dist)
{
if (info.MinDistance.Length - dist < info.BeyondTargetRange.Length)
extraDist = info.BeyondTargetRange.Length;
else
extraDist = info.MinDistance.Length - dist;
}
else
extraDist = info.BeyondTargetRange.Length;
target += dir * extraDist / 1024;
length = Math.Max((target - headPos).Length / speed.Length, 1); length = Math.Max((target - headPos).Length / speed.Length, 1);
weaponRange = new WDist(Util.ApplyPercentageModifiers(args.Weapon.Range.Length, args.RangeModifiers)); weaponRange = new WDist(Util.ApplyPercentageModifiers(args.Weapon.Range.Length, args.RangeModifiers));

View File

@@ -13,6 +13,7 @@ Sound:
Falloff: 0, 0, 100, 0 Falloff: 0, 0, 100, 0
Range: 0, 0c450, 4c0, 8c0 Range: 0, 0c450, 4c0, 8c0
BeyondTargetRange: 1c0 BeyondTargetRange: 1c0
MinDistance: 5c0
Color: 00FFFFC8 Color: 00FFFFC8
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Range: 0, 32 Range: 0, 32