Public feed #721846

Unnamed

public text v1 · immutable
Raw Edit
·published 2007-10-01 16:13 UTC
rendered paste body
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);
	}
	
}