Public feed
#721846
import java.util.*;
class Mining extends SkillHandler implements Runnable {
Thread t;
int playerID;
int ID;
int absX;
int absY;
int miningEmoteTimer = 0;
boolean mining = false;
int hits = 0;
int[] pickAxes = {1265, 1267, 1269, 1273, 1271, 1275};
int[] speeds = {1, 2, 3, 4, 5, 6};
boolean rockOverheated = false;
public Mining(int playerID, int ID, int absX, int absY, boolean rockOverheated) {
hits = 0;
this.playerID = playerID;
this.ID = ID;
this.absX = absX;
this.absY = absY;
this.rockOverheated = rockOverheated;
t = new Thread(this, "Mining");
t.start();
}
public void run() {
client player = (client) server.playerHandler.players[playerID];
boolean hasPick = hasPick();
if (hasPick)
try {
process();
} catch (NullPointerException e) {}
else {
player.sendMessage("You can't mine this rock without a pickaxe!");
ID = 0;
mining = false;
player.isMining = false;
}
}
void process() {
client player = (client) server.playerHandler.players[playerID];
player.RemoveAllWindows();
if (!meetsRequirements()) {
player.sendMessage("You must be at least level " + levelRequirement() + " Mining to mine this rock!");
ID = 0;
mining = false;
player.isMining = false;
}
if (!meetsPickRequirements()) {
player.sendMessage("You must be at least level " + pickRequirement() + " Mining to use this pickaxe.");
ID = 0;
mining = false;
player.isMining = false;
}
if (player.freeSlots() <= 0) {
player.sendMessage("You do not have any inventory space to mine!");
ID = 0;
mining = false;
player.isMining = false;
}
else if (player.freeSlots() > 0 && meetsRequirements() && meetsPickRequirements()) {
if (player.playerEquipment[player.playerShield] > 0) {
player.miningShield = player.playerEquipment[player.playerShield];
player.playerEquipment[player.playerShield] = 0;
player.updateRequired = true;
player.appearanceUpdateRequired = true;
}
if(miningEmoteTimer >= 0) {
player.setEmote(624);
miningEmoteTimer = 50;
}
miningEmoteTimer = miningEmoteTimer-1;
player.sendMessage("You swing your pick at the rocky outgrowth.");
try {
Thread.sleep(500);
} catch (InterruptedException e) {}
int chance = 0;
mining = true;
if (!rockOverheated)
bubbleRock();
while (mining) {
if (!hasPick()) {
player.sendMessage("You have unequipped your pick! Re-equip it to begin mining again.");
ID = 0;
mining = false;
player.isMining = false;
player.setAnimation(player.playerEmote);
player.playerEquipment[player.playerShield] = player.miningShield;
break;
}
player.setEmote(624);
chance = misc.random(getRockSpeed());
hits++;
if (hits == 4 && (ID == 2100 || ID == 2101)) {
chance = getRockSpeed();
hits = 0;
}
if (hits == 8 && (ID == 2090 || ID == 2091 || ID == 2094 || ID == 2095)) {
chance = getRockSpeed();
hits = 0;
}
if (hits == 6 && (ID == 2098 || ID == 2097)) {
chance = getRockSpeed();
hits = 0;
}
if (hits == 5 && (ID == 2092 || ID == 2093)) {
chance = getRockSpeed();
hits = 0;
}
if (hits == 6 && (ID == 2096 || ID == 2097)) {
chance = getRockSpeed();
hits = 0;
}
if (hits == 10 && (ID == 2102 || ID == 2103)) {
chance = getRockSpeed();
hits = 0;
}
if (hits == 15 && (ID == 2104 || ID == 2105)) {
chance = getRockSpeed();
hits = 0;
}
if (hits == 30 && (ID == 2106 || ID == 2107)) {
chance = getRockSpeed();
hits = 0;
}
if (chance != getRockSpeed()){
try {
if (ID > 2096 && ID < 2108)
Thread.sleep(2000);
else
Thread.sleep(500);
} catch (InterruptedException e) {}
continue;
}
else if (chance == getRockSpeed()) {
if (ID > 2118 && ID < 2137) {
destroyBubbly();
mining = false;
}
if (mining) {
int randomGFX = misc.random(1);
if (randomGFX == 0) player.sendGFX(263, absX, absY);
if (randomGFX == 1) player.sendGFX(264, absX, absY);
player.replaceObject(absX, absY, getMinedRock(), 0, 10);
player.sendMessage("You manage to mine " + getRockName() + " ore!");
player.setAnimation(player.playerEmote);
player.playerEquipment[player.playerShield] = player.miningShield;
player.addItem(getRockType(), 1);
randomGem();
player.addSkillXP(getMiningXP(), super.mining);
player.updateRequired = true;
player.appearanceUpdateRequired = true;
new RockRegenerate(playerID, ID, absX, absY);
try {
Thread.sleep(100);
} catch (InterruptedException e) {}
ID = 0;
mining = false;
player.isMining = false;
}
}
}
}
}
String getRockName() {
switch (ID) {
case 2090:
return "a Copper";
case 2091:
return "a Copper";
case 2092:
return "an Iron";
case 2093:
return "an Iron";
case 2094:
return "a Tin";
case 2095:
return "a Tin";
case 2096:
return "a Coal";
case 2097:
return "a Coal";
case 2098:
return "a Gold";
case 2099:
return "a Gold";
case 2100:
return "a Silver";
case 2101:
return "a Silver";
case 2102:
return "a Mithril";
case 2103:
return "a Mithril";
case 2104:
return "an Adamantium";
case 2105:
return "an Adamantium";
case 2106:
return "a Runite";
case 2107:
return "a Runite";
}
return "a null";
}
int getRockSpeed() {
client player = (client) server.playerHandler.players[playerID];
int pickAxe = player.playerEquipment[player.playerWeapon];
switch (ID) {
case 2090:
switch (pickAxe) {
case 1265 :
return 7;
case 1267 :
return 6;
case 1269 :
return 5;
case 1273 :
return 4;
case 1275 :
return 3;
case 1271 :
return 1;
case 1377 :
return 1;
}
return 999;
case 2091:
switch (pickAxe) {
case 1265 :
return 7;
case 1267 :
return 6;
case 1269 :
return 5;
case 1273 :
return 4;
case 1275 :
return 3;
case 1271 :
return 1;
case 1377 :
return 1;
}
return 999;
case 2092:
switch (pickAxe) {
case 1265 :
return 8;
case 1267 :
return 7;
case 1269 :
return 6;
case 1273 :
return 5;
case 1275 :
return 4;
case 1271 :
return 2;
case 1377 :
return 2;
}
return 999;
case 2093:
switch (pickAxe) {
case 1265 :
return 8;
case 1267 :
return 7;
case 1269 :
return 6;
case 1273 :
return 5;
case 1275 :
return 4;
case 1271 :
return 2;
case 1377 :
return 2;
}
return 999;
case 2094:
switch (pickAxe) {
case 1265 :
return 7;
case 1267 :
return 6;
case 1269 :
return 5;
case 1273 :
return 4;
case 1275 :
return 3;
case 1271 :
return 1;
case 1377 :
return 1;
}
return 999;
case 2095:
switch (pickAxe) {
case 1265 :
return 7;
case 1267 :
return 6;
case 1269 :
return 5;
case 1273 :
return 4;
case 1275 :
return 3;
case 1271 :
return 1;
case 1377 :
return 1;
}
return 999;
case 2096:
switch (pickAxe) {
case 1265 :
return 15;
case 1267 :
return 14;
case 1269 :
return 13;
case 1273 :
return 12;
case 1275 :
return 11;
case 1271 :
return 9;
case 1377 :
return 9;
}
return 999;
case 2097:
switch (pickAxe) {
case 1265 :
return 15;
case 1267 :
return 14;
case 1269 :
return 13;
case 1273 :
return 12;
case 1275 :
return 11;
case 1271 :
return 9;
case 1377 :
return 9;
}
return 999;
case 2098:
switch (pickAxe) {
case 1265 :
return 16;
case 1267 :
return 15;
case 1269 :
return 14;
case 1273 :
return 13;
case 1275 :
return 12;
case 1271 :
return 10;
case 1377 :
return 10;
}
return 999;
case 2099:
switch (pickAxe) {
case 1265 :
return 16;
case 1267 :
return 15;
case 1269 :
return 14;
case 1273 :
return 13;
case 1275 :
return 12;
case 1271 :
return 10;
case 1377 :
return 10;
}
return 999;
case 2100:
switch (pickAxe) {
case 1265 :
return 15;
case 1267 :
return 14;
case 1269 :
return 13;
case 1273 :
return 12;
case 1275 :
return 11;
case 1271 :
return 9;
case 1377 :
return 9;
}
return 999;
case 2101:
switch (pickAxe) {
case 1265 :
return 15;
case 1267 :
return 14;
case 1269 :
return 13;
case 1273 :
return 12;
case 1275 :
return 11;
case 1271 :
return 9;
case 1377 :
return 9;
}
return 999;
case 2102:
switch (pickAxe) {
case 1265 :
return 17;
case 1267 :
return 16;
case 1269 :
return 15;
case 1273 :
return 14;
case 1275 :
return 13;
case 1271 :
return 11;
case 1377 :
return 11;
}
return 999;
case 2103:
switch (pickAxe) {
case 1265 :
return 17;
case 1267 :
return 16;
case 1269 :
return 15;
case 1273 :
return 14;
case 1275 :
return 13;
case 1271 :
return 11;
case 1377 :
return 11;
}
return 999;
case 2104:
switch (pickAxe) {
case 1265 :
return 20;
case 1267 :
return 19;
case 1269 :
return 18;
case 1273 :
return 17;
case 1275 :
return 16;
case 1271 :
return 14;
case 1377 :
return 14;
}
return 999;
case 2105:
switch (pickAxe) {
case 1265 :
return 20;
case 1267 :
return 19;
case 1269 :
return 18;
case 1273 :
return 17;
case 1275 :
return 16;
case 1271 :
return 14;
case 1377 :
return 14;
}
return 999;
case 2106:
switch (pickAxe) {
case 1265 :
return 24;
case 1267 :
return 23;
case 1269 :
return 22;
case 1273 :
return 21;
case 1275 :
return 20;
case 1271 :
return 18;
case 1377 :
return 18;
}
return 999;
case 2107:
switch (pickAxe) {
case 1265 :
return 24;
case 1267 :
return 23;
case 1269 :
return 22;
case 1273 :
return 21;
case 1275 :
return 20;
case 1271 :
return 18;
case 1377 :
return 18;
}
return 999;
}
return 0;
}
int getMinedRock() {
switch (ID) {
case 2090:
return 450;
case 2091:
return 451;
case 2092:
return 450;
case 2093:
return 451;
case 2094:
return 450;
case 2095:
return 451;
case 2096:
return 450;
case 2097:
return 451;
case 2098:
return 450;
case 2099:
return 451;
case 2100:
return 450;
case 2101:
return 451;
case 2102:
return 450;
case 2103:
return 451;
case 2104:
return 450;
case 2105:
return 451;
case 2106:
return 450;
case 2107:
return 451;
}
return 0;
}
int getBubbleRock() {
switch (ID) {
case 2090:
return 2119;
case 2091:
return 2120;
case 2092:
return 2121;
case 2093:
return 2122;
case 2094:
return 2123;
case 2095:
return 2124;
case 2096:
return 2125;
case 2097:
return 2126;
case 2098:
return 2127;
case 2099:
return 2128;
case 2100:
return 2129;
case 2101:
return 2130;
case 2102:
return 2131;
case 2103:
return 2132;
case 2104:
return 2133;
case 2105:
return 2134;
case 2106:
return 2135;
case 2107:
return 2136;
}
return 0;
}
int getPickSpeed(int pick) {
switch (pick) {
case 1265:
return 5;
}
return 0;
}
int getMiningXP() {
switch (ID) {
case 2090:
return 22;
case 2091:
return 22;
case 2092:
return 40;
case 2093:
return 40;
case 2094:
return 22;
case 2095:
return 22;
case 2096:
return 55;
case 2097:
return 55;
case 2098:
return 71;
case 2099:
return 71;
case 2100:
return 46;
case 2101:
return 46;
case 2102:
return 85;
case 2103:
return 85;
case 2104:
return 100;
case 2105:
return 100;
case 2106:
return 130;
case 2107:
return 130;
}
return 0;
}
int getRockType() {
switch (ID) {
case 2090:
return 436;
case 2091:
return 436;
case 2092:
return 440;
case 2093:
return 440;
case 2094:
return 438;
case 2095:
return 438;
case 2096:
return 453;
case 2097:
return 453;
case 2098:
return 444;
case 2099:
return 444;
case 2100:
return 442;
case 2101:
return 442;
case 2102:
return 447;
case 2103:
return 447;
case 2104:
return 449;
case 2105:
return 449;
case 2106:
return 451;
case 2107:
return 451;
}
return 0;
}
int levelRequirement() {
switch (ID) {
case 2090:
return 1;
case 2091:
return 1;
case 2092:
return 15;
case 2093:
return 15;
case 2094:
return 1;
case 2095:
return 1;
case 2096:
return 30;
case 2097:
return 30;
case 2098:
return 40;
case 2099:
return 40;
case 2100:
return 20;
case 2101:
return 20;
case 2102:
return 55;
case 2103:
return 55;
case 2104:
return 70;
case 2105:
return 70;
case 2106:
return 85;
case 2107:
return 85;
case 2119:
return 1;
case 2120:
return 1;
case 2121:
return 15;
case 2122:
return 15;
case 2123:
return 1;
case 2124:
return 1;
case 2125:
return 30;
case 2126:
return 30;
case 2127:
return 40;
case 2128:
return 40;
case 2129:
return 20;
case 2130:
return 20;
case 2131:
return 55;
case 2132:
return 55;
case 2133:
return 70;
case 2134:
return 70;
case 2135:
return 85;
case 2136:
return 85;
}
return 99;
}
int pickRequirement() {
client player = (client) server.playerHandler.players[playerID];
switch (player.playerEquipment[player.playerWeapon]) {
case 1265:
return 1;
case 1267:
return 5;
case 1269:
return 11;
case 1273:
return 21;
case 1271:
return 31;
case 1275:
return 41;
case 1377:
return 90;
}
return 99;
}
int getBrokenPick() {
client player = (client) server.playerHandler.players[playerID];
int pickID = player.playerEquipment[player.playerWeapon];
switch (pickID) {
case 1265:
return 468;
case 1267:
return 470;
case 1269:
return 472;
case 1273:
return 474;
case 1271:
return 476;
case 1275:
return 478;
}
return -1;
}
void randomGem() {
client player = (client) server.playerHandler.players[playerID];
int gemRandom = 0;
gemRandom = misc.random(2000);
if (gemRandom <= 30) {
if (player.freeSlots() > 0) {
player.addItem(1623, 1);
player.sendMessage("While mining you unearth a Sapphire!");
}
else if (player.freeSlots() <= 0) {
player.createItem(1623);
player.sendMessage("While mining you unearth a Sapphire!");
}
}
if (gemRandom > 35 && gemRandom < 53) {
if (player.freeSlots() > 0) {
player.addItem(1621, 1);
player.sendMessage("While mining you unearth an Emerald!");
}
else if (player.freeSlots() <= 0) {
player.createItem(1621);
player.sendMessage("While mining you unearth an Emerald!");
}
}
if (gemRandom > 1000 && gemRandom < 1010) {
if (player.freeSlots() > 0) {
player.addItem(1619, 1);
player.sendMessage("While mining you unearth a Ruby!");
}
else if (player.freeSlots() <= 0) {
player.createItem(1619);
player.sendMessage("While mining you unearth an Ruby!");
}
}
if (gemRandom > 1950 && gemRandom < 1955) {
if (player.freeSlots() > 0) {
player.addItem(1617, 1);
player.sendMessage("While mining you unearth a Diamond! =0");
}
else if (player.freeSlots() <= 0) {
player.createItem(1617);
player.sendMessage("While mining you unearth a Diamond! =0");
}
}
gemRandom = 0;
}
void destroyBubbly() {
client player = (client) server.playerHandler.players[playerID];
if (hasPick()) {
player.setAnimation(player.playerEmote);
player.sendGFX(157, absX, absY);
//player.replaceObject(absX, absY, getOriginalRock(), 0, 10);
if (player.playerEquipment[player.playerWeapon] == 1377)
player.sendMessage("Your Dragon Pickaxe is impervious to breaking!");
if (player.playerEquipment[player.playerWeapon] != 1377) {
player.sendMessage("The overheated rock explodes, destroying your pickaxe!");
player.setEquipment(getBrokenPick(), 1, player.playerWeapon);
}
player.updateRequired = true;
player.appearanceUpdateRequired = true;
try {
Thread.sleep(100);
} catch (InterruptedException e) {}
ID = 0;
mining = false;
player.isMining = false;
}
else {}
}
void bubbleRock() {
client player = (client) server.playerHandler.players[playerID];
int bubbleRandom = 0;
bubbleRandom = misc.random(35);
if (bubbleRandom == 35) {
player.sendMessage("The rock gets overheated and starts to bubble!");
player.replaceObject(absX, absY, getBubbleRock(), 0, 10);
new RockRegenerate(playerID, ID, absX, absY);
ID = 0;
mining = false;
player.isMining = false;
player.setAnimation(player.playerEmote);
}
bubbleRandom = 0;
}
boolean hasPick() {
client player = (client) server.playerHandler.players[playerID];
if (player.playerEquipment[player.playerWeapon] != -1) {
for (int i = 0; i < pickAxes.length; i++){
if (player.playerEquipment[player.playerWeapon] == pickAxes[i]) {
return true;
}
}
}
return false;
}
boolean meetsRequirements() {
client player = (client) server.playerHandler.players[playerID];
if (player.playerLevel[super.mining] >= levelRequirement()) return true;
return false;
}
boolean meetsPickRequirements() {
client player = (client) server.playerHandler.players[playerID];
if (player.playerLevel[super.mining] >= pickRequirement()) return true;
return false;
}
public void display(String str){
System.out.println(str);
}
}