From 8b95d2db0d14b7f7379ef05cb78744f12de8c61d Mon Sep 17 00:00:00 2001 From: MEEP of Faith <54301439+MEEPofFaith@users.noreply.github.com> Date: Mon, 31 May 2021 11:28:35 -0700 Subject: [PATCH] Knockback following bullet direction (#5313) --- core/src/mindustry/entities/bullet/BulletType.java | 6 +++++- .../entities/bullet/ContinuousLaserBulletType.java | 1 + core/src/mindustry/entities/bullet/LaserBulletType.java | 1 + core/src/mindustry/entities/bullet/SapBulletType.java | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index bebfa59bb0..16e9622ec2 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -56,6 +56,8 @@ public abstract class BulletType extends Content{ public float splashDamage = 0f; /** Knockback in velocity. */ public float knockback; + /** Should knockback the bullet's direction */ + public boolean impact; /** Status effect applied on hit. */ public StatusEffect status = StatusEffects.none; /** Intensity of applied status effect in terms of duration. */ @@ -191,7 +193,9 @@ public abstract class BulletType extends Content{ } if(entity instanceof Unit unit){ - unit.impulse(Tmp.v3.set(unit).sub(b.x, b.y).nor().scl(knockback * 80f)); + Tmp.v3.set(unit).sub(b.x, b.y).nor().scl(knockback * 80f); + if(impact) Tmp.v3.setAngle(b.rotation()); + unit.impulse(Tmp.v3); unit.apply(status, statusDuration); } } diff --git a/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java b/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java index de1d1ba101..f1c57dcee8 100644 --- a/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java +++ b/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java @@ -35,6 +35,7 @@ public class ContinuousLaserBulletType extends BulletType{ incendSpread = 5; incendChance = 0.4f; lightColor = Color.orange; + impact = true; keepVelocity = false; collides = false; pierce = true; diff --git a/core/src/mindustry/entities/bullet/LaserBulletType.java b/core/src/mindustry/entities/bullet/LaserBulletType.java index 41033f63aa..0961a91e8c 100644 --- a/core/src/mindustry/entities/bullet/LaserBulletType.java +++ b/core/src/mindustry/entities/bullet/LaserBulletType.java @@ -30,6 +30,7 @@ public class LaserBulletType extends BulletType{ smokeEffect = Fx.none; hitSize = 4; lifetime = 16f; + impact = true; keepVelocity = false; collides = false; pierce = true; diff --git a/core/src/mindustry/entities/bullet/SapBulletType.java b/core/src/mindustry/entities/bullet/SapBulletType.java index 9200ed4bcc..969e17dcb0 100644 --- a/core/src/mindustry/entities/bullet/SapBulletType.java +++ b/core/src/mindustry/entities/bullet/SapBulletType.java @@ -26,6 +26,7 @@ public class SapBulletType extends BulletType{ hitEffect = Fx.hitLiquid; status = StatusEffects.sapped; statusDuration = 60f * 3f; + impact = true; } @Override