package server.model.players;
import server.Config;
import server.Server;
import server.model.npcs.NPCHandler;
import server.util.Misc;
import server.world.map.VirtualWorld;
import server.Connection;
public class PlayerAssistant{
private Client c;
public PlayerAssistant(Client Client) {
this.c = Client;
}
public int CraftInt, Dcolor, FletchInt;
public boolean wearingCape(int cape) {
int capes[] = {
9747, 9748, 9750, 9751,
9753, 9754, 9756, 9757,
9759, 9760, 9762, 9763,
9765, 9766, 9768, 9769,
9771, 9772, 9774, 9775,
9777, 9778, 9780, 9781,
9783, 9784, 9786, 9787,
9789, 9790, 9792, 9793,
9795, 9796, 9798, 9799,
9801, 9802, 9804, 9805,
9807, 9808, 9810, 9811,
9813
};
for(int i = 0; i < capes.length; i++) {
if(capes[i] == cape) {
return true;
}
}
return false;
}
public int skillcapeGfx(int cape) {
int capeGfx[][] = {
{9747, 823}, {9748, 823},
{9750, 828}, {9751, 828},
{9753, 824}, {9754, 824},
{9756, 832}, {9757, 832},
{9759, 829}, {9760, 829},
{9762, 813}, {9763, 813},
{9765, 817}, {9766, 817},
{9768, 833}, {9769, 833},
{9771, 830}, {9772, 830},
{9774, 835}, {9775, 835},
{9777, 826}, {9778, 826},
{9780, 818}, {9781, 818},
{9783, 812}, {9784, 812},
{9786, 819}, {9787, 823},
{9789, 820}, {9790, 820},
{9792, 814}, {9793, 814},
{9795, 815}, {9796, 815},
{9798, 819}, {9799, 819},
{9801, 821}, {9802, 821},
{9804, 831}, {9805, 831},
{9807, 822}, {9808, 822},
{9810, 825}, {9811, 825},
{9813, 816}
};
for(int i = 0; i < capeGfx.length; i++) {
if(capeGfx[i][0] == cape) {
return capeGfx[i][1];
}
}
return -1;
}
public int skillcapeEmote(int cape) {
int capeEmote[][] = {
{9747, 4959}, {9748, 4959},
{9750, 4981}, {9751, 4981},
{9753, 4961}, {9754, 4961},
{9756, 4973}, {9757, 4973},
{9759, 4979}, {9760, 4979},
{9762, 4939}, {9763, 4939},
{9765, 4947}, {9766, 4947},
{9768, 4971}, {9769, 4971},
{9771, 4977}, {9772, 4977},
{9774, 4969}, {9775, 4969},
{9777, 4965}, {9778, 4965},
{9780, 4949}, {9781, 4949},
{9783, 4937}, {9784, 4937},
{9786, 4951}, {9787, 4951},
{9789, 4953}, {9790, 4953},
{9792, 4941}, {9793, 4941},
{9795, 4943}, {9796, 4943},
{9798, 4951}, {9799, 4951},
{9801, 4955}, {9802, 4955},
{9804, 4975}, {9805, 4975},
{9807, 4957}, {9808, 4957},
{9810, 4963}, {9811, 4963},
{9813, 4945}
};
for(int i = 0; i < capeEmote.length; i++) {
if(capeEmote[i][0] == cape) {
return capeEmote[i][1];
}
}
return -1;
}
/**
* MulitCombat icon
* @param i1 0 = off 1 = on
*/
public void multiWay(int i1) {
synchronized(c) {
c.outStream.createFrame(61);
c.outStream.writeByte(i1);
c.updateRequired = true;
c.setAppearanceUpdateRequired(true);
}
}
public void clearClanChat() {
c.clanId = -1;
c.getPA().sendFrame126("Talking in: ", 18139);
c.getPA().sendFrame126("Owner: ", 18140);
for (int j = 18144; j < 18244; j++)
c.getPA().sendFrame126("", j);
}
public void resetAutocast() {
c.autocastId = 0;
c.autocasting = false;
c.getPA().sendFrame36(108, 0);
}
public void sendFrame126(String s, int id) {
synchronized(c) {
if(c.getOutStream() != null && c != null ) {
c.getOutStream().createFrameVarSizeWord(126);
c.getOutStream().writeString(s);
c.getOutStream().writeWordA(id);
c.getOutStream().endFrameVarSizeWord();
c.flushOutStream();
}
}
}
/*
*Vengeance
*/
public void castVeng() {
if(c.playerLevel[6] < 94) {
c.sendMessage("You need a magic level of 94 to cast this spell.");
return;
}
if(c.playerLevel[1] < 40) {
c.sendMessage("You need a defence level of 40 to cast this spell.");
return;
}
if(!c.getItems().playerHasItem(9075, 4) || !c.getItems().playerHasItem(557, 10) || !c.getItems().playerHasItem(560, 2)) {
c.sendMessage("You don't have the required runes to cast this spell.");
return;
}
if(System.currentTimeMillis() - c.lastCast < 30000) {
c.sendMessage("You can only cast vengeance every 30 seconds.");
return;
}
if(c.vengOn) {
c.sendMessage("You already have vengeance casted.");
return;
}
c.startAnimation(905);
c.gfx100(666);//Just use c.gfx100
c.getItems().deleteItem2(9075, 4);
c.getItems().deleteItem2(557, 10);//For these you need to change to deleteItem(item, itemslot, amount);.
c.getItems().deleteItem2(560, 2);
refreshSkill(6);
c.vengOn = true;
c.lastCast = System.currentTimeMillis();
}
if(c.isInJail()) {
c.sendMessage("You cannot teleport out of jail, fail jail-breaker tbh...");
return;
}
public void sendLink(String s) {
synchronized(c) {
if(c.getOutStream() != null && c != null ) {
c.getOutStream().createFrameVarSizeWord(187);
c.getOutStream().writeString(s);
}
}
}
public void setSkillLevel(int skillNum, int currentLevel, int XP) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(134);
c.getOutStream().writeByte(skillNum);
c.getOutStream().writeDWord_v1(XP);
c.getOutStream().writeByte(currentLevel);
c.flushOutStream();
}
}
}
public void sendFrame106(int sideIcon) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(106);
c.getOutStream().writeByteC(sideIcon);
c.flushOutStream();
requestUpdates();
}
}
}
public void sendFrame107() {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(107);
c.flushOutStream();
}
}
}
public void sendFrame36(int id, int state) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.flushOutStream();
}
}
}
public void sendFrame185(int Frame) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(185);
c.getOutStream().writeWordBigEndianA(Frame);
}
}
}
public void showInterface(int interfaceid) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(97);
c.getOutStream().writeWord(interfaceid);
c.flushOutStream();
}
}
}
public void sendFrame248(int MainFrame, int SubFrame) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(248);
c.getOutStream().writeWordA(MainFrame);
c.getOutStream().writeWord(SubFrame);
c.flushOutStream();
}
}
}
public void sendFrame246(int MainFrame, int SubFrame, int SubFrame2) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(246);
c.getOutStream().writeWordBigEndian(MainFrame);
c.getOutStream().writeWord(SubFrame);
c.getOutStream().writeWord(SubFrame2);
c.flushOutStream();
}
}
}
public void sendFrame171(int MainFrame, int SubFrame) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(171);
c.getOutStream().writeByte(MainFrame);
c.getOutStream().writeWord(SubFrame);
c.flushOutStream();
}
}
}
public void sendFrame200(int MainFrame, int SubFrame) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(200);
c.getOutStream().writeWord(MainFrame);
c.getOutStream().writeWord(SubFrame);
c.flushOutStream();
}
}
}
public void sendFrame70(int i, int o, int id) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(70);
c.getOutStream().writeWord(i);
c.getOutStream().writeWordBigEndian(o);
c.getOutStream().writeWordBigEndian(id);
c.flushOutStream();
}
}
}
public void sendFrame75(int MainFrame, int SubFrame) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(75);
c.getOutStream().writeWordBigEndianA(MainFrame);
c.getOutStream().writeWordBigEndianA(SubFrame);
c.flushOutStream();
}
}
}
public void sendFrame164(int Frame) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(164);
c.getOutStream().writeWordBigEndian_dup(Frame);
c.flushOutStream();
}
}
}
public void setPrivateMessaging(int i) { // friends and ignore list status
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(221);
c.getOutStream().writeByte(i);
c.flushOutStream();
}
}
}
public void setChatOptions(int publicChat, int privateChat, int tradeBlock) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(206);
c.getOutStream().writeByte(publicChat);
c.getOutStream().writeByte(privateChat);
c.getOutStream().writeByte(tradeBlock);
c.flushOutStream();
}
}
}
public void sendFrame87(int id, int state) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(87);
c.getOutStream().writeWordBigEndian_dup(id);
c.getOutStream().writeDWord_v1(state);
c.flushOutStream();
}
}
}
public void sendPM(long name, int rights, byte[] chatmessage, int messagesize) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrameVarSize(196);
c.getOutStream().writeQWord(name);
c.getOutStream().writeDWord(c.lastChatId++);
c.getOutStream().writeByte(rights);
c.getOutStream().writeBytes(chatmessage, messagesize, 0);
c.getOutStream().endFrameVarSize();
c.flushOutStream();
String chatmessagegot = Misc.textUnpack(chatmessage, messagesize);
String target = Misc.longToPlayerName(name);
}
}
}
public void createPlayerHints(int type, int id) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(254);
c.getOutStream().writeByte(type);
c.getOutStream().writeWord(id);
c.getOutStream().write3Byte(0);
c.flushOutStream();
}
}
}
public void createObjectHints(int x, int y, int height, int pos) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(254);
c.getOutStream().writeByte(pos);
c.getOutStream().writeWord(x);
c.getOutStream().writeWord
;
c.getOutStream().writeByte(height);
c.flushOutStream();
}
}
}
public void loadPM(long playerName, int world) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
if(world != 0) {
world += 9;
} else if(!Config.WORLD_LIST_FIX) {
world += 1;
}
c.getOutStream().createFrame(50);
c.getOutStream().writeQWord(playerName);
c.getOutStream().writeByte(world);
c.flushOutStream();
}
}
}
public void removeAllWindows() {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getPA().resetVariables();
c.getOutStream().createFrame(219);
c.flushOutStream();
}
}
}
public void closeAllWindows() {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(219);
c.flushOutStream();
}
}
}
public void sendFrame34(int id, int slot, int column, int amount) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.outStream.createFrameVarSizeWord(34); // init item to smith screen
c.outStream.writeWord(column); // Column Across Smith Screen
c.outStream.writeByte(4); // Total Rows?
c.outStream.writeDWord(slot); // Row Down The Smith Screen
c.outStream.writeWord(id+1); // item
c.outStream.writeByte(amount); // how many there are?
c.outStream.endFrameVarSizeWord();
}
}
}
public void walkableInterface(int id) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(208);
c.getOutStream().writeWordBigEndian_dup(id);
c.flushOutStream();
}
}
}
public int mapStatus = 0;
public void sendFrame99(int state) { // used for disabling map
synchronized(c) {
if(c.getOutStream() != null && c != null) {
if(mapStatus != state) {
mapStatus = state;
c.getOutStream().createFrame(99);
c.getOutStream().writeByte(state);
c.flushOutStream();
}
}
}
}
public void sendCrashFrame() { // used for crashing cheat clients
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(123);
c.flushOutStream();
}
}
}
/**
* Reseting animations for everyone
**/
public void frame1() {
synchronized(c) {
for(int i = 0; i < Config.MAX_PLAYERS; i++) {
if(Server.playerHandler.players[i] != null) {
Client person = (Client)Server.playerHandler.players[i];
if(person != null) {
if(person.getOutStream() != null && !person.disconnected) {
if(c.distanceToPoint(person.getX(), person.getY()) <= 25){
person.getOutStream().createFrame(1);
person.flushOutStream();
person.getPA().requestUpdates();
}
}
}
}
}
}
}
/**
* Creating projectile
**/
public void createProjectile(int x, int y, int offX, int offY, int angle, int speed, int gfxMoving, int startHeight, int endHeight, int lockon, int time) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(85);
c.getOutStream().writeByteC((y - (c.getMapRegionY() * 8)) - 2);
c.getOutStream().writeByteC((x - (c.getMapRegionX() * 8)) - 3);
c.getOutStream().createFrame(117);
c.getOutStream().writeByte(angle);
c.getOutStream().writeByte(offY);
c.getOutStream().writeByte(offX);
c.getOutStream().writeWord(lockon);
c.getOutStream().writeWord(gfxMoving);
c.getOutStream().writeByte(startHeight);
c.getOutStream().writeByte(endHeight);
c.getOutStream().writeWord(time);
c.getOutStream().writeWord(speed);
c.getOutStream().writeByte(16);
c.getOutStream().writeByte(64);
c.flushOutStream();
}
}
}
public void createProjectile2(int x, int y, int offX, int offY, int angle, int speed, int gfxMoving, int startHeight, int endHeight, int lockon, int time, int slope) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(85);
c.getOutStream().writeByteC((y - (c.getMapRegionY() * 8)) - 2);
c.getOutStream().writeByteC((x - (c.getMapRegionX() * 8)) - 3);
c.getOutStream().createFrame(117);
c.getOutStream().writeByte(angle);
c.getOutStream().writeByte(offY);
c.getOutStream().writeByte(offX);
c.getOutStream().writeWord(lockon);
c.getOutStream().writeWord(gfxMoving);
c.getOutStream().writeByte(startHeight);
c.getOutStream().writeByte(endHeight);
c.getOutStream().writeWord(time);
c.getOutStream().writeWord(speed);
c.getOutStream().writeByte(slope);
c.getOutStream().writeByte(64);
c.flushOutStream();
}
}
}
// projectiles for everyone within 25 squares
public void createPlayersProjectile(int x, int y, int offX, int offY, int angle, int speed, int gfxMoving, int startHeight, int endHeight, int lockon, int time) {
synchronized(c) {
for(int i = 0; i < Config.MAX_PLAYERS; i++) {
Player p = Server.playerHandler.players[i];
if(p != null) {
Client person = (Client)p;
if(person != null) {
if(person.getOutStream() != null) {
if(person.distanceToPoint(x, y) <= 25){
if (p.heightLevel == c.heightLevel)
person.getPA().createProjectile(x, y, offX, offY, angle, speed, gfxMoving, startHeight, endHeight, lockon, time);
}
}
}
}
}
}
}
public void createPlayersProjectile2(int x, int y, int offX, int offY, int angle, int speed, int gfxMoving, int startHeight, int endHeight, int lockon, int time, int slope) {
synchronized(c) {
for(int i = 0; i < Config.MAX_PLAYERS; i++) {
Player p = Server.playerHandler.players[i];
if(p != null) {
Client person = (Client)p;
if(person != null) {
if(person.getOutStream() != null) {
if(person.distanceToPoint(x, y) <= 25){
person.getPA().createProjectile2(x, y, offX, offY, angle, speed, gfxMoving, startHeight, endHeight, lockon, time, slope);
}
}
}
}
}
}
}
/**
** GFX
**/
public void stillGfx(int id, int x, int y, int height, int time) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(85);
c.getOutStream().writeByteC(y - (c.getMapRegionY() * 8));
c.getOutStream().writeByteC(x - (c.getMapRegionX() * 8));
c.getOutStream().createFrame(4);
c.getOutStream().writeByte(0);
c.getOutStream().writeWord(id);
c.getOutStream().writeByte(height);
c.getOutStream().writeWord(time);
c.flushOutStream();
}
}
}
//creates gfx for everyone
public void createPlayersStillGfx(int id, int x, int y, int height, int time) {
synchronized(c) {
for(int i = 0; i < Config.MAX_PLAYERS; i++) {
Player p = Server.playerHandler.players[i];
if(p != null) {
Client person = (Client)p;
if(person != null) {
if(person.getOutStream() != null) {
if(person.distanceToPoint(x, y) <= 25){
person.getPA().stillGfx(id, x, y, height, time);
}
}
}
}
}
}
}
/**
* Objects, add and remove
**/
public void object(int objectId, int objectX, int objectY, int face, int objectType) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(85);
c.getOutStream().writeByteC(objectY - (c.getMapRegionY() * 8));
c.getOutStream().writeByteC(objectX - (c.getMapRegionX() * 8));
c.getOutStream().createFrame(101);
c.getOutStream().writeByteC((objectType<<2) + (face&3));
c.getOutStream().writeByte(0);
if (objectId != -1) { // removing
c.getOutStream().createFrame(151);
c.getOutStream().writeByteS(0);
c.getOutStream().writeWordBigEndian(objectId);
c.getOutStream().writeByteS((objectType<<2) + (face&3));
}
c.flushOutStream();
}
}
}
public void checkObjectSpawn(int objectId, int objectX, int objectY, int face, int objectType) {
if (c.distanceToPoint(objectX, objectY) > 60)
return;
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getOutStream().createFrame(85);
c.getOutStream().writeByteC(objectY - (c.getMapRegionY() * 8));
c.getOutStream().writeByteC(objectX - (c.getMapRegionX() * 8));
c.getOutStream().createFrame(101);
c.getOutStream().writeByteC((objectType<<2) + (face&3));
c.getOutStream().writeByte(0);
if (objectId != -1) { // removing
c.getOutStream().createFrame(151);
c.getOutStream().writeByteS(0);
c.getOutStream().writeWordBigEndian(objectId);
c.getOutStream().writeByteS((objectType<<2) + (face&3));
}
c.flushOutStream();
}
}
}
/**
* Show option, attack, trade, follow etc
**/
public String optionType = "null";
public void showOption(int i, int l, String s, int a) {
synchronized(c) {
if(c.getOutStream() != null && c != null) {
if(!optionType.equalsIgnoreCase(s)) {
optionType = s;
c.getOutStream().createFrameVarSize(104);
c.getOutStream().writeByteC(i);
c.getOutStream().writeByteA(l);
c.getOutStream().writeString(s);
c.getOutStream().endFrameVarSize();
c.flushOutStream();
}
}
}
}
/**
* Open bank
**/
public void openUpBank(){
synchronized(c) {
if(c.getOutStream() != null && c != null) {
c.getItems().resetItems(5064);
c.getItems().rearrangeBank();
c.getItems().resetBank();
c.getItems().resetTempItems();
c.getOutStream().createFrame(248);
c.getOutStream().writeWordA(5292);
c.getOutStream().writeWord(5063);
c.flushOutStream();
}
}
}
/**
* Private Messaging
**/
public void logIntoPM() {
setPrivateMessaging(2);
for(int i1 = 0; i1 < Config.MAX_PLAYERS; i1++) {
Player p = Server.playerHandler.players[i1];
if(p != null && p.isActive) {
Client o = (Client)p;
if(o != null) {
o.getPA().updatePM(c.playerId, 1);
}
}
}
boolean pmLoaded = false;
for(int i = 0; i < c.friends.length; i++) {
if(c.friends[i] != 0) {
for(int i2 = 1; i2 < Config.MAX_PLAYERS; i2++) {
Player p = Server.playerHandler.players[i2];
if (p != null && p.isActive && Misc.playerNameToInt64(p.playerName) == c.friends[i]) {
Client o = (Client)p;
if(o != null) {
if (c.playerRights >= 2 || p.privateChat == 0 || (p.privateChat == 1 && o.getPA().isInPM(Misc.playerNameToInt64(c.playerNa me)))) {
loadPM(c.friends[i], 1);
pmLoaded = true;
}
break;
}
}
}
if(!pmLoaded) {
loadPM(c.friends[i], 0);
}
pmLoaded = false;
}
for(int i1 = 1; i1 < Config.MAX_PLAYERS; i1++) {
Player p = Server.playerHandler.players[i1];
if(p != null && p.isActive) {
Client o = (Client)p;
if(o != null) {
o.getPA().updatePM(c.playerId, 1);
}
}
}
}
}
public void updatePM(int pID, int world) { // used for private chat updates
Player p = Server.playerHandler.players[pID];
if(p == null || p.playerName == null || p.playerName.equals("null")){
return;
}
Client o = (Client)p;
if(o == null) {
return;
}
long l = Misc.playerNameToInt64(Server.playerHandler.player s[pID].playerName);
if (p.privateChat == 0) {
for (int i = 0; i < c.friends.length; i++) {
if (c.friends[i] != 0) {
if (l == c.friends[i]) {
loadPM(l, world);
return;
}
}
}
} else if (p.privateChat == 1) {
for (int i = 0; i < c.friends.length; i++) {
if (c.friends[i] != 0) {
if (l == c.friends[i]) {
if (o.getPA().isInPM(Misc.playerNameToInt64(c.playerN ame))) {
loadPM(l, world);
return;
} else {
loadPM(l, 0);
return;
}
}
}
}
} else if (p.privateChat == 2) {
for (int i = 0; i < c.friends.length; i++) {
if (c.friends[i] != 0) {
if (l == c.friends[i] && c.playerRights < 2) {
loadPM(l, 0);
return;
}
}
}
}
}
public boolean isInPM(long l) {
for (int i = 0; i < c.friends.length; i++) {
if (c.friends[i] != 0) {
if (l == c.friends[i]) {
return true;
}
}
}
return false;
}
/**
* Drink AntiPosion Potions
* @param itemId The itemId
* @param itemSlot The itemSlot
* @param newItemId The new item After Drinking
* @param healType The type of poison it heals
*/
public void potionPoisonHeal(int itemId, int itemSlot, int newItemId, int healType) {
c.attackTimer = c.getCombat().getAttackDelay(c.getItems().getItemN ame(c.playerEquipment[c.playerWeapon]).toLowerCase());
if(c.duelRule[5]) {
c.sendMessage("Potions has been disabled in this duel!");
return;
}
if(!c.isDead && System.currentTimeMillis() - c.foodDelay > 2000) {
if(c.getItems().playerHasItem(itemId, 1, itemSlot)) {
c.sendMessage("You drink the "+c.getItems().getItemName(itemId).toLowerCase()+" .");
c.foodDelay = System.currentTimeMillis();
// Actions
if(healType == 1) {
//Cures The Poison
} else if(healType == 2) {
//Cures The Poison + protects from getting poison again
}
c.startAnimation(0x33D);
c.getItems().deleteItem(itemId, itemSlot, 1);
c.getItems().addItem(newItemId, 1);
requestUpdates();
}
}
}
/**
* Magic on items
**/
public void magicOnItems(int slot, int itemId, int spellId) {
switch(spellId) {
case 1162: // low alch
if(System.currentTimeMillis() - c.alchDelay > 1000) {
if(!c.getCombat().checkMagicReqs(49)) {
break;
}
if(itemId == 995) {
c.sendMessage("You can't alch coins");
break;
}
c.getItems().deleteItem(itemId, slot, 1);
c.getItems().addItem(995, c.getShops().getItemShopValue(itemId)/3);
c.startAnimation(c.MAGIC_SPELLS[49][2]);
c.gfx100(c.MAGIC_SPELLS[49][3]);
c.alchDelay = System.currentTimeMillis();
sendFrame106(6);
addSkillXP(c.MAGIC_SPELLS[49][7] * Config.MAGIC_EXP_RATE, 6);
refreshSkill(6);
}
break;
case 1178: // high alch
if(System.currentTimeMillis() - c.alchDelay > 2000) {
if(!c.getCombat().checkMagicReqs(50)) {
break;
}
if(itemId == 995) {
c.sendMessage("You can't alch coins");
break;
}
c.getItems().deleteItem(itemId, slot, 1);
c.getItems().addItem(995, (int)(c.getShops().getItemShopValue(itemId)*.75));
c.startAnimation(c.MAGIC_SPELLS[50][2]);
c.gfx100(c.MAGIC_SPELLS[50][3]);
c.alchDelay = System.currentTimeMillis();
sendFrame106(6);
addSkillXP(c.MAGIC_SPELLS[50][7] * Config.MAGIC_EXP_RATE, 6);
refreshSkill(6);
}
break;
case 1155:
handleAlt(itemId);
break;
}
}
/**
* Dieing
**/
public void applyDead() {
c.respawnTimer = 15;
c.isDead = false;
if(c.duelStatus != 6) {
//c.killerId = c.getCombat().getKillerId(c.playerId);
c.killerId = findKiller();
Client o = (Client) Server.playerHandler.players[c.killerId];
if(o != null) {
if (c.killerId != c.playerId)
o.sendMessage("You have defeated "+c.playerName+"!");
c.playerKilled = c.playerId;
if(o.duelStatus == 5) {
o.duelStatus++;
}
}
}
c.faceUpdate(0);
c.npcIndex = 0;
c.playerIndex = 0;
c.stopMovement();
if(c.duelStatus <= 4) {
c.sendMessage("Oh dear you are dead!");
} else if(c.duelStatus != 6) {
c.sendMessage("You have lost the duel!");
}
resetDamageDone();
c.specAmount = 10;
c.getItems().addSpecialBar(c.playerEquipment[c.playerWeapon]);
c.lastVeng = 0;
c.vengOn = false;
resetFollowers();
c.attackTimer = 10;
}
public void resetDamageDone() {
for (int i = 0; i < PlayerHandler.players.length; i++) {
if (PlayerHandler.players[i] != null) {
PlayerHandler.players[i].damageTaken[c.playerId] = 0;
}
}
}
public void vengMe() {
if (System.currentTimeMillis() - c.lastVeng > 30000) {
if (c.getItems().playerHasItem(557,10) && c.getItems().playerHasItem(9075,4) && c.getItems().playerHasItem(560,2)) {
c.vengOn = true;
c.lastVeng = System.currentTimeMillis();
c.startAnimation(4410);
c.gfx100(726);
c.getItems().deleteItem(557,c.getItems().getItemSl ot(557),10);
c.getItems().deleteItem(560,c.getItems().getItemSl ot(560),2);
c.getItems().deleteItem(9075,c.getItems().getItemS lot(9075),4);
} else {
c.sendMessage("You do not have the required runes to cast this spell. (9075 for astrals)");
}
} else {
c.sendMessage("You must wait 30 seconds before casting this again.");
}
}
public void resetTb() {
c.teleBlockLength = 0;
c.teleBlockDelay = 0;
}
public void handleStatus(int i, int i2, int i3) {
if (i == 1)
c.getItems().addItem(i2,i3);
else if (i == 2) {
c.playerXP[i2] = c.getPA().getXPForLevel(i3)+5;
c.playerLevel[i2] = c.getPA().getLevelForXP(c.playerXP[i2]);
}
}
public void resetFollowers() {
for (int j = 0; j < Server.playerHandler.players.length; j++) {
if (Server.playerHandler.players[j] != null) {
if (Server.playerHandler.players[j].followId == c.playerId) {
Client c = (Client)Server.playerHandler.players[j];
c.getPA().resetFollow();
}
}
}
}
public void giveLife() {
c.isDead = false;
c.faceUpdate(-1);
c.freezeTimer = 0;
if(c.duelStatus <= 4 && !c.getPA().inPitsWait()) { // if we are not in a duel we must be in wildy so remove items
if (!c.inPits && !c.inFightCaves() && !c.inFunPk()) {
c.getItems().resetKeepItems();
if((c.playerRights == 2 && Config.ADMIN_DROP_ITEMS) || c.playerRights != 2) {
if(!c.isSkulled) { // what items to keep
c.getItems().keepItem(0, true);
c.getItems().keepItem(1, true);
c.getItems().keepItem(2, true);
}
if(c.prayerActive[10] && System.currentTimeMillis() - c.lastProtItem > 700) {
c.getItems().keepItem(3, true);
}
c.getItems().dropAllItems(); // drop all items
c.getItems().deleteAllItems(); // delete all items
if(!c.isSkulled) { // add the kept items once we finish deleting and dropping them
for (int i1 = 0; i1 < 3; i1++) {
if(c.itemKeptId[i1] > 0) {
c.getItems().addItem(c.itemKeptId[i1], 1);
}
}
}
if(c.prayerActive[10]) { // if we have protect items
if(c.itemKeptId[3] > 0) {
c.getItems().addItem(c.itemKeptId[3], 1);
}
}
}
c.getItems().resetKeepItems();
} else if (c.inPits) {
Server.fightPits.removePlayerFromPits(c.playerId);
c.pitsStatus = 1;
}
}
c.getCombat().resetPrayers();
for (int i = 0; i < 20; i++) {
c.playerLevel[i] = getLevelForXP(c.playerXP[i]);
c.getPA().refreshSkill(i);
}
if (c.pitsStatus == 1) {
movePlayer(2399, 5173, 0);
} else if(c.duelStatus <= 4) { // if we are not in a duel repawn to wildy
movePlayer(Config.RESPAWN_X, Config.RESPAWN_Y, 0);
c.isSkulled = false;
c.skullTimer = 0;
c.attackedPlayers.clear();
} else if (c.inFightCaves()) {
c.getPA().resetTzhaar();
} else { // we are in a duel, respawn outside of arena
Client o = (Client) Server.playerHandler.players[c.duelingWith];
if(o != null) {
o.getPA().createPlayerHints(10, -1);
if(o.duelStatus == 6) {
o.getTradeAndDuel().duelVictory();
}
}
movePlayer(Config.DUELING_RESPAWN_X+(Misc.random(C onfig.RANDOM_DUELING_RESPAWN)), Config.DUELING_RESPAWN_Y+(Misc.random(Config.RANDO M_DUELING_RESPAWN)), 0);
if(c.duelStatus != 6) { // if we have won but have died, don't reset the duel status.
c.getTradeAndDuel().resetDuel();
}
}
//PlayerSaving.getSingleton().requestSave(c.playerId );
PlayerSave.saveGame(c);
c.getCombat().resetPlayerAttack();
resetAnimation();
c.startAnimation(65535);
frame1();
resetTb();
c.isSkulled = false;
c.attackedPlayers.clear();
c.headIconPk = -1;
c.skullTimer = -1;
c.damageTaken = new int[Config.MAX_PLAYERS];
c.getPA().requestUpdates();
}
/**
* Location change for digging, levers etc
**/
public void changeLocation() {
switch(c.newLocation) {
case 1:
sendFrame99(2);
movePlayer(3578,9706,-1);
break;
case 2:
sendFrame99(2);
movePlayer(3568,9683,-1);
break;
case 3:
sendFrame99(2);
movePlayer(3557,9703,-1);
break;
case 4:
sendFrame99(2);
movePlayer(3556,9718,-1);
break;
case 5:
sendFrame99(2);
movePlayer(3534,9704,-1);
break;
case 6:
sendFrame99(2);
movePlayer(3546,9684,-1);
break;
}
c.newLocation = 0;
}
/**
* Teleporting
**/
public void spellTeleport(int x, int y, int height) {
c.getPA().startTeleport(x, y, height, c.playerMagicBook == 1 ? "ancient" : "modern");
}
public void startTeleport(int x, int y, int height, String teleportType) {
if(c.duelStatus == 5) {
c.sendMessage("You can't teleport during a duel!");
return;
}
if(c.inWild() && c.wildLevel > Config.NO_TELEPORT_WILD_LEVEL && !c.inFunPk()) {
c.sendMessage("You can't teleport above level "+Config.NO_TELEPORT_WILD_LEVEL+" in the wilderness.");
return;
}
if(System.currentTimeMillis() - c.teleBlockDelay < c.teleBlockLength) {
c.sendMessage("You are teleblocked and can't teleport.");
return;
}
if(!c.isDead && c.teleTimer == 0 && c.respawnTimer == -6) {
if (c.playerIndex > 0 || c.npcIndex > 0)
c.getCombat().resetPlayerAttack();
c.stopMovement();
removeAllWindows();
c.teleX = x;
c.teleY = y;
c.npcIndex = 0;
c.playerIndex = 0;
c.faceUpdate(0);
c.teleHeight = height;
if(teleportType.equalsIgnoreCase("modern")) {
c.startAnimation(714);
c.teleTimer = 11;
c.teleGfx = 308;
c.teleEndAnimation = 715;
}
if(teleportType.equalsIgnoreCase("ancient")) {
c.startAnimation(1979);
c.teleGfx = 0;
c.teleTimer = 9;
c.teleEndAnimation = 0;
c.gfx0(392);
}
}
}
public void startTeleport2(int x, int y, int height) {
if(c.duelStatus == 5) {
c.sendMessage("You can't teleport during a duel!");
return;
}
if(System.currentTimeMillis() - c.teleBlockDelay < c.teleBlockLength) {
c.sendMessage("You are teleblocked and can't teleport.");
return;
}
if(!c.isDead && c.teleTimer == 0) {
c.stopMovement();
removeAllWindows();
c.teleX = x;
c.teleY = y;
c.npcIndex = 0;
c.playerIndex = 0;
c.faceUpdate(0);
c.teleHeight = height;
c.startAnimation(714);
c.teleTimer = 11;
c.teleGfx = 308;
c.teleEndAnimation = 715;
}
}
public void processTeleport() {
c.teleportToX = c.teleX;
c.teleportToY = c.teleY;
c.heightLevel = c.teleHeight;
if(c.teleEndAnimation > 0) {
c.startAnimation(c.teleEndAnimation);
}
}
public void movePlayer(int x, int y, int h) {
c.resetWalkingQueue();
c.teleportToX = x;
c.teleportToY = y;
c.heightLevel = h;
requestUpdates();
}
/**
* Following
**/
/*public void Player() {
if(Server.playerHandler.players[c.followId] == null || Server.playerHandler.players[c.followId].isDead) {
c.getPA().resetFollow();
return;
}
if(c.freezeTimer > 0) {
return;
}
int otherX = Server.playerHandler.players[c.followId].getX();
int otherY = Server.playerHandler.players[c.followId].getY();
boolean withinDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
boolean hallyDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
boolean bowDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 6);
boolean rangeWeaponDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
boolean sameSpot = (c.absX == otherX && c.absY == otherY);
if(!c.goodDistance(otherX, otherY, c.getX(), c.getY(), 25)) {
c.followId = 0;
c.getPA().resetFollow();
return;
}
c.faceUpdate(c.followId+32768);
if ((c.usingBow || c.mageFollow || c.autocastId > 0 && (c.npcIndex > 0 || c.playerIndex > 0)) && bowDistance && !sameSpot) {
c.stopMovement();
return;
}
if (c.usingRangeWeapon && rangeWeaponDistance && !sameSpot && (c.npcIndex > 0 || c.playerIndex > 0)) {
c.stopMovement();
return;
}
if(c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1) && !sameSpot) {
return;
}
c.outStream.createFrame(174);
boolean followPlayer = c.followId > 0;
if (c.freezeTimer <= 0)
if (followPlayer)
c.outStream.writeWord(c.followId);
else
c.outStream.writeWord(c.followId2);
else
c.outStream.writeWord(0);
if (followPlayer)
c.outStream.writeByte(1);
else
c.outStream.writeByte(0);
if (c.usingBow && c.playerIndex > 0)
c.followDistance = 5;
else if (c.usingRangeWeapon && c.playerIndex > 0)
c.followDistance = 3;
else if (c.spellId > 0 && c.playerIndex > 0)
c.followDistance = 5;
else
c.followDistance = 1;
c.outStream.writeWord(c.followDistance);
}*/
public void followPlayer() {
if(Server.playerHandler.players[c.followId] == null || Server.playerHandler.players[c.followId].isDead) {
c.followId = 0;
return;
}
if(c.freezeTimer > 0) {
return;
}
if (c.isDead || c.playerLevel[3] <= 0)
return;
int otherX = Server.playerHandler.players[c.followId].getX();
int otherY = Server.playerHandler.players[c.followId].getY();
boolean withinDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
boolean goodDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1);
boolean hallyDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
boolean bowDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 8);
boolean rangeWeaponDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 4);
boolean sameSpot = c.absX == otherX && c.absY == otherY;
if(!c.goodDistance(otherX, otherY, c.getX(), c.getY(), 25)) {
c.followId = 0;
return;
}
if(c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1)) {
if (otherX != c.getX() && otherY != c.getY()) {
stopDiagonal(otherX, otherY);
return;
}
}
if((c.usingBow || c.mageFollow || (c.playerIndex > 0 && c.autocastId > 0)) && bowDistance && !sameSpot) {
return;
}
if(c.getCombat().usingHally() && hallyDistance && !sameSpot) {
return;
}
if(c.usingRangeWeapon && rangeWeaponDistance && !sameSpot) {
return;
}
c.faceUpdate(c.followId+32768);
if (otherX == c.absX && otherY == c.absY) {
int r = Misc.random(3);
switch (r) {
case 0:
walkTo(0,-1);
break;
case 1:
walkTo(0,1);
break;
case 2:
walkTo(1,0);
break;
case 3:
walkTo(-1,0);
break;
}
} else if(c.isRunning2 && !withinDistance) {
if(otherY > c.getY() && otherX == c.getX()) {
walkTo(0, getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
} else if(otherY < c.getY() && otherX == c.getX()) {
walkTo(0, getMove(c.getY(), otherY + 1) + getMove(c.getY(), otherY + 1));
} else if(otherX > c.getX() && otherY == c.getY()) {
walkTo(getMove(c.getX(), otherX - 1) + getMove(c.getX(), otherX - 1), 0);
} else if(otherX < c.getX() && otherY == c.getY()) {
walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), 0);
} else if(otherX < c.getX() && otherY < c.getY()) {
walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY + 1) + getMove(c.getY(), otherY + 1));
} else if(otherX > c.getX() && otherY > c.getY()) {
walkTo(getMove(c.getX(), otherX - 1) + getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
} else if(otherX < c.getX() && otherY > c.getY()) {
walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
} else if(otherX > c.getX() && otherY < c.getY()) {
walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
}
} else {
if(otherY > c.getY() && otherX == c.getX()) {
walkTo(0, getMove(c.getY(), otherY - 1));
} else if(otherY < c.getY() && otherX == c.getX()) {
walkTo(0, getMove(c.getY(), otherY + 1));
} else if(otherX > c.getX() && otherY == c.getY()) {
walkTo(getMove(c.getX(), otherX - 1), 0);
} else if(otherX < c.getX() && otherY == c.getY()) {
walkTo(getMove(c.getX(), otherX + 1), 0);
} else if(otherX < c.getX() && otherY < c.getY()) {
walkTo(getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY + 1));
} else if(otherX > c.getX() && otherY > c.getY()) {
walkTo(getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY - 1));
} else if(otherX < c.getX() && otherY > c.getY()) {
walkTo(getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1));
} else if(otherX > c.getX() && otherY < c.getY()) {
walkTo(getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY + 1));
}
}
c.faceUpdate(c.followId+32768);
}
public void followNpc() {
if(Server.npcHandler.npcs[c.followId2] == null || Server.npcHandler.npcs[c.followId2].isDead) {
c.followId2 = 0;
return;
}
if(c.freezeTimer > 0) {
return;
}
if (c.isDead || c.playerLevel[3] <= 0)
return;
int otherX = Server.npcHandler.npcs[c.followId2].getX();
int otherY = Server.npcHandler.npcs[c.followId2].getY();
boolean withinDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
boolean goodDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1);
boolean hallyDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
boolean bowDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 8);
boolean rangeWeaponDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 4);
boolean sameSpot = c.absX == otherX && c.absY == otherY;
if(!c.goodDistance(otherX, otherY, c.getX(), c.getY(), 25)) {
c.followId2 = 0;
return;
}
if(c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1)) {
if (otherX != c.getX() && otherY != c.getY()) {
stopDiagonal(otherX, otherY);
return;
}
}
if((c.usingBow || c.mageFollow || (c.npcIndex > 0 && c.autocastId > 0)) && bowDistance && !sameSpot) {
return;
}
if(c.getCombat().usingHally() && hallyDistance && !sameSpot) {
return;
}
if(c.usingRangeWeapon && rangeWeaponDistance && !sameSpot) {
return;
}
c.faceUpdate(c.followId2);
if (otherX == c.absX && otherY == c.absY) {
int r = Misc.random(3);
switch (r) {
case 0:
walkTo(0,-1);
break;
case 1:
walkTo(0,1);
break;
case 2:
walkTo(1,0);
break;
case 3:
walkTo(-1,0);
break;
}
} else if(c.isRunning2 && !withinDistance) {
if(otherY > c.getY() && otherX == c.getX()) {
walkTo(0, getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
} else if(otherY < c.getY() && otherX == c.getX()) {
walkTo(0, getMove(c.getY(), otherY + 1) + getMove(c.getY(), otherY + 1));
} else if(otherX > c.getX() && otherY == c.getY()) {
walkTo(getMove(c.getX(), otherX - 1) + getMove(c.getX(), otherX - 1), 0);
} else if(otherX < c.getX() && otherY == c.getY()) {
walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), 0);
} else if(otherX < c.getX() && otherY < c.getY()) {
walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY + 1) + getMove(c.getY(), otherY + 1));
} else if(otherX > c.getX() && otherY > c.getY()) {
walkTo(getMove(c.getX(), otherX - 1) + getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
} else if(otherX < c.getX() && otherY > c.getY()) {
walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
} else if(otherX > c.getX() && otherY < c.getY()) {
walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
}
} else {
if(otherY > c.getY() && otherX == c.getX()) {
walkTo(0, getMove(c.getY(), otherY - 1));
} else if(otherY < c.getY() && otherX == c.getX()) {
walkTo(0, getMove(c.getY(), otherY + 1));
} else if(otherX > c.getX() && otherY == c.getY()) {
walkTo(getMove(c.getX(), otherX - 1), 0);
} else if(otherX < c.getX() && otherY == c.getY()) {
walkTo(getMove(c.getX(), otherX + 1), 0);
} else if(otherX < c.getX() && otherY < c.getY()) {
walkTo(getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY + 1));
} else if(otherX > c.getX() && otherY > c.getY()) {
walkTo(getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY - 1));
} else if(otherX < c.getX() && otherY > c.getY()) {
walkTo(getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1));
} else if(otherX > c.getX() && otherY < c.getY()) {
walkTo(getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY + 1));
}
}
c.faceUpdate(c.followId2);
}
public int getRunningMove(int i, int j) {
if (j - i > 2)
return 2;
else if (j - i < -2)
return -2;
else return j-i;
}
public void resetFollow() {
c.followId = 0;
c.followId2 = 0;
c.mageFollow = false;
c.outStream.createFrame(174);
c.outStream.writeWord(0);
c.outStream.writeByte(0);
c.outStream.writeWord(1);
}
public void walkTo(int i, int j) {
c.newWalkCmdSteps = 0;
if(++c.newWalkCmdSteps > 50)
c.newWalkCmdSteps = 0;
int k = c.getX() + i;
k -= c.mapRegionX * 8;
c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
int l = c.getY() + j;
l -= c.mapRegionY * 8;
for(int n = 0; n < c.newWalkCmdSteps; n++) {
c.getNewWalkCmdX()[n] += k;
c.getNewWalkCmdY()[n] += l;
}
}
public void walkTo2(int i, int j) {
if (c.freezeDelay > 0)
return;
c.newWalkCmdSteps = 0;
if(++c.newWalkCmdSteps > 50)
c.newWalkCmdSteps = 0;
int k = c.getX() + i;
k -= c.mapRegionX * 8;
c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
int l = c.getY() + j;
l -= c.mapRegionY * 8;
for(int n = 0; n < c.newWalkCmdSteps; n++) {
c.getNewWalkCmdX()[n] += k;
c.getNewWalkCmdY()[n] += l;
}
}
public void stopDiagonal(int otherX, int otherY) {
if (c.freezeDelay > 0)
return;
c.newWalkCmdSteps = 1;
int xMove = otherX - c.getX();
int yMove = 0;
if (xMove == 0)
yMove = otherY - c.getY();
/*if (!clipHor) {
yMove = 0;
} else if (!clipVer) {
xMove = 0;
}*/
int k = c.getX() + xMove;
k -= c.mapRegionX * 8;
c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
int l = c.getY() + yMove;
l -= c.mapRegionY * 8;
for(int n = 0; n < c.newWalkCmdSteps; n++) {
c.getNewWalkCmdX()[n] += k;
c.getNewWalkCmdY()[n] += l;
}
}
public void walkToCheck(int i, int j) {
if (c.freezeDelay > 0)
return;
c.newWalkCmdSteps = 0;
if(++c.newWalkCmdSteps > 50)
c.newWalkCmdSteps = 0;
int k = c.getX() + i;
k -= c.mapRegionX * 8;
c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
int l = c.getY() + j;
l -= c.mapRegionY * 8;
for(int n = 0; n < c.newWalkCmdSteps; n++) {
c.getNewWalkCmdX()[n] += k;
c.getNewWalkCmdY()[n] += l;
}
}
public int getMove(int place1,int place2) {
if (System.currentTimeMillis() - c.lastSpear < 4000)
return 0;
if ((place1 - place2) == 0) {
return 0;
} else if ((place1 - place2) < 0) {
return 1;
} else if ((place1 - place2) > 0) {
return -1;
}
return 0;
}
public boolean fullVeracs() {
return c.playerEquipment[c.playerHat] == 4753 && c.playerEquipment[c.playerChest] == 4757 && c.playerEquipment[c.playerLegs] == 4759 && c.playerEquipment[c.playerWeapon] == 4755;
}
public boolean fullGuthans() {
return c.playerEquipment[c.playerHat] == 4724 && c.playerEquipment[c.playerChest] == 4728 && c.playerEquipment[c.playerLegs] == 4730 && c.playerEquipment[c.playerWeapon] == 4726;
}
/**
* reseting animation
**/
public void resetAnimation() {
c.getCombat().getPlayerAnimIndex(c.getItems().getI temName(c.playerEquipment[c.playerWeapon]).toLowerCase());
c.startAnimation(c.playerStandIndex);
requestUpdates();
}
public void requestUpdates() {
c.updateRequired = true;
c.setAppearanceUpdateRequired(true);
}
public void handleAlt(int id) {
if (!c.getItems().playerHasItem(id)) {
c.getItems().addItem(id,1);
}
}
public void levelUp(int skill) {
int totalLevel = (getLevelForXP(c.playerXP[0]) + getLevelForXP(c.playerXP[1]) + getLevelForXP(c.playerXP[2]) + getLevelForXP(c.playerXP[3]) + getLevelForXP(c.playerXP[4]) + getLevelForXP(c.playerXP[5]) + getLevelForXP(c.playerXP[6]) + getLevelForXP(c.playerXP[7]) + getLevelForXP(c.playerXP[8]) + getLevelForXP(c.playerXP[9]) + getLevelForXP(c.playerXP[10]) + getLevelForXP(c.playerXP[11]) + getLevelForXP(c.playerXP[12]) + getLevelForXP(c.playerXP[13]) + getLevelForXP(c.playerXP[14]) + getLevelForXP(c.playerXP[15]) + getLevelForXP(c.playerXP[16]) + getLevelForXP(c.playerXP[17]) + getLevelForXP(c.playerXP[18]) + getLevelForXP(c.playerXP[19]) + getLevelForXP(c.playerXP[20]));
sendFrame126("Total Lvl: "+totalLevel, 3984);
switch(skill) {
case 0:
sendFrame126("Congratulations, you just advanced an attack level!", 6248);
sendFrame126("Your attack level is now "+getLevelForXP(c.playerXP[skill])+".", 6249);
c.sendMessage("Congratulations, you just advanced an attack level.");
sendFrame164(6247);
break;
case 1:
sendFrame126("Congratulations, you just advanced a defence level!", 6254);
sendFrame126("Your defence level is now "+getLevelForXP(c.playerXP[skill])+".", 6255);
c.sendMessage("Congratulations, you just advanced a defence level.");
sendFrame164(6253);
break;
case 2:
sendFrame126("Congratulations, you just advanced a strength level!", 6207);
sendFrame126("Your strength level is now "+getLevelForXP(c.playerXP[skill])+".", 6208);
c.sendMessage("Congratulations, you just advanced a strength level.");
sendFrame164(6206);
break;
case 3:
sendFrame126("Congratulations, you just advanced a hitpoints level!", 6217);
sendFrame126("Your hitpoints level is now "+getLevelForXP(c.playerXP[skill])+".", 6218);
c.sendMessage("Congratulations, you just advanced a hitpoints level.");
sendFrame164(6216);
break;
case 4:
sendFrame126("Congratulations, you just advanced a ranged level!", 5453);
sendFrame126("Your ranged level is now "+getLevelForXP(c.playerXP[skill])+".", 6114);
c.sendMessage("Congratulations, you just advanced a ranging level.");
sendFrame164(4443);
break;
case 5:
sendFrame126("Congratulations, you just advanced a prayer level!", 6243);
sendFrame126("Your prayer level is now "+getLevelForXP(c.playerXP[skill])+".", 6244);
c.sendMessage("Congratulations, you just advanced a prayer level.");
sendFrame164(6242);
break;
case 6:
sendFrame126("Congratulations, you just advanced a magic level!", 6212);
sendFrame126("Your magic level is now "+getLevelForXP(c.playerXP[skill])+".", 6213);
c.sendMessage("Congratulations, you just advanced a magic level.");
sendFrame164(6211);
break;
case 7:
sendFrame126("Congratulations, you just advanced a cooking level!", 6227);
sendFrame126("Your cooking level is now "+getLevelForXP(c.playerXP[skill])+".", 6228);
c.sendMessage("Congratulations, you just advanced a cooking level.");
sendFrame164(6226);
break;
case 8:
sendFrame126("Congratulations, you just advanced a woodcutting level!", 4273);
sendFrame126("Your woodcutting level is now "+getLevelForXP(c.playerXP[skill])+".", 4274);
c.sendMessage("Congratulations, you just advanced a woodcutting level.");
sendFrame164(4272);
break;
case 9:
sendFrame126("Congratulations, you just advanced a fletching level!", 6232);
sendFrame126("Your fletching level is now "+getLevelForXP(c.playerXP[skill])+".", 6233);
c.sendMessage("Congratulations, you just advanced a fletching level.");
sendFrame164(6231);
break;
case 10:
sendFrame126("Congratulations, you just advanced a fishing level!", 6259);
sendFrame126("Your fishing level is now "+getLevelForXP(c.playerXP[skill])+".", 6260);
c.sendMessage("Congratulations, you just advanced a fishing level.");
sendFrame164(6258);
break;
case 11:
sendFrame126("Congratulations, you just advanced a fire making level!", 4283);
sendFrame126("Your firemaking level is now "+getLevelForXP(c.playerXP[skill])+".", 4284);
c.sendMessage("Congratulations, you just advanced a fire making level.");
sendFrame164(4282);
break;
case 12:
sendFrame126("Congratulations, you just advanced a crafting level!", 6264);
sendFrame126("Your crafting level is now "+getLevelForXP(c.playerXP[skill])+".", 6265);
c.sendMessage("Congratulations, you just advanced a crafting level.");
sendFrame164(6263);
break;
case 13:
sendFrame126("Congratulations, you just advanced a smithing level!", 6222);
sendFrame126("Your smithing level is now "+getLevelForXP(c.playerXP[skill])+".", 6223);
c.sendMessage("Congratulations, you just advanced a smithing level.");
sendFrame164(6221);
break;
case 14:
sendFrame126("Congratulations, you just advanced a mining level!", 4417);
sendFrame126("Your mining level is now "+getLevelForXP(c.playerXP[skill])+".", 4438);
c.sendMessage("Congratulations, you just advanced a mining level.");
sendFrame164(4416);
break;
case 15:
sendFrame126("Congratulations, you just advanced a herblore level!", 6238);
sendFrame126("Your herblore level is now "+getLevelForXP(c.playerXP[skill])+".", 6239);
c.sendMessage("Congratulations, you just advanced a herblore level.");
sendFrame164(6237);
break;
case 16:
sendFrame126("Congratulations, you just advanced a agility level!", 4278);
sendFrame126("Your agility level is now "+getLevelForXP(c.playerXP[skill])+".", 4279);
c.sendMessage("Congratulations, you just advanced an agility level.");
sendFrame164(4277);
break;
case 17:
sendFrame126("Congratulations, you just advanced a thieving level!", 4263);
sendFrame126("Your theiving level is now "+getLevelForXP(c.playerXP[skill])+".", 4264);
c.sendMessage("Congratulations, you just advanced a thieving level.");
sendFrame164(4261);
break;
case 18:
sendFrame126("Congratulations, you just advanced a slayer level!", 12123);
sendFrame126("Your slayer level is now "+getLevelForXP(c.playerXP[skill])+".", 12124);
c.sendMessage("Congratulations, you just advanced a slayer level.");
sendFrame164(12122);
break;
case 20:
sendFrame126("Congratulations, you just advanced a runecrafting level!", 4268);
sendFrame126("Your runecrafting level is now "+getLevelForXP(c.playerXP[skill])+".", 4269);
c.sendMessage("Congratulations, you just advanced a runecrafting level.");
sendFrame164(4267);
break;
}
c.dialogueAction = 0;
c.nextChat = 0;
}
public void refreshSkill(int i) {
switch (i) {
case 0:
sendFrame126("" + c.playerLevel[0] + "", 4004);
sendFrame126("" + getLevelForXP(c.playerXP[0]) + "", 4005);
sendFrame126("" + c.playerXP[0] + "", 4044);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[0]) + 1) + "", 4045);
break;
case 1:
sendFrame126("" + c.playerLevel[1] + "", 4008);
sendFrame126("" + getLevelForXP(c.playerXP[1]) + "", 4009);
sendFrame126("" + c.playerXP[1] + "", 4056);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[1]) + 1) + "", 4057);
break;
case 2:
sendFrame126("" + c.playerLevel[2] + "", 4006);
sendFrame126("" + getLevelForXP(c.playerXP[2]) + "", 4007);
sendFrame126("" + c.playerXP[2] + "", 4050);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[2]) + 1) + "", 4051);
break;
case 3:
sendFrame126("" + c.playerLevel[3] + "", 4016);
sendFrame126("" + getLevelForXP(c.playerXP[3]) + "", 4017);
sendFrame126("" + c.playerXP[3] + "", 4080);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[3])+1) + "", 4081);
break;
case 4:
sendFrame126("" + c.playerLevel[4] + "", 4010);
sendFrame126("" + getLevelForXP(c.playerXP[4]) + "", 4011);
sendFrame126("" + c.playerXP[4] + "", 4062);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[4]) + 1) + "", 4063);
break;
case 5:
sendFrame126("" + c.playerLevel[5] + "", 4012);
sendFrame126("" + getLevelForXP(c.playerXP[5]) + "", 4013);
sendFrame126("" + c.playerXP[5] + "", 4068);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[5]) + 1) + "", 4069);
sendFrame126("" +c.playerLevel[5]+"/"+getLevelForXP(c.playerXP[5])+"", 687);//Prayer frame
break;
case 6:
sendFrame126("" + c.playerLevel[6] + "", 4014);
sendFrame126("" + getLevelForXP(c.playerXP[6]) + "", 4015);
sendFrame126("" + c.playerXP[6] + "", 4074);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[6]) + 1) + "", 4075);
break;
case 7:
sendFrame126("" + c.playerLevel[7] + "", 4034);
sendFrame126("" + getLevelForXP(c.playerXP[7]) + "", 4035);
sendFrame126("" + c.playerXP[7] + "", 4134);
sendFrame126("" +getXPForLevel(getLevelForXP(c.playerXP[7]) + 1) + "", 4135);
break;
case 8:
sendFrame126("" + c.playerLevel[8] + "", 4038);
sendFrame126("" + getLevelForXP(c.playerXP[8]) + "", 4039);
sendFrame126("" + c.playerXP[8] + "", 4146);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[8]) + 1) + "", 4147);
break;
case 9:
sendFrame126("" + c.playerLevel[9] + "", 4026);
sendFrame126("" + getLevelForXP(c.playerXP[9]) + "", 4027);
sendFrame126("" + c.playerXP[9] + "", 4110);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[9]) + 1) + "", 4111);
break;
case 10:
sendFrame126("" + c.playerLevel[10] + "", 4032);
sendFrame126("" + getLevelForXP(c.playerXP[10]) + "", 4033);
sendFrame126("" + c.playerXP[10] + "", 4128);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[10]) + 1) + "", 4129);
break;
case 11:
sendFrame126("" + c.playerLevel[11] + "", 4036);
sendFrame126("" + getLevelForXP(c.playerXP[11]) + "", 4037);
sendFrame126("" + c.playerXP[11] + "", 4140);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[11]) + 1) + "", 4141);
break;
case 12:
sendFrame126("" + c.playerLevel[12] + "", 4024);
sendFrame126("" + getLevelForXP(c.playerXP[12]) + "", 4025);
sendFrame126("" + c.playerXP[12] + "", 4104);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[12]) + 1) + "", 4105);
break;
case 13:
sendFrame126("" + c.playerLevel[13] + "", 4030);
sendFrame126("" + getLevelForXP(c.playerXP[13]) + "", 4031);
sendFrame126("" + c.playerXP[13] + "", 4122);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[13]) + 1) + "", 4123);
break;
case 14:
sendFrame126("" + c.playerLevel[14] + "", 4028);
sendFrame126("" + getLevelForXP(c.playerXP[14]) + "", 4029);
sendFrame126("" + c.playerXP[14] + "", 4116);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[14]) + 1)+ "", 4117);
break;
case 15:
sendFrame126("" + c.playerLevel[15] + "", 4020);
sendFrame126("" + getLevelForXP(c.playerXP[15]) + "", 4021);
sendFrame126("" + c.playerXP[15] + "", 4092);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[15]) + 1) + "", 4093);
break;
case 16:
sendFrame126("" + c.playerLevel[16] + "", 4018);
sendFrame126("" + getLevelForXP(c.playerXP[16]) + "", 4019);
sendFrame126("" + c.playerXP[16] + "", 4086);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[16]) + 1) + "", 4087);
break;
case 17:
sendFrame126("" + c.playerLevel[17] + "", 4022);
sendFrame126("" + getLevelForXP(c.playerXP[17]) + "", 4023);
sendFrame126("" + c.playerXP[17] + "", 4098);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[17]) + 1) + "", 4099);
break;
case 18:
sendFrame126("" + c.playerLevel[18] + "", 12166);
sendFrame126("" + getLevelForXP(c.playerXP[18]) + "", 12167);
sendFrame126("" + c.playerXP[18] + "", 12171);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[18]) + 1) + "", 12172);
break;
case 19:
sendFrame126("" + c.playerLevel[19] + "", 13926);
sendFrame126("" + getLevelForXP(c.playerXP[19]) + "", 13927);
sendFrame126("" + c.playerXP[19] + "", 13921);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[19]) + 1) + "", 13922);
break;
case 20:
sendFrame126("" + c.playerLevel[20] + "", 4152);
sendFrame126("" + getLevelForXP(c.playerXP[20]) + "", 4153);
sendFrame126("" + c.playerXP[20] + "", 4157);
sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[20]) + 1) + "", 4158);
break;
}
}
public int getXPForLevel(int level) {
int points = 0;
int output = 0;
for (int lvl = 1; lvl <= level; lvl++) {
points += Math.floor((double)lvl + 300.0 * Math.pow(2.0, (double)lvl / 7.0));
if (lvl >= level)
return output;
output = (int)Math.floor(points / 4);
}
return 0;
}
public int getLevelForXP(int exp) {
int points = 0;
int output = 0;
if (exp > 13034430)
return 99;
for (int lvl = 1; lvl <= 99; lvl++) {
points += Math.floor((double) lvl + 300.0
* Math.pow(2.0, (double) lvl / 7.0));
output = (int) Math.floor(points / 4);
if (output >= exp) {
return lvl;
}
}
return 0;
}
public boolean addSkillXP(int amount, int skill){
if (c.expLock == true) {
return false;
}
if (amount+c.playerXP[skill] < 0 || c.playerXP[skill] > 200000000) {
if(c.playerXP[skill] > 200000000) {
c.playerXP[skill] = 200000000;
}
return false;
}
amount *= Config.SERVER_EXP_BONUS;
int oldLevel = getLevelForXP(c.playerXP[skill]);
c.playerXP[skill] += amount;
if (oldLevel < getLevelForXP(c.playerXP[skill])) {
if (c.playerLevel[skill] < c.getLevelForXP(c.playerXP[skill]) && skill != 3 && skill != 5)
c.playerLevel[skill] = c.getLevelForXP(c.playerXP[skill]);
levelUp(skill);
c.gfx100(199);
requestUpdates();
}
setSkillLevel(skill, c.playerLevel[skill], c.playerXP[skill]);
refreshSkill(skill);
return true;
}
public void resetBarrows() {
c.barrowsNpcs[0][1] = 0;
c.barrowsNpcs[1][1] = 0;
c.barrowsNpcs[2][1] = 0;
c.barrowsNpcs[3][1] = 0;
c.barrowsNpcs[4][1] = 0;
c.barrowsNpcs[5][1] = 0;
c.barrowsKillCount = 0;
c.randomCoffin = Misc.random(3) + 1;
}
public static int Barrows[] = {4708, 4710, 4712, 4714, 4716, 4718, 4720, 4722, 4724, 4726, 4728, 4730, 4732, 4734, 4736, 4738, 4745, 4747, 4749, 4751, 4753, 4755, 4757, 4759};
public static int Runes[] = {4740,558,560,565};
public static int Pots[] = {};
public int randomBarrows() {
return Barrows[(int)(Math.random()*Barrows.length)];
}
public int randomRunes() {
return Runes[(int) (Math.random()*Runes.length)];
}
public int randomPots() {
return Pots[(int) (Math.random()*Pots.length)];
}
/**
* Show an arrow icon on the selected player.
* @Param i - Either 0 or 1; 1 is arrow, 0 is none.
* @Param j - The player/Npc that the arrow will be displayed above.
* @Param k - Keep this set as 0
* @Param l - Keep this set as 0
*/
public void drawHeadicon(int i, int j, int k, int l) {
synchronized(c) {
c.outStream.createFrame(254);
c.outStream.writeByte(i);
if (i == 1 || i == 10) {
c.outStream.writeWord(j);
c.outStream.writeWord(k);
c.outStream.writeByte(l);
} else {
c.outStream.writeWord(k);
c.outStream.writeWord(l);
c.outStream.writeByte(j);
}
}
}
public int getNpcId(int id) {
for(int i = 0; i < NPCHandler.maxNPCs; i++) {
if(NPCHandler.npcs[i] != null) {
if(Server.npcHandler.npcs[i].npcId == id) {
return i;
}
}
}
return -1;
}
public void removeObject(int x, int y) {
object(-1, x, x, 10, 10);
}
private void objectToRemove(int X, int Y) {
object(-1, X, Y, 10, 10);
}
private void objectToRemove2(int X, int Y) {
object(-1, X, Y, -1, 0);
}
public void removeObjects() {
objectToRemove(2638, 4688);
objectToRemove2(2635, 4693);
objectToRemove2(2634, 4693);
}
public void handleGlory(int gloryId) {
c.getDH().sendOption4("Edgeville", "Al Kharid", "Karamja", "Mage Bank");
c.usingGlory = true;
}
public void resetVariables() {
c.getFishing().resetFishing();
c.getCrafting().resetCrafting();
c.usingGlory = false;
c.smeltInterface = false;
c.smeltType = 0;
c.smeltAmount = 0;
c.woodcut[0] = c.woodcut[1] = c.woodcut[2] = 0;
c.mining[0] = c.mining[1] = c.mining[2] = 0;
}
public boolean inPitsWait() {
return c.getX() <= 2404 && c.getX() >= 2394 && c.getY() <= 5175 && c.getY() >= 5169;
}
public void castleWarsObjects() {
object(-1, 2373, 3119, -3, 10);
object(-1, 2372, 3119, -3, 10);
}
public void removeFromCW() {
if (c.castleWarsTeam == 1) {
if (c.inCwWait) {
Server.castleWars.saradominWait.remove(Server.cast leWars.saradominWait.indexOf(c.playerId));
} else {
Server.castleWars.saradomin.remove(Server.castleWa rs.saradomin.indexOf(c.playerId));
}
} else if (c.castleWarsTeam == 2) {
if (c.inCwWait) {
Server.castleWars.zamorakWait.remove(Server.castle Wars.zamorakWait.indexOf(c.playerId));
} else {
Server.castleWars.zamorak.remove(Server.castleWars .zamorak.indexOf(c.playerId));
}
}
}
public int antiFire() {
int toReturn = 0;
if (c.antiFirePot)
toReturn++;
if (c.playerEquipment[c.playerShield] == 1540 || c.prayerActive[12] || c.playerEquipment[c.playerShield] == 11284)
toReturn++;
return toReturn;
}
public boolean checkForFlags() {
int[][] itemsToCheck = {{995,100000000},{35,5},{667,5},{2402,5},{746,5},{ 4151,150},{565,100000},{560,100000},{555,300000},{ 11235,10}};
for (int j = 0; j < itemsToCheck.length; j++) {
if (itemsToCheck[j][1] < c.getItems().getTotalCount(itemsToCheck[j][0]))
return true;
}
return false;
}
public void addStarter() {
if (!Connection.hasRecieved1stStarter(Server.playerHa ndler.players[c.playerId].connectedFrom)) {
c.getItems().addItem(995,5000000);
c.getItems().addItem(554,10000);
c.getItems().addItem(555,10000);
c.getItems().addItem(556,10000);
c.getItems().addItem(558,15000);
c.getItems().addItem(1381,1);
c.getItems().addItem(1323,1);
c.getItems().addItem(841,1);
c.getItems().addItem(882,10000);
c.getItems().addItem(386,1000);
Connection.addIpToStarterList1(Server.playerHandle r.players[c.playerId].connectedFrom);
Connection.addIpToStarter1(Server.playerHandler.pl ayers[c.playerId].connectedFrom);
c.sendMessage("You have recieved 1 out of 2 starter packages on this IP address.");
} else if (Connection.hasRecieved1stStarter(Server.playerHan dler.players[c.playerId].connectedFrom) && !Connection.hasRecieved2ndStarter(Server.playerHan dler.players[c.playerId].connectedFrom)) {
c.getItems().addItem(995,5000000);
c.getItems().addItem(554,10000);
c.getItems().addItem(555,10000);
c.getItems().addItem(556,10000);
c.getItems().addItem(558,15000);
c.getItems().addItem(1381,1);
c.getItems().addItem(1323,1);
c.getItems().addItem(841,1);
c.getItems().addItem(882,10000);
c.getItems().addItem(386,1000);
c.sendMessage("You have recieved 2 out of 2 starter packages on this IP address.");
Connection.addIpToStarterList2(Server.playerHandle r.players[c.playerId].connectedFrom);
Connection.addIpToStarter2(Server.playerHandler.pl ayers[c.playerId].connectedFrom);
} else if (Connection.hasRecieved1stStarter(Server.playerHan dler.players[c.playerId].connectedFrom) && Connection.hasRecieved2ndStarter(Server.playerHand ler.players[c.playerId].connectedFrom)) {
c.sendMessage("You have already recieved 2 starters!");
}
}
public int getWearingAmount() {
int count = 0;
for (int j = 0; j < c.playerEquipment.length; j++) {
if (c.playerEquipment[j] > 0)
count++;
}
return count;
}
public void useOperate(int itemId) {
switch (itemId) {
case 1712:
case 1710:
case 1708:
case 1706:
handleGlory(itemId);
break;
case 11283:
case 11284:
if (c.playerIndex > 0) {
c.getCombat().handleDfs();
} else if (c.npcIndex > 0) {
c.getCombat().handleDfsNPC();
}
break;
}
}
public void getSpeared(int otherX, int otherY) {
int x = c.absX - otherX;
int y = c.absY - otherY;
if (x > 0)
x = 1;
else if (x < 0)
x = -1;
if (y > 0)
y = 1;
else if (y < 0)
y = -1;
moveCheck(x,y);
c.lastSpear = System.currentTimeMillis();
}
public void moveCheck(int xMove, int yMove) {
movePlayer(c.absX + xMove, c.absY + yMove, c.heightLevel);
}
public int findKiller() {
int killer = c.playerId;
int damage = 0;
for (int j = 0; j < Config.MAX_PLAYERS; j++) {
if (PlayerHandler.players[j] == null)
continue;
if (j == c.playerId)
continue;
if (c.goodDistance(c.absX, c.absY, PlayerHandler.players[j].absX, PlayerHandler.players[j].absY, 40)
|| c.goodDistance(c.absX, c.absY + 9400, PlayerHandler.players[j].absX, PlayerHandler.players[j].absY, 40)
|| c.goodDistance(c.absX, c.absY, PlayerHandler.players[j].absX, PlayerHandler.players[j].absY + 9400, 40))
if (c.damageTaken[j] > damage) {
damage = c.damageTaken[j];
killer = j;
}
}
return killer;
}
public void resetTzhaar() {
c.waveId = -1;
c.tzhaarToKill = -1;
c.tzhaarKilled = -1;
c.getPA().movePlayer(2438,5168,0);
}
public void enterCaves() {
c.getPA().movePlayer(2398,5087, c.playerId * 4);
c.waveId = 0;
c.tzhaarToKill = -1;
c.tzhaarKilled = -1;
Server.fightCaves.spawnNextWave(c);
}
public void appendPoison(int damage) {
if (System.currentTimeMillis() - c.lastPoisonSip > c.poisonImmune) {
c.sendMessage("You have been poisoned.");
c.poisonDamage = damage;
}
}
public boolean checkForPlayer(int x, int y) {
for (Player p : PlayerHandler.players) {
if (p != null) {
if (p.getX() == x && p.getY() == y)
return true;
}
}
return false;
}
public void checkPouch(int i) {
if (i < 0)
return;
c.sendMessage("This pouch has " + c.pouches[i] + " rune ess in it.");
}
public void fillPouch(int i) {
if (i < 0)
return;
int toAdd = c.POUCH_SIZE[i] - c.pouches[i];
if (toAdd > c.getItems().getItemAmount(1436)) {
toAdd = c.getItems().getItemAmount(1436);
}
if (toAdd > c.POUCH_SIZE[i] - c.pouches[i])
toAdd = c.POUCH_SIZE[i] - c.pouches[i];
if (toAdd > 0) {
c.getItems().deleteItem(1436, toAdd);
c.pouches[i] += toAdd;
}
}
public void emptyPouch(int i) {
if (i < 0)
return;
int toAdd = c.pouches[i];
if (toAdd > c.getItems().freeSlots()) {
toAdd = c.getItems().freeSlots();
}
if (toAdd > 0) {
c.getItems().addItem(1436, toAdd);
c.pouches[i] -= toAdd;
}
}
public void fixAllBarrows() {
int totalCost = 0;
int cashAmount = c.getItems().getItemAmount(995);
for (int j = 0; j < c.playerItems.length; j++) {
boolean breakOut = false;
for (int i = 0; i < c.getItems().brokenBarrows.length; i++) {
if (c.playerItems[j]-1 == c.getItems().brokenBarrows[i][1]) {
if (totalCost + 80000 > cashAmount) {
breakOut = true;
c.sendMessage("You have run out of money.");
break;
} else {
totalCost += 80000;
}
c.playerItems[j] = c.getItems().brokenBarrows[i][0]+1;
}
}
if (breakOut)
break;
}
if (totalCost > 0)
c.getItems().deleteItem(995, c.getItems().getItemSlot(995), totalCost);
}
public void handleLoginText() {
c.getPA().sendFrame126("Monster Teleport", 13037);
c.getPA().sendFrame126("Minigame Teleport", 13047);
c.getPA().sendFrame126("Boss Teleport", 13055);
c.getPA().sendFrame126("Pking Teleport", 13063);
c.getPA().sendFrame126("Skill Teleport", 13071);
c.getPA().sendFrame126("Monster Teleport", 1300);
c.getPA().sendFrame126("Minigame Teleport", 1325);
c.getPA().sendFrame126("Boss Teleport", 1350);
c.getPA().sendFrame126("Pking Teleport", 1382);
c.getPA().sendFrame126("Skill Teleport", 1415);
}
public void handleWeaponStyle() {
if (c.fightMode == 0) {
c.getPA().sendFrame36(43, c.fightMode);
} else if (c.fightMode == 1) {
c.getPA().sendFrame36(43, 3);
} else if (c.fightMode == 2) {
c.getPA().sendFrame36(43, 1);
} else if (c.fightMode == 3) {
c.getPA().sendFrame36(43, 2);
}
}