diff --git a/megamek/src/megamek/client/ui/swing/TargetingPhaseDisplay.java b/megamek/src/megamek/client/ui/swing/TargetingPhaseDisplay.java index c7d3208f37..0c1dd8d930 100644 --- a/megamek/src/megamek/client/ui/swing/TargetingPhaseDisplay.java +++ b/megamek/src/megamek/client/ui/swing/TargetingPhaseDisplay.java @@ -356,7 +356,7 @@ private void selectEntity(int en) { clientgui.getBoardView().centerOnHex(ce().getPosition()); } - setTwistEnabled(phase.isOffboard() && ce().canChangeSecondaryFacing() && ce().getCrew().isActive()); + setTwistEnabled(ce().canChangeSecondaryFacing() && ce().getCrew().isActive()); setFlipArmsEnabled(ce().canFlipArms() && ce().getCrew().isActive()); updateSearchlight(); @@ -965,6 +965,7 @@ void torsoTwist(Coords twistTarget) { clearAttacks(); addAttack(new TorsoTwistAction(currentEntity, direction)); ce().setSecondaryFacing(direction); + clientgui.updateFiringArc(ce()); refreshAll(); } } @@ -1020,8 +1021,8 @@ public void hexMoused(BoardViewEvent b) { } if (b.getType() == BoardViewEvent.BOARD_HEX_DRAGGED) { - if (phase.isOffboard() && (shiftheld || twisting)) { - if (ce() != null) { + if (shiftheld || twisting) { + if ((ce() != null) && !ce().getAlreadyTwisted()) { updateFlipArms(false); torsoTwist(b.getCoords()); } @@ -1046,7 +1047,7 @@ public void hexSelected(BoardViewEvent b) { if (client.isMyTurn() && (b.getCoords() != null) && (ce() != null) && !b.getCoords().equals(ce().getPosition())) { - if (shiftheld && phase.isOffboard()) { + if (shiftheld && !ce().getAlreadyTwisted()) { updateFlipArms(false); torsoTwist(b.getCoords()); } else if (phase.isTargeting()) { diff --git a/megamek/src/megamek/common/Entity.java b/megamek/src/megamek/common/Entity.java index c82af414bc..56a4b9c617 100644 --- a/megamek/src/megamek/common/Entity.java +++ b/megamek/src/megamek/common/Entity.java @@ -1900,7 +1900,7 @@ public void setArmsFlipped(boolean armsFlipped) { if (getAlreadyTwisted()) { return; } - if (phase.isOffboard() || phase.isFiring()) { + if (phase.isTargeting() || phase.isOffboard() || phase.isFiring()) { // Only Offboard and Firing phases could conceivably have later phases with twisting setAlreadyTwisted(true); } @@ -2683,8 +2683,7 @@ public void setSecondaryFacing(int sec_facing, boolean fireEvent) { if (getAlreadyTwisted()) { return; } - if (phase.isOffboard() || phase.isFiring()) { - // Only Offboard and Firing phases could conceivably have later phases with twisting + if (phase.isTargeting() || phase.isOffboard() || phase.isFiring()) { setAlreadyTwisted(true); } }