Ok well my friend was working on a 508/525 server, but gave it up, so has asked me to release his skills here. They're all full bases and probably no work needed (Some additions may want to be added)
All credits to him (Joshua). He has no Rune-server account.
Obviously all the imports/packaging would be changed based on your server base.
SkillManager
Code:
package net.com.PulseRev.content;
import net.com.PulseRev.model.Player;
import net.com.PulseRev.content.skills.*;
/**
* Created by Joshua
* Created on 27-Dec-2009 at 09:50:14
*/
public class SkillManager {
public Player p;
public SkillManager(Player player) {
this.p = player;
}
public void resetSkills() {
// Resets skills
p.actionSender.removeShownInterface(p);
p.actionSender.removeChatboxInterface(p);
p.woodcutting.resetWoodcutting();
p.fishing.resetFishing();
p.cooking.resetCooking();
p.smithing.resetSmithing();
p.smelting.resetSmelting();
p.mining.resetMining();
}
}
Cooking:
Code:
package net.com.PulseRev.content.skills;
import net.com.PulseRev.model.Player;
import net.com.PulseRev.Engine;
/**
* Created by Joshua
* Created on 01-Jan-2010 at 15:07:19
*/
public class Cooking {
Player p;
public Cooking(Player p) {
this.p = p;
}
public boolean Cooking = false;
public int CookTimer = -1;
public int CookAmount = 0;
public int CookXP = 0;
public int CookGet = 0;
public int CookID = 0;
public boolean cookingInterface = false;
public void setCookingInterface(int xp, int rawFish, int cookedFish) {
if (!hasCookingLevel(levelRequirement(rawFish))) {
p.message("You need level "+levelRequirement(rawFish)+" Cooking to cook that!");
return;
}
p.actionSender.setString(p, "Cook 1", 458, 1);
p.actionSender.setString(p, "Cook 5", 458, 2);
p.actionSender.setString(p, "Cook All", 458, 3);
p.actionSender.showChatboxInterface(p, 458);
CookXP = xp;
CookID = rawFish;
CookGet = cookedFish;
cookingInterface = true;
CookTimer = 2;
}
public void startCooking(int amount) {
if (!hasCookingLevel(levelRequirement(CookID))) {
p.message("You need level "+levelRequirement(CookID)+" Cooking to cook that!");
resetCooking();
return;
}
p.actionSender.removeShownInterface(p);
p.actionSender.removeChatboxInterface(p);
CookAmount = amount > Engine.playerItems.invItemCount(p, CookID) ?
Engine.playerItems.invItemCount(p, CookID) : amount;
CookThat(CookXP, CookID, CookGet);
cookingInterface = false;
Cooking = true;
}
public void CookThat(int XP, int rawFish, int cookedFish) {
if (!hasCookingLevel(levelRequirement(CookID))) {
p.message("You need level "+levelRequirement(CookID)+" Cooking to cook that!");
resetCooking();
return;
}
if (CookAmount <= 0) {
resetCooking();
p.message("You have finished cooking.");
return;
}
if (!Engine.playerItems.hasPlayerItemAmount(p, rawFish, 1)) {
resetCooking();
p.actionSender.sendMessage(p, "You haven't got any more fish to cook!");
return;
}
p.requestAnim(883, 0);
Engine.playerItems.deleteItem(p, rawFish, Engine.playerItems.getItemSlot(p, rawFish), 1);
Engine.playerItems.addItem(p, cookedFish, 1);
p.appendExperience(XP, 7);
p.actionSender.sendMessage(p, "You cook the fish.");
CookTimer = 2;
CookAmount -= 1;
}
public void process() {
if (Cooking) {
if (CookTimer > 0) CookTimer -= 1;
if (CookTimer == 0) {
if (CookAmount == 0) {
resetCooking();
} else {
CookThat(CookXP, CookID, CookGet);
}
}
}
}
public void resetCooking() {
CookTimer = -1;
CookAmount = 0;
CookXP = 0;
CookGet = 0;
CookID = 0;
Cooking = false;
cookingInterface = false;
}
public int levelRequirement(int rawFish) {
switch (rawFish) {
case 317: return 1; // Shrimp
case 335: return 15; // Trout
case 363: return 30; // Bass
case 377: return 45; // Lobster
case 383: return 77; // Shark
case 389: return 90; // Manta
}
return 1;
}
public boolean hasCookingLevel(int lvl) {
return p.skillLvl[7] >= lvl;
}
public int cookingLevel() {
return p.skillLvl[7];
}
}
Firemaking:
Code:
package net.com.PulseRev.content.skills;
import net.com.PulseRev.model.Player;
import net.com.PulseRev.model.items.PlayerItems;
/**
* Created by Joshua
* Created on 31-Dec-2009 at 18:26:04
*/
public class Firemaking {
Player p;
public Firemaking(Player p) {
this.p = p;
}
public void checkFiremaking(int itemUsed, int usedWith) {
if (itemUsed == 590 && usedWith == 1511 || itemUsed == 1511 && usedWith == 590) {
setFire(50, 733, 2732, 1511);
}
if (itemUsed == 590 && usedWith == 1521 || itemUsed == 1521 && usedWith == 590) {
if (p.skillLvl[11] >= 15) {
setFire(75, 733, 2732, 1521);
} else {
p.message("You need a level of 15 Firemaking to burn that!");
}
}
if (itemUsed == 590 && usedWith == 1519 || itemUsed == 1519 && usedWith == 590) {
if (p.skillLvl[11] >= 30) {
setFire(90, 733, 2732, 1519);
} else {
p.message("You need a level of 30 Firemaking to burn that!");
}
}
if (itemUsed == 590 && usedWith == 1517 || itemUsed == 1517 && usedWith == 590) {
if (p.skillLvl[11] >= 45) {
setFire(110, 733, 2732, 1517);
} else {
p.message("You need a level of 45 Firemaking to burn that!");
}
}
if (itemUsed == 590 && usedWith == 1515 || itemUsed == 1515 && usedWith == 590) {
if (p.skillLvl[11] >= 60) {
setFire(170, 733, 2732, 1515);
} else {
p.message("You need a level of 60 Firemaking to burn that!");
}
}
if (itemUsed == 590 && usedWith == 1513 || itemUsed == 1513 && usedWith == 590) {
if (p.skillLvl[11] >= 75) {
setFire(250, 733, 2732, 1513);
} else {
p.message("You need a level of 75 Firemaking to burn that!");
}
}
if (itemUsed == 590 && usedWith == 7404 || itemUsed == 7404 && usedWith == 590) { // red
setFire(50, 733, 11404, 7404);
}
if (itemUsed == 590 && usedWith == 7405 || itemUsed == 7405 && usedWith == 590) { // green
setFire(50, 733, 11405, 7405);
}
if (itemUsed == 590 && usedWith == 7406 || itemUsed == 7406 && usedWith == 590) { // blue
setFire(50, 733, 11406, 7406);
}
if (itemUsed == 590 && usedWith == 10329 || itemUsed == 10329 && usedWith == 590) { // blue
setFire(50, 733, 20001, 10329);
}
if (itemUsed == 590 && usedWith == 10328 || itemUsed == 10328 && usedWith == 590) {
setFire(50, 733, 20000, 10328);
}
}
public void setFire(int skillxp, int anim, int object, int logid) {
PlayerItems pi = new PlayerItems();
p.appendExperience(skillxp, 11);
p.requestAnim(anim, 0);
p.actionSender.createObject(p, object, p.heightLevel, p.absX, p.absY, 0, 10);
pi.deleteItem(p, logid, pi.getItemSlot(p, logid), 1);
p.message("You set the logs on fire.");
}
}
Fishing:
Code:
package net.com.PulseRev.content.skills;
import net.com.PulseRev.model.Player;
import net.com.PulseRev.model.items.PlayerItems;
import net.com.PulseRev.Engine;
import net.com.PulseRev.util.Misc;
/**
* Created by Joshua
* Created on 01-Jan-2010 at 00:50:29
*/
public class Fishing {
Player p;
public int FishTimer = -1; // Time until next fish
public int FishXP = 0; // XP received
public int FishGet = 0; // Received fish
public int FishEmote = 0; // Fishing emote
public boolean Fishing = false; // Are we fishing?
public Fishing(Player p) {
this.p = p;
}
public void FishThat(int XP, int fish, int Emote) {
if (fishingLevel() < requiredLevel(fish)) {
p.message("You need a level of " + requiredLevel(fish) + " to fish there!");
resetFishing();
p.requestAnim(p.standEmote, 0);
return;
}
if (!hasRequiredItem(fish)) {
p.message("You require a "+itemName(fish));
resetFishing();
p.requestAnim(p.standEmote, 0);
return;
}
if (!hasSpace()) {
p.message("You haven't got enough space in your inventory!");
resetFishing();
p.requestAnim(p.standEmote, 0);
return;
}
p.requestAnim(Emote, 0);
Engine.playerItems.addItem(p, fish, 1);
p.appendExperience(XP, 10);
p.actionSender.sendMessage(p, "You caught a fish.");
FishTimer = 3;
}
public void startFishing(int xp, int fish, int emote) {
if (fishingLevel() < requiredLevel(fish)) {
p.message("You need a level of " + requiredLevel(fish) + " to fish there!");
return;
}
if (!hasRequiredItem(fish)) {
p.message("You require a"+itemName(fish)+" to fish in this spot!");
return;
}
if (!hasSpace()) {
p.message("You haven't got enough space in your inventory!");
}
if (FishTimer == 0) {
FishThat(FishXP, FishGet, FishEmote);
}
FishTimer = 3;
FishXP = xp;
FishGet = fish;
FishEmote = emote;
Fishing = true;
}
public void process() {
if (Fishing) {
if (FishTimer > 0) {
FishTimer -= 1;
}
if (FishTimer == 0 && Fishing) {
FishThat(FishXP, FishGet, FishEmote);
}
}
}
public void resetFishing() {
Fishing = false;
FishXP = 0;
FishTimer = -1;
FishXP = 0;
FishGet = 0;
FishEmote = 0;
}
public int requiredLevel(int fish) {
switch (fish) {
case 317:
return 1; // Shrimp
case 363:
return 25; // Bass
case 377:
return 40; // Lobsters
case 335:
return 15; // Trout
case 383:
return 76; // Shark
case 389:
return 90; // Manta
}
return 1;
}
public boolean hasSpace() {
int index = Engine.playerItems.findInvSlot(p);
return index >= 0;
}
public boolean hasRequiredItem(int fish) {
switch (fish) {
case 317: // Shrimp
case 363: // Bass
if (hasItem(305)) {
return true;
}
break;
case 377: // Lobsters
if (hasItem(301)) {
return true;
}
break;
case 335: // Trout
if (hasItem(307)) {
return true;
}
break;
case 389: // Manta
case 383: // Shark
if (hasItem(311)) {
return true;
}
}
return false;
}
public String itemName(int fish) {
switch (fish) {
case 363:
case 317: return " big fishing net";
case 377: return " lobster cage";
case 335: return " fishing rod";
case 389:
case 383: return " harpoon";
}
return "Invalid";
}
public int fishingLevel() {
return p.skillLvl[10];
}
public void giveFishingXP(int xp) {
p.appendExperience(xp, 10);
}
public boolean hasItem(int id) {
PlayerItems pi = new PlayerItems();
return pi.invItemCount(p, id) > 0;
}
}
Mining:
Code:
package net.com.PulseRev.content.skills;
import net.com.PulseRev.model.Player;
import net.com.PulseRev.model.items.PlayerItems;
/**
* Created by Joshua
* Created on 07-Jan-2010 at 16:28:44
*/
public class Mining {
Player p;
PlayerItems pi = new PlayerItems();
public Mining(Player p) {
this.p = p;
}
public int emote;
public int speed;
public int time;
public int amount;
public int objectId;
public int rockId;
public int oreTimer = -1;
public int secondTimer = 2;
public int ores = 0;
public boolean Mining = false;
public void startMining(int objectid) {
if (getPlayerPickaxe() == -1) {
p.actionSender.sendMessage(p, "You don't have a pickaxe which you have the Mining level to use.");
resetMining();
return;
}
objectId = objectid;
rockId = getRockIDForObject(objectId);
if (getLevelForRock(rockId) > getMiningLevel()) {
p.actionSender.sendMessage(p, "You need a mining level of " + getLevelForRock(rockId) + " to mine this ore.");
resetMining();
return;
}
if (pi.freeSlotCount(p) < 1) {
resetMining();
p.actionSender.sendMessage(p, "Not enough inventory space to mine anything!");
}
p.actionSender.sendMessage(p, "You swing your pickaxe at the rock.");
setAnimAndSpeed(rockId, getPlayerPickaxe(), getMiningLevel());
oreTimer = time;
p.requestAnim(emote, 0);
Mining = true;
}
public void process() {
if (Mining) {
secondTimer--;
if (secondTimer == 0) {
secondTimer = 2;
oreTimer--;
p.requestAnim(emote, 0);
}
if (oreTimer == 0) {
oreTimer = time;
rewardOre();
}
}
}
public void resetMining() {
Mining = false;
//emote = 0;
//speed = 0;
//time = 0;
//amount = 0;
//objectId = -1;
//rockId = 0;
//secondTimer = 0;
//ores = 0;
oreTimer = -1;
}
public void rewardOre() {
if (getPlayerPickaxe() == -1) {
p.actionSender.sendMessage(p, "You don't have a pickaxe which you have the Mining level to use.");
resetMining();
p.requestAnim(p.standEmote, 0);
return;
}
if (getLevelForRock(rockId) > getMiningLevel()) {
p.actionSender.sendMessage(p, "You need a Mining level of " + getLevelForRock(rockId) + " to mine this ore.");
resetMining();
p.requestAnim(p.standEmote, 0);
return;
}
if (pi.freeSlotCount(p) < 1) {
resetMining();
p.requestAnim(p.standEmote, 0);
p.actionSender.sendMessage(p, "You finish Mining!");
return;
}
p.actionSender.sendMessage(p, "You get some ore.");
giveItem(getOreForRock(rockId));
giveMiningXP(getXpForRock(rockId));
p.requestAnim(emote, 0);
}
public int getMiningLevel() {
return p.skillLvl[14];
}
public void giveMiningXP(int xp) {
p.appendExperience(xp, 14);
}
public boolean hasItem(int id) {
return pi.invItemCount(p, id) > 0;
}
public void giveItem(int id) {
pi.addItem(p, id, 1);
}
public int getPlayerPickaxe() {
if (((hasItem(1275)) || (p.equipment[3] == 1275)) && getMiningLevel() >= getLevelForPickAxe(1275)) {
return 1275;
} else if (((hasItem(1273)) || (p.equipment[3] == 1273)) && getMiningLevel() >= getLevelForPickAxe(1273)) {
return 1273;
} else if (((hasItem(1271)) || (p.equipment[3] == 1271)) && getMiningLevel() >= getLevelForPickAxe(1271)) {
return 1271;
} else if (((hasItem(1269)) || (p.equipment[3] == 1269)) && getMiningLevel() >= getLevelForPickAxe(1269)) {
return 1269;
} else if (((hasItem(1267)) || (p.equipment[3] == 1267)) && getMiningLevel() >= getLevelForPickAxe(1267)) {
return 1267;
} else if (((hasItem(1265)) || (p.equipment[3] == 1265)) && getMiningLevel() >= getLevelForPickAxe(1265)) {
return 1265;
}
return -1;
}
public int getRockIDForObject(int rock) {
switch (rock) {
case 9710:
case 9708:
case 9709:
case 2091://Copper
return 1;
case 9716:
case 9714:
case 2094:
case 2095://Tin
return 2;
case 37309:
case 37308:
case 37307:
case 2092:
case 2093:// Iron
return 3;
/*case 37670:
case 37306:
case 37304:
case 2100:
case 2101://Silver
return 4;
case 11183:
case 11184:
case 11185:
case 2609:
case 2610:
case 2611:
case 2098:
case 2099://Gold
return 6;*/
case 14852:
case 14850:
case 14851:
case 2096:
case 2097://Coal
return 5;
case 2102:
case 14853:
case 14855:
case 14854:
case 2103://Mithril
return 7;
case 2104:
case 14863:
case 14862:
case 14861:
case 2105://Adamantite
return 8;
case 2106:
case 14859:
case 14860:
case 2107://Rune
return 9;
/*case 4028:
case 4029:
case 4030://Limestone
return 10;
case 6669:
case 6670:
case 6671://Elemental
return 11;*/
case 2110://Rune essence
return 12;
}
return -1;
}
public int getOreForRock(int rock) {
switch (rock) {
case 1://Copper
return 436;
case 2://Tin
return 438;
case 3://Iron
return 440;
/*case 4://Silver
return 442;*/
case 5://Coal
return 453;
/*case 6://Gold
return 444;*/
case 7://Mithril
return 447;
case 8://Adamantite
return 449;
case 9://Runite
return 451;
/*case 10://Limestone
return 3211;
case 11://Elemental
return 2892;*/
case 12://Rune essence
return 1436;
}
return -1;
}
public int getXpForRock(int rock) {
switch (rock) {
case 1://Copper
return 35;
case 2://Tin
return 35;
case 3://Iron
return 50;
/*case 4://Silver
return 30;*/
case 5://Coal
return 70;
/*case 6://Gold
return 100;*/
case 7://Mithril
return 100;
case 8://Adamantite
return 170;
case 9://Runite
return 285;
case 10://Limestone
return 5;
case 11://Elemental
return 20;
case 12://Rune essence
return 40;
}
return -1;
}
public int getLevelForRock(int rock) {
switch (rock) {
case 1:// Copper
return 1;
case 2:// Tin
return 1;
case 3:// Iron
return 15;
/*case 4:// Silver
return 20;*/
case 5:// Coal
return 30;
/*case 6:// Gold
return 40;*/
case 7:// Mithril
return 55;
case 8:// Adamantite
return 70;
case 9:// Runite
return 85;
/*case 10://Limestone
return 1;
case 11://Elemental
return 10;*/
case 12://Rune essence
return 20;
}
return -1;
}
public int getLevelForPickAxe(int axe) {
switch (axe) {
case 1265:// Bronze Pickaxe
return 1;
case 1267:// Iron Pickaxe
return 1;
case 1269:// Steel Pickaxe
return 5;
case 1271:// Mithril Pickaxe
return 21;
case 1273:// Adamant Pickaxe
return 31;
case 1275:// Rune Pickaxe
return 41;
}
return -1;
}
public void setAnimAndSpeed(int rock, int axe, int level) {
switch (axe) {
case 1265://Bronze Axe
emote = 625;
speed = 1;
break;
case 1267://Iron Axe
emote = 626;
speed = 2;
break;
case 1269://Steel Axe
emote = 627;
speed = 5;
break;
case 1271://Mithril Axe
emote = 629;
speed = 13;
break;
case 1273://Adamant Axe
emote = 628;
speed = 20;
break;
case 1275://Rune Axe
emote = 624;
speed = 30;
break;
}
speed = (speed - (speed * 2)) / 10;
time = getRockTime(rock);
if (time < 0) time = 1;
if (time == 1) emote++;
}
public int getRockTime(int rock) {
switch (rock) {
case 1: // Copper
case 2: // Tin
return 2;
case 3: // Iron
return 3;
case 5: // Coal
return 4;
case 7: // Mithril
case 8: // Adamant
return 6;
case 9: // Runite
return 8;
default:
return 3;
}
}
}
Smelting:
Code:
package net.com.PulseRev.content.skills;
import net.com.PulseRev.model.Player;
import net.com.PulseRev.model.items.PlayerItems;
import java.util.Random;
/**
* Created by Joshua
* Created on 06-Jan-2010 at 22:07:58
*/
public class Smelting {
Player p;
public Smelting(Player p) {
this.p = p;
}
PlayerItems pi = new PlayerItems();
public boolean Smelting = false;
public int barToSmelt = 0;
public int smeltingTimer = 0;
public int amountToSmelt = 0;
public void sendSmeltingInterface() {
/* Images & Strings */
p.actionSender.addInterfaceItem(p, 311, 4, 150, 2349); // Bronze
p.actionSender.addInterfaceItem(p, 311, 5, -1, -1); // Blurite
p.actionSender.addInterfaceItem(p, 311, 6, 150, 2351); // Iron
p.actionSender.addInterfaceItem(p, 311, 7, -1, -1); // Silver
p.actionSender.addInterfaceItem(p, 311, 8, 150, 2353); // Steel
p.actionSender.addInterfaceItem(p, 311, 9, -1, -1); // Gold
p.actionSender.addInterfaceItem(p, 311, 10, 150, 2359); // Mithril
p.actionSender.addInterfaceItem(p, 311, 11, 150, 2361); // Adamant
p.actionSender.addInterfaceItem(p, 311, 12, 150, 2363); // Runite
String br = "<br><br><br><br>";
p.actionSender.setString(p, br + (hasRequiredLevel(2349) ? "<col=000000>" : "<col=FF0000>") + "Bronze", 311, 16);
p.actionSender.setString(p, "<br><col=FF0000>Out<br><col=FF0000>of<br><col=FF0000>order", 311, 20);
p.actionSender.setString(p, br + (hasRequiredLevel(2351) ? "<col=000000>" : "<col=FF0000>") + "Iron", 311, 24);
p.actionSender.setString(p, "<col=FF0000><br><col=FF0000>Out<br><col=FF0000>of<br><col=FF0000>order", 311, 28);
p.actionSender.setString(p, br + (hasRequiredLevel(2355) ? "<col=000000>" : "<col=FF0000>") + "Steel", 311, 32);
p.actionSender.setString(p, "<col=FF0000><br><col=FF0000>Out<br><col=FF0000>of<br><col=FF0000>order", 311, 36);
p.actionSender.setString(p, br + (hasRequiredLevel(2359) ? "<col=000000>" : "<col=FF0000>") + "Mithril", 311, 40);
p.actionSender.setString(p, br + (hasRequiredLevel(2361) ? "<col=000000>" : "<col=FF0000>") + "Adamant", 311, 44);
p.actionSender.setString(p, br + (hasRequiredLevel(2363) ? "<col=000000>" : "<col=FF0000>") + "Rune", 311, 48);
/* Send interface */
p.actionSender.showChatboxInterface(p, 311);
}
public void startSmelting(int barId, int amount) {
if (!hasRequiredLevel(barId)) {
p.message("You need level "+requiredLevel(barId)+" to smelt that bar!");
resetSmelting();
return;
}
if (!hasOres(barId)) {
p.message(neededOres(barId));
resetSmelting();
return;
}
barToSmelt = barId;
amountToSmelt = amount;
Smelting = true;
smeltBar(barId);
}
public void smeltBar(int barId) {
if (!hasRequiredLevel(barId)) {
p.message("You need level "+requiredLevel(barId)+" to smelt that bar!");
resetSmelting();
return;
}
if (!hasOres(barId)) {
p.message("You've ran out of ores required to smelt this bar!");
resetSmelting();
return;
}
p.actionSender.removeChatboxInterface(p);
deleteOres(barId);
if (barId == 2351) {
// Iron ;]
Random gen = new Random();
int num = gen.nextInt(99);
if (num >= 0 && num < 50) {
p.message("You successfully smelt the iron bar.");
appendSmithingXP(barId);
pi.addItem(p, barId, 1);
} else {
p.message("You fail to smelt the iron bar!");
}
} else {
appendSmithingXP(barId);
pi.addItem(p, barId, 1);
}
p.requestAnim(899, 0);
amountToSmelt--;
smeltingTimer = 2;
}
public void process() {
/* Smelting processes */
if (Smelting) {
if (smeltingTimer > 0) smeltingTimer--;
if (smeltingTimer == 0) {
if (amountToSmelt == 0) resetSmelting();
if (amountToSmelt > 0) {
smeltBar(barToSmelt);
}
}
}
}
public void appendSmithingXP(int bar) {
int xp = 0;
switch (bar) {
case 2349: // Bronze
xp = 5;
break;
case 2351: // Iron
xp = 10;
break;
case 2355: // Steel
xp = 20;
break;
case 2359: // Mith
xp = 25;
break;
case 2361: // Addy
xp = 30;
break;
case 2363: // Rune
xp = 35;
break;
}
p.appendExperience(xp, 13);
}
public boolean hasOres(int bar) {
switch (bar) {
case 2349: // Bronze
return (pi.invItemCount(p, 436) >= 1 && pi.invItemCount(p, 438) >= 1);
case 2351: // Iron
return (pi.invItemCount(p, 440) >= 1);
case 2355: // Steel
return (pi.invItemCount(p, 440) >= 1 && pi.invItemCount(p, 453) >= 2);
case 2359: // Mithril
return (pi.invItemCount(p, 447) >= 1 && pi.invItemCount(p, 453) >= 4);
case 2361: // Adamantite
return (pi.invItemCount(p, 449) >= 1 && pi.invItemCount(p, 453) >= 6);
case 2363: // Runite
return (pi.invItemCount(p, 451) >= 1 && pi.invItemCount(p, 453) >= 8);
default: return false;
}
}
public void deleteOres(int bar) {
switch (bar) {
case 2349: // Bronze
pi.deleteItem(p, 436, 1);
pi.deleteItem(p, 438, 1);
break;
case 2351: // Iron
pi.deleteItem(p, 440, 1);
break;
case 2355: // Steel
pi.deleteItem(p, 440, 1);
pi.deleteItem(p, 453, 2);
break;
case 2359: // Mithril
pi.deleteItem(p, 447, 1);
pi.deleteItem(p, 453, 4);
break;
case 2361: // Adamantite
pi.deleteItem(p, 449, 1);
pi.deleteItem(p, 453, 6);
break;
case 2363: // Runite
pi.deleteItem(p, 451, 1);
pi.deleteItem(p, 453, 8);
break;
}
}
public String neededOres(int bar) {
String start = "You need ";
String end = " to smelt that bar!";
switch (bar) {
case 2349: // Bronze
return start+"1 tin ore, and 1 copper ore"+end;
case 2351: // Iron
return start+"1 iron ore"+end;
case 2355: // Steel
return start+"1 iron ore, and 2 coals"+end;
case 2359: // Mithril
return start+"1 mithril ore, and 4 coals"+end;
case 2361: // Adamantite
return start+"1 adamantite ore, and 6 coals"+end;
case 2363: // Runite
return start+"1 runite ore, and 8 coals"+end;
default: return "You need no ores."; // Hacker? Lolz
}
}
public int requiredLevel(int bar) {
switch (bar) {
case 2349:
return 1; // Bronze
case 2351:
return 15; // Iron
case 2353:
return 30; // Steel
case 2359:
return 50; // Mithril
case 2361:
return 70; // Adamant
case 2363:
return 85; // Runite
default:
return 1; // Any other? Shouldn't be others
}
}
public boolean hasRequiredLevel(int bar) {
return (p.skillLvl[13] >= requiredLevel(bar));
}
public boolean isAnOre(int id) {
switch (id) {
case 436: // Copper
case 438: // Tin
case 440: // Iron
case 447: // Mithril
case 449: // Adamant
case 451: // Runite
case 453: // Coal
return true;
default:
return false;
}
}
public void resetSmelting() {
Smelting = false;
barToSmelt = 0;
smeltingTimer = 0;
amountToSmelt = 0;
p.actionSender.removeChatboxInterface(p);
}
}
Woodcutting:
Code:
package net.com.PulseRev.content.skills;
import net.com.PulseRev.model.Player;
import net.com.PulseRev.model.items.*;
import java.util.Random;
/**
* Created by Joshua
* Created on 31-Dec-2009 at 17:20:47
*/
public class Woodcutting {
public Player p;
public Woodcutting(Player p) {
this.p = p;
}
public int anim;
public int speed;
public int time;
public int amount;
public int objid;
public int treeid;
public int logTimer = -1;
public int secondtimer = 2;
public int logs = 0;
public boolean Woodcutting = false;
public void startCutting(int objectid) {
if (getPlayerAxe() == -1 || getLevelForAxe(getPlayerAxe()) > getWoodcuttingLevel()) {
p.actionSender.sendMessage(p, "You don't have an axe which you have the woodcutting level to use.");
return;
}
objid = objectid;
treeid = getTreeIDForObject(objid);
if (getLevelForTree(treeid) > getWoodcuttingLevel()) {
p.actionSender.sendMessage(p, "You need level " + getLevelForTree(treeid) + " to chop down this tree");
return;
}
PlayerItems pit = new PlayerItems();
if (pit.freeSlotCount(p) < 1) {
resetWoodcutting();
p.actionSender.sendMessage(p, "Not enough inventory space to cut any more logs!");
return;
}
p.actionSender.sendMessage(p, "You swing your axe at the tree");
setAnimAndSpeed(treeid, getPlayerAxe(), getWoodcuttingLevel());
logTimer = time;
p.requestAnim(anim, 0);
Woodcutting = true;
}
public void process() {
if (Woodcutting) {
secondtimer--;
if (secondtimer == 0) {
secondtimer = 2;
logTimer--;
p.requestAnim(anim, 0);
}
if (logTimer == 0) {
logTimer = time;
logs++;
rewardLog();
}
}
}
public void resetWoodcutting() {
logTimer = -1;
Woodcutting = false;
}
public void rewardLog() {
PlayerItems pit = new PlayerItems();
if (getLevelForTree(treeid) > getWoodcuttingLevel()) {
resetWoodcutting();
p.requestAnim(p.standEmote, 0);
p.actionSender.sendMessage(p, "You need level " + getLevelForTree(treeid) + " to chop down this tree");
return;
}
if (pit.freeSlotCount(p) < 1) {
resetWoodcutting();
p.requestAnim(p.standEmote, 0);
p.actionSender.sendMessage(p, "Not enough inventory space to cut any more logs!");
}
if (pit.freeSlotCount(p) > 0) {
p.actionSender.sendMessage(p, "You cut some logs.");
giveItem(getLogsForTree(treeid));
p.requestAnim(p.standEmote, 0);
giveWoodcuttingXP(getXpForLog(treeid) * p.skillLvl[8]);
p.requestAnim(anim, 0);
}
pit = null;
}
public int getWoodcuttingLevel() {
return p.skillLvl[8];
}
public void giveWoodcuttingXP(int xp) {
p.appendExperience(xp, 8);
}
public boolean hasItem(int id) {
PlayerItems pi = new PlayerItems();
return pi.invItemCount(p, id) > 0;
}
public void giveItem(int id) {
PlayerItems pi = new PlayerItems();
pi.addItem(p, id, 1);
pi = null;
}
public int getPlayerAxe() {
if (((hasItem(6739)) || (p.equipment[3] == 6739)) && getWoodcuttingLevel() >= getLevelForAxe(6739)) {
return 6739;
} else
if (((hasItem(1359)) || (p.equipment[3] == 1359)) && getWoodcuttingLevel() >= getLevelForAxe(1359)) {
return 1359;
} else
if (((hasItem(1357)) || (p.equipment[3] == 1357)) && getWoodcuttingLevel() >= getLevelForAxe(1357)) {
return 1357;
} else
if (((hasItem(1355)) || (p.equipment[3] == 1355)) && getWoodcuttingLevel() >= getLevelForAxe(1355)) {
return 1355;
} else
if (((hasItem(1361)) || (p.equipment[3] == 1361)) && getWoodcuttingLevel() >= getLevelForAxe(1361)) {
return 1361;
} else
if (((hasItem(1353)) || (p.equipment[3] == 1353)) && getWoodcuttingLevel() >= getLevelForAxe(1353)) {
return 1353;
} else
if (((hasItem(1349)) || (p.equipment[3] == 1349)) && getWoodcuttingLevel() >= getLevelForAxe(1349)) {
return 1349;
} else
if (((hasItem(1351)) || (p.equipment[3] == 1351)) && getWoodcuttingLevel() >= getLevelForAxe(1351)) {
return 1351;
}
return -1;
}
public int getTreeIDForObject(int tree) {
switch (tree) {
case 1277:
case 1278:
case 1276://Normal Trees:Tree,Dead tree, Evergreen
return 1;
case 1281://Oak
return 2;
case 1308://Willow
return 3;
case 9036://Teak
return 4;
case 1307://Maple
return 5;
case 9034://Mahogany
return 6;
case 1309://Yew
return 7;
case 1306://Magic
return 8;
}
return -1;
}
public int getLogsForTree(int tree) {
switch (tree) {
case 1://Normal Trees:Tree,Dead tree, Evergreen
return 1511;
case 2://Oak
return 1521;
case 3://Willow
return 1519;
case 4://Teak
return 6333;
case 5://Maple
return 1517;
case 6://Mahogany
return 6332;
case 7://Yew
return 1515;
case 8://Magic
return 1513;
}
return -1;
}
public int getXpForLog(int tree) {
switch (tree) {
case 1: //Normal Trees: Tree, Dead tree, Evergreen
return 20;
case 2:// Oak Trees
return 30;
case 3:// Willow Trees
return 60;
case 4:// Teak Trees
return 75;
case 5:// Maple Trees
return 85;
case 6:// Mahogany Trees
return 105;
case 7:// Yew Trees
return 145;
case 8:// Magic Trees
return 210;
}
return -1;
}
public int getLevelForTree(int tree) {
switch (tree) {
case 1://Normal Trees:Tree,Dead tree, Evergreen
return 1;
case 2://Oak
return 15;
case 3://Willow
return 30;
case 4://Teak
return 35;
case 5://Maple
return 45;
case 6://Mahogany
return 50;
case 7://Yew
return 60;
case 8://Magic
return 75;
}
return -1;
}
public int getLevelForAxe(int axe) {
if (axe == 1351) {
return 0;
} else if (axe == 1349) {
return 0;
} else if (axe == 1353) {
return 5;
} else if (axe == 1361) {
return 10;
} else if (axe == 1355) {
return 21;
} else if (axe == 1357) {
return 31;
} else if (axe == 1359) {
return 41;
} else if (axe == 6739) {
return 61;
}
return -1;
}
public void setAnimAndSpeed(int tree, int axe, int level) {
switch (axe) {
case 1351://Bronze Axe
anim = 879;
speed = 1;
break;
case 1349://Iron Axe
anim = 877;
speed = 2;
break;
case 1353://Steel Axe
anim = 875;
speed = 5;
break;
case 1361://Black Axe
anim = 873;
speed = 7;
break;
case 1355://Mithril Axe
anim = 871;
speed = 13;
break;
case 1357://Adamant Axe
anim = 869;
speed = 20;
break;
case 1359://Rune Axe
anim = 867;
speed = 100;
break;
case 6739://Dragon Axe
anim = 2846;
speed = 35;
break;
}
speed = (speed - (speed * 2)) / 10;
Random r = new Random();
time = 2;
if (time < 0) time = 1;
if (time == 1) anim++;
}
}
One other thing, the SkillManager and the skills (individually) would need constructing in the player class, ie:
Code:
public Woodcutting woodcutting;
public Firemaking firemaking;
public Fishing fishing;
public Cooking cooking;
public Smithing smithing;
public Smelting smelting;
public Mining mining;
/**
* Constructs a new Player.
*
* @param socket The socket this Player belongs to.
* @param id The index this player is at.
*/
public Player(Socket socket, int id) {
this.socket = new PlayerSocket(this, socket);
playerId = id;
woodcutting = new Woodcutting(this);
firemaking = new Firemaking(this);
fishing = new Fishing(this);
cooking = new Cooking(this);
smithing = new Smithing(this);
smelting = new Smelting(this);
mining = new Mining(this);
...
Code:
/**
* Construct the Skill Manager
*/
public SkillManager SkillManager = new SkillManager(this);
And obviously the processes for each skills would be called in the main process in the player class
Code:
woodcutting.process();
fishing.process();
cooking.process();
smithing.process();
smelting.process();
mining.process();
Have fun..