Cleanup part 1 (#213)

* Clean up part 1

- Removed lots of dead code
- Removed unncessary files not in use
- Cleaned up small bits of code
- Removed a few warnings
- Server.java ---> GameEngine.java
- Constants.java ---> GameConstants.java

* Cape Dye

Rewrote cape dying

* Packaging

- redone ----> com.rebotted

* PacketSender/clean up

- ActionSender ---> PacketSender
- Moved many more packets to packetsender
- Cleaned up more dead code

* Merge Client/Player

- Merged Client.java with Player.java (both were doing same thing so redundant to have both)
- Removed some more dead code
- Tidy a few small things up

* Quests/more clean up

- Removed more dead code
- Made quests static in order to clean them up a bit

* More cleanup

- Removed some more of the dead quest code
- Correcting naming of some of the shop variables
This commit is contained in:
Mr Extremez
2019-11-25 11:08:56 -06:00
committed by Daniel Ginovker
parent 3d1ae1b288
commit d876a923b9
379 changed files with 80684 additions and 83170 deletions
@@ -0,0 +1,16 @@
package com.rebotted.game.items;
public class GameItem {
public int id, amount;
public boolean stackable = false;
public GameItem(int id, int amount) {
if (Item.itemStackable[id]) {
stackable = true;
}
this.id = id;
this.amount = amount;
}
}
@@ -0,0 +1,44 @@
package com.rebotted.game.items;
public class GroundItem {
public int itemId, itemX, itemY, itemAmount, itemController, hideTicks, removeTicks;
public String ownerName;
public GroundItem(int id, int x, int y, int h, int amount, int controller,
int hideTicks, String name) {
itemId = id;
itemX = x;
itemY = y;
itemAmount = amount;
itemController = controller;
this.hideTicks = hideTicks;
ownerName = name;
}
public int getItemId() {
return itemId;
}
public int getItemX() {
return itemX;
}
public int getItemY() {
return itemY;
}
public int getItemAmount() {
return itemAmount;
}
public int getItemController() {
return itemController;
}
public String getName() {
return ownerName;
}
}
@@ -0,0 +1,374 @@
package com.rebotted.game.items;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import com.rebotted.GameConstants;
import com.rebotted.GameEngine;
public class Item {
public static int capes[] = { 2731, 2677, 2683, 2680, 2701, 2686, 2689,
2692, 2737, 2734, 2716, 2728, 2695, 2713, 2725, 2722, 2707, 2704,
2710, 2719, 2737, 2698, 14590, 2701, 8102, 8075, 8044, 8045, 8042,
8043, 8037, 8038, 8025, 8026, 8018, 7858, 7994, 7983, 7984, 7985,
7986, 7987, 7982, 7978, 3781, 3783, 3785, 3787, 3789, 3777, 3779,
3759, 3761, 3763, 3765, 6111, 6570, 6568, 1007, 1019, 1021, 1023,
1027, 1029, 1031, 1052, 2412, 2413, 2414, 4304, 4315, 4317, 4319,
4321, 4323, 4325, 4327, 4329, 4331, 4333, 4335, 4337, 4339, 4341,
4343, 4345, 4347, 4349, 4351, 4353, 4355, 4357, 4359, 4361, 4363,
4365, 4367, 4369, 4371, 4373, 4375, 4377, 4379, 4381, 4383, 4385,
4387, 4389, 4391, 4393, 4395, 4397, 4399, 4401, 4403, 4405, 4407,
4409, 4411, 4413, 4514, 4516, 6070, 6568, 6570, 4304, 3759, 3761,
3763, 3765, 3777, 3779, 3781, 3783, 3785, 3787, 3789 };
public static int boots[] = { 7596, 8029, 6619, 8017, 7159, 7991, 6666,
6061, 6106, 88, 89, 626, 628, 630, 632, 634, 1061, 1837, 1846,
2577, 2579, 2894, 2904, 2914, 2924, 2934, 3061, 3105, 3107, 3791,
4097, 4107, 4117, 4119, 4121, 4123, 4125, 4127, 4129, 4131, 4310,
5064, 5345, 5557, 6069, 6106, 6143, 6145, 6147, 6328, 6920, 6349,
6357, 3393 };
public static int gloves[] = { 7595, 6629, 8021, 8016, 7964, 2491, 1065,
2487, 2489, 3060, 1495, 775, 777, 778, 6708, 1059, 1063, 1065,
1580, 2487, 2489, 2491, 2902, 2912, 2922, 2932, 2942, 3060, 3799,
4095, 4105, 4115, 4308, 5556, 6068, 6110, 6149, 6151, 6153, 6922,
7454, 7455, 7456, 7457, 7458, 7459, 7460, 7461, 7462, 6330, 3391,
776 };
public static int shields[] = { 7676, 7342, 7348, 7354, 7360, 7334, 7340,
7347, 7352, 7358, 7356, 7350, 7344, 8087, 8058, 8059, 8060, 8061,
8062, 8063, 6633, 7977, 7976, 7972, 7959, 6591, 7332, 7338, 7336,
7360, 1171, 1173, 1175, 1177, 1179, 1181, 1183, 1185, 1187, 1189,
1191, 1193, 1195, 1197, 1199, 1201, 1540, 2589, 2597, 2603, 2611,
2621, 2629, 2659, 2667, 2675, 2890, 3122, 3488, 3758, 3839, 3840,
3841, 3842, 3843, 3844, 4072, 4156, 4224, 4225, 4226, 4227, 4228,
4229, 4230, 4231, 4232, 4233, 4234, 4302, 4507, 4512, 6215, 6217,
6219, 6221, 6223, 6225, 6227, 6229, 6231, 6233, 6235, 6237, 6239,
6241, 6243, 6245, 6247, 6249, 6251, 6253, 6255, 6257, 6259, 6261,
6263, 6265, 6267, 6269, 6271, 6273, 6275, 6277, 6279, 6524, 6889,
7051, 7053 };
public static int hats[] = { 2679, 1025, 2685, 4166, 2682, 2703, 2688,
2691, 2691, 2733, 2736, 2718, 2730, 2697, 2715, 2727, 2724, 2709,
2706, 2712, 2721, 2739, 2700, 2518, 2524, 2526, 7319, 7321, 7323,
7325, 7327, 1167, 8077, 8076, 8074, 4168, 1169, 8034, 8035, 8036,
8030, 6623, 8024, 8023, 8022, 8013, 1169, 7594, 7995, 7996, 7997,
7998, 7999, 8000, 8001, 7992, 7990, 7975, 7973, 7971, 7967, 7963,
6665, 6665, 7321, 6886, 6547, 6548, 2645, 2647, 2649, 4856, 4857,
4858, 4859, 4880, 4881, 4882, 4883, 4904, 4905, 4906, 4907, 4928,
4929, 4930, 4931, 4952, 4953, 4954, 4955, 4976, 4977, 4978, 4979,
4732, 4753, 4611, 6188, 6182, 4511, 4056, 4071, 4724, 2639, 2641,
2643, 2665, 6109, 5525, 5527, 5529, 5531, 5533, 5535, 5537, 5539,
5541, 5543, 5545, 5547, 5549, 5551, 74, 579, 656, 658, 660, 662,
664, 740, 1017, 1037, 1040, 1042, 1044, 1046, 1038, 1048, 1050,
1053, 1055, 1057, 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151,
1153, 1155, 1157, 1159, 1161, 1163, 1165, 1506, 1949, 2422, 2581,
2587, 2595, 2605, 2613, 2619, 2627, 2631, 2633, 2635, 2637, 2651,
2657, 2673, 2900, 2910, 2920, 2930, 2940, 2978, 2979, 2980, 2981,
2982, 2983, 2984, 2985, 2986, 2987, 2988, 2989, 2990, 2991, 2992,
2993, 2994, 2995, 3057, 3385, 3486, 3748, 3749, 3751, 3753, 3797,
4041, 4042, 4071, 4089, 3755, 4099, 4109, 4164, 4302, 4506, 4511,
4513, 4515, 4551, 4567, 4708, 4716, 4724, 4745, 4753, 4857, 4858,
4859, 4880, 4881, 4882, 4883, 4904, 4905, 4906, 4907, 4952, 4953,
4954, 4955, 4976, 4977, 4978, 4979, 5013, 5014, 5554, 5574, 6109,
6128, 6131, 6137, 6182, 6188, 6335, 6337, 6339, 6345, 6355, 6365,
6375, 6382, 6392, 6400, 6918, 6656, 2581, 7539, 7394, 7396, 7534,
5574, 6885, 6858, 6860, 6862, 6856, 6326, 6128, 6137, 7400, 7323,
7325, 7327, 7003, 4168, 7112, 7124, 7130, 7136 };
public static int amulets[] = { 1654, 1656, 1658, 1660, 1662, 1664, 8081,
8033, 7968, 6585, 86, 87, 295, 421, 552, 589, 1478, 1692, 1694,
1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1725, 1727,
1729, 1731, 4021, 4081, 4250, 4677, 6040, 6041, 6208, 1718, 1722,
6859, 6863, 6857, 3853, 3855, 3857, 3859, 3861, 3863, 3865, 3867,
1718, 4306, 1702 };
public static int arrows[] = { 11212, 8052, 9211, 9010, 9209, 9208, 9207,
9206, 9205, 9203, 9301, 8065, 7919, 7906, 7988, 7989, 78, 598, 877,
878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890,
891, 892, 893, 942, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539,
2540, 2541, 2866, 4160, 4172, 4173, 4174, 4175, 4740, 5616, 5617,
5618, 5619, 5620, 5621, 5622, 5623, 5624, 5625, 5626, 5627, 6061,
6062};
public static int rings[] = { 8082, 773, 1635, 1637, 1639, 1641, 1643,
1645, 2550, 2552, 2554, 2556, 2558, 2560, 2562, 2564, 2566, 2568,
2570, 2572, 4202, 4657, 6465, 6737, 6731, 6735, 6583, 6733 };
public static int body[] = { 7608, 2520, 430, 7362, 7364, 636, 638, 640,
642, 644, 8064, 426, 430, 1005, 1757, 7592, 8031, 8027, 6617, 8019,
8014, 8002, 7376, 544, 7372, 7370, 577, 7974, 7970, 7965, 7961,
7960, 3793, 3775, 3773, 3771, 3769, 3767, 6139, 1135, 2499, 2501,
1035, 540, 5553, 4757, 1833, 6388, 6384, 4111, 4101, 4091, 6186,
6184, 6180, 3058, 4509, 4504, 4069, 4728, 4736, 4712, 6107, 2661,
3140, 1101, 1103, 1105, 1107, 1109, 1111, 1113, 1115, 1117, 1119,
1121, 1123, 1125, 1127, 1129, 1131, 1133, 2583, 2591, 2599, 2607,
2615, 2623, 2653, 2669, 3481, 4712, 4720, 4728, 4749, 4892, 4893,
4894, 4895, 4916, 4917, 4918, 4919, 4964, 4965, 4966, 4967, 6107,
6133, 6322, 6322, 6129, 75, 6916, 6916, 4111, 6654, 6654, 75, 7399, 7374, 5575, 2503, 6341, 6351, 3387, 5030, 5032, 5034, 5030,
5032, 5034,7390 , 7392, 546, 581 };
public static int legs[] = { 7609, 2522, 7378, 7380, 7382, 7368, 7366,
7388, 646, 648, 650, 652, 654, 428, 1097, 1095, 7593, 8032, 8028,
6625, 8020, 8015, 7384, 7969, 7966, 7962, 6141, 538, 1033, 5555,
4759, 6386, 6390, 2497, 2495, 2493, 1099, 4113, 4103, 4093, 6924,
6187, 6185, 6181, 3059, 4510, 4505, 4070, 6108, 542, 548, 1011,
1013, 1015, 1067, 1069, 1071, 1073, 1075, 1077, 1079, 1081, 1083,
1085, 1087, 1089, 1091, 1093, 2585, 2593, 2601, 2609, 2617, 2625,
2655, 2663, 2671, 3059, 3389, 3472, 3473, 3474, 3475, 3476, 3477,
3478, 3479, 3480, 3483, 3485, 3795, 4087, 4585, 4712, 4714, 4722,
4730, 4738, 4751, 4759, 4874, 4875, 4876, 4877, 4898, 4899, 4900,
4901, 4922, 4923, 4924, 4925, 4946, 4947, 4948, 4949, 4970, 4971,
4972, 4973, 4994, 4995, 4996, 4997, 5048, 5050, 5052, 5576, 6107,
6130, 6187, 6390, 6386, 6390, 6394, 6396, 6402, 6404, 6135, 6809, 6916, 4091,
4111, 6655, 6654, 7398, 7398, 7386, 6324, 6343, 6353, 6363, 6373, 3387, 5036,
5038, 5040, 5042, 5044, 5046, 5050, 5052, 4300, 1835, 7116, 7126, 6752,
7132, 7138 };
public static int platebody[] = { 10338, 7608, 2520, 430, 636, 638, 640,
642, 644, 426, 430, 8031, 8027, 6617, 8019, 8014, 8002, 544, 577,
7974, 7970, 7965, 7961, 7960, 3793, 3773, 3775, 3771, 3769, 3767,
6139, 1035, 540, 5553, 4757, 1833, 1835, 6388, 6384, 4111, 4101,
4868, 4869, 4870, 4871, 4892, 4893, 4894, 4895, 4916, 4917, 4918,
4919, 4940, 4941, 4942, 4943, 4964, 4965, 4966, 4967, 4988, 4989,
4990, 0x2f9a0eb, 6186, 6184, 6180, 3058, 4509, 4504, 4069, 4728,
4736, 4712, 6107, 2661, 3140, 1115, 1117, 1119, 1121, 1123, 1125,
1127, 2583, 2591, 2599, 2607, 2615, 6322, 2623, 2653, 2669, 3481,
4720, 4728, 4749, 2661, 6129, 6916, 4091, 6654, 6133, 75, 7399, 5575, 6341, 6351, 7390, 7392, 3387, 5024, 5030, 5032, 5034, 7392, 6786, 6788 };
/* Fullbody is an item that covers your arms. */
private static String[] fullbody = {
"top", "shirt", "platebody", "Wizard robe (g)", "Wizard robe (t)",
"Ahrims robetop", "Karils leathertop", "brassard", "Robe top",
"robetop", "platebody (t)", "platebody (g)", "chestplate", "torso",
"hauberk", "Dragon chainbody", "gown", "Shade robe", "Wizard robe",
"Druid's robe", "Black robe", "Fremennik robe", "Robe of elidinis",
"tunic", "blouse", "Wizard robe(g)", "Wizard robe(t)"
};
/* Fullhat covers your head but not your beard. */
private static String[] fullhat = { "med helm", "coif", "Dharok's helm",
"hood", "Initiate helm", "Coif", "Helm of neitiznot",
"Armadyl helmet", "Berserker helm", "Archer helm", "Farseer helm",
"Warrior helm", "Void" };
/* Fullmask covers your entire head. */
private static String[] fullmask = { "full helm(t)", "full helm(g)", "full helm", "mask", "Verac's helm",
"Guthan's helm", "Karil's coif", "mask", "Torag's helm", "Void", "helmet",
"sallet", "Facemask" };
public static boolean isFullBody(int itemId) {
String weapon = getItemName(itemId);
if (weapon == null) {
return false;
}
for (String element : fullbody) {
if (weapon.endsWith(element)) {
return true;
}
}
return false;
}
public static boolean isFullHelm(int itemId) {
String weapon = getItemName(itemId);
if (weapon == null) {
return false;
}
for (String element : fullhat) {
if (weapon.endsWith(element)) {
return true;
}
}
return false;
}
public static boolean isFullMask(int itemId) {
String weapon = getItemName(itemId);
if (weapon == null) {
return false;
}
for (String element : fullmask) {
if (weapon.endsWith(element)) {
return true;
}
}
return false;
}
public static String getItemName(int id) {
for (ItemList element : GameEngine.itemHandler.ItemList) {
if (element != null) {
if (element.itemId == id) {
return element.itemName;
}
}
}
return null;
}
public static boolean[] itemStackable = new boolean[GameConstants.ITEM_LIMIT];
public static boolean[] itemIsNote = new boolean[GameConstants.ITEM_LIMIT];
public static int[] targetSlots = new int[GameConstants.ITEM_LIMIT];
static {
int counter = 0;
int c;
try {
FileInputStream dataIn = new FileInputStream(new File("./data/data/stackable.dat"));
while ((c = dataIn.read()) != -1) {
if (c == 0) {
itemStackable[counter] = false;
itemStackable[291] = true;
} else {
itemStackable[counter] = true;
}
counter++;
}
dataIn.close();
} catch (IOException e) {
System.out.println("Critical error while loading stackabledata! Trace:");
e.printStackTrace();
}
counter = 0;
try {
FileInputStream dataIn = new FileInputStream(new File("./data/data/notes.dat"));
while ((c = dataIn.read()) != -1) {
itemIsNote[counter] = c == 0;
counter++;
}
dataIn.close();
} catch (IOException e) {
System.out.println("Critical error while loading notedata! Trace:");
e.printStackTrace();
}
counter = 0;
try {
FileInputStream dataIn = new FileInputStream(new File("./data/data/equipment.dat"));
while ((c = dataIn.read()) != -1) {
int slot;
// rebind item equip slot here
switch (counter) {
// Legs
case 6181:
case 428:
case 538:
case 6343:
case 6353:
case 6363:
case 6396:
case 6373:
case 6404:
case 5044:
case 5046:
case 5050:
case 5052:
case 5040:
case 5038:
case 6752:
case 5048:
case 5036:
case 5042:
case 4300:
case 1835:
case 7116:
case 7126:
case 7132:
case 7138:
case 548:
case 6185:
slot = GameConstants.LEGS;
break;
// Hats
case 4166:
case 1167:
case 5525:
case 4168:
case 1025:
case 7112:
case 7124:
case 7130:
case 7136:
case 4611:
case 5527:
case 5529:
case 5531:
case 5533:
case 5535:
case 5537:
case 5539:
case 5541:
case 5543:
case 5545:
case 5547:
slot = GameConstants.HAT;
break;
// Cape
case 4304:
case 3759:
case 3761:
case 3763:
case 3765:
case 3777:
case 3779:
case 3781:
case 3783:
case 3785:
case 3787:
case 3789:
case 4514:
case 4516:
slot = GameConstants.CAPE;
break;
// Shield
case 7051:
case 7053:
slot = GameConstants.SHIELD;
break;
// Chest
case 577:
case 426:
case 540:
case 430:
case 6786:
case 581:
case 5024:
case 5030:
case 1757:
case 5034:
case 5032:
case 3793:
case 1005:
case 546:
case 6402:
case 6788:
case 6184:
case 7390:
case 7392:
case 6186:
slot = GameConstants.CHEST;
break;
// Amulet
case 3853:
case 3855:
case 3857:
case 3859:
case 3861:
case 3863:
case 1718:
case 3865:
case 4306:
case 3867:
case 1702:
slot = GameConstants.AMULET;
break;
// Hands
case 776:
slot = GameConstants.HANDS;
break;
default:
slot = c;
}
targetSlots[counter] = slot;
counter++;
}
dataIn.close();
} catch (IOException e) {
System.out.println("Critical error while loading equipment data! Trace:");
e.printStackTrace();
}
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,344 @@
package com.rebotted.game.items;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class ItemDefinitions {
public static ItemDefinitions getDef()[] {
return definitions;
}
public ItemDefinitions() {
name = null;
itemDescription = null;
shopValue = 0;
lowAlch = 0;
highAlch = 0;
isStackable = false;
isNoteable = false;
weight = 0;
bonuses = null;
stand = -1;
walk = -1;
run = -1;
turn90left = -1;
turn90right = -1;
turn180 = -1;
attack = -1;
block = -1;
id = -1;
}
private static int id;
public static int getId() {
return id;
}
/**
* Reads the definitions from the file.
*/
public static void read() {
try {
DataInputStream in = new DataInputStream(new FileInputStream("./data/data/itemdef.gsu"));
total = in.readShort();
if(definitions == null)
definitions = new ItemDefinitions[total];
for(int j = 0; j < total; j++) {
if(definitions[j] == null) {
definitions[j] = new ItemDefinitions();
}
definitions[j].getValues(in);
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Reads the stream values.
* @param in
*/
private void getValues(DataInputStream in) {
try {
do {
int opcode = in.readByte();
if(opcode == 0)
return;
if(opcode == 1) {
name = in.readUTF();
} else if(opcode == 2) {
itemDescription = in.readUTF();
} else if(opcode == 3) {
shopValue = in.readInt();
} else if(opcode == 4) {
lowAlch = in.readInt();
} else if(opcode == 5) {
highAlch = in.readInt();
} else if(opcode == 6) {
isStackable = true;
} else if(opcode == 7) {
isNoteable = true;
} else if(opcode == 8) {
weight = in.readDouble();
} else if(opcode == 9) {
int length = in.readShort();
bonuses = new double[length];
for (int index = 0; index < length; index++) {
bonuses[index] = in.readDouble();
}
} else if(opcode == 10) {
stand = in.readShort();
} else if(opcode == 11) {
walk = in.readShort();
} else if(opcode == 12) {
run = in.readShort();
} else if(opcode == 13) {
turn90left = in.readShort();
} else if(opcode == 14) {
turn90right = in.readShort();
} else if(opcode == 15) {
turn180 = in.readShort();
} else if(opcode == 16) {
attack = in.readShort();
} else if(opcode == 17) {
block = in.readShort();
} else {
System.out.println("Unrecognized opcode: " + opcode);
}
} while(true);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* The item definition cache.
*/
public static ItemDefinitions definitions[];
/**
* The total items read from the definitions.
*/
public static int total;
/**
* Returns the total item number.
*/
public static int getTotal() {
return total;
}
/**
* The item name.
*/
public String name;
/**
* Returns the name of the item.
* @return
*/
public static String getName(int id) {
return definitions[id].name;
}
/**
* The item description.
*/
public String itemDescription;
/**
* Returns the description of an item.
*/
public static String getDescription(int id) {
return definitions[id].itemDescription;
}
/**
* The item price.
*/
public int shopValue;
/**
* Returns the price of an item.
*/
public static int getPrice(int id) {
return definitions[id].shopValue;
}
/**
* The low alch value.
*/
public int lowAlch;
/**
* Returns the low alch value of an item.
*/
public static int getLow(int id) {
return definitions[id].lowAlch;
}
/**
* The high alch value.
*/
public int highAlch;
/**
* Returns the high alch value of an item.
*/
public static int getHigh(int id) {
return definitions[id].highAlch;
}
/**
* Can the item be stacked?
*/
public boolean isStackable;
/**
* Returns whether or not the item can be stacked.
*/
public static boolean canStack(int id) {
return definitions[id].isStackable;
}
/**
* Can the item be noted?
*/
public boolean isNoteable;
/**
* Returns whether or not the item can be noted.
*/
public static boolean canNote(int id) {
return definitions[id].isNoteable;
}
/**
* The weight of an item.
*/
public double weight;
/**
* Returns the weight of an item.
*/
public static double getWeight(int id) {
if (id >= 0 && id < definitions.length)
return definitions[id].weight;
System.out.println("WARNING: id " + id + " doesn't have a definition!");
return 0.0;
}
/**
* The bonuses of an item.
*/
public double[] bonuses;
/**
* Returns the array of bonuses for an item.
*/
public double[] getBonuses(int id) {
return definitions[id].bonuses;
}
/**
* The stand animation of an item.
*/
public int stand;
/**
* Returns the stand animation of an item.
*/
public static int getStand(int id) {
return definitions[id].stand;
}
/**
* The walk animation of an item.
*/
public int walk;
/**
* Returns the walk animation of an item.
*/
public static int getWalk(int id) {
return definitions[id].walk;
}
/**
* The run animation of an item.
*/
public int run;
/**
* Returns the run animation of an item.
*/
public static int getRun(int id) {
return definitions[id].run;
}
/**
* The 90-degree left turn animation of an item.
*/
public int turn90left;
/**
* Returns the 90-degree left turn animation of an item.
*/
public static int get90left(int id) {
return definitions[id].turn90left;
}
/**
* The 90-degree right turn animation of an item.
*/
public int turn90right;
/**
* Returns the 90-degree right turn animation of an item.
*/
public static int get90right(int id) {
return definitions[id].turn90right;
}
/**
* The 180-degree turn animation of an item.
*/
public int turn180;
/**
* Returns the 180-degree turn animation of an item.
*/
public static int get180(int id) {
return definitions[id].turn180;
}
/**
* The attack animation of an item.
*/
public int attack;
/**
* Returns the attack animation of an item
*/
public static int getAttack(int id) {
return definitions[id].attack;
}
/**
* The block animation of an item.
*/
public int block;
/**
* Returns the block animation of an item
*/
public static int getBlock(int id) {
return definitions[id].block;
}
}
@@ -0,0 +1,16 @@
package com.rebotted.game.items;
public class ItemList {
public int itemId;
public String itemName;
public String itemDescription;
public double ShopValue;
public double LowAlch;
public double HighAlch;
public int[] Bonuses = new int[100];
public ItemList(int _itemId) {
itemId = _itemId;
}
}
@@ -0,0 +1,377 @@
package com.rebotted.game.items;
import com.rebotted.game.content.skills.cooking.Cooking;
import com.rebotted.game.content.skills.crafting.GemCutting;
import com.rebotted.game.content.skills.crafting.JewelryMaking;
import com.rebotted.game.content.skills.crafting.LeatherMaking;
import com.rebotted.game.content.skills.crafting.SoftClay;
import com.rebotted.game.content.skills.firemaking.Firemaking;
import com.rebotted.game.content.skills.fletching.ArrowMaking;
import com.rebotted.game.content.skills.fletching.LogCutting;
import com.rebotted.game.content.skills.fletching.LogCuttingInterface;
import com.rebotted.game.content.skills.fletching.Stringing;
import com.rebotted.game.content.skills.herblore.GrindingAction;
import com.rebotted.game.content.skills.herblore.Herblore;
import com.rebotted.game.items.impl.CapeDye;
import com.rebotted.game.items.impl.WeaponPoison;
import com.rebotted.game.npcs.impl.MilkCow;
import com.rebotted.game.objects.impl.CrystalChest;
import com.rebotted.game.objects.impl.FlourMill;
import com.rebotted.game.objects.impl.Webs;
import com.rebotted.game.players.Player;
import com.rebotted.util.Misc;
/**
* @author Ryan / Lmctruck30
*/
public class UseItem {
public static void itemOnObject(Player c, int objectID, int objectX, int objectY, int itemId) {
final int goodPosXType1 = objectX - 5;
final int goodPosXType2 = objectX + 5;
final int goodPosYType1 = objectY - 5;
final int goodPosYType2 = objectY + 5;
if (c.absX >= goodPosXType1 && c.absX <= goodPosXType2 && c.absY >= goodPosYType1 && c.absY <= goodPosYType2) {
c.turnPlayerTo(objectX, objectY);
} else {
c.getPlayerAssistant().playerWalk(objectX, objectY);
}
if (!c.getItemAssistant().playerHasItem(itemId, 1)) {
return;
}
switch (objectID) {
case 733:
if (itemId == 946) {
Webs.slashWeb(c, objectID, objectX, objectY);
}
break;
case 8689:
if (c.milking == false) {
MilkCow.milk(c);
}
break;
case 2783:
c.getSmithingInt().showSmithInterface(itemId);
break;
case 2782:
if (c.doricQuest >= 3) {
c.getSmithingInt().showSmithInterface(itemId);
} else {
c.getPacketSender().sendMessage(
"You need to beat dorics quest to use his anvils");
}
break;
case 879:
case 12279:
case 14868:
if (itemId == SoftClay.CLAY) {
SoftClay.makeClay(c);
}
break;
case 2714:
FlourMill.grainOnHopper(c, objectID, itemId);
break;
case 172:
if (itemId == CrystalChest.KEY) {
CrystalChest.searchChest(c, objectID, objectX, objectY);
}
break;
case 364:
if (itemId == 1919) {
c.getItemAssistant().deleteItem(1919, 1);
c.getItemAssistant().addItem(1917, 1);
c.getPacketSender().sendMessage(
"You refill your beer glass.");
}
break;
default:
if (c.playerRights == 3) {
Misc.println("Player At Object id: " + objectID + " objectX: "
+ objectX + " objectY: " + objectY + " with Item id: "
+ itemId);
}
break;
}
}
public static void ItemonItem(Player player, int itemUsed, int useWith) {
LogCuttingInterface.handleItemOnItem(player, itemUsed, useWith);
ArrowMaking.makeArrow(player, itemUsed, useWith);
Stringing.StringBow(player, itemUsed, useWith);
WeaponPoison.execute(player, itemUsed, useWith);
player.getGlassBlowing().ItemOnItem(itemUsed, useWith);
//CapeDye.execute(c, itemUsed, useWith);
if (ItemAssistant.getItemName(itemUsed).contains("(")
&& ItemAssistant.getItemName(useWith).contains("(")) {
player.getPotMixing().mixPotion2(itemUsed, useWith);
}
GrindingAction.init(player, itemUsed, useWith);
CapeDye.dyeItem(player, itemUsed, useWith);
if (Herblore.isIngredient(itemUsed) || Herblore.isIngredient(useWith)) {
Herblore.setupPotion(player, itemUsed, useWith);
}
if (itemUsed == 6703 || useWith == 6703) {
player.getPTS().handlePotato(itemUsed, useWith);
}
if (itemUsed == 1755 || useWith == 1755) {
GemCutting.cutGem(player, itemUsed, useWith);
}
if (itemUsed == 1759 || useWith == 1759) {
JewelryMaking.stringAmulet(player, itemUsed, useWith);
}
if (itemUsed == 946 || useWith == 2862) {
LogCutting.makeShafts(player);
}
if (itemUsed == 2862 || useWith == 946) {
LogCutting.makeShafts(player);
}
if (itemUsed == 314 || useWith == 2864) {
LogCutting.flightedArrow(player);
}
if (itemUsed == 2864 || useWith == 314) {
LogCutting.flightedArrow(player);
}
if (itemUsed == 2861 || useWith == 2865) {
LogCutting.ogreArrow(player);
}
if (itemUsed == 2865 || useWith == 2861) {
LogCutting.ogreArrow(player);
}
if (itemUsed == 2859 || useWith == 1755) {
LogCutting.wolfBoneArrow(player);
}
if (itemUsed == 1755 || useWith == 2859) {
LogCutting.wolfBoneArrow(player);
}
if (itemUsed == 771 && useWith == 946
&& player.playerLevel[player.playerCrafting] > 30) {
player.getItemAssistant().deleteItem(771, 1);
player.getItemAssistant().addItem(772, 1);
} else if (player.playerLevel[player.playerCrafting] < 31 && itemUsed == 771
&& useWith == 946) {
player.getPacketSender().sendMessage(
"You need 31 crafting to make this.");
}
if (itemUsed == 946 && useWith == 771
&& player.playerLevel[player.playerCrafting] > 30) {
player.getItemAssistant().deleteItem(771, 1);
player.getItemAssistant().addItem(772, 1);
} else if (player.playerLevel[player.playerCrafting] < 31 && itemUsed == 946
&& useWith == 771) {
player.getPacketSender().sendMessage(
"You need 31 crafting to make this.");
}
if (useWith == 7051 && itemUsed == 590 || itemUsed == 590
&& useWith == 7051) {
player.getItemAssistant().deleteItem(7051, 1);
player.getItemAssistant().addItem(7053, 1);
}
int firemakingItems[] = {590, 7329, 7330, 7331};
for (int i = 0; i < firemakingItems.length; i++) {
if (itemUsed == firemakingItems[i] || useWith == firemakingItems[i] && player.isFiremaking == false) {
Firemaking.attemptFire(player, itemUsed, useWith, player.absX, player.absY, false);
} else if (itemUsed == firemakingItems[i] || useWith == firemakingItems[i] && player.isFiremaking == true) {
player.getPacketSender().sendMessage("You can't do that, you are already firemaking.");
}
}
if (itemUsed == 1733 || useWith == 1733) {
LeatherMaking.craftLeatherDialogue(player, itemUsed, useWith);
}
if (itemUsed == 1573 && useWith == 327 || itemUsed == 327 && useWith == 1573) {
player.getItemAssistant().deleteItem(1573, 1);
player.getItemAssistant().deleteItem(327, 1);
player.getItemAssistant().addItem(1552, 1);
}
if (itemUsed == 38 && useWith == 590 || useWith == 38
&& itemUsed == 590) {//
player.getItemAssistant().addItem(32, 1);
player.getItemAssistant().deleteItem(38, 1);
}
if (itemUsed == 36 && useWith == 590 || useWith == 36
&& itemUsed == 590) {
player.getItemAssistant().addItem(33, 1);
player.getItemAssistant().deleteItem(36, 1);
}
if (itemUsed == 596 && useWith == 590 || useWith == 596
&& itemUsed == 590) {
player.getItemAssistant().addItem(594, 1);
player.getItemAssistant().deleteItem(596, 1);
}
if (itemUsed == 4537 && useWith == 590 || useWith == 4537
&& itemUsed == 590) {
player.getItemAssistant().addItem(4539, 1);
player.getItemAssistant().deleteItem(4537, 1);
}
if (itemUsed == 4548 && useWith == 590 || useWith == 4548
&& itemUsed == 590) {
player.getItemAssistant().addItem(4550, 1);
player.getItemAssistant().deleteItem(4548, 1);
}
if (itemUsed == 1095 && useWith == 2370 || itemUsed == 2370
&& useWith == 1095 && player.playerLevel[player.playerCrafting] > 43) {// chaps
player.getItemAssistant().deleteItem(2370, 1);
player.getItemAssistant().deleteItem(1095, 1);
player.getItemAssistant().addItem(1097, 1);
player.getPlayerAssistant().addSkillXP(42, player.playerCrafting);
} else if (itemUsed == 1095 && useWith == 2370 || itemUsed == 2370 && useWith == 1095 && player.playerLevel[player.playerCrafting] < 44) {
player.getPacketSender().sendMessage("You need 44 crafting to make this.");
}
if (itemUsed == 946 && useWith == 1963 || itemUsed == 1963 && useWith == 946) {
player.getItemAssistant().deleteItem(1963, 1);
player.getItemAssistant().addItem(3162, 1);
player.getPacketSender().sendMessage("You slice your banana.");
}
if (itemUsed == 946 && useWith == 1973 || itemUsed == 1973 && useWith == 946) {
player.getItemAssistant().deleteItem(1973, 1);
player.getItemAssistant().addItem(1975, 1);
player.getPacketSender().sendMessage("You slice your chocolate bar.");
}
if (itemUsed == 1129 && useWith == 2370 || itemUsed == 2370 && useWith == 1129 && player.playerLevel[player.playerCrafting] > 40) {// body
player.getItemAssistant().deleteItem(2370, 1);
player.getItemAssistant().deleteItem(1129, 1);
player.getItemAssistant().addItem(1133, 1);
player.getPlayerAssistant().addSkillXP(40, player.playerCrafting);
} else if (itemUsed == 1129 && useWith == 2370 || itemUsed == 2370 && useWith == 1129 && player.playerLevel[player.playerCrafting] < 41) {
player.getPacketSender().sendMessage("You need 41 crafting to make this.");
}
if (itemUsed == 4593 && useWith == 4591 || useWith == 4591 && itemUsed == 4593) {
player.getItemAssistant().deleteItem(4591, 1);
player.getItemAssistant().deleteItem(4593, 1);
player.getItemAssistant().addItem(4611, 1);
}
if (itemUsed == 985 && useWith == 987 || itemUsed == 987 && useWith == 985) {
player.getItemAssistant().deleteItem(985, 1);
player.getItemAssistant().deleteItem(987, 1);
player.getItemAssistant().addItem(989, 1);
}
if (itemUsed == 2313 && useWith == 1953 || itemUsed == 1953 && useWith == 2313) {
player.getItemAssistant().deleteItem(2313, 1);
player.getItemAssistant().deleteItem(1953, 1);
player.getItemAssistant().addItem(2315, 1);
}
/**
* Pizza Creation
*/
if (itemUsed == 1982 && useWith == 2283 || itemUsed == 2283
&& useWith == 1982) {
Cooking.pastryCreation(player, 1982, 2283, 2285, "");
}
if (itemUsed == 2285 && useWith == 1985 || itemUsed == 1985
&& useWith == 2285) {
Cooking.pastryCreation(player, 2285, 1985, 2287, "");
}
if (itemUsed == 2140 && useWith == 2289 || itemUsed == 2289
&& useWith == 2140) {
Cooking.cookingAddon(player, 2140, 2289, 2293, 45, 26);
}
if (itemUsed == 319 && useWith == 2289 || itemUsed == 2289
&& useWith == 319) {
Cooking.cookingAddon(player, 319, 2289, 2297, 55, 39);
}
if (itemUsed == 2116 && useWith == 2289 || itemUsed == 2289
&& useWith == 2116) {
Cooking.cookingAddon(player, 2116, 2289, 2301, 65, 45);
}
/**
* Pie Making
*/
if (itemUsed == 2313 && useWith == 1953 || itemUsed == 1953
&& useWith == 2313) {
Cooking.pastryCreation(player, 2313, 1953, 2315,
"You put the pastry dough into the pie dish to make a pie shell.");
}
if (itemUsed == 2315 && useWith == 1955 || itemUsed == 1955
&& useWith == 2315) {
Cooking.pastryCreation(player, 2315, 1955, 2317,
"You fill the pie with cooking apple.");
}
if (itemUsed == 2315 && useWith == 5504 || itemUsed == 5504
&& useWith == 2315) {
Cooking.pastryCreation(player, 2315, 5504, 7212, "");
}
if (itemUsed == 7212 && useWith == 5982 || itemUsed == 5982
&& useWith == 7212) {
Cooking.pastryCreation(player, 7212, 5982, 7214, "");
}
if (itemUsed == 1955 && useWith == 7214 || itemUsed == 7214
&& useWith == 1955) {
Cooking.pastryCreation(player, 1955, 7214, 7216, "");
}
if (itemUsed == 2315 && useWith == 1951 || itemUsed == 1951 && useWith == 2315) {
Cooking.pastryCreation(player, 1951, 2315, 2321, "");
}
/**
* Pitta/ Ugthanki Kebab
*/
if (itemUsed == 1865 && useWith == 1881 || itemUsed == 1881
&& useWith == 1865) {
Cooking.cookingAddon(player, 1865, 1881, 1883, 0, 40);
}
if (player.tutorialProgress < 36) {
if (itemUsed == 1929 && useWith == 1933 || itemUsed == 1933 && useWith == 1929) {
player.getItemAssistant().deleteItem(1929, 1);
player.getItemAssistant().deleteItem(1933, 1);
player.getItemAssistant().addItem(2307, 1);
player.getItemAssistant().addItem(1925, 1);
player.getItemAssistant().addItem(1931, 1);
if (player.tutorialProgress == 8) {
player.getDialogueHandler().sendDialogues(3026, -1);
}
}
}
if (player.tutorialProgress > 35) {
if (itemUsed == 1929 && useWith == 1933 || itemUsed == 1933 && useWith == 1929) {
player.getDialogueHandler().sendDialogues(3204, -1);
}
}
if (player.tutorialProgress > 35) {
if (itemUsed == 1933 && useWith == 1937 || itemUsed == 1937 && useWith == 1933) {
player.getDialogueHandler().sendDialogues(3205, -1);
}
}
if (itemUsed == 1987 && useWith == 1937 || itemUsed == 1937
&& useWith == 1987) {
if (player.playerLevel[player.playerCooking] >= 35) {
player.getItemAssistant().addItem(1993, 1);
player.getItemAssistant().deleteItem(1937, 1);
player.getItemAssistant().deleteItem(1987, 1);
player.getPlayerAssistant().addSkillXP(200, player.playerCooking);
} else {
player.getPacketSender().sendMessage(
"You need grapes and a jug of water to make wine.");
}
}
switch (itemUsed) {
default:
if (player.playerRights == 3) {
Misc.println("Player used Item id: " + itemUsed
+ " with Item id: " + useWith);
}
break;
}
}
public static void itemOnNpc(final Player c, final int itemId, final int npcId, final int slot) {
switch (itemId) {
default:
if (c.playerRights == 3) {
Misc.println("Player used Item id: " + itemId
+ " with Npc id: " + npcId + " With Slot : " + slot);
}
break;
}
}
}
@@ -0,0 +1,80 @@
package com.rebotted.game.items;
import com.rebotted.GameEngine;
import com.rebotted.game.players.Player;
/**
* @author somedude, credits to Galkon for item weights
*/
public class Weight extends ItemDefinitions {
/**
* Calculates the weight when doing actions
*
* @param c
* @param item
* @param action
* - deleteitem, additem, equip, unequip.
*/
public static void calcWeight(Player c, int item, String action) {
if (action.equalsIgnoreCase("deleteitem")) {
if (getWeight(item) > 99.20) {
c.weight -= getWeight(item) / 100;
if (c.weight < 0) {
c.weight = 0.0;
}
c.getPacketSender().writeWeight((int) c.weight);
return;
}
c.weight -= getWeight(item) / 10;
if (c.weight < 0) {
c.weight = 0.0;
}
c.getPacketSender().writeWeight((int) c.weight);
} else if (action.equalsIgnoreCase("additem")) {
if (getWeight(item) > 99.20) {
c.weight += getWeight(item) / 100;
c.getPacketSender().writeWeight((int) c.weight);
return;
}
c.weight += getWeight(item) / 10;
c.getPacketSender().writeWeight((int) c.weight);
}
}
/**
* Updates the weight for inventory and equipment.
*
* @param player
*/
public static void updateWeight(Player player) {
if (player != null) {
player.getPacketSender().writeWeight((int) player.weight);
// Inventory items
for (int playerItem : player.playerItems) {
if (playerItem > -1) {// inventory
for (ItemList i1 : GameEngine.itemHandler.ItemList) {
if (i1 != null) {
if (i1.itemId == playerItem) {
calcWeight(player, playerItem, "addItem");
}
}
}
}
}
// Equiped items
for (int element : player.playerEquipment) {
if (element > -1) {// equipment
for (ItemList i1 : GameEngine.itemHandler.ItemList) {
if (i1 != null) {
if (i1.itemId == element) {
calcWeight(player, element, "addItem");
}
}
}
}
}
}
player.getPacketSender().writeWeight((int) player.weight);
}
}
@@ -0,0 +1,76 @@
package com.rebotted.game.items.impl;
import com.rebotted.game.items.Item;
import com.rebotted.game.items.ItemAssistant;
import com.rebotted.game.players.Player;
/**
* Dye.java
* @author Andrew (Mr Extremez)
*/
public enum CapeDye {
RED_CAPE(1763, 1007),
BLUE_CAPE(1767, 1021),
GREEN_CAPE(1771, 1027),
PINK_CAPE(6955, 6959),
ORANGE_CAPE(1769, 1031),
YELLOW_CAPE(1765, 1023),
PURPLE_CAPE(1773, 1029);
int reward, itemUsed;
private CapeDye(int itemUsed, int reward) {
this.itemUsed = itemUsed;
this.reward = reward;
}
private int getItemUsed() {
return itemUsed;
}
private int getReward() {
return reward;
}
//blue+yellow =green
//red+blue = purple
public static final int[][] MAIL_DATA = {
{1769, 288, 286},
{1769, 287, 286},
{1767, 288, 287},
{1767, 286, 287},
{1767, 1765, 1771},
{1763, 1767, 1773}
};
public static boolean blockDye(Player player, CapeDye dye, int itemUsed, int useWith) {
if (itemUsed == dye.getItemUsed() && ItemAssistant.getItemName(useWith).equalsIgnoreCase("Cape") && Item.itemIsNote[useWith]) {
player.getPacketSender().sendMessage("You can't dye a noted cape.");
return true;
} else if (itemUsed == dye.getItemUsed() && ItemAssistant.getItemName(useWith).equalsIgnoreCase("Cape") && useWith == dye.getReward() && !Item.itemIsNote[useWith]) {
player.getPacketSender().sendMessage("That cape is already that color.");
return true;
} else if (itemUsed == dye.getItemUsed() && !ItemAssistant.getItemName(useWith).equalsIgnoreCase("Cape")) {
return true;
}
return false;
}
public static void dyeItem(Player player, int itemUsed, int useWith) {
for (CapeDye cape: CapeDye.values()) {
if (blockDye(player, cape, itemUsed, useWith)) {
return;
}
if (itemUsed == cape.getItemUsed() && ItemAssistant.getItemName(useWith).equalsIgnoreCase("Cape") && !Item.itemIsNote[useWith] && useWith != cape.getReward()) {
player.getItemAssistant().deleteItem(itemUsed, 1);
player.getItemAssistant().deleteItem(useWith, 1);
player.getItemAssistant().addItem(cape.getReward(), 1);
player.getPlayerAssistant().addSkillXP(2.5, player.playerCrafting);
}
}
}
}
@@ -0,0 +1,162 @@
package com.rebotted.game.items.impl;
import com.rebotted.game.players.Player;
public class ExperienceLamp {
public static int LAMP = 4447, LAMP_2 = 2528, SKILL_MENU = 2808,
skill = -1;
/**
* Handles the actionbuttons
*
* @param player
* @param id
*/
public static void buttons(Player player, int id) {
switch (id) {
case 10252:
skill = 0;
player.getPacketSender().sendMessage("You select Attack.");
break;
case 10253:
skill = 2;
player.getPacketSender().sendMessage("You select Strength.");
break;
case 10254:
skill = 4;
player.getPacketSender().sendMessage("You select Ranged.");
break;
case 10255:
skill = 6;
player.getPacketSender().sendMessage("You select Magic.");
break;
case 11000:
skill = 1;
player.getPacketSender().sendMessage("You select Defence.");
break;
case 11001:
skill = 3;
player.getPacketSender().sendMessage("You select Hitpoints.");
break;
case 11002:
skill = 5;
player.getPacketSender().sendMessage("You select Prayer.");
break;
case 11003:
skill = 16;
player.getPacketSender().sendMessage("You select Agility.");
break;
case 11004:
skill = 15;
player.getPacketSender().sendMessage("You select Herblore.");
break;
case 11005:
skill = 17;
player.getPacketSender().sendMessage("You select Thieving.");
break;
case 11006:
skill = 12;
player.getPacketSender().sendMessage("You select Crafting.");
break;
case 11007:
skill = 20;
player.getPacketSender().sendMessage("You select Runecrafting.");
break;
case 47002:
skill = 18;
player.getPacketSender().sendMessage("You select Slayer.");
break;
case 54090:
skill = -1;
player.getPacketSender().sendMessage("You can't select this skill.");
break;
case 11008:
skill = 14;
player.getPacketSender().sendMessage("You select Mining.");
break;
case 11009:
skill = 13;
player.getPacketSender().sendMessage("You select Smithing.");
break;
case 11010:
skill = 10;
player.getPacketSender().sendMessage("You select Fishing.");
break;
case 11011:
skill = 7;
player.getPacketSender().sendMessage("You select Cooking.");
break;
case 11012:
skill = 11;
player.getPacketSender().sendMessage("You select Firemaking.");
break;
case 11013:
skill = 8;
player.getPacketSender().sendMessage("You select Woodcutting.");
break;
case 11014:
skill = 9;
player.getPacketSender().sendMessage("You select Fletching.");
break;
case 11015:
if (skill == -1) {
player.getPacketSender().closeAllWindows();
}
if (player.getItemAssistant().playerHasItem(LAMP, 1) && skill > -1) {// normal
// lamp
int xp = player.getPlayerAssistant()
.getLevelForXP(player.playerXP[skill]) * 10;
player.getPlayerAssistant().addSkillXP(xp, skill);
player.getItemAssistant().deleteItem(LAMP, 1);
player.getPacketSender().sendMessage(
"@blu@Your wish has been granted!");
player.getPacketSender().sendMessage(
"@blu@You have been awarded " + xp
+ " experience in your selected skill!");
player.getPacketSender().closeAllWindows();
} else if (player.getItemAssistant().playerHasItem(LAMP_2, 1)
&& skill > -1) {// vote
// reward
player.getItemAssistant().deleteItem(LAMP_2, 1);
player.getPacketSender().sendMessage(
"@blu@Your wish has been granted!");
addExp(player);
player.getPacketSender().closeAllWindows();
}
break;
}
}
public static void addExp(Player c) {
if (c.getPlayerAssistant().getLevelForXP(c.playerXP[skill]) < 20) {
c.getPlayerAssistant().addSkillXP(1000, skill);
c.getPacketSender()
.sendMessage(
"@blu@You have been awarded 1000 experience in your selected skill!");
} else if (c.getPlayerAssistant().getLevelForXP(c.playerXP[skill]) > 19
&& c.getPlayerAssistant().getLevelForXP(c.playerXP[skill]) < 35) {
c.getPlayerAssistant().addSkillXP(2000, skill);
c.getPacketSender()
.sendMessage(
"@blu@You have been awarded 2000 experience in your selected skill!");
} else {
c.getPlayerAssistant().addSkillXP(3000, skill);
c.getPacketSender()
.sendMessage(
"@blu@You have been awarded 3000 experience in your selected skill!");
}
}
/**
* Rubbing the lamp. ClickItem
*
* @param c
* @param id
*/
public static void rubLamp(Player c, int id) {
c.getPacketSender().sendMessage("You rub the lamp.");
c.getPacketSender().showInterface(SKILL_MENU);
}
}
@@ -0,0 +1,114 @@
package com.rebotted.game.items.impl;
public class Fillables {
public static boolean canFill(int id, int oid) {
return counterpart(id) != -1 && !getObjectName(oid).equals("Error");
}
public static String fillMessage(int id, int oid) {
return "You fill the " + getItemName(id) + " from the " + getObjectName(oid) + ".";
}
public static int counterpart(int id) {
switch (id) {
case 1925: // bucket
return 1929;
case 1935: // jug
return 1937;
case 229: // vial
return 227;
case 1923: // bowl
return 1921;
case 1980: // cup
return 4458;
case 5331: // watering can
case 5333:
case 5334:
case 5335:
case 5336:
case 5337:
case 5338:
case 5339:
return 5340;
case 1831: // waterskin
case 1825:
case 1827:
case 1829:
return 1823;
case 6667:
return 6668;
}
return -1;
}
public static String getItemName(int id) {
switch (id) {
case 1925:
return "bucket";
case 1935:
return "jug";
case 229:
return "vial";
case 1923:
return "bowl";
case 1980:
return "cup";
case 5331: // watering can
case 5333:
case 5334:
case 5335:
case 5336:
case 5337:
case 5338:
case 5339:
return "watering can";
case 1831:
case 1825:
case 1827:
case 1829:
return "waterskin";
case 6667:
return "fishbowl";
}
return "There was a problem with your current action, please report this to Mod Andrew.";
}
public static String getObjectName(int id) {
switch (id) {
case 873:
case 874:
case 4063:
case 6151:
case 14917:
return "sink";
case 14918:
return "washbin";
case 884:
case 878:
case 3359:
case 3485:
case 4004:
case 4005:
case 5086:
case 6097:
return "well";
case 2654:
return "Sinclair Family fountain";
case 12809:
return "Fairy fountain";
case 11661:
case 3460:
case 6827:
return "waterpump";
case 879:
case 11759:
case 153:
case 880:
case 6232:
case 2864:
return "fountain";
}
return "Error";
}
}
@@ -0,0 +1,185 @@
package com.rebotted.game.items.impl;
import com.rebotted.GameEngine;
import com.rebotted.event.CycleEvent;
import com.rebotted.event.CycleEventContainer;
import com.rebotted.event.CycleEventHandler;
import com.rebotted.game.players.Player;
import com.rebotted.util.Misc;
import com.rebotted.world.clip.Region;
/**
* @author Faris
*/
public class Flowers {
/**
* Constants & boolean checker
*/
private final int FLOWER_IDS[] = { 2980, 2981, 2982, 2983, 2984, 2985,
2986, 2987, 2988 };
/**
* Checks weather user is currently interacting with flower
*/
public boolean clientFlowering = false;
/**
* Stores temporary variables for each new instance of flower planted
*/
public static int lastObject;
/**
* algorithm decides which flower to give.
*
* @param flower
* @return
*/
private static int flowerDecoder(final int flower) {
int modifier = flower - 2980;
return modifier + 2460;
}
/**
* Constructor creates the place flower event
*
* @param c
*/
public Flowers(final Player c) {
if (c.checkBusy()) {
return;
}
c.setBusy(true);
executeAction(c);
CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
@Override
public void execute(CycleEventContainer container) {
c.setBusy(false);
container.stop();
}
@Override
public void stop() {
}
}, 1);
}
/**
* Main block, Spawns the object & starts animation. Moves player to the
* side Clipped
*
* @param c
*/
private void executeAction(final Player c) {
final int newFlower = getRandom();
final int[] coords = new int[2];
coords[0] = c.absX;
coords[1] = c.absY;
updateConstants(newFlower, c);
GameEngine.objectHandler.createAnObject(c, newFlower, coords[0], coords[1],
1);
deleteSeeds(c);
sendOptions(c);
clientFlowering = true;
moveOneStep(c);
c.turnPlayerTo(coords[0], coords[1]);
CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
@Override
public void execute(CycleEventContainer container) {
GameEngine.objectHandler.createAnObject(c, -1, coords[0], coords[1], 1);
c.getPacketSender().sendMessage( "Your flower is no longer flourishing.");
container.stop();
}
@Override
public void stop() {
}
}, 10);
}
/**
* Handles movement direction.
*
* @param c
*/
private static void moveOneStep(Player c) {
if (Region.getClipping(c.getX() - 1, c.getY(), c.heightLevel, -1, 0)) {
c.getPlayerAssistant().walkTo(-1, 0);
} else if (Region.getClipping(c.getX() + 1, c.getY(), c.heightLevel, 1,
0)) {
c.getPlayerAssistant().walkTo(1, 0);
} else if (Region.getClipping(c.getX(), c.getY() - 1, c.heightLevel, 0,
-1)) {
c.getPlayerAssistant().walkTo(0, -1);
} else if (Region.getClipping(c.getX(), c.getY() + 1, c.heightLevel, 0,
1)) {
c.getPlayerAssistant().walkTo(0, 1);
}
}
/**
* Selects a random flower ID
*
* @return
*/
private int getRandom() {
return FLOWER_IDS[Misc.random(FLOWER_IDS.length - 1)];
}
/**
* Sends the client an option to handle flowers
*
* @param c
*/
private void sendOptions(Player c) {
c.getDialogueHandler().sendOption2("Leave Flowers", "Harvest Flowers");
}
/**
* Removes the seeds from invent
*
* @param c
*/
private static void deleteSeeds(Player c) {
c.getItemAssistant().deleteItem(299, 1);
}
private void updateConstants(int objectType, Player c) {
lastObject = objectType;
}
/**
* Method harvests flower from ground
*
* @param player
* @param object
* @param oX
* @param oY
*/
public static void harvestFlower(Player player, int object) {
player.getItemAssistant().addItem(flowerDecoder(object), 1);
player.getPacketSender().sendMessage("You receive a random flower.");
player.startAnimation(827);
// c.getPA().checkObjectSpawn(c,-1, c.getX()+1, c.getY(), 1, 10);
// c.getPA().object(c,-1, c.getX()+1, c.getY(), 1, 10);
GameEngine.objectHandler.createAnObject(player, -1, player.getX() + 1, player.getY(), 1);
player.turnPlayerTo(player.getX() + 1, player.getY());
}
/**
* Sends the option action
*
* @param option
*/
public void handleOptions(int option, Player c) {
if (option == 0) {
return;
} else {
harvestFlower(c, lastObject);
}
clientFlowering = false;
}
}
@@ -0,0 +1,52 @@
package com.rebotted.game.items.impl;
import com.rebotted.game.content.music.sound.SoundList;
import com.rebotted.game.items.ItemAssistant;
import com.rebotted.game.players.Player;
/**
* @author Genesis
*/
public class HandleEmpty {
public static boolean canEmpty(Player c, int id) {
return filledToEmpty(c, id) != -1;
}
public static int filledToEmpty(Player c, int id) {
String itemName = ItemAssistant.getItemName(id);
if (!itemName.contains("Ring") && !itemName.contains("necklace")) {
if (itemName.contains("(3)") || itemName.contains("(4)") || itemName.contains("(2)") || itemName.contains("(1)") || itemName.contains("Weapon poison")) {
if (id != 1712 && id != 1710 && id != 1708 && id != 1706) {
c.getItemAssistant().deleteItem(id, c.getItemAssistant().getItemSlot(id), 1);
c.getItemAssistant().addItem(229, 1);
c.getPacketSender().sendMessage("You empty the vial.");
}
}
}
switch (id) {
case 1937: // Jugs
case 1989:
case 1991:
case 1993:
case 3729:
return 1935;
case 227: // Vial of Water
return 229;
case 1927: // Buckets
case 1929:
return 1925;
}
return -1;
}
public static void handleEmptyItem(Player c, int itemId, int giveItem) {
final String name = ItemAssistant.getItemName(itemId);
c.getPacketSender().sendMessage("You empty your " + name + ".");
c.getItemAssistant().deleteItem(itemId, 1);
c.getItemAssistant().addItem(giveItem, 1);
c.getPacketSender().sendSound(SoundList.EMPTY, 100, 0);
}
}
@@ -0,0 +1,84 @@
package com.rebotted.game.items.impl;
import com.rebotted.game.players.Player;
/**
* Lightsources
* @author Andrew (Mr Extremez)
*/
public class LightSources {
public static void saveBrightness(Player player) {
if (player.brightness == 1) {
brightness1(player);
} else if (player.brightness == 2) {
brightness2(player);
} else if (player.brightness == 4) {
brightness4(player);
} else {
brightness3(player);
}
}
public static void brightness1(Player player) {
player.getPacketSender().sendConfig(505, 1);
player.getPacketSender().sendConfig(506, 0);
player.getPacketSender().sendConfig(507, 0);
player.getPacketSender().sendConfig(508, 0);
player.getPacketSender().sendConfig(166, 1);
player.brightness = 1;
}
public static void brightness2(Player player) {
player.getPacketSender().sendConfig(505, 0);
player.getPacketSender().sendConfig(506, 1);
player.getPacketSender().sendConfig(507, 0);
player.getPacketSender().sendConfig(508, 0);
player.getPacketSender().sendConfig(166, 2);
player.brightness = 2;
}
public static void brightness3(Player player) {
player.getPacketSender().sendConfig(505, 0);
player.getPacketSender().sendConfig(506, 0);
player.getPacketSender().sendConfig(507, 1);
player.getPacketSender().sendConfig(508, 0);
player.getPacketSender().sendConfig(166, 3);
player.brightness = 3;
}
public static void brightness4(Player player) {
player.getPacketSender().sendConfig(505, 0);
player.getPacketSender().sendConfig(506, 0);
player.getPacketSender().sendConfig(507, 0);
player.getPacketSender().sendConfig(508, 1);
player.getPacketSender().sendConfig(166, 4);
player.brightness = 4;
}
public static void setBrightness(Player c) {
if (c.getItemAssistant().playerHasItem(594) || c.getItemAssistant().playerHasItem(32) || c.getItemAssistant().playerHasItem(33)) {
brightness2(c);
} else if (c.getItemAssistant().playerHasItem(4535) || c.getItemAssistant().playerHasItem(4524)) {
brightness3(c);
} else if (c.getItemAssistant().playerHasItem(4550)) {
brightness4(c);
}
}
public static final int[] lightSources = { 594, 32, 33, 4524, 4539, 4550 };
public static boolean playerHasLightSource(Player client) {
for (int lightSource : lightSources) {
if (client.getItemAssistant().playerHasItem(lightSource)) {
setBrightness(client);
return true;
}
}
client.getPacketSender().sendMessage("It's recommended that you get a light source to continue.");
brightness1(client);
return false;
}
}
@@ -0,0 +1,99 @@
package com.rebotted.game.items.impl;
import com.rebotted.game.items.ItemAssistant;
import com.rebotted.game.players.Player;
/**
* @author Sanity
*/
public class PotionMixing {
Player c;
public PotionMixing(Player player) {
this.c = player;
}
public void mixPotion2(int id, int id2) {
String id11 = ItemAssistant.getItemName(id);
String id22 = ItemAssistant.getItemName(id2);
if (id11.substring(0, id11.indexOf("(")).equalsIgnoreCase(
id22.substring(0, id22.indexOf("(")))) {
try {
int amount1 = Integer.parseInt(id11.substring(
id11.indexOf("(") + 1, id11.indexOf("(") + 2));
int amount2 = Integer.parseInt(id22.substring(
id22.indexOf("(") + 1, id22.indexOf("(") + 2));
int totalAmount = amount1 + amount2;
if (totalAmount > 4) {
amount1 = 4;
amount2 = totalAmount - 4;
String item1 = id11.substring(0, id11.indexOf("(") + 1)
+ amount1 + ")";
String item2 = id11.substring(0, id11.indexOf("(") + 1)
+ amount2 + ")";
c.getItemAssistant().deleteItem(id,
c.getItemAssistant().getItemSlot(id), 1);
c.getItemAssistant().deleteItem(id2,
c.getItemAssistant().getItemSlot(id2), 1);
c.getItemAssistant().addItem(
c.getItemAssistant().getItemId(item1), 1);
c.getItemAssistant().addItem(
c.getItemAssistant().getItemId(item2), 1);
} else {
amount1 = totalAmount;
String item1 = id11.substring(0, id11.indexOf("(") + 1)
+ amount1 + ")";
c.getItemAssistant().deleteItem(id,
c.getItemAssistant().getItemSlot(id), 1);
c.getItemAssistant().deleteItem(id2,
c.getItemAssistant().getItemSlot(id2), 1);
c.getItemAssistant().addItem(
c.getItemAssistant().getItemId(item1), 1);
c.getItemAssistant().addItem(229, 1);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private final int[][] potMixing = { { 117, 117, 113, 227 },
{ 119, 115, 113, 227 }, { 115, 119, 113, 227 },
{ 123, 123, 2428, 227 }, { 121, 125, 2428, 227 },
{ 125, 121, 2428, 227 }, { 133, 133, 2432, 227 },
{ 133, 137, 2432, 227 }, { 137, 133, 2432, 227 },
{ 159, 159, 2440, 227 }, { 157, 161, 2440, 227 },
{ 161, 157, 2440, 227 }, { 147, 147, 2436, 227 },
{ 149, 145, 2436, 227 }, { 145, 149, 2436, 227 },
{ 165, 165, 2442, 227 }, { 163, 167, 2442, 227 },
{ 167, 163, 2442, 227 }, { 6689, 6689, 6685, 227 },
{ 6687, 6691, 2442, 227 }, { 6691, 6687, 2442, 227 },
{ 171, 171, 2444, 227 }, { 169, 173, 2444, 227 },
{ 173, 169, 2444, 227 }, { 177, 177, 2446, 227 },
{ 179, 175, 2446, 227 }, { 175, 179, 2446, 227 },
{ 3028, 3028, 3024, 227 }, { 3030, 3026, 3024, 227 },
{ 3026, 3030, 3024, 227 }, { 141, 141, 2434, 227 },
{ 139, 143, 2434, 227 }, { 143, 139, 2434, 227 },
{ 3044, 3044, 3040, 227 }, { 3042, 3046, 3040, 227 },
{ 3046, 3042, 3040, 227 }, { 2456, 2456, 2452, 227 },
{ 2454, 2458, 2452, 227 }, { 2458, 2454, 2452, 227 } };
// use id, use id2, new id1, new id2
public void mixPotion(int id, int id2) {
for (int[] element : potMixing) {
if (element[0] == id && element[1] == id || element[1] == id
&& element[0] == id2) {
c.getItemAssistant().deleteItem(id,
c.getItemAssistant().getItemSlot(id), 1);
c.getItemAssistant().deleteItem(id2,
c.getItemAssistant().getItemSlot(id2), 1);
c.getItemAssistant().addItem(element[2], 1);
c.getItemAssistant().addItem(element[3], 1);
break;
}
}
}
}
@@ -0,0 +1,75 @@
package com.rebotted.game.items.impl;
import com.rebotted.game.players.Player;
/**
* Rare Protection
* @author Andrew (Mr Extremez)
*/
public class RareProtection {
public static final boolean RARES = true, CRACKERS = false;
private static final int[] RARE_ITEMS = { 1037, 1038, 1039, 1040, 1041,
1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 962, 963, 1959, 1961, 1989 };
private static final int[] EDIBLE_RARES = { 1959, 1961, 1989 };
public static boolean equipItem(Player c) {// check when wearing, removing
for (int element : RARE_ITEMS) {
if (c.wearId == element && c.playerRights < 3) {
c.getPacketSender().sendMessage("You shouldn't have that item!");
int amountToDelete = c.getItemAssistant().getItemCount(element);
c.getItemAssistant().deleteItem(element, amountToDelete);
return false;
}
}
return true;
}
public static boolean removeItem(Player c, int itemId) {
for (int element : RARE_ITEMS) {
if (itemId == element && c.playerRights < 3) {
c.getPacketSender().sendMessage("You shouldn't have that item!");
c.getItemAssistant().deleteEquipment(element, 0);
return false;
}
}
return true;
}
public static boolean hasDupedItem(Player c) {// check on login
for (int element : RARE_ITEMS) {
if (c.getItemAssistant().playerHasItem(element) && c.playerRights < 3) {
c.getPacketSender().sendMessage("You can't have these items!");
int amountToDelete = c.getItemAssistant().getItemCount(element);
c.getItemAssistant().deleteItem(element, amountToDelete);
return false;
}
}
return true;
}
public static boolean eatDupedItem(Player c, int itemId) {
for (int element : EDIBLE_RARES) {
if (itemId == element && c.playerRights < 3) {
c.getPacketSender().sendMessage("You can't eat that item!");
int amountToDelete = c.getItemAssistant().getItemCount(element);
c.getItemAssistant().deleteItem(element, amountToDelete);
return false;
}
}
return true;
}
public static boolean doOtherDupe(Player player, int itemId) {
for (int element : RARE_ITEMS) {
if (player.getItemAssistant().playerHasItem(element) && player.playerRights < 3) {
player.getPacketSender().sendMessage("You shouldnt have that item!");
int amountToDelete = player.getItemAssistant().getItemCount(element);
player.getItemAssistant().deleteItem(element, amountToDelete);
return false;
}
}
return true;
}
}
@@ -0,0 +1,56 @@
package com.rebotted.game.items.impl;
import com.rebotted.game.players.Player;
/**
* Teles
* @author Andrew (Mr Extremez)
*/
public class Teles {
public static void useAOG(Player player) {
player.getDialogueHandler().sendOption4("Edgeville", "Al Kharid", "Karamja", "Draynor");
player.dialogueAction = 51;
player.getPacketSender().sendMessage("You rub the Amulet of Glory...");
}
public static void useROD(Player player) {
player.getDialogueHandler().sendOption2("Duel Arena", "Castle Wars");
player.dialogueAction = 161;
player.getPacketSender().sendMessage("You rub the Ring of Dueling...");
}
public static void useGN(Player player) {
player.getDialogueHandler().sendOption2("Burthrope Games Room", "Barbarian Outpost");
player.dialogueAction = 50;
player.getPacketSender().sendMessage("You rub the Games Necklace...");
}
private static final int[][] JEWELERY = {
{ 3853, 3855, 7 }, { 3855, 3857, 6 }, { 3857, 3859, 5 }, { 3859, 3861, 4 }, { 3861, 3863, 3 },{ 3863, 3865, 2 }, { 3865, 3867, 1 }, { 3867, 0, 0 }, // gn
{ 2552, 2554, 7 }, { 2554, 2556, 6 }, { 2556, 2558, 5 }, { 2558, 2560, 4 }, { 2560, 2562, 3 }, { 2562, 2564, 2 }, { 2564, 2566, 1 }, { 2566, 0, 0 }, // rod
{ 1712, 1710, 3 }, { 1710, 1708, 2 }, { 1708, 1706, 1 }, { 1706, 1704, 0 } //aog
};
public static void necklaces(Player player) {
for (int[] element : JEWELERY) {
if (player.itemUsing == element[0]) {
if (player.isOperate) {
player.playerEquipment[player.playerAmulet] = element[1];
} else {
player.getItemAssistant().deleteItem(element[0], 1);
player.getItemAssistant().addItem(element[1], 1);
}
if (element[2] > 1) {
player.getPacketSender().sendMessage("You have " + element[2] + " charges left.");
} else {
player.getPacketSender().sendMessage("You have " + element[2] + " charge left.");
}
}
}
player.getItemAssistant().updateSlot(player.playerAmulet);
player.isOperate = false;
player.itemUsing = -1;
}
}
@@ -0,0 +1,148 @@
package com.rebotted.game.items.impl;
import java.util.HashMap;
import com.rebotted.game.items.ItemAssistant;
import com.rebotted.game.players.Player;
/**
* Manages weapon poisoning.
* @author Andew added every single weapon to the enum
* @author Hybris writing the system
*/
public class WeaponPoison {
/**
* Represents a weapon that can be poisoned. Stores the initial weapon item
* id, the type of poison used on the weapon and the new poisoned weapon
* that will be obtained.
*/
private enum Weapon {
BRONZE_DAGGER(1205, new int[][] {{ 5940, 5688 }, { 5937, 5670 }, { 187, 1221 }}),
IRON_DAGGER(1203, new int[][] {{ 5940, 5686 }, { 5937, 5668 }, { 187, 1219 }}),
STEEL_DAGGER(1207, new int[][] {{ 5940, 5690 }, { 5937, 5672 }, { 187, 1223 }}),
BLACK_DAGGER(1217, new int[][] {{ 5940, 5700 }, { 5937, 5682 }, { 187, 1233 }}),
MITHRIL_DAGGER(1209, new int[][] {{ 5940, 5692 }, { 5937, 5674 }, { 187, 1225 }}),
ADAMANT_DAGGER(1211, new int[][] {{ 5940, 5694 }, { 5937, 5676 }, { 187, 1227 }}),
RUNE_DAGGER(1213, new int[][] {{ 5940, 5696 }, { 5937, 5678 }, { 187, 1229 }}),
DRAGON_DAGGER(1215, new int[][] {{ 5940, 5698 }, { 5937, 5680 }, { 187, 1231 }}),
BRONZE_DART(806, new int[][] {{ 5940, 5635 }, { 5937, 5628 }, { 187, 812 }}),
IRON_DART(807, new int[][] {{ 5940, 5636 }, { 5937, 5629 }, { 187, 813 }}),
STEEL_DART(808, new int[][] {{ 5940, 5637 }, { 5937, 5630 }, { 187, 814 }}),
BLACK_DART(3093, new int[][] {{ 5940, 5638 }, { 5937, 5631 }, { 187, 815 }}),
MITHRIL_DART(809, new int[][] {{ 5940, 5639 }, { 5937, 5632 }, { 187, 816 }}),
ADAMANT_DART(810, new int[][] {{ 5940, 5640 }, { 5937, 5633 }, { 187, 817 }}),
RUNE_DART(811, new int[][] {{ 5940, 5641 }, { 5937, 5634 }, { 187, 818 }}),
BRONZE_SPEAR(1237, new int[][] {{ 5940, 5718 }, { 5937, 5704 }, { 187, 1251 }}),
IRON_SPEAR(1239, new int[][] {{ 5940, 5720 }, { 5937, 5706 }, { 187, 1253 }}),
STEEL_SPEAR(1241, new int[][] {{ 5940, 5722 }, { 5937, 5708 }, { 187, 1255 }}),
MITHRIL_SPEAR(1243, new int[][] {{ 5940, 5724 }, { 5937, 5710 }, { 187, 1257 }}),
ADAMANT_SPEAR(1245, new int[][] {{ 5940, 5726 }, { 5937, 5712 }, { 187, 1259 }}),
RUNE_SPEAR(1247, new int[][] {{ 5940, 5728 }, { 5937, 5714 }, { 187, 1261 }}),
DRAGON_SPEAR(1249, new int[][] {{ 5940, 5730 }, { 5937, 5716 }, { 187, 1263 }}),
BRONZE_JAVELIN(825, new int[][] { { 5940, 5648 }, { 5937, 5642 }, { 187, 831 }}),
IRON_JAVELIN(826, new int[][] { { 5940, 5648 }, { 5937, 5643 }, { 187, 832 }}),
STEEL_JAVELIN(827, new int[][] {{ 5940, 5648 }, { 5937, 5644 }, { 187, 833 }}),
MITHRIL_JAVELIN(828, new int[][] {{ 5940, 5648 }, { 5937, 5645 }, { 187, 834 }}),
ADAMANT_JAVELIN(829, new int[][] {{ 5940, 5648 }, { 5937, 5646 }, { 187, 835 }}),
RUNE_JAVELIN(830, new int[][] {{ 5940, 5648 }, { 5937, 5647 }, { 187, 836 }}),
BRONZE_ARROW(882, new int[][] {{ 5940, 5622 }, { 5937, 5616 }, { 187, 883 }}),
IRON_ARROW(884, new int[][] {{ 5940, 5623 }, { 5937, 5617 }, { 187, 885 }}),
STEEL_ARROW(886, new int[][] {{ 5940, 5624 }, { 5937, 5618 }, { 187, 887 }}),
MITHRIL_ARROW(888, new int[][] {{ 5940, 5625 }, { 5937, 5619 }, { 187, 889 }}),
ADAMANT_ARROW(890, new int[][] {{ 5940, 5626 }, { 5937, 5620 }, { 187, 891 }}),
RUNE_ARROW(892, new int[][] {{ 5940, 5627 }, { 5937, 5621 }, { 187, 893 }}),
BRONZE_KNIFE(864, new int[][] {{ 5940, 5661 }, { 5937, 5654 }, { 187, 870 }}),
IRON_KNIFE(863, new int[][] {{ 5940, 5662 }, { 5937, 5655 }, { 187, 871}}),
STEEL_KNIFE(865, new int[][] {{ 5940, 5663 }, { 5937, 5656 }, { 187, 872 }}),
BLACK_KNIFE(869, new int[][] {{ 5940, 5665 }, { 5937, 5658 }, { 187, 873 }}),
MITHRIL_KNIFE(866, new int[][] {{ 5940, 5664 }, { 5937, 5657 }, { 187, 874 }}),
ADAMANT_KNIFE(867, new int[][] {{ 5940, 5666 }, { 5937, 5659 }, { 187, 875 }}),
RUNE_KNIFE(868, new int[][] {{ 5940, 5667 }, { 5937, 5660 }, { 187, 876 }});
/**
* Creates the weapon.
*
* @param itemId
* The weapon item id.
* @param newItemId
* The poisoned weapon item id.
*/
private Weapon(int itemId, int[][] newItemId) {
this.itemId = itemId;
this.newItemId = newItemId;
}
/**
* Gets the item id.
*
* @return the itemId
*/
public int getItemId() {
return itemId;
}
/**
* The weapon item id.
*/
private final int itemId;
/**
* The poisoned weapon item id.
*/
private final int[][] newItemId;
/**
* Represents a map for the weapon item ids.
*/
public static HashMap<Integer, Weapon> weapon = new HashMap<Integer, Weapon>();
/**
* @return the newItemId
*/
public int[][] getNewItemId() {
return newItemId;
}
/**
* Populates a map for the weapons.
*/
static {
for (Weapon w : Weapon.values()) {
weapon.put(w.getItemId(), w);
}
}
}
/**
* The item id for Vial.
*/
private final static int VIAL = 229;
/**
* Starts the weapon poison event for each individual weapon item from the
* enumeration <code>Weapon</code>.
*
* @param player
* The Player player.
* @param itemUse
* The first item use.
* @param useWith
* The second item use.
*/
public static void execute(final Player player, int itemUse, int useWith) {
final Weapon weapon = Weapon.weapon.get(useWith);
if (weapon != null) {
for (int element[] : weapon.getNewItemId()) {
if (itemUse == element[0]) {
player.getPacketSender().sendMessage("You make a " + ItemAssistant.getItemName(element[1]) + ".");
player.getItemAssistant().deleteItem(element[0], player.getItemAssistant().getItemSlot(element[0]), 1);
player.getItemAssistant().deleteItem(weapon.getItemId(), player.getItemAssistant().getItemSlot(weapon.getItemId()), 1);
player.getItemAssistant().addItem(VIAL, 1);
player.getItemAssistant().addItem(element[1], 1);
}
}
}
}
}