diff --git a/megamek/src/megamek/client/ui/swing/MovementDisplay.java b/megamek/src/megamek/client/ui/swing/MovementDisplay.java index 39ab6c74e55..e1aa624cc78 100644 --- a/megamek/src/megamek/client/ui/swing/MovementDisplay.java +++ b/megamek/src/megamek/client/ui/swing/MovementDisplay.java @@ -2505,6 +2505,13 @@ private synchronized void updateSpeedButtons() { setAccNEnabled(false); } + // Disable accn/decn if a jumpship has changed facing + if ((a instanceof Jumpship) && ((Jumpship) a).hasStationKeepingDrive() + && (cmd.contains(MoveStepType.TURN_LEFT) || cmd.contains(MoveStepType.TURN_RIGHT))) { + setDecNEnabled(false); + setAccNEnabled(false); + } + // if in atmosphere, limit acceleration to 2x safe thrust if (!clientgui.getClient().getGame().getBoard().inSpace() && (vel == (2 * ce.getWalkMP()))) { diff --git a/megamek/src/megamek/client/ui/swing/tooltip/UnitToolTip.java b/megamek/src/megamek/client/ui/swing/tooltip/UnitToolTip.java index 3b9dbb9717e..c651170fef5 100644 --- a/megamek/src/megamek/client/ui/swing/tooltip/UnitToolTip.java +++ b/megamek/src/megamek/client/ui/swing/tooltip/UnitToolTip.java @@ -1611,6 +1611,8 @@ private static StringBuilder getMovement(Entity entity) { if (jumpMPModified > 0) { sMove += "/" + jumpMPModified; } + } else if ((entity instanceof Jumpship) && ((Jumpship) entity).hasStationKeepingDrive()) { + sMove += String.format("%s%1.1f", DOT_SPACER, ((Jumpship) entity).getAccumulatedThrust()); } sMove += DOT_SPACER; diff --git a/megamek/src/megamek/common/MoveStep.java b/megamek/src/megamek/common/MoveStep.java index 4740d116d7a..095557f606e 100644 --- a/megamek/src/megamek/common/MoveStep.java +++ b/megamek/src/megamek/common/MoveStep.java @@ -1958,6 +1958,13 @@ private void compileIllegal(final Game game, final Entity entity, && (velocity != 0) && (getNTurns() > 1)) { return; } + + // Jumpships cannot change velocity and use attitude jets in the same turn. + if ((a instanceof Jumpship) && ((Jumpship) a).hasStationKeepingDrive() + && (prev.getMovementType(false) == EntityMovementType.MOVE_OVER_THRUST) + && ((type == MoveStepType.TURN_LEFT) || (type == MoveStepType.TURN_RIGHT))) { + return; + } } // atmosphere has its own rules about turning