import org.jibble.pircbot.*;import java.util.*;import java.net.*;import java.io.*;
public class MyBot extends PircBot {
int xpToNextInt;
Map statsMap = new HashMap();
Map xpLevelMap = new HashMap();
Map rsname;
Map combatHash = new HashMap();
String skillSearch;
Vector statsVector = new Vector();
Vector xpVector = new Vector();
Vector combatVector = new Vector();
public MyBot() {
this.setName("rsbot-Ves");
this.setLogin("rsbot-Ves");
sendMessage("nickserv", "identify California7");
try {
FileInputStream rsnamefis = new FileInputStream("rsnamefos.tmp");
ObjectInputStream rsnameois = new ObjectInputStream(rsnamefis);
rsname = (Map) rsnameois.readObject();
rsnameois.close();
}
catch (FileNotFoundException e) {
System.err.println("FileNotFoundException");
rsname = new HashMap();
}
catch (IOException e) {
System.out.println("IOException");
}
catch (ClassNotFoundException e) {
System.err.println("ClassNotFound");
}
}
public void onInvite(String targetNick, String sourceNick, String sourceLogin, String sourceHostname, String channel) {
if (sourceHostname.equalsIgnoreCase("Swift-424F93B5.col.wideopenwest.com")) {
joinChannel(channel);
}
if (sourceNick.startsWith("Vesuvius")) {
joinChannel(channel);
}
}
public void onDisconnect() {
try {
reconnect();
sendMessage("chanserv", "identify California7");
joinChannel("#brothor");
}
catch (IOException e) {
}
catch (IrcException e) {
}
}
public void onJoin(String channel, String sender, String login, String hostname) {
if (sender.equalsIgnoreCase(getNick())) {
sendMessage(channel, "Sup Guys");
setMode(getNick(), "+T");
setMode(getNick(), "+p");
setMode(getNick(), "+B");
}
else if (sender.startsWith("Vesuvius")) {
sendAction(channel, "praises his creator");
}
else if (sender.startsWith("Rio")) {
sendMessage(channel, "Welcome Rio BA(Hons) to " + channel.substring(1) + " IRC");
}
else if (sender.equals("ddaazz")) {
}
else if (sender.startsWith("Mess")) {
sendAction(channel, "<3s Messiah");
}
else if (sender.startsWith("Rio")) {
sendMessage(channel, "Welcome Rio BA(Hons) to " + channel.substring(1) + " IRC");
}
else{
sendMessage(channel, "Welcome " + sender + " to " + channel.substring(1) + " IRC");
}
}
private void writeStats(String realname2) {
try {
String level;
String totalXP;
String rank;
URL statsurl = new URL("http://hiscore.runescape.com/hiscorepersonal.ws?user1=" + realname2);
URLConnection statsconnect = statsurl.openConnection();
InputStream statsin = statsconnect.getInputStream();
BufferedReader urlbr = new BufferedReader(new InputStreamReader(statsin));
String inputLine;
String stats = "";
while ((inputLine = urlbr.readLine()) != null) {
stats = stats + inputLine;
}
if (stats.indexOf("does not feature in the hiscores.") != -1) {}
else {
stats = stats.substring(stats.indexOf("Overall"), stats.indexOf(""));
stats = stats.replaceAll("", "");
stats = stats.replaceAll("", "");
stats = stats.toLowerCase();
while (stats.indexOf("
', index) + 1;
int end = stats.indexOf('<', begin);
rank = stats.substring(begin, end).replaceAll(",", "");
index = end;
begin = stats.indexOf('>', index) + 1;
end = stats.indexOf('<', begin);
level = stats.substring(begin, end);
index = end;
begin = stats.indexOf('>', index) + 1;
end = stats.indexOf('<', begin);
totalXP = stats.substring(begin, end);
String skillFormal = skill.substring(0,1).toUpperCase() + skill.substring(1);
statsVector.add(skillFormal + " - Level: " + level + " XP: " + totalXP);
if (skill.equalsIgnoreCase("overall") || level.equals("99")) {
statsMap.put(skill, "Level: " + level + " Rank: " + rank + " XP: " + totalXP);
}
else {
totalXP = totalXP.replaceAll(",", "");
level = level.replace(",", "");
int totalXpInt = Integer.parseInt(totalXP);
int levelInt = Integer.parseInt(level) + 1;
xpToNextInt = xpTable.xp[levelInt] - totalXpInt;
String xpToNext = Integer.toString(xpToNextInt);
xpLevelMap.put(skill, totalXP + " " + level);
statsMap.put(skill, "Level: " + level + " Rank: " + rank + " XP: " + totalXP + " XP to next: " + xpToNext);
}
if (stats.indexOf(".ws?table") != -1) {
stats = stats.substring(stats.indexOf(">", stats.indexOf(".ws?table")) + 1);
}
else {
stats = "";
}
}
}
}
catch (FileNotFoundException e) {
System.err.println("FileNotFoundException");
}
catch (IOException e) {
}
}
private void removeAbbreviations() {
if (skillSearch.startsWith("att")) {
skillSearch = "attack";
}
if (skillSearch.startsWith("str")) {
skillSearch = "strength";
}
if (skillSearch.startsWith("def")) {
skillSearch = "defence";
}
if (skillSearch.startsWith("hit") || skillSearch.equals("hp")) {
skillSearch = "hitpoints";
}
if (skillSearch.startsWith("range")) {
skillSearch = "ranged";
}
if (skillSearch.startsWith("pray")) {
skillSearch = "prayer";
}
if (skillSearch.startsWith("mag")) {
skillSearch = "magic";
}
if (skillSearch.startsWith("cook")) {
skillSearch = "cooking";
}
if (skillSearch.startsWith("wood") || skillSearch.startsWith("wc")) {
skillSearch = "woodcutting";
}
if (skillSearch.startsWith("fletch")) {
skillSearch = "fletching";
}
if (skillSearch.startsWith("fish")) {
skillSearch = "fishing";
}
if (skillSearch.startsWith("agil")) {
skillSearch = "agility";
}
if (skillSearch.startsWith("fire") || skillSearch.startsWith("fm")) {
skillSearch = "firemaking";
}
if (skillSearch.startsWith("craft")) {
skillSearch = "crafting";
}
if (skillSearch.startsWith("smith")) {
skillSearch = "smithing";
}
if (skillSearch.startsWith("herb")) {
skillSearch = "herblore";
}
if (skillSearch.startsWith("slay")) {
skillSearch = "slayer";
}
if (skillSearch.startsWith("farm")) {
skillSearch = "farming";
}
if (skillSearch.startsWith("rune") || skillSearch.startsWith("rc")) {
skillSearch = "runecraft";
}
if (skillSearch.startsWith("hunt")) {
skillSearch = "hunter";
}
if (skillSearch.startsWith("cons")) {
skillSearch = "construction";
}
}
private void writeXP(String realname2, String skillSearch, String goalLevel) {
removeAbbreviations();
writeStats(realname2);
statsVector.clear();
int goalLevelInt = 0;
if (skillSearch.equals("attack") || skillSearch.equals("defence") || skillSearch.equals("strength") || skillSearch.equals("ranged") || skillSearch.equals("hitpoints") || skillSearch.equals("slayer")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
}
}
if (skillSearch.equals("cooking")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int lobster = xpToNextLevel/120 + 1;
int monkfish = xpToNextLevel/150 + 1;
int pineapple = xpToNextLevel/195 + 1;
int shark = xpToNextLevel/210 + 1;
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(lobster) + ".0 Lobsters cooked");
xpVector.add(" " + Integer.toString(monkfish) + ".0 Monkfish cooked");
xpVector.add(" " + Integer.toString(pineapple) + ".0 Pineapple pizzas cooked");
xpVector.add(" " + Integer.toString(shark) + ".0 Sharks cooked");
}
}
if (skillSearch.equals("woodcutting")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int willow = (int)Math.round(xpToNextLevel/67.5d + 1);
int maple = xpToNextLevel/100 + 1;
int yew = xpToNextLevel/175 + 1;
int magic = xpToNextLevel/250 + 1;
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(willow) + ".0 Willow trees cut");
xpVector.add(" " + Integer.toString(maple) + ".0 Maple trees cut");
xpVector.add(" " + Integer.toString(yew) + ".0 Yew trees cut");
xpVector.add(" " + Integer.toString(magic) + ".0 Magic trees cut");
}
}
if (skillSearch.equals("fletching")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int unstrungWillow = (int)Math.round(xpToNextLevel/41.5 + 1);
int unstrungMaple = (int)Math.round(xpToNextLevel/58.25 + 1);
int yewShort = xpToNextLevel/135 + 1;
int yewLong = xpToNextLevel/150 + 1;
int mageLong = xpToNextLevel/183 + 1;
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(unstrungWillow) + ".0 Willow longs cut");
xpVector.add(" " + Integer.toString(unstrungMaple) + ".0 Maple longs cut");
xpVector.add(" " + Integer.toString(yewShort) + ".0 Yew shorts cut and strung");
xpVector.add(" " + Integer.toString(yewLong) + ".0 Yew longs cut and strung");
xpVector.add(" " + Integer.toString(mageLong) + ".0 Mage longs cut and strung");
}
}
if (skillSearch.equals("fishing")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int trout = xpToNextLevel/50 + 1;
int salmon = xpToNextLevel/70 + 1;
int lobster = xpToNextLevel/90 + 1;
int swordfish = xpToNextLevel/100 + 1;
int monkfish = xpToNextLevel/120 + 1;
int shark = xpToNextLevel/110 + 1;
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(trout) + ".0 Trout caught");
xpVector.add(" " + Integer.toString(salmon) + ".0 Salmon caught");
xpVector.add(" " + Integer.toString(lobster) + ".0 Lobsters caught");
xpVector.add(" " + Integer.toString(swordfish) + ".0 Swordfish caught");
xpVector.add(" " + Integer.toString(monkfish) + ".0 Monkfish caught");
xpVector.add(" " + Integer.toString(shark) + ".0 Sharks caught");
}
}
if (skillSearch.equals("firemaking")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int willow = xpToNextLevel/90 + 1;
int maple = xpToNextLevel/135 + 1;
int yew = (int)Math.round(xpToNextLevel/202.5 + 1);
int mage = (int)Math.round(xpToNextLevel/303.75 + 1);
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(willow) + ".0 Willow logs burnt");
xpVector.add(" " + Integer.toString(maple) + ".0 Maple logs burnt");
xpVector.add(" " + Integer.toString(yew) + ".0 Yew logs burnt");
xpVector.add(" " + Integer.toString(mage) + ".0 Mage logs burnt");
}
}
if (skillSearch.equals("crafting")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int flax = xpToNextLevel/15 + 1;
int goldAmulet = xpToNextLevel/35 + 1;
int tiara = (int)Math.round(xpToNextLevel/52.5);
int glassAndOrb = (int)Math.round(xpToNextLevel/72.5);
int airBattlestaff = xpToNextLevel/210 + 1;
int greenHide = xpToNextLevel/62 + 1;
int blueHide = xpToNextLevel/70 + 1;
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(goldAmulet) + ".0 Gold amulets crafted");
xpVector.add(" " + Integer.toString(flax) + ".0 Flax spun");
xpVector.add(" " + Integer.toString(tiara) + ".0 Tiaras crafted");
xpVector.add(" " + Integer.toString(glassAndOrb) + ".0 Molten glass made and orb crafted");
xpVector.add(" " + Integer.toString(greenHide) + ".0 Green hides crafted");
xpVector.add(" " + Integer.toString(airBattlestaff) + ".0 Orbs made (from seaweed and sand) and air battlestaves crafted");
xpVector.add(" " + Integer.toString(blueHide) + ".0 Blue hides crafted");
}
}
if (skillSearch.equals("smithing")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int goldOre = (int)Math.round(xpToNextLevel/56.2 + 1);
int ironSmeltSmith = (int)Math.round(xpToNextLevel/37.5 + 1);
int steelSmeltSmith = xpToNextLevel/55 + 1;
int steelSmeltCball = (int)Math.round(xpToNextLevel/43.1);
int mithSmeltSmith = xpToNextLevel/80 + 1;
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(goldOre) + ".0 Gold ore smelted (with gauntlets)");
xpVector.add(" " + Integer.toString(ironSmeltSmith) + ".0 Iron bars smelted and smithed");
xpVector.add(" " + Integer.toString(steelSmeltSmith) + ".0 Steel bars smelted and smithed");
xpVector.add(" " + Integer.toString(steelSmeltCball) + ".0 Steel bars smelted and formed into cannonballs");
xpVector.add(" " + Integer.toString(mithSmeltSmith) + ".0 Mith bars smelted and smithed");
}
}
if (skillSearch.equals("mining")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int iron = xpToNextLevel/35 + 1;
int coal = xpToNextLevel/50 + 1;
int gold = xpToNextLevel/65 + 1;
int mith = xpToNextLevel/80 + 1;
int addy = xpToNextLevel/95 + 1;
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(iron) + ".0 Iron ore mined");
xpVector.add(" " + Integer.toString(coal) + ".0 Coal ore mined");
xpVector.add(" " + Integer.toString(gold) + ".0 Gold ore mined");
xpVector.add(" " + Integer.toString(mith) + ".0 Mith ore mined");
xpVector.add(" " + Integer.toString(addy) + ".0 Addy ore mined");
}
}
if (skillSearch.equals("herblore")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int attack = xpToNextLevel/25 + 1;
int antipoison = (int)Math.round(xpToNextLevel/37.5 + 1);
int strength = xpToNextLevel/50 + 1;
int restore = (int)Math.round(xpToNextLevel/62.5 + 1);
int energy = (int)Math.round(xpToNextLevel/67.5 + 1);
int prayer = (int)Math.round(xpToNextLevel/87.5 + 1);
int superAttack = xpToNextLevel/100 + 1;
int superRestore = xpToNextLevel/143 + 1;
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(attack) + ".0 Attack potions mixed");
xpVector.add(" " + Integer.toString(antipoison) + ".0 Antipoison potions mixed");
xpVector.add(" " + Integer.toString(strength) + ".0 Strength (or Serum 207) potions mixed");
xpVector.add(" " + Integer.toString(restore) + ".0 Stat restore potions mixed");
xpVector.add(" " + Integer.toString(energy) + ".0 Energy potions mixed");
xpVector.add(" " + Integer.toString(prayer) + ".0 Prayer potions mixed");
xpVector.add(" " + Integer.toString(superAttack) + ".0 Super Attack potions mixed");
xpVector.add(" " + Integer.toString(superRestore) + ".0 Super Restore potions mixed");
}
}
if (skillSearch.equals("agility")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int barby = (int)Math.round(xpToNextLevel/153.2 + 1);
int werewolves = xpToNextLevel/540 + 1;
int wildy = (int)Math.round(xpToNextLevel/571.5 + 1);
int apeAtoll = xpToNextLevel/580 + 1;
int oneHundoTickets = xpToNextLevel/28000 + 1;
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(barby) + ".0 Barbarian Course laps");
xpVector.add(" " + Integer.toString(apeAtoll) + ".0 Ape Atoll laps");
xpVector.add(" " + Integer.toString(wildy) + ".0 Wilderness course laps");
xpVector.add(" " + Integer.toString(werewolves) + ".0 Werewolves course laps");
xpVector.add(" " + Integer.toString(oneHundoTickets) + ".0 100 Arena Tickets");
}
}
if (skillSearch.equals("thieving")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int masterFarmer = xpToNextLevel/2350 + 1;
int autumnSquirk = xpToNextLevel/3000 + 1;
int summerSquirk = (int)Math.round(xpToNextLevel/571.5 + 1);
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(masterFarmer) + ".0 Master farmers pickpocketed");
xpVector.add(" " + Integer.toString(autumnSquirk) + ".0 Autumn sq'irk juice");
xpVector.add(" " + Integer.toString(summerSquirk) + ".0 Summer sq'irk juice");
}
}
if (skillSearch.equals("farming")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int willow = (int)Math.round(xpToNextLevel/1481.5 + 1);
int maple = xpToNextLevel/3448 + 1;
int yew = (int)Math.round(xpToNextLevel/7150.5 + 1);
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(willow) + ".0 Willow trees planted and health checked");
xpVector.add(" " + Integer.toString(maple) + ".0 Maple trees planted and health checked");
xpVector.add(" " + Integer.toString(yew) + ".0 Yew trees planted and health checked");
}
}
if (skillSearch.equals("runecraft")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int air = xpToNextLevel/5 + 1;
int fire = xpToNextLevel/7 + 1;
int cosmic = xpToNextLevel/8 + 1;
int nature = xpToNextLevel/9 + 1;
int law = (int)Math.round(xpToNextLevel/9.5 + 1);
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(air) + ".0 Rune essence crafted into air runes");
xpVector.add(" " + Integer.toString(fire) + ".0 Rune essence crafted into fire runes");
xpVector.add(" " + Integer.toString(cosmic) + ".0 Rune essence crafted into cosmic runes");
xpVector.add(" " + Integer.toString(nature) + ".0 Rune essence crafted into nature runes");
xpVector.add(" " + Integer.toString(law) + ".0 Rune essence crafted into law runes");
}
}
if (skillSearch.equals("hunter")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int tropicalWagtail = (int)Math.round(xpToNextLevel/95.2 + 1);
int swampLizard = xpToNextLevel/152 + 1;
int chinchompa = (int)Math.round(xpToNextLevel/198.5 + 1);
int redSalamander = xpToNextLevel/272 + 1;
int redChinchompa = xpToNextLevel/265 + 1;
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(tropicalWagtail) + ".0 Tropical Wagtails Captured");
xpVector.add(" " + Integer.toString(swampLizard) + ".0 Swamp Lizards Captured");
xpVector.add(" " + Integer.toString(chinchompa) + ".0 Chinchompas Captured");
xpVector.add(" " + Integer.toString(redSalamander) + ".0 Red Salamanders Captured");
xpVector.add(" " + Integer.toString(redChinchompa) + ".0 Red Chinchompas Captured");
}
}
if (skillSearch.equals("construction")) {
String rawGet = (String) xpLevelMap.get(skillSearch);
if (rawGet == null) {
xpVector.add("You are not ranked in skill '" + skillSearch + "'");
}
else {
String[] rawGetSplit = rawGet.split(" ");
int XP = Integer.parseInt(rawGetSplit[0]);
int level = Integer.parseInt(rawGetSplit[1]);
if (goalLevel == null) {
goalLevelInt =level + 1;
}
else {
goalLevelInt = Integer.parseInt(goalLevel);
}
int xpToNextLevel = xpTable.xp[goalLevelInt] - XP;
int oak = xpToNextLevel/60 + 1;
int teak = xpToNextLevel/90 + 1;
int mahogany = xpToNextLevel/140 + 1;
int clay = xpToNextLevel/10 + 1;
xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level));
xpVector.add(" " + Integer.toString(clay) + ".0 Soft clay used");
xpVector.add(" " + Integer.toString(oak) + ".0 Oak planks used");
xpVector.add(" " + Integer.toString(teak) + ".0 Teak planks used");
xpVector.add(" " + Integer.toString(mahogany) + ".0 Mahogany planks used");
}
}
}
private void writePrice(String channel, String sender, String priceSearch) {
try{
String sendLocation = channel;
if (channel == null) {
sendLocation = sender;
}
Vector priceVector = new Vector();
URL priceurl = new URL("http://www.zybez.net/priceguide.php?search_terms=" + priceSearch + "&search_area=1&price_low=&price_high=&member=1");
URLConnection priceconnect = priceurl.openConnection();
InputStream pricein = priceconnect.getInputStream();
BufferedReader urlbr = new BufferedReader(new InputStreamReader(pricein));
String inputLine;
String pricePage = "";
while ((inputLine = urlbr.readLine()) != null) {
pricePage = pricePage + inputLine;
}
if (pricePage.indexOf("Your search did not return") != -1) {
sendMessage(channel, "No items found");
}
else if (pricePage.indexOf("") != -1) {
sendMessage(channel, "Unable to connect to Zybez");
}
else {
pricePage = pricePage.substring(pricePage.indexOf(""), pricePage.indexOf(""));
int count = 1;
while (pricePage.indexOf("") != -1 && count <= 20) {
count = count + 1;
String name = pricePage.substring(pricePage.indexOf("") + 35, pricePage.indexOf("<", pricePage.indexOf("") + 35));
String price = pricePage.substring(pricePage.indexOf("") + 36, pricePage.indexOf("<", pricePage.indexOf("") + 35));
priceVector.add(name + " - " + price);
pricePage = pricePage.substring(pricePage.indexOf(" | ", pricePage.indexOf("")));
}
if (priceVector.size() <= 5) {
sendMessage(channel, "Results provided by http://www.zybez.net (first 20)");
while (priceVector.size() != 0) {
sendMessage(sendLocation, priceVector.firstElement().toString());
priceVector.remove(0);
}
}
else {
sendMessage(channel, "More than 5 items found. Sending via PM");
sendMessage(sender, "Results provided by http://www.zybez.net (first 20)");
while (priceVector.size() != 0) {
sendMessage(sender, priceVector.firstElement().toString());
priceVector.remove(0);
}
}
}
urlbr.close();
priceVector.clear();
}
catch (IOException e) {
System.out.println("IOException");
}
catch (StringIndexOutOfBoundsException e) {
System.out.println("StringIndexOutOfBounds");
}
}
protected void onMode(String channel, String sourceNick, String sourceLogin, String sourceHostname, String mode) {
if (sourceNick.equals("Lyucit")) {
setMode(channel, "-" + mode.substring(1));
}
if (sourceNick.equals("Toilet")) {
setMode(channel, "-" + mode.substring(1));
}
}
private void writeNames() {
try {
FileOutputStream rsnamefos = new FileOutputStream("rsnamefos.tmp");
ObjectOutputStream rsnameoos = new ObjectOutputStream(rsnamefos);
rsnameoos.writeObject(rsname);
rsnameoos.close();
}
catch (FileNotFoundException e) {
System.err.println("FileNotFoundException");
}
catch (IOException e) {
System.err.println("IOException");
}
}
public String handleMessage(String sender, String message) {
if (message.equals("!help")) {
return "Channel: " + "Sending you help via msg Sender: "
+ "!linkme Stats Graph "
+ "!remembername Stores the RSN for an IRC nick Sender: "
+ "!hiscore HiscoresSender: "
+ "!price - Price LookupSender: "
+ "!w dictionary reference to the wordSender: "
+ "!urban Urban dictionary reference to the word. Sender: "
+ "!xp Calculates ways to get to the goal level (or next level) in the skill.";
}
if (message.startsWith("!rsname")) {
String[] rsnameSplit = message.split(" ");
return "Channel: " + rsnameSplit[1] + " - " + (String) rsname.get(rsnameSplit[1]);
}
if (message.startsWith("!remember")) {
String[] remember = message.split(" ");
rsname.put(sender, remember[1]);
writeNames();
return "Channel: " + "Associating RSN " + remember[1] + " with nick " + sender;
}
if (message.startsWith("!link")) {
String[] split = message.split(" ");
if (split.length == 1 ) {
String realname = (String) rsname.get(sender);
if (realname == null) {
realname = sender;
}
return "Channel: " + "http://guilds.sinthos-soft.com/rs/stats/rs_levels.php?user=" + realname;
}
else {return "Channel: " + "http://guilds.sinthos-soft.com/rs/stats/rs_levels.php?user=" + split[1];
}
}
if (message.startsWith("!price")) {
String priceSearch;
String[] priceSplit = message.split(" ", 2);
priceSearch = priceSplit[1].replaceAll(" ", "+");
writePrice(sender, sender, priceSearch);
return "";
}
if (message.startsWith("!cmb")) {
String[] combatSplit = message.split(" ");
String realname2 = combatSplit[1];
writeCombat(realname2);
return "";
}
if (message.startsWith("!urban")) {
String[] urbanLookup = message.split(" ", 2);
urbanLookup[1] = urbanLookup[1].replaceAll(" ", "+");
return "Channel: " + "http://www.urbandictionary.com/define.php?term=" + urbanLookup[1];
}
if (message.startsWith("!w")) {
String[] word = message.split(" ");
return "Channel: " + "http://dictionary.reference.com/search?q=" + word[1];
}
if (message.startsWith("!pot")) {
String[] potSplit = message.split(" ");
String pot = potSplit[1];
potHash.removePotAbbrevs(pot);
return "Channel: " + (String) potHash.potHash.get("range");
}
}
public void onPrivateMessage(String sender, String login, String hostname, String message) {
if (message.startsWith("!send")) {
if (sender.startsWith("Vesuvius")) {
if (message.startsWith("!sendword")) {
String[] messageSend = message.split(" ", 3);
sendMessage(messageSend[1], messageSend[2]);
}
if (message.startsWith("!sendaction")) {
String[] actionSend = message.split(" ", 3);
sendAction(actionSend[1], actionSend[2]);
}
}
}
if (message.equals("!help")) {
sendMessage(sender, "!linkme Stats Graph");
sendMessage(sender, "!remembername Stores the RSN for an IRC nick");
sendMessage(sender, "!hiscore Hiscores");
sendMessage(sender, "!price
- Price Lookup");
sendMessage(sender, "!w dictionary reference to the word");
}
if (message.startsWith("!remember")) {
String[] remember = message.split(" ");
rsname.put(sender, remember[1]);
sendMessage(sender, "Associating RSN " + remember[1] + " with nick " + sender);
writeNames();
}
if (message.startsWith("!link")) {
String[] split = message.split(" ");
if (split.length == 1 ) {
String realname = (String) rsname.get(sender);
if (realname == null) {
realname = sender;
}
sendMessage(sender, "http://guilds.sinthos-soft.com/rs/stats/rs_levels.php?user=" + realname);
}
else {sendMessage(sender, "http://guilds.sinthos-soft.com/rs/stats/rs_levels.php?user=" + split[1]);
}
}
if (message.startsWith("!c")) {
String[] calcSplit = message.split(" ", 2);
double calcWork = Double.parseDouble(calcSplit[1]);
String calcAnswer = Double.toString(calcWork);
sendMessage(sender, calcAnswer);
}
if (message.startsWith("!w")) {
String[] word = message.split(" ");
sendMessage(sender, "http://dictionary.reference.com/search?q=" + word[1]);
}
if (message.startsWith("!hiscore")) {
String realname2 = null;
skillSearch = null;
message = message.toLowerCase();
String[] hiscoreSplit = message.split(" ");
if (hiscoreSplit.length == 2) {
realname2 = (String) rsname.get(sender);
if (realname2 == null) {
realname2 = sender;
}
skillSearch = hiscoreSplit[1];
}
if (hiscoreSplit.length == 3) {
realname2 = (String) rsname.get(hiscoreSplit[1]);
if (realname2 == null) {
realname2 = hiscoreSplit[1];
}
skillSearch = hiscoreSplit[2];
}
removeAbbreviations();
writeStats(realname2);
if (skillSearch.equals("all")) {
while (statsVector.size() != 0) {
sendMessage(sender, statsVector.firstElement().toString());
statsVector.remove(0);
}
statsVector.clear();
}
else {
String statMessage = (String) statsMap.get(skillSearch);
if (statsMap.isEmpty()) {
sendMessage(sender, "User " + realname2 + " does not feature in the highscores");
}
else if (statMessage == null) {
sendMessage(sender, "User " + realname2 + " is unranked for skill " + skillSearch);
}
else {
sendMessage(sender, statMessage);
}
}
statsMap.clear();
statsVector.clear();
}
}
public void writeCombat(String realname2) {
}
public void onMessage(String channel, String sender, String login, String hostname, String message) {
if (message.equals("!help")) {
sendMessage(channel, "Sending you help via msg");
sendMessage(sender, "!linkme Stats Graph");
sendMessage(sender, "!remembername Stores the RSN for an IRC nick");
sendMessage(sender, "!hiscore Hiscores");
sendMessage(sender, "!price
- Price Lookup");
sendMessage(sender, "!w dictionary reference to the word");
sendMessage(sender, "!urban Urban dictionary reference to the word.");
sendMessage(sender, "!xp Calculates ways to get to the goal level (or next level) in the skill.");
}
if (message.startsWith("!rsname")) {
String[] rsnameSplit = message.split(" ");
sendMessage(channel, rsnameSplit[1] + " - " + (String) rsname.get(rsnameSplit[1]));
}
if (message.startsWith("!remember")) {
String[] remember = message.split(" ");
rsname.put(sender, remember[1]);
sendMessage(channel, "Associating RSN " + remember[1] + " with nick " + sender);
writeNames();
}
if (message.startsWith("!link")) {
String[] split = message.split(" ");
if (split.length == 1 ) {
String realname = (String) rsname.get(sender);
if (realname == null) {
realname = sender;
}
sendMessage(channel, "http://guilds.sinthos-soft.com/rs/stats/rs_levels.php?user=" + realname);
}
else {sendMessage(channel, "http://guilds.sinthos-soft.com/rs/stats/rs_levels.php?user=" + split[1]);
}
}
if (message.startsWith("!price")) {
String priceSearch;
String[] priceSplit = message.split(" ", 2);
priceSearch = priceSplit[1].replaceAll(" ", "+");
writePrice(channel, sender, priceSearch);
}
if (message.startsWith("!cmb")) {
String[] combatSplit = message.split(" ");
String realname2 = combatSplit[1];
writeCombat(realname2);
}
if (message.startsWith("!urban")) {
String[] urbanLookup = message.split(" ", 2);
urbanLookup[1] = urbanLookup[1].replaceAll(" ", "+");
sendMessage(channel, "http://www.urbandictionary.com/define.php?term=" + urbanLookup[1]);
}
if (message.startsWith("!w")) {
String[] word = message.split(" ");
sendMessage(channel, "http://dictionary.reference.com/search?q=" + word[1]);
}
if (message.startsWith("!pot")) {
String[] potSplit = message.split(" ");
String pot = potSplit[1];
potHash.removePotAbbrevs(pot);
sendMessage(channel, (String) potHash.potHash.get("range"));
}
if (message.startsWith("!xp")) {
String realname2 = null;
skillSearch = null;
String goalLevel = null;
message = message.toLowerCase();
String[] hiscoreSplit = message.split(" ");
if (hiscoreSplit.length == 2) {
realname2 = (String) rsname.get(sender);
if (realname2 == null) {
realname2 = sender;
}
skillSearch = hiscoreSplit[1];
removeAbbreviations();
}
if (hiscoreSplit.length == 3) {
try {
Integer.parseInt(hiscoreSplit[2]);
goalLevel = hiscoreSplit[2];
skillSearch = hiscoreSplit[1];
realname2 = (String) rsname.get(sender);
if (realname2 == null) {
realname2 = sender;
}
removeAbbreviations();
}
catch (NumberFormatException e) {
realname2 = (String) rsname.get(hiscoreSplit[1]);
if (realname2 == null) {
realname2 = hiscoreSplit[1];
}
skillSearch = hiscoreSplit[2];
goalLevel = null;
removeAbbreviations();
}
}
if (hiscoreSplit.length == 4) {
realname2 = (String) rsname.get(hiscoreSplit[1]);
if (realname2 == null) {
realname2 = hiscoreSplit[1];
}
skillSearch = hiscoreSplit[2];
goalLevel = hiscoreSplit[3];
removeAbbreviations();
}
writeXP(realname2, skillSearch, goalLevel);
if (xpVector.size() <= 6) {
while (xpVector.size() != 0) {
sendMessage(channel, xpVector.firstElement().toString());
xpVector.remove(0);
}
xpVector.clear();
}
else {
sendMessage(channel, "Stats over six lines. Sending via PM");
while (xpVector.size() != 0) {
sendMessage(sender, xpVector.firstElement().toString());
xpVector.remove(0);
}
xpVector.clear();
}
}
if (message.startsWith("!hiscore")) {
String realname2 = null;
skillSearch = null;
message = message.toLowerCase();
String[] hiscoreSplit = message.split(" ");
if (hiscoreSplit.length == 2) {
realname2 = (String) rsname.get(sender);
if (realname2 == null) {
realname2 = sender;
}
skillSearch = hiscoreSplit[1];
}
if (hiscoreSplit.length == 3) {
realname2 = (String) rsname.get(hiscoreSplit[1]);
if (realname2 == null) {
realname2 = hiscoreSplit[1];
}
skillSearch = hiscoreSplit[2];
}
int i = 0;
removeAbbreviations();
writeStats(realname2);
if (skillSearch.equals("all")) {
if (statsVector.size() <= 5) {
while (statsVector.size() > i) {
sendMessage(channel, statsVector.get(i).toString());
i++;
}
statsVector.clear();
}
else {
sendMessage(channel, "Stats over six lines. Sending via PM");
while (statsVector.size() > i) {
sendMessage(sender, statsVector.get(i).toString());
i++;
}
statsVector.clear();
}
}
else {
String statMessage = (String) statsMap.get(skillSearch);
if (statsMap.isEmpty()) {
sendMessage(channel, "User " + realname2 + " does not feature in the highscores");
}
else if (statMessage == null) {
sendMessage(channel, "User " + realname2 + " is unranked for skill " + skillSearch);
}
else {
sendMessage(channel, statMessage);
}
}
statsMap.clear();
statsVector.clear();
}
}
}