diff --git a/src/haven/CFG.java b/src/haven/CFG.java index 052893870..36c08b6ce 100644 --- a/src/haven/CFG.java +++ b/src/haven/CFG.java @@ -197,6 +197,7 @@ public class CFG { public static final CFG AUTO_DRINK_ENABLED = new CFG<>("automation.autodrink.enabled", false); public static final CFG AUTO_DRINK_THRESHOLD = new CFG<>("automation.autodrink.threshold", 74); public static final CFG AUTO_DRINK_DELAY = new CFG<>("automation.autodrink.delay", 250); + public static final CFG AUTO_DRINK_FORCED_INTERVAL = new CFG<>("automation.autodrink.forced_interval", 15000); public static final CFG ENABLE_PURGE_BUTTON_IN_KIN_LIST = new CFG<>("ui.enable_purge_button_kin_list", false); private static final String CONFIG_JSON = "config.json"; diff --git a/src/haven/bot/AutoDrink.java b/src/haven/bot/AutoDrink.java index caab1b975..1befc6970 100644 --- a/src/haven/bot/AutoDrink.java +++ b/src/haven/bot/AutoDrink.java @@ -11,6 +11,7 @@ public class AutoDrink { GameUI gui = null; long lastDrinkTime = 0; + public float carried_drinks = 0; private AutoDrink(){} @@ -49,8 +50,10 @@ public void tick(Gob gob) { if (meter != null) { double currentStamina = meter.meter(0); if (currentStamina >= 0 && currentStamina < (autoDrinkThreshold / 100f)) { - lastDrinkTime = currentTime; - gui.wdgmsg("act", "drink"); + if (carried_drinks > 0 || currentTime - lastDrinkTime > CFG.AUTO_DRINK_FORCED_INTERVAL.get()) { + lastDrinkTime = currentTime; + gui.wdgmsg("act", "drink"); + } } } } diff --git a/src/me/ender/ui/DrinkMeter.java b/src/me/ender/ui/DrinkMeter.java index 07e60a1ed..2a21bc866 100644 --- a/src/me/ender/ui/DrinkMeter.java +++ b/src/me/ender/ui/DrinkMeter.java @@ -2,6 +2,7 @@ import auto.InvHelper; import haven.*; +import haven.bot.AutoDrink; import java.awt.*; import java.util.List; @@ -109,6 +110,10 @@ private boolean process() { max += ItemData.getMaxCapacity(item) / 100f; } + // a bit hacky but I wanted to avoid repeated inventory inspection + // TODO: make option to drink tea (will require flower menu which interferes with controls) + AutoDrink.getInstance().carried_drinks = water; + return true; }