From 5b617cf6e53b669f87053f46df93e867de6150de Mon Sep 17 00:00:00 2001 From: reaperrr Date: Sun, 22 Jan 2017 16:42:13 +0100 Subject: [PATCH 1/4] Refactor GravityBomb velocity/acceleration --- OpenRA.Mods.Common/Projectiles/GravityBomb.cs | 16 +++++++++------- mods/d2k/weapons/other.yaml | 4 ++-- mods/ra/weapons/superweapons.yaml | 4 ++-- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/OpenRA.Mods.Common/Projectiles/GravityBomb.cs b/OpenRA.Mods.Common/Projectiles/GravityBomb.cs index 9c5498f652..e4ea012f70 100644 --- a/OpenRA.Mods.Common/Projectiles/GravityBomb.cs +++ b/OpenRA.Mods.Common/Projectiles/GravityBomb.cs @@ -34,10 +34,11 @@ namespace OpenRA.Mods.Common.Projectiles [PaletteReference] public readonly string ShadowPalette = "shadow"; - public readonly WDist Speed = WDist.Zero; + [Desc("Projectile movement vector per tick (forward, right, up), use negative values for opposite directions.")] + public readonly WVec Velocity = WVec.Zero; - [Desc("Value added to speed every tick.")] - public readonly WDist Acceleration = new WDist(15); + [Desc("Value added to Velocity every tick.")] + public readonly WVec Acceleration = new WVec(0, 0, -15); public IProjectile Create(ProjectileArgs args) { return new GravityBomb(this, args); } } @@ -47,17 +48,18 @@ namespace OpenRA.Mods.Common.Projectiles readonly GravityBombInfo info; readonly Animation anim; readonly ProjectileArgs args; + readonly WVec acceleration; [Sync] WVec velocity; [Sync] WPos pos; - [Sync] WVec acceleration; public GravityBomb(GravityBombInfo info, ProjectileArgs args) { this.info = info; this.args = args; pos = args.Source; - velocity = new WVec(WDist.Zero, WDist.Zero, -info.Speed); - acceleration = new WVec(WDist.Zero, WDist.Zero, info.Acceleration); + var convertedVelocity = new WVec(info.Velocity.Y, -info.Velocity.X, info.Velocity.Z); + velocity = convertedVelocity.Rotate(WRot.FromFacing(args.Facing)); + acceleration = new WVec(info.Acceleration.Y, -info.Acceleration.X, info.Acceleration.Z); if (!string.IsNullOrEmpty(info.Image)) { @@ -72,7 +74,7 @@ namespace OpenRA.Mods.Common.Projectiles public void Tick(World world) { - velocity -= acceleration; + velocity += acceleration; pos += velocity; if (pos.Z <= args.PassiveTarget.Z) diff --git a/mods/d2k/weapons/other.yaml b/mods/d2k/weapons/other.yaml index f8261044c4..a76d6b5a56 100644 --- a/mods/d2k/weapons/other.yaml +++ b/mods/d2k/weapons/other.yaml @@ -55,8 +55,8 @@ OrniBomb: Range: 2c0 Projectile: GravityBomb Image: BOMBS - Speed: 64 - Acceleration: 0 + Velocity: 0, 0, -64 + Acceleration: 0, 0, 0 Shadow: true Warhead@1Dam: SpreadDamage Spread: 320 diff --git a/mods/ra/weapons/superweapons.yaml b/mods/ra/weapons/superweapons.yaml index 176e77a215..dd42dec876 100644 --- a/mods/ra/weapons/superweapons.yaml +++ b/mods/ra/weapons/superweapons.yaml @@ -5,8 +5,8 @@ ParaBomb: Projectile: GravityBomb Image: PARABOMB OpenSequence: open - Speed: 86 - Acceleration: 0 + Velocity: 0, 0, -86 + Acceleration: 0, 0, 0 Warhead@1Dam: SpreadDamage Spread: 768 Damage: 300 From e1e47e7e0d6aa6adc5e7822d05c5b1052d5d7f30 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Sun, 22 Jan 2017 16:42:36 +0100 Subject: [PATCH 2/4] Tweak TS Orca bomb fall behavior --- mods/ts/weapons/otherweapons.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/ts/weapons/otherweapons.yaml b/mods/ts/weapons/otherweapons.yaml index 47948fd5ca..2998254e79 100644 --- a/mods/ts/weapons/otherweapons.yaml +++ b/mods/ts/weapons/otherweapons.yaml @@ -26,10 +26,11 @@ FireballLauncher: Bomb: ReloadDelay: 60 Burst: 5 - BurstDelay: 5 - Range: 2c0 + BurstDelay: 6 + Range: 2c512 Projectile: GravityBomb - Speed: 170 + Velocity: 72, 0, -90 + Acceleration: 0, 0, -8 Image: 120mm Shadow: true Palette: ra From 7fdbe10319a7e3462021abc1a2b916f54739b718 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Sun, 29 Jan 2017 14:33:25 +0100 Subject: [PATCH 3/4] Upgrade rule for GravityBomb velocity/accel changes --- .../UtilityCommands/UpgradeRules.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs index 310d07f40d..376d6d536f 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs @@ -624,6 +624,29 @@ namespace OpenRA.Mods.Common.UtilityCommands node.Key = "TrackTarget"; } + // Refactor GravityBomb Speed WDist to Velocity WVec and Acceleration from vertical WDist to vector + if (engineVersion < 20170329) + { + var projectile = node.Value.Nodes.FirstOrDefault(n => n.Key == "Projectile"); + if (projectile != null && projectile.Value.Value == "GravityBomb") + { + var speedNode = projectile.Value.Nodes.FirstOrDefault(x => x.Key == "Speed"); + if (speedNode != null) + { + var oldWDistSpeed = FieldLoader.GetValue("Speed", speedNode.Value.Value); + speedNode.Value.Value = "0, 0, -" + oldWDistSpeed; + speedNode.Key = "Velocity"; + } + + var accelNode = projectile.Value.Nodes.FirstOrDefault(x => x.Key == "Acceleration"); + if (accelNode != null) + { + var oldWDistAccel = FieldLoader.GetValue("Acceleration", accelNode.Value.Value); + accelNode.Value.Value = "0, 0, -" + oldWDistAccel; + } + } + } + UpgradeWeaponRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1); } } From edc1753e2226a13ef5b3bf06f8395e30c31d57f8 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Wed, 29 Mar 2017 19:13:47 +0200 Subject: [PATCH 4/4] Update GravityBomb velocity after position Otherwise launch velocity would already be Velocity + Acceleration. --- OpenRA.Mods.Common/Projectiles/GravityBomb.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenRA.Mods.Common/Projectiles/GravityBomb.cs b/OpenRA.Mods.Common/Projectiles/GravityBomb.cs index e4ea012f70..92a888be88 100644 --- a/OpenRA.Mods.Common/Projectiles/GravityBomb.cs +++ b/OpenRA.Mods.Common/Projectiles/GravityBomb.cs @@ -74,8 +74,8 @@ namespace OpenRA.Mods.Common.Projectiles public void Tick(World world) { - velocity += acceleration; pos += velocity; + velocity += acceleration; if (pos.Z <= args.PassiveTarget.Z) {