diff --git a/core/assets/contributors b/core/assets/contributors index 2851d455ca..c15001e0e8 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -143,3 +143,4 @@ BlueWolf [Error_27] code-explorer786 KayAyeAre +SMOLKEYS \ No newline at end of file diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 0067716f1a..476ea38614 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -188,6 +188,8 @@ public class BulletType extends Content implements Cloneable{ public @Nullable UnitType despawnUnit; /** Amount of units spawned when this bullet despawns. */ public int despawnUnitCount = 1; + /** Random offset distance from the original bullet despawn/hit coordinate. */ + public float despawnUnitRadius = 0.1f; /** Color of trail behind bullet. */ public Color trailColor = Pal.missileYellowBack; @@ -377,6 +379,7 @@ public class BulletType extends Content implements Cloneable{ } createPuddles(b, x, y); createIncend(b, x, y); + createUnits(b, x, y); if(suppressionRange > 0){ //bullets are pooled, require separate Vec2 instance @@ -436,23 +439,26 @@ public class BulletType extends Content implements Cloneable{ } } + public void createUnits(Bullet b, float x, float y){ + if(despawnUnit != null){ + for(int i = 0; i < despawnUnitCount; i++){ + despawnUnit.spawn(b.team, x + Mathf.range(despawnUnitRadius), y + Mathf.range(despawnUnitRadius)); + } + } + } /** Called when the bullet reaches the end of its lifetime or is destroyed by something external. */ public void despawned(Bullet b){ if(despawnHit){ hit(b); + }else{ + createUnits(b, b.x, b.y); } if(!fragOnHit){ createFrags(b, b.x, b.y); } - - if(despawnUnit != null){ - for(int i = 0; i < despawnUnitCount; i++){ - despawnUnit.spawn(b.team, b.x + Mathf.range(0.1f), b.y); - } - } - + despawnEffect.at(b.x, b.y, b.rotation(), hitColor); despawnSound.at(b);