Updates and rework to use CScript
This commit is contained in:
@ -24,9 +24,11 @@
|
||||
*/
|
||||
package io.reisub.openosrs.consume;
|
||||
|
||||
import net.runelite.client.config.*;
|
||||
import net.runelite.client.config.ConfigGroup;
|
||||
import net.runelite.client.config.ConfigItem;
|
||||
import net.runelite.client.config.ConfigSection;
|
||||
|
||||
@ConfigGroup("ChaosConsumeConfig")
|
||||
@ConfigGroup("chaosconsume")
|
||||
|
||||
public interface Config extends net.runelite.client.config.Config {
|
||||
@ConfigSection(
|
||||
@ -384,4 +386,45 @@ public interface Config extends net.runelite.client.config.Config {
|
||||
default boolean magicWarnings() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ConfigSection(
|
||||
keyName = "specialConfig",
|
||||
name = "Weapon Special Configuration",
|
||||
description = "Configure weapon specials",
|
||||
position = 40
|
||||
)
|
||||
String specialConfig = "specialConfig";
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "useSpecial",
|
||||
name = "Use special",
|
||||
description = "Use weapon special",
|
||||
section = "specialConfig",
|
||||
position = 41
|
||||
)
|
||||
default boolean useSpecial() { return false; }
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "specialWeapon",
|
||||
name = "Weapon",
|
||||
description = "What weapon to use the special of. Leaving this empty will use the currently equipped weapon.",
|
||||
section = "specialConfig",
|
||||
hidden = true,
|
||||
unhide = "useSpecial",
|
||||
position = 42
|
||||
)
|
||||
default String specialWeapon() { return ""; }
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "specialCost",
|
||||
name = "Special cost",
|
||||
description = "Cost of the special attack.",
|
||||
section = "specialConfig",
|
||||
hidden = true,
|
||||
unhide = "useSpecial",
|
||||
position = 43
|
||||
)
|
||||
default int specialCost() { return 100; }
|
||||
|
||||
|
||||
}
|
@ -4,11 +4,10 @@ import com.google.inject.Provides;
|
||||
import io.reisub.openosrs.util.Calculations;
|
||||
import io.reisub.openosrs.util.Util;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.ItemID;
|
||||
import net.runelite.api.Skill;
|
||||
import net.runelite.api.VarPlayer;
|
||||
import net.runelite.api.*;
|
||||
import net.runelite.api.events.*;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
import net.runelite.api.widgets.WidgetInfo;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.events.ConfigChanged;
|
||||
@ -17,11 +16,16 @@ import net.runelite.client.plugins.PluginDependency;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.plugins.iutils.game.Game;
|
||||
import net.runelite.client.plugins.iutils.game.InventoryItem;
|
||||
import net.runelite.client.plugins.iutils.game.iWidget;
|
||||
import net.runelite.client.plugins.iutils.iUtils;
|
||||
import net.runelite.client.plugins.iutils.ui.Bank;
|
||||
import org.pf4j.Extension;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Extension
|
||||
@PluginDependency(Util.class)
|
||||
@ -33,18 +37,21 @@ import java.util.Set;
|
||||
)
|
||||
@Slf4j
|
||||
public class Consume extends Plugin {
|
||||
@Inject
|
||||
@SuppressWarnings("unused")
|
||||
@Inject
|
||||
private Game game;
|
||||
|
||||
@Inject
|
||||
@SuppressWarnings("unused")
|
||||
@Inject
|
||||
private Config config;
|
||||
|
||||
@Inject
|
||||
@SuppressWarnings("unused")
|
||||
@Inject
|
||||
private Calculations calc;
|
||||
|
||||
@Inject
|
||||
private Bank bank;
|
||||
|
||||
private final Set<Integer> IGNORE_FOOD = Set.of(ItemID.DWARVEN_ROCK_CAKE, ItemID.DWARVEN_ROCK_CAKE_7510);
|
||||
private final Set<Integer> DRINK_SET = Set.of(ItemID.JUG_OF_WINE, ItemID.SARADOMIN_BREW1, ItemID.SARADOMIN_BREW2, ItemID.SARADOMIN_BREW3, ItemID.SARADOMIN_BREW4, ItemID.XERICS_AID_1, ItemID.XERICS_AID_2, ItemID.XERICS_AID_3, ItemID.XERICS_AID_4, ItemID.XERICS_AID_1_20977, ItemID.XERICS_AID_2_20978, ItemID.XERICS_AID_3_20979, ItemID.XERICS_AID_4_20980, ItemID.XERICS_AID_1_20981, ItemID.XERICS_AID_2_20982, ItemID.XERICS_AID_3_20983, ItemID.XERICS_AID_4_20984, ItemID.BANDAGES);
|
||||
private final Set<Integer> ANTI_POISON_IDS = Set.of(ItemID.ANTIPOISON1, ItemID.ANTIPOISON2, ItemID.ANTIPOISON3, ItemID.ANTIPOISON4, ItemID.SUPERANTIPOISON1, ItemID.SUPERANTIPOISON2, ItemID.SUPERANTIPOISON3, ItemID.SUPERANTIPOISON4,
|
||||
@ -83,6 +90,7 @@ public class Consume extends Plugin {
|
||||
ItemID.DIVINE_MAGIC_POTION1, ItemID.DIVINE_MAGIC_POTION2, ItemID.DIVINE_MAGIC_POTION3, ItemID.DIVINE_MAGIC_POTION4,
|
||||
ItemID.DIVINE_BATTLEMAGE_POTION1, ItemID.DIVINE_BATTLEMAGE_POTION2, ItemID.DIVINE_BATTLEMAGE_POTION3, ItemID.DIVINE_BATTLEMAGE_POTION4);
|
||||
|
||||
private ScheduledExecutorService executor;
|
||||
private long lastAte;
|
||||
private long lastPot;
|
||||
private int timeout;
|
||||
@ -104,9 +112,10 @@ public class Consume extends Plugin {
|
||||
private long lastRanged;
|
||||
private boolean shouldDrinkMagic;
|
||||
private long lastMagic;
|
||||
private boolean shouldUseSpecial;
|
||||
|
||||
@Provides
|
||||
@SuppressWarnings("unused")
|
||||
@Provides
|
||||
Config provideConfig(ConfigManager configManager) {
|
||||
return configManager.getConfig(Config.class);
|
||||
}
|
||||
@ -114,25 +123,120 @@ public class Consume extends Plugin {
|
||||
@Override
|
||||
protected void startUp() {
|
||||
log.info("Starting Chaos Consume");
|
||||
|
||||
generateNewEatThreshold();
|
||||
generateNewPrayerThreshold();
|
||||
|
||||
executor = Executors.newSingleThreadScheduledExecutor();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void shutDown() {
|
||||
log.info("Stopping Chaos Consume");
|
||||
|
||||
executor.shutdownNow();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@SuppressWarnings("unused")
|
||||
@Subscribe
|
||||
private void onGameTick(GameTick event) {
|
||||
if (game.client() == null || game.localPlayer() == null || game.client().getGameState() != GameState.LOGGED_IN) return;
|
||||
if (game.client() == null || game.localPlayer() == null || game.client().getGameState() != GameState.LOGGED_IN || bank.isOpen()) return;
|
||||
|
||||
if (timeout > 0) {
|
||||
timeout--;
|
||||
return;
|
||||
}
|
||||
|
||||
if (eatThreshold == 0) generateNewEatThreshold();
|
||||
if (prayerThreshold == 0) generateNewPrayerThreshold();
|
||||
executor.schedule(this::tick, calc.random(50, 80), TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Subscribe
|
||||
private void onVarbitChanged(VarbitChanged event) {
|
||||
if (game.client().getGameState() != GameState.LOGGED_IN) return;
|
||||
|
||||
if (config.drinkAntiPoison()
|
||||
&& event.getIndex() == VarPlayer.POISON.getId()
|
||||
&& game.client().getVarpValue(VarPlayer.POISON.getId()) > 0) {
|
||||
shouldDrinkAntiPoison = true;
|
||||
}
|
||||
|
||||
if (config.useSpecial()
|
||||
&& event.getIndex() == VarPlayer.SPECIAL_ATTACK_PERCENT.getId()
|
||||
&& game.client().getVarpValue(VarPlayer.SPECIAL_ATTACK_PERCENT.getId()) > config.specialCost()) {
|
||||
shouldUseSpecial = true;
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Subscribe
|
||||
private void onChatMessage(ChatMessage event) {
|
||||
if (game.client().getGameState() != GameState.LOGGED_IN) return;
|
||||
|
||||
String BURN_MESSAGE = ("You're horribly burnt by the dragon fire!");
|
||||
String BURN_EXPIRE = ("antifire potion is about to expire.");
|
||||
|
||||
String message = event.getMessage();
|
||||
|
||||
if (config.drinkAntiFire() && (message.contains(BURN_MESSAGE) || message.contains(BURN_EXPIRE))) {
|
||||
shouldDrinkAntiFire = true;
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Subscribe
|
||||
private void onStatChanged(StatChanged event) {
|
||||
if (game.client().getGameState() != GameState.LOGGED_IN || timeout > 0) return;
|
||||
|
||||
Skill skill = event.getSkill();
|
||||
int level = event.getBoostedLevel();
|
||||
|
||||
checkSkill(skill, level);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Subscribe
|
||||
private void onGameStateChanged(GameStateChanged event) {
|
||||
if (event.getGameState() == GameState.LOGGED_IN) {
|
||||
timeout = 5;
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Subscribe
|
||||
private void onConfigChanged(ConfigChanged event) {
|
||||
if (!event.getGroup().equals("chaosconsume")) return;
|
||||
|
||||
switch (event.getKey()) {
|
||||
case "minEatHP":
|
||||
case "maxEatHP":
|
||||
generateNewEatThreshold();
|
||||
break;
|
||||
case "minPrayerPoints":
|
||||
case "maxPrayerPoints":
|
||||
generateNewPrayerThreshold();
|
||||
case "drinkPrayer":
|
||||
checkSkill(Skill.PRAYER);
|
||||
break;
|
||||
case "strengthLevel":
|
||||
checkSkill(Skill.STRENGTH);
|
||||
break;
|
||||
case "attackLevel":
|
||||
checkSkill(Skill.ATTACK);
|
||||
break;
|
||||
case "defenceLevel":
|
||||
checkSkill(Skill.DEFENCE);
|
||||
break;
|
||||
case "rangedLevel":
|
||||
checkSkill(Skill.RANGED);
|
||||
break;
|
||||
case "magicLevel":
|
||||
checkSkill(Skill.MAGIC);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void tick() {
|
||||
|
||||
int hp = game.modifiedLevel(Skill.HITPOINTS);
|
||||
|
||||
@ -160,6 +264,19 @@ public class Consume extends Plugin {
|
||||
}
|
||||
}
|
||||
|
||||
if (shouldUseSpecial && game.client().getVarpValue(VarPlayer.SPECIAL_ATTACK_ENABLED.getId()) == 0) {
|
||||
shouldUseSpecial = false;
|
||||
|
||||
if (game.client().getVar(Varbits.PVP_SPEC_ORB) == 0) {
|
||||
iWidget special = game.widget(WidgetInfo.MINIMAP_SPEC_CLICKBOX);
|
||||
if (special == null) return;
|
||||
|
||||
special.interact(0);
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (shouldDrinkAntiPoison && canPot()) {
|
||||
if (!drinkPotion(ANTI_POISON_IDS) && config.antiPoisonWarnings()) {
|
||||
game.utils.sendGameMessage("Poisoned but you don't have anti-poison!");
|
||||
@ -240,84 +357,6 @@ public class Consume extends Plugin {
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@SuppressWarnings("unused")
|
||||
private void onVarbitChanged(VarbitChanged event) {
|
||||
if (game.client().getGameState() != GameState.LOGGED_IN) return;
|
||||
|
||||
if (config.drinkAntiPoison()
|
||||
&& event.getIndex() == VarPlayer.POISON.getId()
|
||||
&& game.client().getVarpValue(VarPlayer.POISON.getId()) > 0) {
|
||||
shouldDrinkAntiPoison = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@SuppressWarnings("unused")
|
||||
private void onChatMessage(ChatMessage event) {
|
||||
if (game.client().getGameState() != GameState.LOGGED_IN) return;
|
||||
|
||||
String BURN_MESSAGE = ("You're horribly burnt by the dragon fire!");
|
||||
String BURN_EXPIRE = ("antifire potion is about to expire.");
|
||||
|
||||
String message = event.getMessage();
|
||||
|
||||
if (config.drinkAntiFire() && (message.contains(BURN_MESSAGE) || message.contains(BURN_EXPIRE))) {
|
||||
shouldDrinkAntiFire = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@SuppressWarnings("unused")
|
||||
private void onStatChanged(StatChanged event) {
|
||||
if (game.client().getGameState() != GameState.LOGGED_IN || timeout > 0) return;
|
||||
|
||||
Skill skill = event.getSkill();
|
||||
int level = event.getBoostedLevel();
|
||||
|
||||
checkSkill(skill, level);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@SuppressWarnings("unused")
|
||||
private void onGameStateChanged(GameStateChanged event) {
|
||||
if (event.getGameState() == GameState.LOGGED_IN) {
|
||||
timeout = 5;
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@SuppressWarnings("unused")
|
||||
private void onConfigChanged(ConfigChanged event) {
|
||||
switch (event.getKey()) {
|
||||
case "minEatHP":
|
||||
case "maxEatHP":
|
||||
generateNewEatThreshold();
|
||||
break;
|
||||
case "minPrayerPoints":
|
||||
case "maxPrayerPoints":
|
||||
generateNewPrayerThreshold();
|
||||
case "drinkPrayer":
|
||||
checkSkill(Skill.PRAYER);
|
||||
break;
|
||||
case "strengthLevel":
|
||||
checkSkill(Skill.STRENGTH);
|
||||
break;
|
||||
case "attackLevel":
|
||||
checkSkill(Skill.ATTACK);
|
||||
break;
|
||||
case "defenceLevel":
|
||||
checkSkill(Skill.DEFENCE);
|
||||
break;
|
||||
case "rangedLevel":
|
||||
checkSkill(Skill.RANGED);
|
||||
break;
|
||||
case "magicLevel":
|
||||
checkSkill(Skill.MAGIC);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void generateNewEatThreshold() {
|
||||
eatThreshold = calc.random(config.minEatHP(), config.maxEatHP() + 1);
|
||||
}
|
||||
|
Reference in New Issue
Block a user