diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 355e320699..f1ed69b3bb 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -3622,7 +3622,8 @@ public class Blocks{ size = 3; reloadTime = 130f; chargeTime = 90f; - range = 300f; + //TODO 500 or 400? does it need to be better than the standard mass driver? + range = 400f; maxPayloadSize = 2.5f; consumes.power(2f); }}; diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index a21fbb4b8a..58c4a7a2e8 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -492,10 +492,10 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public static void unitClear(Player player){ if(player == null) return; - //TODO test this in multiplayer - if(!player.dead() && !player.unit().spawnedByCore && player.unit().dockedType != null && player.unit().dockedType.coreUnitDock){ - //TODO respawn ON the unit, with an animation? + if(!player.dead() && !player.unit().spawnedByCore){ var docked = player.unit().dockedType; + + //get best core unit type as approximation if(docked == null){ var closest = player.bestCore(); if(closest != null){ @@ -503,13 +503,20 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } } - if(docked != null){ + //respawn if necessary + if(docked != null && docked.coreUnitDock){ //TODO animation, etc Fx.spawn.at(player); if(!net.client()){ Unit unit = docked.create(player.team()); unit.set(player.unit()); + //translate backwards so it doesn't spawn stuck in the unit + if(player.unit().isFlying() && unit.type.flying){ + Tmp.v1.trns(player.unit().rotation + 180f, player.unit().hitSize / 2f + unit.hitSize / 2f); + unit.x += Tmp.v1.x; + unit.y += Tmp.v1.y; + } unit.rotation(player.unit().rotation); //unit.impulse(0f, -3f); //TODO should there be an impulse? @@ -518,6 +525,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ unit.add(); } + //skip standard respawn code return; }