This script is supposed to kill the closest Chaos druid that is not fighting and collect the drops. The problem is that it just clicks on the drop and very shortly after it tries to attack another druid, i mean, it cancels the collecting action and start to attack. Please help!
Obs: Is it possible to use the glory amulet teleport to edgeville?
@ScriptManifest(author = "Marcelo", info = "Kill druids and collect herbs", name = "DruidMassacre", version = 0, logo = "")
public class DruidKiller extends Script {
@Override
public void onStart() {
log("Let's get started!");
}
private enum State{
ATTACK, COLLECT, TELEPORT, EAT, NOTHING;
}
private State getState() {
GroundItem weed = getGroundItems().closest("Loop half of key", "Tooth half of key", "Rune spear","Dragon spear", "Shield left half", "Ensouled chaos druid head", "Grimy ranarr weed", "Grimy lantadyme", "Grimy dwarf weed", "Grimy cadantine", "Grimy avantoe", "Grimy kwuarm");
NPC druid = getNpcs().closest(npc -> npc.getName().startsWith("Chaos druid") && npc.isAttackable());
if(myPlayer().getHealthPercent() <= 70) {
if (getInventory().contains("Swordfish")){
return State.EAT;
}
else {
return State.TELEPORT;
}
}
if(weed != null) {
return State.COLLECT;
}
if(!getCombat().isFighting() && myPlayer().isAttackable() && !myPlayer().isAnimating() && !myPlayer().isMoving() && druid != null) {
return State.ATTACK;
}
return State.NOTHING;
}
@Override
public int onLoop() throws InterruptedException {
GroundItem weed = getGroundItems().closest("Nature rune", "Loop half of key", "Tooth half of key", "Rune spear","Dragon spear", "Shield left half", "Ensouled chaos druid head", "Grimy ranarr weed", "Grimy lantadyme", "Grimy dwarf weed", "Grimy cadantine", "Grimy avantoe", "Grimy kwuarm");
NPC druid = getNpcs().closest(npc -> npc.getName().startsWith("Chaos druid") && npc.isAttackable());
switch(getState()) {
case EAT:
log("Eat");
getInventory().interact("Eat", "Swordfish");
case TELEPORT:
log("Teleport!");
case COLLECT:
log("Collecting weed");
if(!myPlayer().isMoving() && !myPlayer().isAnimating()) {
weed.interact("Take");
}
case ATTACK:
log("Attacking");
druid.interact("Attack");
sleep(random(1497, 4923));
case NOTHING:
log("Nothing");
}
return random(300, 700);
}
@Override
public void onExit() {
log("terminou porra");
}
@Override
public void onPaint(Graphics2D g) {
}
}