package addons;
import java.util.ArrayList;
import haven.Coord;
import haven.Inventory;
import haven.Item;
import haven.Config;
import haven.MaidFrame;
public class RunFlaskScript extends Thread {
HavenUtil m_util;
static boolean m_filling = false;
public RunFlaskScript(HavenUtil util) {
m_util = util;
}
void staminaLoop() {
Item flask = null;
int flaskID = -1;
int cancelID = -1;
int count = 3;
while (Config.pathDrinker) {
m_util.wait(300);
if (flask == null) {
flask = m_util.findFlask();
if (flask == null)
continue;
if (flaskID == -1)
flaskID = flask.id;
if (cancelID == flask.id)
flask = null;
continue;
} else if (flask != null && cancelID != flask.id) {
if (!m_util.findFlaskToolbar()) {
if (!findFlaskInBag(flaskID)) {
flask = null;
flaskID = -1;
continue;
}
m_util.setBeltSlot(12, HavenUtil.ACTIONBAR_F, flask);
cancelID = flask.id;
flaskID = flask.id;
flask = null;
}
}
// System.out.println(InfoWindow.runFlask);
if (m_util.checkPlayerWalking() && m_util.findFlaskToolbar() && Config.runFlask) {
if (fillFlasks())
count = 3;
if (!m_util.hasHourglass() && m_util.getStamina() < 80 && count > 2) {
Config.forcemod = false;
// System.out.println("acction");
m_util.useActionBar(HavenUtil.ACTIONBAR_F, 11);
count = 0;
} else
count++;
}
}
}
boolean fillFlasks() {
ArrayList<Item> itemList = m_util.getItemsFromBag();
ArrayList<Item> flaskList = new ArrayList<Item>();
if (itemList == null)
return false;
for (Item i : itemList) {
String name = i.GetResName();
if (name.contains("waterskin") || name.contains("waterflask")) {
// System.out.println(i.olcol);
if (i.olcol == null)
continue;
// System.out.println("gothrough");
if (m_util.waterFlaskInfo(i) < 0.1) {
flaskList.add(i);
}
}
}
if (flaskList.size() > 0 && !m_filling) {
// System.out.println("fill stuff");
m_filling = true;
fillFlaskList(flaskList);
m_filling = false;
return true;
}
return false;
}
void fillFlaskList(ArrayList<Item> flaskList) {
if (m_util.mouseHoldingAnItem() || MaidFrame.getCurrentSession().getUI().isgrabbingmouse())
return;
boolean holding = false;
Inventory bag = m_util.getInventory("Inventory");
Item waterBucket = m_util.getItemFromBag("bucket-water");
if (waterBucket == null) {
return;
}
Coord bucketC = new Coord(waterBucket.c);
if (m_util.mouseHoldingAnItem())
holding = true;
if (holding) {
bag.drop(new Coord(0, 0), bucketC);
} else if (m_util.getInventory("Inventory") != null && waterBucket != null) {
if (waterBucket != null)
m_util.pickUpItem(waterBucket);
}
for (Item flask : flaskList)
m_util.itemInteract(flask);
bag.drop(new Coord(0, 0), bucketC);
}
boolean findFlaskInBag(int id) {
ArrayList<Item> itemList = m_util.getItemsFromBag();
if (itemList == null)
return false;
for (Item i : itemList) {
if (i.id == id) {
// String name = i.GetResName();
// if(name.contains("waterskin") || name.contains("waterflask")
// ){
return true;
// }
}
}
return false;
}
public void run() {
staminaLoop();
Config.runFlaskRunning = false;
}
}