diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java b/runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java index 29b28a214c..c961e68e24 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java @@ -45,7 +45,8 @@ public enum GameTimer FULLTB("teleblock", 5, ChronoUnit.MINUTES), HALFTB("teleblock", 150, ChronoUnit.SECONDS), SUPERANTIVENOM("antivenom", 3, ChronoUnit.MINUTES), - SUPERANTIFIRE("superantifire", 2, ChronoUnit.MINUTES); + SUPERANTIFIRE("superantifire", 2, ChronoUnit.MINUTES), + ANTIDOTEPLUSPLUS("antidoteplusplus", 12, ChronoUnit.MINUTES); private final String imageResource; private final Duration duration; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersConfig.java index f7e1ad04e3..12f77b56df 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersConfig.java @@ -134,4 +134,14 @@ public interface TimersConfig extends Config { return true; } + + @ConfigItem( + keyName = "showAntidotePlusPlus", + name = "Antidote++ timer", + description = "Configures whether antidote++ timer is displayed" + ) + default boolean showAntidotePlusPlus() + { + return true; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java index 124cdbb123..12098e141c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java @@ -24,6 +24,7 @@ */ package net.runelite.client.plugins.timers; +import static net.runelite.client.plugins.timers.GameTimer.ANTIDOTEPLUSPLUS; import static net.runelite.client.plugins.timers.GameTimer.ANTIFIRE; import static net.runelite.client.plugins.timers.GameTimer.CANNON; import static net.runelite.client.plugins.timers.GameTimer.EXANTIFIRE; @@ -38,9 +39,11 @@ import com.google.common.eventbus.Subscribe; import com.google.inject.Provides; import javax.inject.Inject; import net.runelite.api.ChatMessageType; +import net.runelite.api.ItemID; import net.runelite.client.config.ConfigManager; import net.runelite.client.events.ChatMessage; import net.runelite.client.events.ConfigChanged; +import net.runelite.client.events.MenuOptionClicked; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.overlay.infobox.InfoBoxManager; @@ -110,6 +113,26 @@ public class TimersPlugin extends Plugin { removeGameTimer(SUPERANTIFIRE); } + + if (!config.showAntidotePlusPlus()) + { + removeGameTimer(ANTIDOTEPLUSPLUS); + } + } + + @Subscribe + public void onMenuOptionClicked(MenuOptionClicked event) + { + if (config.showAntidotePlusPlus() + && event.getMenuOption().contains("Drink") + && (event.getId() == ItemID.ANTIDOTE1_5958 + || event.getId() == ItemID.ANTIDOTE2_5956 + || event.getId() == ItemID.ANTIDOTE3_5954 + || event.getId() == ItemID.ANTIDOTE4_5952)) + { + // Needs menu option hook because drink message is intercepting with antipoison message + createGameTimer(ANTIDOTEPLUSPLUS); + } } @Subscribe diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/timers/antidoteplusplus.png b/runelite-client/src/main/resources/net/runelite/client/plugins/timers/antidoteplusplus.png new file mode 100644 index 0000000000..e269b23c73 Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/timers/antidoteplusplus.png differ