From 7a98b4ed552c548c6cc020b09172716c3b4a4ee9 Mon Sep 17 00:00:00 2001 From: robinwithes Date: Wed, 26 Sep 2018 09:58:18 +0200 Subject: [PATCH] Add oxygen alert to idle notifier (#5630) Fixes #4890 --- .../main/java/net/runelite/api/Varbits.java | 5 ++++ .../idlenotifier/IdleNotifierConfig.java | 12 +++++++++ .../idlenotifier/IdleNotifierPlugin.java | 27 +++++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/runelite-api/src/main/java/net/runelite/api/Varbits.java b/runelite-api/src/main/java/net/runelite/api/Varbits.java index a9f1b92f8d..9f4b7f9a61 100644 --- a/runelite-api/src/main/java/net/runelite/api/Varbits.java +++ b/runelite-api/src/main/java/net/runelite/api/Varbits.java @@ -408,6 +408,11 @@ public enum Varbits */ ACCOUNT_TYPE(1777), + /** + * The varbit that stores the oxygen percentage for player + */ + OXYGEN_LEVEL(5811), + /** * Corp beast damage */ diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierConfig.java index 062d8bc4ec..1d688565ae 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierConfig.java @@ -96,4 +96,16 @@ public interface IdleNotifierConfig extends Config { return 0; } + + @ConfigItem( + keyName = "oxygen", + name = "Oxygen Notification Threshold", + position = 7, + description = "The amount of remaining oxygen to send a notification at. A value of 0 will disable notification." + ) + default int getOxygenThreshold() + { + return 0; + } + } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java index 98a898d376..d8032e3ea9 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java @@ -83,6 +83,7 @@ public class IdleNotifierPlugin extends Plugin private Actor lastInteract; private boolean notifyHitpoints = true; private boolean notifyPrayer = true; + private boolean notifyOxygen = true; private boolean notifyIdleLogout = true; private boolean notify6HourLogout = true; private int lastCombatCountdown = 0; @@ -345,6 +346,32 @@ public class IdleNotifierPlugin extends Plugin { notifier.notify("[" + local.getName() + "] has low prayer!"); } + + if (checkLowOxygen()) + { + notifier.notify("[" + local.getName() + "] has low oxygen!"); + } + } + + private boolean checkLowOxygen() + { + if (config.getOxygenThreshold() == 0) + { + return false; + } + if (config.getOxygenThreshold() >= client.getVar(Varbits.OXYGEN_LEVEL) * 0.1) + { + if (!notifyOxygen) + { + notifyOxygen = true; + return true; + } + } + else + { + notifyOxygen = false; + } + return false; } private boolean checkLowHitpoints()