Updates and rework to use CScript

This commit is contained in:
2022-01-19 12:35:50 +01:00
parent 78786709eb
commit 7efda7494a
79 changed files with 1295 additions and 818 deletions

View File

@ -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; }
}

View File

@ -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);
}