diff --git a/.run/Runelite.run.xml b/.run/Runelite.run.xml
index ebfc8daf0ae..bb1088243d3 100644
--- a/.run/Runelite.run.xml
+++ b/.run/Runelite.run.xml
@@ -1,13 +1,13 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/combathotkeys/CombatHotkeysConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/combathotkeys/CombatHotkeysConfig.java
index 568d2e34069..152884014a2 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/combathotkeys/CombatHotkeysConfig.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/combathotkeys/CombatHotkeysConfig.java
@@ -2,6 +2,7 @@
import net.runelite.api.coords.WorldPoint;
import net.runelite.client.config.*;
+import net.runelite.client.plugins.microbot.util.prayer.Rs2PrayerEnum;
@ConfigInformation("IMPORTANT!
"
+ "When Setting up hotkeys make sure to use something like CTRL +, ALT + or SHIFT +
"
@@ -10,11 +11,76 @@
@ConfigGroup("combathotkeys")
public interface CombatHotkeysConfig extends Config {
+
@ConfigSection(
- name = "Prayers",
- description = "Prayer hotkeys",
+ name = "Offensive Prayers",
+ description = "Offensive Prayer hotkeys",
position = 1
)
+ String offensivePrayerSection = "offensivePrayers";
+
+ // Melee
+ @ConfigItem(
+ keyName = "offensiveMeleeKey",
+ name = "Melee Prayer Hotkey",
+ description = "Hotkey for offensive melee prayer",
+ position = 0,
+ section = offensivePrayerSection
+ )
+ default Keybind offensiveMeleeKey() { return Keybind.NOT_SET; }
+
+ @ConfigItem(
+ keyName = "offensiveMeleePrayer",
+ name = "Melee Prayer",
+ description = "Prayer to toggle with the melee hotkey",
+ position = 1,
+ section = offensivePrayerSection
+ )
+ default MeleePrayerOption offensiveMeleePrayer() { return MeleePrayerOption.PIETY; }
+
+ // Ranged
+ @ConfigItem(
+ keyName = "offensiveRangeKey",
+ name = "Ranged Prayer Hotkey",
+ description = "Hotkey for offensive ranged prayer",
+ position = 2,
+ section = offensivePrayerSection
+ )
+ default Keybind offensiveRangeKey() { return Keybind.NOT_SET; }
+
+ @ConfigItem(
+ keyName = "offensiveRangePrayer",
+ name = "Ranged Prayer",
+ description = "Prayer to toggle with the ranged hotkey",
+ position = 3,
+ section = offensivePrayerSection
+ )
+ default RangedPrayerOption offensiveRangePrayer() { return RangedPrayerOption.RIGOUR; }
+
+ // Magic
+ @ConfigItem(
+ keyName = "offensiveMagicKey",
+ name = "Magic Prayer Hotkey",
+ description = "Hotkey for offensive magic prayer",
+ position = 4,
+ section = offensivePrayerSection
+ )
+ default Keybind offensiveMagicKey() { return Keybind.NOT_SET; }
+
+ @ConfigItem(
+ keyName = "offensiveMagicPrayer",
+ name = "Magic Prayer",
+ description = "Prayer to toggle with the magic hotkey",
+ position = 5,
+ section = offensivePrayerSection
+ )
+ default MagicPrayerOption offensiveMagicPrayer() { return MagicPrayerOption.AUGURY; }
+
+ @ConfigSection(
+ name = "Defensive Prayers",
+ description = "Defensive Prayer hotkeys",
+ position = 2
+ )
String prayerSection = "prayers";
@ConfigItem(
@@ -56,7 +122,7 @@ default Keybind protectFromMelee()
@ConfigSection(
name = "Gear setup 1",
description = "Gear setup 1",
- position = 2
+ position = 3
)
String gearSetup1 = "gearSetup1";
@@ -87,7 +153,7 @@ default String gearList1()
@ConfigSection(
name = "Gear setup 2",
description = "Gear setup 2",
- position = 3
+ position = 4
)
String gearSetup2 = "gearSetup2";
@@ -118,7 +184,7 @@ default String gearList2()
@ConfigSection(
name = "Gear setup 3",
description = "Gear setup 3",
- position = 4
+ position = 5
)
String gearSetup3 = "gearSetup3";
@@ -147,7 +213,7 @@ default String gearList3() {
@ConfigSection(
name = "Gear setup 4",
description = "Gear setup 4",
- position = 5
+ position = 6
)
String gearSetup4 = "gearSetup4";
@@ -176,7 +242,7 @@ default String gearList4() {
@ConfigSection(
name = "Gear setup 5",
description = "Gear setup 5",
- position = 6
+ position = 7
)
String gearSetup5 = "gearSetup5";
@@ -242,4 +308,74 @@ default WorldPoint tile1() {
default WorldPoint tile2() {
return null;
}
+
+ @ConfigSection(
+ name = "Gear Equip Settings",
+ description = "Settings for randomized equip delays",
+ position = 9
+ )
+ String gearEquipSettings = "gearEquipSettings";
+
+ @ConfigItem(
+ keyName = "maxDelay",
+ name = "Max Equip Delay (ms)",
+ description = "Maximum random delay (in milliseconds) between equipping items",
+ position = 0,
+ section = gearEquipSettings
+ )
+ default int maxDelay() {
+ return 500; // default max delay of 500ms
+ }
+
+ public enum MeleePrayerOption {
+ SUPERHUMAN_STRENGTH(Rs2PrayerEnum.SUPERHUMAN_STRENGTH),
+ ULTIMATE_STRENGTH(Rs2PrayerEnum.ULTIMATE_STRENGTH),
+ CHIVALRY(Rs2PrayerEnum.CHIVALRY),
+ PIETY(Rs2PrayerEnum.PIETY);
+
+ private final Rs2PrayerEnum prayer;
+
+ MeleePrayerOption(Rs2PrayerEnum prayer) {
+ this.prayer = prayer;
+ }
+
+ public Rs2PrayerEnum getPrayer() {
+ return prayer;
+ }
+ }
+
+ public enum RangedPrayerOption {
+ SHARP_EYE(Rs2PrayerEnum.SHARP_EYE),
+ HAWK_EYE(Rs2PrayerEnum.HAWK_EYE),
+ EAGLE_EYE(Rs2PrayerEnum.EAGLE_EYE),
+ //DEADEYE(Rs2PrayerEnum.DEADEYE),
+ RIGOUR(Rs2PrayerEnum.RIGOUR);
+
+ private final Rs2PrayerEnum prayer;
+
+ RangedPrayerOption(Rs2PrayerEnum prayer) {
+ this.prayer = prayer;
+ }
+
+ public Rs2PrayerEnum getPrayer() {
+ return prayer;
+ }
+ }
+
+ public enum MagicPrayerOption {
+ MYSTIC_WILL(Rs2PrayerEnum.MYSTIC_WILL),
+ MYSTIC_LORE(Rs2PrayerEnum.MYSTIC_LORE),
+ MYSTIC_MIGHT(Rs2PrayerEnum.MYSTIC_MIGHT),
+ AUGURY(Rs2PrayerEnum.AUGURY);
+
+ private final Rs2PrayerEnum prayer;
+
+ MagicPrayerOption(Rs2PrayerEnum prayer) {
+ this.prayer = prayer;
+ }
+
+ public Rs2PrayerEnum getPrayer() {
+ return prayer;
+ }
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/combathotkeys/CombatHotkeysPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/combathotkeys/CombatHotkeysPlugin.java
index d80f4ad1137..733bbd8006e 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/combathotkeys/CombatHotkeysPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/combathotkeys/CombatHotkeysPlugin.java
@@ -12,6 +12,7 @@
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.microbot.Microbot;
import net.runelite.client.plugins.microbot.util.inventory.Rs2Inventory;
+import net.runelite.client.plugins.microbot.util.math.Rs2Random;
import net.runelite.client.plugins.microbot.util.prayer.Rs2Prayer;
import net.runelite.client.plugins.microbot.util.prayer.Rs2PrayerEnum;
import net.runelite.client.ui.overlay.OverlayManager;
@@ -20,6 +21,8 @@
import java.awt.*;
import java.awt.event.KeyEvent;
+import static net.runelite.client.plugins.microbot.util.Global.sleep;
+
@PluginDescriptor(
name = PluginDescriptor.Cicire + "Combat hotkeys",
description = "A plugin to bind hotkeys to combat stuff",
@@ -80,6 +83,21 @@ public void keyPressed(KeyEvent e) {
script.dance = !script.dance;
}
+ if (config.offensiveMeleeKey().matches(e)) {
+ e.consume();
+ Rs2Prayer.toggle(config.offensiveMeleePrayer().getPrayer());
+ }
+
+ if (config.offensiveRangeKey().matches(e)) {
+ e.consume();
+ Rs2Prayer.toggle(config.offensiveRangePrayer().getPrayer());
+ }
+
+ if (config.offensiveMagicKey().matches(e)) {
+ e.consume();
+ Rs2Prayer.toggle(config.offensiveMagicPrayer().getPrayer());
+ }
+
if (config.protectFromMagic().matches(e)) {
e.consume();
Rs2Prayer.toggle(Rs2PrayerEnum.PROTECT_MAGIC);
@@ -137,12 +155,15 @@ public void keyPressed(KeyEvent e) {
}
- private static void equipGear(String gearListConfig) {
+ private void equipGear(String gearListConfig) {
String[] itemIDs = gearListConfig.split(",");
for (String value : itemIDs) {
int itemId = Integer.parseInt(value);
Rs2Inventory.equip(itemId);
+
+ int delay = Rs2Random.between(0, config.maxDelay());
+ sleep(delay);
}
}