Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.util.ArrayList;
- import org.rsbot.event.events.ServerMessageEvent;
- import org.rsbot.event.listeners.PaintListener;
- import org.rsbot.event.listeners.ServerMessageListener;
- import org.rsbot.script.Script;
- import org.rsbot.script.ScriptManifest;
- import org.rsbot.script.methods.Game;
- import org.rsbot.script.methods.Skills;
- import org.rsbot.script.wrappers.RSArea;
- import org.rsbot.script.wrappers.RSGroundItem;
- import org.rsbot.script.wrappers.RSItem;
- import org.rsbot.script.wrappers.RSNPC;
- import org.rsbot.script.wrappers.RSObject;
- import org.rsbot.script.wrappers.RSTile;
- @ScriptManifest(authors = { "kiko" }, keywords = "Dungeoneering", name = "iDungeon",
- version = 0.50, description = "Runs floors on complexity 1. Fo realz this time.")
- public class iDungeon extends Script implements PaintListener, MouseListener, ServerMessageListener {
- // Script
- final double vers = 0.50;
- long startTime, runTime;
- // Food & Equipment
- final int smuggler = 11226, ourWep = 16939;
- final int heimCrab = 18159, redEye = 18161, duskEel = 18163, flatFish = 18165, shortFin = 18167;
- RSGroundItem foodItem;
- final int[] foods = { heimCrab, redEye, duskEel, flatFish, shortFin };
- final int[] meleeEquips = { 16647, 16669, 16713, 16939, 16941, 17239 };
- final int[] rangeEquips = { 17173, 17319, 16875, 16325 };
- final int[] mageEquips = { 17217, 16845, 17009 };
- final int[] saveItems = { 17786, 17780 };
- int[] equips = {};
- int combatTriangle;
- // Monsters
- RSNPC closestMonster = null;
- int[] icyBones = { 10044 };
- // Keys
- final int[] orangeKeys = { 18202, 18204, 18206, 18208, 18210, 18212, 18214, 18216 };
- final int[] silverKeys = { 18218, 18220, 18222, 18224, 18226, 18228, 18230, 18232 };
- final int[] yellowKeys = { 18234, 18236, 18238, 18240, 18242, 18244, 18246, 18248 };
- final int[] greenKeys = { 18250, 18252, 18254, 18256, 18258, 18260, 18262, 18264 };
- final int[] blueKeys = { 18266, 18268, 18270, 18272, 18274, 18276, 18278, 18280 };
- final int[] purpleKeys = { 18282, 18284, 18286, 18288, 18290, 18292, 18294, 18296 };
- final int[] crimsonKeys = { 18298, 18300, 18302, 18304, 18306, 18308, 18310, 18312 };
- final int[] goldKeys = { 18314, 18316, 18318, 18320, 18322, 18324, 18326, 18328 };
- final int[][] keys = { orangeKeys, silverKeys, yellowKeys, greenKeys, blueKeys, purpleKeys, crimsonKeys, goldKeys };
- // Doors
- final int[] standardDoors = { 50346, 50342 };
- final int[] orangeDoors = { 50208, 50209, 50210, 50211, 50212, 50213, 50214, 50215 };
- final int[] silverDoors = { 50216, 50217, 50218, 50219, 50220, 50221, 50222, 50223 };
- final int[] yellowDoors = { 50224, 50225, 50226, 50227, 50228, 50229, 50230, 50231 };
- final int[] greenDoors = { 50232, 50233, 50234, 50235, 50236, 50237, 50238, 15239 };
- final int[] blueDoors = { 50240, 50241, 50242, 50243, 50244, 50245, 50246, 50247 };
- final int[] purpleDoors = { 50248, 50249, 50250, 50251, 50252, 50253, 50254, 50255 };
- final int[] crimsonDoors = { 50256, 50257, 50258, 50259, 50260, 50261, 50262, 50263 };
- final int[] goldDoors = { 50264, 50265, 50266, 50267, 50268, 50269, 50270, 50271 };
- final int[][] doors = { orangeDoors, silverDoors, yellowDoors, greenDoors, blueDoors, purpleDoors, crimsonDoors, goldDoors, standardDoors };
- ArrayList<RSArea> openedDoors = new ArrayList<RSArea>();
- ArrayList<RSArea> unopenedDoors = new ArrayList<RSArea>();
- ArrayList<RSArea> lockedDoors = new ArrayList<RSArea>();
- ArrayList<RSArea> drawDoors = new ArrayList<RSArea>();
- ArrayList<RSArea> newDoors = new ArrayList<RSArea>();
- RSArea nearDoor;
- RSTile nearDoorTile;
- RSObject doorObject, doorObject2;
- // Rooms
- int smallestDist, roomNumber;
- final RSTile[] blankTile = { new RSTile(0, 0)};
- ArrayList<RSArea> doorPaths = new ArrayList<RSArea>();
- ArrayList<RSArea> rooms = new ArrayList<RSArea>();
- ArrayList<RSArea> walkBack1 = new ArrayList<RSArea>();
- ArrayList<RSArea> walkBack2 = new ArrayList<RSArea>();
- ArrayList<RSArea> walkBack3 = new ArrayList<RSArea>();
- ArrayList<RSArea> deathWalk = new ArrayList<RSArea>();
- ArrayList<RSTile> oldObjectTiles = new ArrayList<RSTile>();
- ArrayList<RSTile> newObjectTiles = new ArrayList<RSTile>();
- ArrayList<Rectangle> roomRects = new ArrayList<Rectangle>();
- RSArea currentRoom, oldRoom;
- // Others
- int swX, swY, neX, neY;
- int getAction, xpStart, xpGain, eph, levels, degree, restarts, dungeonCount;
- boolean newDungeon, goodDoor, explored, isDead, deathWalkBack, walkBackPath, cameraTurn;
- String location, status = "", itemName;
- RSObject finishLadder;
- Point mp = new Point(0,0);
- RSTile myLoc;
- public boolean onStart() {
- newDungeon = true;
- log("Welcome to iDungeon v" + vers);
- while(!game.isLoggedIn() && !getMyPlayer().isValid()) {
- sleep(1500);
- }
- camera.setAltitude(true);
- xpStart = skills.getCurrentExp(Skills.DUNGEONEERING);
- if (skills.getRealLevel(Skills.PRAYER) > 42)
- DoOption[3] = true;
- startTime = System.currentTimeMillis();
- showStats = true;
- showOptions = false;
- return true;
- }
- public void onFinish() {
- }
- public void getLocation() {
- myLoc = getMyPlayer().getLocation();
- RSObject stairs = objects.getNearest(50552);
- RSObject entrance = objects.getNearest(48496);
- if(npcs.getNearest(smuggler) != null) {
- if(newDungeon) {
- status = "Starting a new dungeon!";
- currentRoom = null;
- startDungeon();
- }
- } else if (stairs != null && stairs.getLocation() != null) {
- status = "Jumping down the stairs...";
- if (!stairs.isOnScreen()) {
- walking.walkTileMM(stairs.getLocation());
- camera.turnToObject(stairs);
- }
- camera.setAngle(camera.getAngle() + random(10, 30));
- stairs.doAction("Jump");
- sleep(1500);
- } else if (entrance != null && entrance.getLocation() != null) {
- status = "Entering Daemonheim...";
- if (!entrance.isOnScreen()) {
- walking.walkTileMM(entrance.getLocation());
- camera.turnToObject(entrance);
- }
- sleep(500);
- entrance.doAction("Climb");
- while (!interfaces.get(210).isValid())
- sleep(1000);
- interfaces.get(210).getComponent(2).doClick();
- sleep(1000);
- interfaces.get(236).getComponent(1).doClick();
- sleep(1000);
- entrance.doAction("Climb");
- sleep(1000);
- interfaces.get(947).getComponent(48).doAction("Select");
- sleep(1000);
- interfaces.get(947).getComponent(761).doAction("Confirm");
- sleep(1000);
- interfaces.get(938).getComponent(60).doAction("Select");
- sleep(750);
- interfaces.get(938).getComponent(37).doAction("Confirm");
- doorPaths.clear();
- rooms.clear();
- oldObjectTiles.clear();
- openedDoors.clear();
- unopenedDoors.clear();
- lockedDoors.clear();
- drawDoors.clear();
- degree = 0;
- restarts = 0;
- sleep(1000);
- startDungeon();
- } else if (isDead)
- onDeath();
- if(!rooms.isEmpty() && myLoc != null) {
- for(int I = 0; I < rooms.size(); I++) {
- if(rooms.get(I) != null && rooms.get(I).contains(myLoc)) {
- currentRoom = rooms.get(I);
- roomNumber = I;
- }
- }
- }
- }
- private void exploreNewRoom() {
- RSObject finishLadder = objects.getNearest(49695);
- RSObject exitLadder = objects.getNearest(49696);
- if (finishLadder != null) {
- log("It's boss killing time! :D");
- killBoss();
- return;
- } else if (exitLadder != null) {
- finishDungeon();
- return;
- } else if (oldRoom != null && oldRoom != currentRoom) {
- nearDoor = objects.getNearest(standardDoors[1]).getArea();
- openedDoors.add(nearDoor);
- unopenedDoors.remove(openedDoors);
- }
- if (!rooms.contains(myLoc)) {
- currentRoom = getNewRoomArea();
- if (currentRoom != null)
- rooms.add(currentRoom);
- status = "Exploring a new room!";
- oldObjectTiles.addAll(newObjectTiles);
- newObjectTiles.clear();
- while (getMonsters()) {
- sleep(1000);
- }
- status = "Picking up items";
- while (pickupKeys()) {
- sleep(2000);
- }
- if (DoOption[4]) {
- pickupFood();
- }
- log("Cleared room " + (roomNumber+1));
- openGoodDoor();
- } else log("Unable to determine room to explore.");
- }
- private void startDungeon() {
- status = "Beginning a new dungeon!";
- log("Starting a new dungeon");
- camera.setAltitude(true);
- newDungeon = false;
- combat.setAutoRetaliate(true);
- combat.setFightMode(1);
- getNewRoomArea();
- if (degree > 8) {
- log("This dungeon is the wrong size or has already been explored.");
- exitDungeon();
- }
- getLocation();
- if(DoOption[1])
- equips = rangeEquips;
- else if(DoOption[2])
- equips = mageEquips;
- else equips = meleeEquips;
- while(inventory.containsOneOf(equips)) {
- for(int itemID : equips) {
- RSItem item = inventory.getItem(itemID);
- if(item != null) {
- item.doClick(true);
- }
- sleep(1000);
- }
- inventory.dropAllExcept(saveItems);
- sleep(2000);
- }
- while (pickupKeys())
- sleep(2000);
- if (DoOption[4])
- pickupFood();
- openGoodDoor();
- }
- private void restartDungeon() {
- status = "Restarting dungeon...";
- log("No forward progress could be made, restarting path.");
- if (restarts == 0)
- walkBack1.addAll(doorPaths);
- if (restarts == 1)
- walkBack2.addAll(doorPaths);
- if (restarts == 2)
- walkBack3.addAll(doorPaths);
- restarts++;
- doorPaths.clear();
- drawDoors.clear();
- if (currentRoom != rooms.get(0)) {
- castDungeonSpell(24, "Cast");
- while(getMyPlayer().getAnimation() != 4852)
- sleep(200);
- }
- sleep(1000);
- currentRoom = rooms.get(0);
- pickupKeys();
- openGoodDoor();
- }
- private void onDeath() {
- deathWalkBack = true;
- deathWalk.clear();
- deathWalk.addAll(doorPaths);
- castDungeonSpell(24, "Cast");
- sleep(10000);
- doorPaths.clear();
- openGoodDoor();
- }
- private void finishDungeon() {
- RSObject finishLadder = objects.getNearest(49696);
- RSTile finishTile = finishLadder.getLocation();
- if(finishLadder != null) {
- log("Exit found, completeing dungeon.");
- walking.walkTileMM(finishTile);
- sleep(2000);
- while(!interfaces.get(236).isValid()) {
- finishLadder.doClick();
- sleep(1000);
- }
- interfaces.get(236).getComponent(1).doClick();
- status = "Waiting for next dungeon...";
- sleep(2000);
- doorPaths.clear();
- rooms.clear();
- oldObjectTiles.clear();
- openedDoors.clear();
- unopenedDoors.clear();
- lockedDoors.clear();
- drawDoors.clear();
- restarts = 0;
- degree = 0;
- dungeonCount++;
- while(interfaces.get(933).isValid()) {
- sleep(2000);
- }
- newDungeon = true;
- startDungeon();
- }
- }
- private void exitDungeon() {
- status = "Exiting bad dungeon...";
- if (currentRoom != rooms.get(0)) {
- castDungeonSpell(24, "Cast");
- while(getMyPlayer().getAnimation() != 4852)
- sleep(200);
- }
- sleep(1000);
- RSObject exitLadder = objects.getNearest(51156);
- RSTile exitTile = finishLadder.getLocation();
- if(exitLadder != null) {
- walking.walkTileMM(exitTile);
- sleep(2000);
- while(!interfaces.get(211).isValid()) {
- finishLadder.doClick();
- sleep(1000);
- }
- interfaces.get(211).getComponent(3).doClick();
- sleep(1000);
- interfaces.get(236).getComponent(1).doClick();
- sleep(2000);
- doorPaths.clear();
- rooms.clear();
- oldObjectTiles.clear();
- openedDoors.clear();
- unopenedDoors.clear();
- lockedDoors.clear();
- drawDoors.clear();
- restarts = 0;
- degree = 0;
- newDungeon = true;
- getLocation();
- }
- }
- private boolean openGoodDoor() {
- getLocation();
- doorObject = null;
- doorObject2 = null;
- nearDoor = getClosestDoor();
- if(nearDoor != null) {
- status = "Opening door...";
- nearDoorTile = nearDoor.getCentralTile();
- doorObject = objects.getTopAt(nearDoorTile);
- int doorID = doorObject.getID();
- walking.walkTileMM(nearDoorTile);
- camera.turnToObject(doorObject);
- oldRoom = currentRoom;
- if (doorID == 50346 || doorObject.getID() == 50342) {
- openGuardianDoor();
- } else {
- doorObject2 = objects.getNearest(doorID + 145);
- openLockedDoor();
- }
- while(unopenedDoors.contains(nearDoor)) {
- unopenedDoors.remove(nearDoor);
- }
- openedDoors.add(nearDoor);
- doorPaths.add(nearDoor);
- nearDoor = null;
- doorObject2 = null;
- exploreNewRoom();
- return true;
- } else {
- log("Reached a dead end, returning to start.");
- restartDungeon();
- }
- return false;
- }
- public int loop() {
- if(game.isLoggedIn())
- getLocation();
- return 500;
- }
- private boolean killBoss() {
- RSObject exitLadder = objects.getNearest(49696);
- if (objects.getNearest(49283) != null) {
- status = "Killing the Gluttonous Behemoth!";
- walking.walkTileMM(new RSTile(swX+4, neY-3), 0, 0);
- while (exitLadder == null) {
- exitLadder = objects.getNearest(49696);
- eatFood();
- sleep(1000);
- }
- } else if (npcs.getNearest(icyBones).isValid()) {
- status = "Killing Icy Bones!";
- while (exitLadder == null) {
- exitLadder = objects.getNearest(49696);
- eatFood();
- sleep(1000);
- }
- } else if (objects.getNearest(51148) != null) {
- status = "Killing Astea Frostweb!";
- while (exitLadder == null) {
- exitLadder = objects.getNearest(49696);
- eatFood();
- sleep(1000);
- }
- } else {
- status = "Killing unknown boss...";
- log("Unable to detect boss type... Lets hope attacking & safing is enough!");
- while (exitLadder == null) {
- exitLadder = objects.getNearest(49696);
- eatFood();
- sleep(1000);
- }
- }
- finishDungeon();
- return true;
- }
- private ArrayList<RSTile> getAllNewTiles() {
- RSObject[] allObject = objects.getAll();
- for(RSObject object : allObject)
- newObjectTiles.add(object.getLocation());
- newObjectTiles.removeAll(oldObjectTiles);
- return newObjectTiles;
- }
- private RSArea getNewRoomArea() {
- int tX = 0, tY = 0;
- swX = 20000;
- swY = 20000;
- neX = 0;
- neY = 0;
- RSArea roomArea;
- getAllNewTiles();
- if(newObjectTiles != null && newObjectTiles.size() > 0) {
- for(RSTile tile : newObjectTiles) {
- tX = tile.getX();
- tY = tile.getY();
- if(tX <= swX && tY <= swY) {
- swX = tX;
- swY = tY;
- }
- }
- for(RSTile tile : newObjectTiles) {
- tX = tile.getX();
- tY = tile.getY();
- if(tX >= neX && tY >= neY) {
- neX = tX;
- neY = tY;
- }
- }
- oldObjectTiles.addAll(newObjectTiles);
- newObjectTiles.clear();
- if(swX > 0 && swY > 0 && neX > 0 && neY > 0) {
- roomArea = new RSArea(swX, swY, neX, neY);
- if (roomArea != null)
- rooms.add(roomArea);
- return roomArea;
- }
- }
- return null;
- }
- private ArrayList<RSArea> getNewDoorAreas() {
- newDoors.clear();
- RSObject[] allObject = objects.getAll();
- for(RSObject object : allObject) {
- for(int I=0; I<doors.length; I++) {
- for(int J=0; J<doors[I].length; J++) {
- int objectID = object.getID();
- if(objectID == doors[I][J]) {
- RSArea doorArea = object.getArea();
- if(doors[I][J] == 50346 || doors[I][J] == 50342 ) {
- newDoors.add(doorArea);
- } else {
- newDoors.add(doorArea);
- lockedDoors.add(doorArea);
- }
- }
- }
- }
- }
- drawDoors.addAll(newDoors);
- if (deathWalkBack) {
- newDoors.retainAll(deathWalk);
- openedDoors.removeAll(deathWalk);
- unopenedDoors.retainAll(deathWalk);
- walkBackPath = false;
- deathWalkBack = true;
- log("Deathwalking.");
- } else if (degree > 0) {
- if(restarts == degree) {
- log("Walkback 1");
- newDoors.addAll(walkBack1);
- openedDoors.removeAll(walkBack1);
- walkBackPath = true;
- } else if (restarts == degree + 1 ) {
- log("Walkback 2");
- newDoors.addAll(walkBack2);
- openedDoors.removeAll(walkBack2);
- walkBackPath = true;
- } else if(restarts == degree + 2 ) {
- log("Walkback 3");
- newDoors.addAll(walkBack3);
- openedDoors.removeAll(walkBack3);
- walkBackPath = true;
- } else if(restarts > degree + 2) {
- log("Restarted too many times, resetting all doors.");
- openedDoors.clear();
- walkBackPath = true;
- }
- }
- newDoors.removeAll(openedDoors);
- return newDoors;
- }
- private RSArea getClosestDoor() {
- getNewDoorAreas();
- if (rooms.size() == 1) {
- degree = getNewDoorAreas().size();
- log("Degree " + degree + " dungeon.");
- }
- getLocation();
- if (!newDoors.isEmpty() && currentRoom != null) {
- RSArea closestDoor = null;
- RSObject otherSide = objects.getNearest(standardDoors[1]);
- unopenedDoors.removeAll(openedDoors);
- for (RSArea door : newDoors) {
- RSTile doorTile = door.getCentralTile();
- if (currentRoom.contains(doorTile)) {
- RSObject doorObj = objects.getTopAt(doorTile);
- if ((doorObj != null && (otherSide == null || calc.distanceBetween(doorTile, otherSide.getLocation()) > 5))) {
- int doorID = doorObj.getID();
- if (lockedDoors.contains(door)) {
- for (int I=0; I<doors.length; I++) {
- for (int J = 0; J<doors[I].length; J++) {
- if (doorID == doors[I][J] && inventory.contains(keys[I][J])) {
- closestDoor = door;
- return closestDoor;
- }
- }
- }
- } else {
- closestDoor = door;
- return closestDoor;
- }
- }
- } else if (currentRoom.contains(doorTile) && (deathWalkBack || walkBackPath)) {
- log("Opening based on walkback");
- int doorID = objects.getTopAt(doorTile).getID();
- if (lockedDoors.contains(door)) {
- for (int I=0; I<doors.length; I++) {
- for (int J = 0; J<doors[I].length; J++) {
- if (doorID == doors[I][J] && inventory.contains(keys[I][J])) {
- closestDoor = door;
- return closestDoor;
- }
- }
- }
- } else {
- closestDoor = door;
- return closestDoor;
- }
- }
- }
- } else {
- log("No new doors available. Returning to start.");
- restartDungeon();
- }
- return null;
- }
- private boolean getMonsters() {
- RSTile npcTile = new RSTile(0, 0);
- closestMonster = null;
- for (RSNPC monster : npcs.getAll()) {
- if (monster != null && monster.getID() != smuggler) {
- if (calc.distanceTo(monster.getLocation()) < calc.distanceTo(npcTile)) {
- npcTile = monster.getLocation();
- closestMonster = monster;
- }
- }
- }
- if (closestMonster != null) {
- status = "Slaying monsters...";
- do {
- if (!getMyPlayer().isInCombat()) {
- if (!closestMonster.isOnScreen()) {
- walking.walkTileMM(closestMonster.getLocation());
- sleep(1000);
- }
- if (!getMyPlayer().isInCombat())
- closestMonster.doAction("Attack");
- sleep(1000);
- if (getMyPlayer().getHPPercent() < 50)
- eatFood();
- }
- } while (getMyPlayer().isInCombat());
- if (getMyPlayer().getHPPercent() < 70)
- eatFood();
- return true;
- }
- return false;
- }
- private void openGuardianDoor() {
- do {
- if (cameraTurn) {
- camera.setAngle(camera.getAngle() + random(50, 90));
- camera.setPitch(random(50, 70));
- cameraTurn = false;
- }
- doorObject.doAction("Enter");
- sleep(1000);
- getLocation();
- } while (oldRoom.contains(myLoc));
- }
- private void openLockedDoor() {
- while (objects.getNearest(doorObject2.getID()) != null && getMyPlayer().getAnimation() != 13798) {
- sleep(300);
- doorObject2.doAction("Unlock");
- sleep(300);
- if(getMyPlayer().getAnimation() == 13798)
- break;
- sleep(300);
- }
- lockedDoors.remove(nearDoor);
- sleep(1500);
- do {
- if (cameraTurn) {
- camera.setAngle(camera.getAngle() + random(50, 90));
- camera.setPitch(random(50, 70));
- cameraTurn = false;
- }
- doorObject.doAction("Open");
- sleep(1000);
- getLocation();
- } while (oldRoom.contains(myLoc));
- }
- private boolean eatFood() {
- while (inventory.containsAll(foods) && getMyPlayer().getHPPercent() < 50) {
- for (int food : foods) {
- RSItem item = inventory.getItem(food);
- if(item != null) {
- item.doClick(true);
- }
- }
- }
- return true;
- }
- private boolean pickupKeys() {
- for (int I[] : keys) {
- for (int keyID : I) {
- RSGroundItem grabKey = groundItems.getNearest(keyID);
- if (grabKey != null) {
- log("Picking up key id: " + keyID);
- if (inventory.isFull()) {
- log("Inventory too full, dropping to make room.");
- inventory.dropAllExcept(I);
- }
- pickUpItem(keyID, grabKey.getLocation());
- return true;
- }
- }
- }
- return false;
- }
- private boolean pickupFood() {
- do {
- foodItem = groundItems.getNearest(foods);
- if (foodItem != null) {
- pickUpItem(foodItem.getItem().getID(), foodItem.getLocation());
- sleep(2000);
- }
- } while (foodItem != null && DoOption[4]);
- return false;
- }
- private boolean pickUpItem(int itemID, RSTile tile) {
- String itemName = getItemName(itemID);
- while (!tiles.doAction(tile, "Take "+ itemName) && DoOption[4]) {
- if (calc.distanceTo(tile) > 3) {
- walking.walkTileMM(tile);
- camera.turnToTile(tile);
- sleep(500);
- }
- while (getMyPlayer().isMoving())
- sleep(500);
- sleep(1500);
- }
- return true;
- }
- private String getItemName(int id) {
- for(int I=0; I<keys.length; I++) {
- for(int J=0; J<keys[I].length; J++) {
- if(id == keys[0][I])
- return "Orange";
- else if(id == keys[1][J])
- return "Silver";
- else if(id == keys[2][J])
- return "Yellow";
- else if(id == keys[3][J])
- return "Green";
- else if(id == keys[4][J])
- return "Blue";
- else if(id == keys[5][J])
- return "Purple";
- else if(id == keys[6][J])
- return "Crimson";
- else if(id == keys[7][J])
- return "Gold";
- }
- }
- if (id == shortFin)
- return "Short-finned eel";
- else if(id == redEye)
- return "Red-eye";
- else if(id == flatFish)
- return "Giant flatfish";
- else if(id == duskEel)
- return "Dusk eel";
- else if(id == heimCrab)
- return "Heim crab";
- else
- return grandExchange.getItemName(id);
- }
- private boolean castDungeonSpell(int spell, String castType) {
- if (game.getCurrentTab() != Game.TAB_MAGIC) {
- game.openTab(Game.TAB_MAGIC);
- for (int i = 0; i < 100; i++) {
- sleep(20);
- if (game.getCurrentTab() == Game.TAB_MAGIC) {
- break;
- }
- }
- sleep(random(150, 250));
- }
- return game.getCurrentTab() == Game.TAB_MAGIC
- && interfaces.get(950).getComponent(spell).doAction(castType);
- }
- public void serverMessageRecieved(ServerMessageEvent e) {
- String message = e.getMessage();
- if(message.contains("Oh dear")) {
- log("Damn... we died. Walking back.");
- isDead = true;
- }
- if(message.contains("can't reach")) {
- cameraTurn = true;
- }
- }
- // Paint
- boolean showStats, showOptions, OptionsDrawn;
- boolean Option1 = true, Option2, Option3, Option4, Option5 = true;
- boolean[] DoOption = { Option1, Option2, Option3, Option4, Option5 };
- private final Color BT1 = new Color(0, 0, 0, 200);
- private final Color BT2 = new Color(0, 0, 0, 150);
- private final Color BT3 = new Color(255, 255, 255, 210);
- private final Color RD1 = new Color(255, 0, 0, 130);
- private final Color RD2 = new Color(180, 0, 0, 130);
- private final Color GN1 = new Color(0, 255, 0, 130);
- private final Color GN2 = new Color(0, 130, 0, 80);
- private final Color BLK = new Color(0, 0, 0);
- private final Color WHT = new Color(255, 255, 255);
- private final Font Font1 = new Font("Arial", Font.BOLD, 11);
- Rectangle PaintStats = new Rectangle(7, 345, 80, 15);
- Rectangle PaintOptions = new Rectangle(91, 345, 80, 15);
- Rectangle PaintStatus = new Rectangle(175, 345, 190, 15);
- Rectangle PaintOption1 = new Rectangle(100, 376, 13, 13);
- Rectangle PaintOption2 = new Rectangle(180, 376, 13, 13);
- Rectangle PaintOption3 = new Rectangle(260, 376, 13, 13);
- Rectangle PaintOption4 = new Rectangle(100, 410, 13, 13);
- Rectangle PaintOption5 = new Rectangle(180, 410, 13, 13);
- Rectangle[] mTabs = { PaintStats, PaintOptions };
- Rectangle[] mOption = { PaintOption1, PaintOption2, PaintOption3, PaintOption4, PaintOption5 };
- public void onRepaint(Graphics g) {
- if (game.isLoggedIn()) {
- if (currentRoom != null && myLoc != null && currentRoom.contains(myLoc)) {
- // g.setColor(BLK);
- // g.fillRect(9, 461, 34, 10);
- for (RSArea door : openedDoors) {
- if (currentRoom.contains(door.getCentralTile())) {
- g.setColor(new Color(0, 255, 0));
- break;
- }
- }
- for (RSArea door : unopenedDoors) {
- if (currentRoom.contains(door.getCentralTile())) {
- g.setColor(new Color(255, 255, 0));
- break;
- }
- }
- for (RSArea door : lockedDoors) {
- if (currentRoom.contains(door.getCentralTile())) {
- g.setColor(new Color(255, 0, 0));
- break;
- }
- }
- g.setColor(new Color(0, 0, 255));
- Point mm1 = calc.tileToMinimap(currentRoom.getNearestTile(new RSTile(0, 0)));
- Point mm2 = calc.tileToMinimap(currentRoom.getNearestTile(new RSTile(0, 20000)));
- Point mm3 = calc.tileToMinimap(currentRoom.getNearestTile(new RSTile(20000, 20000)));
- Point mm4 = calc.tileToMinimap(currentRoom.getNearestTile(new RSTile(20000, 0)));
- int[] allX = { mm1.x, mm2.x, mm3.x, mm4.x };
- int[] allY = { mm1.y, mm2.y, mm3.y, mm4.y };
- int[] allX2 = { mm1.x+1, mm2.x+1, mm3.x-1, mm4.x-1 };
- int[] allY2 = { mm1.y+1, mm2.y-1, mm3.y-1, mm4.y+1 };
- g.drawPolygon(allX, allY, 4);
- g.drawPolygon(allX2, allY2, 4);
- }
- for (RSArea door : drawDoors) {
- if (calc.distanceTo(door.getCentralTile()) < 15) {
- if (lockedDoors.contains(door))
- g.setColor(new Color(255, 0, 0));
- else if (unopenedDoors.contains(door))
- g.setColor(new Color(255, 255, 0));
- else if (openedDoors.contains(door))
- g.setColor(new Color(0, 255, 0));
- else g.setColor(new Color(255, 255, 255));
- Point mm1 = calc.tileToMinimap(door.getNearestTile(new RSTile(0, 0)));
- Point mm2 = calc.tileToMinimap(door.getNearestTile(new RSTile(0, 20000)));
- Point mm3 = calc.tileToMinimap(door.getNearestTile(new RSTile(20000, 20000)));
- Point mm4 = calc.tileToMinimap(door.getNearestTile(new RSTile(20000, 0)));
- int[] allX = { mm1.x-1, mm1.x-1, mm2.x+1, mm2.x+1 };
- int[] allY = { mm1.y-1, mm2.y+1, mm3.y+1, mm4.y-1 };
- g.fillPolygon(allX, allY, 4);
- }
- }
- String hrs, mins, secs;
- long millis = System.currentTimeMillis() - startTime;
- runTime = System.currentTimeMillis() - startTime;
- long hours = millis / (1000 * 60 * 60);
- millis -= hours * (1000 * 60 * 60);
- long minutes = millis / (1000 * 60);
- millis -= minutes * (1000 * 60);
- long seconds = millis / 1000;
- if (hours < 10)
- hrs = "0" + hours;
- else hrs = "" + hours;
- if (minutes < 10)
- mins = "0" + minutes;
- else mins = "" + minutes;
- if (seconds < 10)
- secs = "0" + seconds;
- else secs = "" + seconds;
- xpGain = skills.getCurrentExp(Skills.DUNGEONEERING) - xpStart;
- eph = (int) ((3600000.0 / (double) runTime) * xpGain);
- g.setColor(BT1);
- g.fillRect(7, 362, 490, 96);
- if (showStats) {
- g.setColor(BT3);
- g.drawString("Time running: " + hrs + ":" + mins + ":" + secs, 15, 377);
- g.drawString("Dungeons Completed: " + dungeonCount, 15, 395);
- g.drawString("Levels gained: " + levels, 15, 413);
- g.drawString("Xp gained: " + xpGain, 15, 431);
- g.drawString("Xp per hour: " + eph, 15, 449);
- g.drawString("Current room: " + (roomNumber + 1), 200, 395);
- g.drawString("Tokens gained: " + (xpGain / 10), 200, 413);
- g.setColor(BT1);
- g.fillRect(7, 360, 80, 2);
- } else if (PaintStats.contains(mp)) {
- g.setColor(BT2);
- } else {
- g.setColor(BT1);
- }
- g.fillRect(PaintStats.x, PaintStats.y, PaintStats.width, PaintStats.height);
- if (showOptions) {
- OptionsDrawn = true;
- for (int I = 0; I < DoOption.length; I++) {
- if (DoOption[I]) {
- if (mOption[I].contains(mp)) {
- g.setColor(GN2);
- } else { g.setColor(GN1); }
- } else if (mOption[I].contains(mp)) {
- g.setColor(RD2);
- } else { g.setColor(RD1); }
- g.fillRect(mOption[I].x, mOption[I].y, mOption[I].width, mOption[I].height);
- g.setColor(BLK);
- g.drawRect(mOption[I].x, mOption[I].y, mOption[I].width, mOption[I].height);
- }
- g.setColor(WHT);
- g.drawString("Combat style:", 10, 388);
- g.drawString("Setup:", 56, 422);
- g.setColor(BT3);
- g.drawString("Melee", 118, 388);
- g.drawString("Range", 198, 388);
- g.drawString("Mage", 278, 388);
- g.drawString("Prayers", 118, 422);
- g.drawString("Eating", 198, 422);
- g.setColor(BT1);
- g.fillRect(91, 360, 80, 2);
- } else if (PaintOptions.contains(mp)) {
- g.setColor(BT2);
- } else {
- g.setColor(BT1);
- }
- g.fillRect(PaintOptions.x, PaintOptions.y, PaintOptions.width, PaintOptions.height);
- g.fillRect(PaintStatus.x, PaintStatus.y, PaintStatus.width, PaintStatus.height);
- g.setFont(Font1);
- g.setColor(BT1);
- g.drawString("iDungeon v" + vers + " by kiko", 369, 357);
- g.setColor(WHT);
- g.drawString("Experience", 18, 356);
- g.drawString("Settings", 108, 356);
- g.setColor(GN1);
- g.drawString(status, 180, 356);
- }
- }
- public void mouseMoved(MouseEvent e) {
- mp = e.getPoint();
- }
- public void mouseClicked(MouseEvent e) {
- Point p = e.getPoint();
- if(PaintStats.contains(p)) {
- showStats = true;
- showOptions = false;
- }
- if(PaintOptions.contains(p)) {
- showStats = false;
- showOptions = true;
- }
- if(showOptions && OptionsDrawn) {
- for(int I=0; I < mOption.length; I++) {
- if(mOption[I].contains(p)) {
- if (I == 0) {
- if (DoOption[I] == false)
- DoOption[I] = true;
- DoOption[1] = false;
- DoOption[2] = false;
- } else if (I == 1) {
- if (DoOption[I] == false)
- DoOption[I] = true;
- DoOption[0] = false;
- DoOption[2] = false;
- } else if (I == 2) {
- if (DoOption[I] == false)
- DoOption[I] = true;
- DoOption[0] = false;
- DoOption[1] = false;
- }
- if (I == 3) {
- if (DoOption[I] == false) {
- DoOption[I] = true;
- log("Praying enabled.");
- } else {
- DoOption[I] = false;
- log("Praying disabled.");
- }
- }
- if (I == 4) {
- if (DoOption[I] == false) {
- DoOption[I] = true;
- log("Eating enabled.");
- } else {
- DoOption[I] = false;
- log("Eating disabled.");
- }
- }
- }
- }
- }
- }
- public void mousePressed(MouseEvent e) { }
- public void mouseReleased(MouseEvent e) { }
- public void mouseEntered(MouseEvent e) { }
- public void mouseExited(MouseEvent e) { }
- }
Add Comment
Please, Sign In to add comment