diff --git a/src/main/java/emu/grasscutter/game/managers/MovementManager/MovementManager.java b/src/main/java/emu/grasscutter/game/managers/MovementManager/MovementManager.java index ed1645936..18958f355 100644 --- a/src/main/java/emu/grasscutter/game/managers/MovementManager/MovementManager.java +++ b/src/main/java/emu/grasscutter/game/managers/MovementManager/MovementManager.java @@ -268,7 +268,7 @@ public class MovementManager { if (Grasscutter.getConfig().OpenStamina) { boolean moving = isPlayerMoving(); if (moving || (getCurrentStamina() < getMaximumStamina())) { - Grasscutter.getLogger().debug("Player moving: " + moving + ", stamina full: " + (getCurrentStamina() >= getMaximumStamina()) + ", recalculate stamina"); + // Grasscutter.getLogger().debug("Player moving: " + moving + ", stamina full: " + (getCurrentStamina() >= getMaximumStamina()) + ", recalculate stamina"); Consumption consumption = Consumption.None; // TODO: refactor these conditions. @@ -306,14 +306,16 @@ public class MovementManager { } else if (MotionStatesCategorized.get("RUN").contains(currentState)) { // RUN, DASH and WALK // DASH - if (currentState == MotionState.MOTION_DASH) { - if (previousState == MotionState.MOTION_DASH) { + if (currentState == MotionState.MOTION_DASH_BEFORE_SHAKE) { + consumption = Consumption.DASH; + if (previousState == MotionState.MOTION_DASH_BEFORE_SHAKE) { + // only charge once consumption = Consumption.SPRINT; - } else { - // cost more to start dashing - consumption = Consumption.DASH; } } + if (currentState == MotionState.MOTION_DASH) { + consumption = Consumption.SPRINT; + } // RUN if (currentState == MotionState.MOTION_RUN) { consumption = Consumption.RUN; @@ -347,14 +349,13 @@ public class MovementManager { staminaRecoverDelay = 0; } if (consumption.amount > 0) { - if (staminaRecoverDelay < 5) { + if (staminaRecoverDelay < 10) { staminaRecoverDelay++; consumption = Consumption.None; } } int newStamina = updateStamina(cachedSession, consumption.amount); cachedSession.send(new PacketPlayerPropNotify(player, PlayerProperty.PROP_CUR_PERSIST_STAMINA)); - Grasscutter.getLogger().debug(player.getProperty(PlayerProperty.PROP_CUR_PERSIST_STAMINA) + "/" + player.getProperty(PlayerProperty.PROP_MAX_STAMINA) + "\t" + currentState + "\t" + "isMoving: " + isPlayerMoving() + "\t" + consumption + "(" + consumption.amount + ")"); } }