Compare commits

...

5 Commits

Author SHA1 Message Date
d6af3d5b46 Add quickprayer support for buff prayers 2022-01-23 03:06:18 +01:00
4166c7fdf8 Add autoalcher and motherlodeminer 2022-01-22 12:10:33 +01:00
2c015056fb Add releases 2022-01-22 12:09:59 +01:00
5c1991fb1a Fix weapon special usage 2022-01-22 12:09:39 +01:00
344ee6cb24 Re-add automatic start 2022-01-22 12:09:16 +01:00
11 changed files with 219 additions and 53 deletions

View File

@ -93,14 +93,14 @@ public class Birdhouse extends CScript implements KeyListener {
@SuppressWarnings("unused") @SuppressWarnings("unused")
@Subscribe @Subscribe
private void onGameTick(GameTick event) { private void onGameTick(GameTick event) {
// if (isLoggedIn() if (isLoggedIn()
// && game.localPlayer().position().regionID() == 14908) { && game.localPlayer().position().regionID() == 14908) {
// if (!active && game.localPlayer().position().distanceTo(hillHousePosition) < 10 && game.inventory().withNamePart("logs").count() == 4) { if (!active && game.localPlayer().position().distanceTo(hillHousePosition) < 10 && game.inventory().withNamePart("logs").count() == 4) {
// execute(); execute();
// } else if (active && game.inventory().all().isEmpty() && !bank.isOpen() && game.localPlayer().position().distanceTo(islandPosition) < 10) { } else if (active && game.inventory().all().isEmpty() && !bank.isOpen() && game.localPlayer().position().distanceTo(islandPosition) < 10) {
// execute(); execute();
// } }
// } }
} }
public boolean hasRecentlyBeenEmptied(BirdhouseSpace space) { public boolean hasRecentlyBeenEmptied(BirdhouseSpace space) {

View File

@ -126,6 +126,7 @@ public class Consume extends Plugin implements KeyListener {
private boolean shouldDrinkMagic; private boolean shouldDrinkMagic;
private long lastMagic; private long lastMagic;
private boolean shouldUseSpecial; private boolean shouldUseSpecial;
private long lastSpecial;
private boolean pkTeleport; private boolean pkTeleport;
@SuppressWarnings("unused") @SuppressWarnings("unused")
@ -179,7 +180,8 @@ public class Consume extends Plugin implements KeyListener {
if (config.useSpecial() if (config.useSpecial()
&& event.getIndex() == VarPlayer.SPECIAL_ATTACK_PERCENT.getId() && event.getIndex() == VarPlayer.SPECIAL_ATTACK_PERCENT.getId()
&& game.client().getVarpValue(VarPlayer.SPECIAL_ATTACK_PERCENT.getId()) > config.specialCost()) { && game.client().getVarpValue(VarPlayer.SPECIAL_ATTACK_PERCENT.getId()) / 10 >= config.specialCost()
&& lastSpecial + 2000 < System.currentTimeMillis()) {
shouldUseSpecial = true; shouldUseSpecial = true;
} }
} }
@ -281,8 +283,9 @@ public class Consume extends Plugin implements KeyListener {
if (shouldUseSpecial && game.client().getVarpValue(VarPlayer.SPECIAL_ATTACK_ENABLED.getId()) == 0) { if (shouldUseSpecial && game.client().getVarpValue(VarPlayer.SPECIAL_ATTACK_ENABLED.getId()) == 0) {
shouldUseSpecial = false; shouldUseSpecial = false;
lastSpecial = System.currentTimeMillis();
if (game.client().getVar(Varbits.PVP_SPEC_ORB) == 0) { if (game.varb(Varbits.PVP_SPEC_ORB.getId()) == 0) {
iWidget special = game.widget(WidgetInfo.MINIMAP_SPEC_CLICKBOX); iWidget special = game.widget(WidgetInfo.MINIMAP_SPEC_CLICKBOX);
if (special == null) return; if (special == null) return;
@ -400,7 +403,7 @@ public class Consume extends Plugin implements KeyListener {
private void onInteractingChanged(InteractingChanged event) { private void onInteractingChanged(InteractingChanged event) {
if (!config.tpOnPlayerAttack() || !pkTeleport || game.client().getVar(Varbits.IN_WILDERNESS) == 0) return; if (!config.tpOnPlayerAttack() || !pkTeleport || game.client().getVar(Varbits.IN_WILDERNESS) == 0) return;
if (event.getSource() == null || event.getTarget() == null) return; if (event.getSource() == null || event.getTarget() == null || event.getTarget().getName() == null) return;
if (event.getSource() instanceof Player && event.getTarget().equals(game.client().getLocalPlayer())) { if (event.getSource() instanceof Player && event.getTarget().equals(game.client().getLocalPlayer())) {
log.info("Player attacking us: " + event.getSource().getName()); log.info("Player attacking us: " + event.getSource().getName());

View File

@ -84,11 +84,41 @@ public interface Config extends net.runelite.client.config.Config {
return new Keybind(KeyEvent.VK_3, InputEvent.CTRL_DOWN_MASK); return new Keybind(KeyEvent.VK_3, InputEvent.CTRL_DOWN_MASK);
} }
@ConfigItem(
keyName = "hotkeyMeleeBuff",
name = "Melee buff hotkey",
description = "When you press this key melee buff(s) will be set as quickprayer",
position = 23
)
default Keybind hotkeyMeleeBuff() {
return new Keybind(KeyEvent.VK_Q, InputEvent.CTRL_DOWN_MASK);
}
@ConfigItem(
keyName = "hotkeyRangedBuff",
name = "Ranged buff hotkey",
description = "When you press this key ranged buff will be set as quickprayer",
position = 24
)
default Keybind hotkeyRangedBuff() {
return new Keybind(KeyEvent.VK_W, InputEvent.CTRL_DOWN_MASK);
}
@ConfigItem(
keyName = "hotkeyMagicBuff",
name = "Magic buff hotkey",
description = "When you press this key magic buff will be set as quickprayer",
position = 25
)
default Keybind hotkeyMagicBuff() {
return new Keybind(KeyEvent.VK_E, InputEvent.CTRL_DOWN_MASK);
}
@ConfigItem( @ConfigItem(
keyName = "openInventory", keyName = "openInventory",
name = "Open inventory", name = "Open inventory",
description = "Open inventory after swapping quickprayers", description = "Open inventory after swapping quickprayers",
position = 23 position = 26
) )
default boolean openInventory() { return true; } default boolean openInventory() { return true; }
@ -96,7 +126,7 @@ public interface Config extends net.runelite.client.config.Config {
keyName = "allowToggleOff", keyName = "allowToggleOff",
name = "Allow toggling off", name = "Allow toggling off",
description = "Will allow turning the protect prayer off when pressing the hotkey for the current one.", description = "Will allow turning the protect prayer off when pressing the hotkey for the current one.",
position = 24 position = 27
) )
default boolean allowToggleOff() { return true; } default boolean allowToggleOff() { return true; }
@ -104,7 +134,7 @@ public interface Config extends net.runelite.client.config.Config {
keyName = "jadPrayerFlick", keyName = "jadPrayerFlick",
name = "Jad Auto Prayer Flick", name = "Jad Auto Prayer Flick",
description = "Automatically swap prayers against Jad.", description = "Automatically swap prayers against Jad.",
position = 30 position = 40
) )
default boolean jadPrayerFlick() { return true; } default boolean jadPrayerFlick() { return true; }
@ -112,7 +142,7 @@ public interface Config extends net.runelite.client.config.Config {
keyName = "hesporiPrayerFlick", keyName = "hesporiPrayerFlick",
name = "Hespori Auto Prayer Flick", name = "Hespori Auto Prayer Flick",
description = "Automatically swap prayers against Hespori.", description = "Automatically swap prayers against Hespori.",
position = 31 position = 41
) )
default boolean hesporiPrayerFlick() { return true; } default boolean hesporiPrayerFlick() { return true; }

View File

@ -7,7 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import net.runelite.api.*; import net.runelite.api.*;
import net.runelite.api.events.AnimationChanged; import net.runelite.api.events.AnimationChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.VarbitChanged; import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.callback.ClientThread; import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
@ -17,6 +17,7 @@ import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDependency; import net.runelite.client.plugins.PluginDependency;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.iutils.api.Prayers;
import net.runelite.client.plugins.iutils.game.Game; import net.runelite.client.plugins.iutils.game.Game;
import net.runelite.client.plugins.iutils.game.iWidget; import net.runelite.client.plugins.iutils.game.iWidget;
import net.runelite.client.plugins.iutils.iUtils; import net.runelite.client.plugins.iutils.iUtils;
@ -70,7 +71,8 @@ public class Prayerflick extends Plugin implements KeyListener {
private boolean toggleFlicking; private boolean toggleFlicking;
private boolean firstFlick; private boolean firstFlick;
private boolean toggledOff; private boolean toggledOff;
private volatile ProtectFrom currently; private volatile QuickPrayer currentOverhead;
private int level;
@Override @Override
protected void startUp() { protected void startUp() {
@ -124,12 +126,12 @@ public class Prayerflick extends Plugin implements KeyListener {
switch (actor.getAnimation()) { switch (actor.getAnimation()) {
case AnimationID.TZTOK_JAD_MAGIC_ATTACK: case AnimationID.TZTOK_JAD_MAGIC_ATTACK:
case JALTOK_JAD_MAGE_ATTACK: case JALTOK_JAD_MAGE_ATTACK:
setPrayer(ProtectFrom.MAGIC, false); setPrayer(false, QuickPrayer.PROTECT_FROM_MAGIC);
game.utils.sendGameMessage("Pray against magic!"); game.utils.sendGameMessage("Pray against magic!");
break; break;
case AnimationID.TZTOK_JAD_RANGE_ATTACK: case AnimationID.TZTOK_JAD_RANGE_ATTACK:
case JALTOK_JAD_RANGE_ATTACK: case JALTOK_JAD_RANGE_ATTACK:
setPrayer(ProtectFrom.MISSILES, false); setPrayer(false, QuickPrayer.PROTECT_FROM_MISSILES);
game.utils.sendGameMessage("Pray against missiles!"); game.utils.sendGameMessage("Pray against missiles!");
break; break;
} }
@ -138,10 +140,10 @@ public class Prayerflick extends Plugin implements KeyListener {
if (config.hesporiPrayerFlick()) { if (config.hesporiPrayerFlick()) {
switch (actor.getAnimation()) { switch (actor.getAnimation()) {
case HESPORI_MAGE_ATTACK: case HESPORI_MAGE_ATTACK:
setPrayer(ProtectFrom.MAGIC, false); setPrayer(false, QuickPrayer.PROTECT_FROM_MAGIC);
break; break;
case HESPORI_RANGE_ATTACK: case HESPORI_RANGE_ATTACK:
setPrayer(ProtectFrom.MISSILES, false); setPrayer(false, QuickPrayer.PROTECT_FROM_MISSILES);
break; break;
} }
} }
@ -158,6 +160,8 @@ public class Prayerflick extends Plugin implements KeyListener {
@Override @Override
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
level = game.baseLevel(Skill.PRAYER);
if (config.prayerFlickHotkey().matches(e)) { if (config.prayerFlickHotkey().matches(e)) {
if (toggleFlicking) { if (toggleFlicking) {
toggledOff = true; toggledOff = true;
@ -167,42 +171,52 @@ public class Prayerflick extends Plugin implements KeyListener {
toggleFlicking = !toggleFlicking; toggleFlicking = !toggleFlicking;
} else if (config.hotkeyMelee().matches(e)) { } else if (config.hotkeyMelee().matches(e)) {
setPrayer(ProtectFrom.MELEE, config.allowToggleOff()); setPrayer(config.allowToggleOff(), QuickPrayer.PROTECT_FROM_MELEE);
} else if (config.hotkeyMissiles().matches(e)) { } else if (config.hotkeyMissiles().matches(e)) {
setPrayer(ProtectFrom.MISSILES, config.allowToggleOff()); setPrayer(config.allowToggleOff(), QuickPrayer.PROTECT_FROM_MISSILES);
} else if (config.hotkeyMagic().matches(e)) { } else if (config.hotkeyMagic().matches(e)) {
setPrayer(ProtectFrom.MAGIC, config.allowToggleOff()); setPrayer(config.allowToggleOff(), QuickPrayer.PROTECT_FROM_MAGIC);
} else if (config.hotkeyMeleeBuff().matches(e)) {
setPrayer(config.allowToggleOff(), QuickPrayer.getBestMeleeBuff(level));
} else if (config.hotkeyRangedBuff().matches(e)) {
setPrayer(config.allowToggleOff(), QuickPrayer.getBestRangedBuff(level));
} else if (config.hotkeyMagicBuff().matches(e)) {
setPrayer(config.allowToggleOff(), QuickPrayer.getBestMagicBuff(level));
} }
} }
@Override @Override
public void keyReleased(KeyEvent e) {} public void keyReleased(KeyEvent e) {}
private void setPrayer(ProtectFrom protectFrom, boolean allowToggleOff) { private void setPrayer(boolean allowToggleOff, QuickPrayer... quickPrayers) {
if (!allowToggleOff && protectFrom == currently) return; if (!allowToggleOff && quickPrayers[0] == currentOverhead) return;
if (currently == protectFrom) { if (currentOverhead == quickPrayers[0]) {
currently = ProtectFrom.NONE; currentOverhead = QuickPrayer.NONE;
} else { } else if (quickPrayers[0] == QuickPrayer.PROTECT_FROM_MAGIC
currently = protectFrom; || quickPrayers[0] == QuickPrayer.PROTECT_FROM_MISSILES
|| quickPrayers[0] == QuickPrayer.PROTECT_FROM_MELEE) {
currentOverhead = quickPrayers[0];
} }
executor.schedule(() -> { executor.schedule(() -> {
iWidget quickPrayers = game.widget(WidgetInfo.MINIMAP_QUICK_PRAYER_ORB); iWidget quickPrayersWidget = game.widget(WidgetInfo.MINIMAP_QUICK_PRAYER_ORB);
if (quickPrayers == null) return; if (quickPrayersWidget == null) return;
quickPrayers.interact(1); quickPrayersWidget.interact(1);
game.waitUntil(() -> { game.waitUntil(() -> {
iWidget w = game.widget(77, 4); iWidget w = game.widget(WidgetID.QUICK_PRAYERS_GROUP_ID, 4);
return w != null && !w.hidden(); return w != null && !w.hidden();
}); });
iWidget protection = game.widget(77, 4, protectFrom.getChildId()); for (QuickPrayer quickPrayer : quickPrayers) {
iWidget protection = game.widget(WidgetID.QUICK_PRAYERS_GROUP_ID, 4, quickPrayer.getChildId());
if (protection == null) return; if (protection == null) return;
protection.interact(0); protection.interact(0);
}
iWidget update = game.widget(77, 5); iWidget update = game.widget(WidgetID.QUICK_PRAYERS_GROUP_ID, 5);
if (update == null) return; if (update == null) return;
update.interact(0); update.interact(0);

View File

@ -1,15 +0,0 @@
package io.reisub.openosrs.prayerflick;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
@Getter
public enum ProtectFrom {
NONE(0),
MAGIC(12),
MISSILES(13),
MELEE(14);
private final int childId;
}

View File

@ -0,0 +1,132 @@
package io.reisub.openosrs.prayerflick;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.runelite.api.widgets.WidgetID;
@AllArgsConstructor
@Getter
public enum QuickPrayer {
NONE(0, 0),
THICK_SKIN(WidgetID.QuickPrayer.THICK_SKIN_CHILD_ID, 1),
BURST_OF_STRENGTH(WidgetID.QuickPrayer.BURST_OF_STRENGTH_CHILD_ID, 4),
CLARITY_OF_THOUGHT(WidgetID.QuickPrayer.CLARITY_OF_THOUGHT_CHILD_ID, 7),
SHARP_EYE(WidgetID.QuickPrayer.SHARP_EYE_CHILD_ID, 8),
MYSTIC_WILL(WidgetID.QuickPrayer.MYSTIC_WILL_CHILD_ID, 9),
ROCK_SKIN(WidgetID.QuickPrayer.ROCK_SKIN_CHILD_ID, 10),
SUPERHUMAN_STRENGTH(WidgetID.QuickPrayer.SUPERHUMAN_STRENGTH_CHILD_ID, 13),
IMPROVED_REFLEXES(WidgetID.QuickPrayer.IMPROVED_REFLEXES_CHILD_ID, 16),
RAPID_RESTORE(WidgetID.QuickPrayer.RAPID_RESTORE_CHILD_ID, 19),
RAPID_HEAL(WidgetID.QuickPrayer.RAPID_HEAL_CHILD_ID, 22),
PROTECT_ITEM(WidgetID.QuickPrayer.PROTECT_ITEM_CHILD_ID, 25),
HAWK_EYE(WidgetID.QuickPrayer.HAWK_EYE_CHILD_ID, 26),
MYSTIC_LORE(WidgetID.QuickPrayer.MYSTIC_LORE_CHILD_ID, 27),
STEEL_SKIN(WidgetID.QuickPrayer.STEEL_SKIN_CHILD_ID, 28),
ULTIMATE_STRENGTH(WidgetID.QuickPrayer.ULTIMATE_STRENGTH_CHILD_ID, 31),
INCREDIBLE_REFLEXES(WidgetID.QuickPrayer.INCREDIBLE_REFLEXES_CHILD_ID, 34),
PROTECT_FROM_MAGIC(WidgetID.QuickPrayer.PROTECT_FROM_MAGIC_CHILD_ID, 37),
PROTECT_FROM_MISSILES(WidgetID.QuickPrayer.PROTECT_FROM_MISSILES_CHILD_ID, 40),
PROTECT_FROM_MELEE(WidgetID.QuickPrayer.PROTECT_FROM_MELEE_CHILD_ID, 43),
EAGLE_EYE(WidgetID.QuickPrayer.EAGLE_EYE_CHILD_ID, 44),
MYSTIC_MIGHT(WidgetID.QuickPrayer.MYSTIC_MIGHT_CHILD_ID, 45),
RETRIBUTION(WidgetID.QuickPrayer.RETRIBUTION_CHILD_ID, 46),
REDEMPTION(WidgetID.QuickPrayer.REDEMPTION_CHILD_ID, 49),
SMITE(WidgetID.QuickPrayer.SMITE_CHILD_ID, 52),
PRESERVE(WidgetID.QuickPrayer.PRESERVE_CHILD_ID, 55),
CHIVALRY(WidgetID.QuickPrayer.CHIVALRY_CHILD_ID, 60),
PIETY(WidgetID.QuickPrayer.PIETY_CHILD_ID, 70),
RIGOUR(WidgetID.QuickPrayer.RIGOUR_CHILD_ID, 74),
AUGURY(WidgetID.QuickPrayer.AUGURY_CHILD_ID, 77);
private final int childId;
private final int level;
public static QuickPrayer[] getBestMeleeBuff(int level) {
if (level >= PIETY.level) {
return new QuickPrayer[] { PIETY };
} else if (level >= CHIVALRY.level) {
return new QuickPrayer[] { CHIVALRY };
} else {
QuickPrayer[] quickPrayers;
if (level >= 7) {
quickPrayers = new QuickPrayer[3];
quickPrayers[0] = getBestDefence(level);
quickPrayers[1] = getBestStrength(level);
quickPrayers[2] = getBestAttack(level);
} else if (level >= 4) {
quickPrayers = new QuickPrayer[2];
quickPrayers[0] = getBestDefence(level);
quickPrayers[1] = getBestStrength(level);
} else {
quickPrayers = new QuickPrayer[1];
quickPrayers[0] = getBestDefence(level);
}
return quickPrayers;
}
}
private static QuickPrayer getBestAttack(int level) {
if (level >= INCREDIBLE_REFLEXES.level) {
return INCREDIBLE_REFLEXES;
} else if (level >= IMPROVED_REFLEXES.level) {
return IMPROVED_REFLEXES;
} else if (level >= CLARITY_OF_THOUGHT.level) {
return CLARITY_OF_THOUGHT;
}
return null;
}
private static QuickPrayer getBestStrength(int level) {
if (level >= ULTIMATE_STRENGTH.level) {
return ULTIMATE_STRENGTH;
} else if (level >= SUPERHUMAN_STRENGTH.level) {
return SUPERHUMAN_STRENGTH;
} else if (level >= BURST_OF_STRENGTH.level) {
return BURST_OF_STRENGTH;
}
return null;
}
private static QuickPrayer getBestDefence(int level) {
if (level >= STEEL_SKIN.level) {
return STEEL_SKIN;
} else if (level >= ROCK_SKIN.level) {
return ROCK_SKIN;
} else if (level >= THICK_SKIN.level) {
return THICK_SKIN;
}
return null;
}
public static QuickPrayer[] getBestRangedBuff(int level) {
if (level >= RIGOUR.level) {
return new QuickPrayer[] { RIGOUR };
} else if (level >= EAGLE_EYE.level) {
return new QuickPrayer[] { EAGLE_EYE };
} else if (level >= HAWK_EYE.level) {
return new QuickPrayer[] { HAWK_EYE };
} else if (level >= SHARP_EYE.level) {
return new QuickPrayer[] { SHARP_EYE };
}
return new QuickPrayer[]{};
}
public static QuickPrayer[] getBestMagicBuff(int level) {
if (level >= AUGURY.level) {
return new QuickPrayer[] { AUGURY };
} else if (level >= MYSTIC_MIGHT.level) {
return new QuickPrayer[] { MYSTIC_MIGHT };
} else if (level >= MYSTIC_LORE.level) {
return new QuickPrayer[] { MYSTIC_LORE };
} else if (level >= MYSTIC_WILL.level) {
return new QuickPrayer[] { MYSTIC_WILL };
}
return new QuickPrayer[]{};
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -26,6 +26,7 @@
rootProject.name = "Chaos Plugins" rootProject.name = "Chaos Plugins"
include(":agility") include(":agility")
include(":autoalcher")
include(":autobones") include(":autobones")
include(":autodropper") include(":autodropper")
include(":birdhouse") include(":birdhouse")
@ -39,6 +40,7 @@ include(":glassblower")
include(":herblore") include(":herblore")
include(":masterthiever") include(":masterthiever")
include(":miner") include(":miner")
include(":motherlodeminer")
include(":mtahelper") include(":mtahelper")
include(":prayerflick") include(":prayerflick")
include(":shopper") include(":shopper")