Merge remote-tracking branch 'origin/master'

This commit is contained in:
ceikry
2021-10-22 13:54:33 -05:00
26 changed files with 1081 additions and 2281 deletions
+50 -152
View File
@@ -2306,13 +2306,13 @@
},
{
"minAmount": "1",
"weight": "25.0",
"weight": "50.0",
"id": "1357",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "25.0",
"weight": "50.0",
"id": "1317",
"maxAmount": "1"
},
@@ -2330,31 +2330,31 @@
},
{
"minAmount": "105",
"weight": "25.0",
"weight": "50.0",
"id": "556",
"maxAmount": "105"
},
{
"minAmount": "105",
"weight": "25.0",
"weight": "50.0",
"id": "554",
"maxAmount": "105"
},
{
"minAmount": "7",
"weight": "8.0",
"weight": "25.0",
"id": "560",
"maxAmount": "7"
},
{
"minAmount": "15",
"weight": "8.0",
"weight": "25.0",
"id": "565",
"maxAmount": "15"
},
{
"minAmount": "15",
"weight": "8.0",
"weight": "25.0",
"id": "563",
"maxAmount": "15"
},
@@ -2366,7 +2366,7 @@
},
{
"minAmount": "1",
"weight": "8.0",
"weight": "50.0",
"id": "9144",
"maxAmount": "12"
},
@@ -2382,12 +2382,6 @@
"id": "441",
"maxAmount": "100"
},
{
"minAmount": "100",
"weight": "25.0",
"id": "454",
"maxAmount": "100"
},
{
"minAmount": "100",
"weight": "25.0",
@@ -2396,7 +2390,7 @@
},
{
"minAmount": "1",
"weight": "50.0",
"weight": "25.0",
"id": "9431",
"maxAmount": "1"
},
@@ -2414,13 +2408,13 @@
},
{
"minAmount": "1",
"weight": "8.0",
"weight": "25.0",
"id": "407",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "8.0",
"weight": "10.0",
"id": "12070",
"maxAmount": "1"
},
@@ -2432,25 +2426,19 @@
},
{
"minAmount": "1",
"weight": "0.18",
"weight": "0.154",
"id": "11286",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "100.0",
"id": "0",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "23.15",
"weight": "10.0",
"id": "31",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "5600.0",
"weight": "200.0",
"id": "0",
"maxAmount": "1"
}
@@ -2880,7 +2868,7 @@
},
{
"minAmount": "1",
"weight": "0.12",
"weight": "0.0562",
"id": "11286",
"maxAmount": "1"
},
@@ -25185,13 +25173,13 @@
},
{
"minAmount": "1",
"weight": "19.35",
"weight": "5.0",
"id": "31",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "0.145",
"weight": "0.07994",
"id": "11286",
"maxAmount": "1"
},
@@ -25417,13 +25405,13 @@
},
{
"minAmount": "1",
"weight": "21.3",
"weight": "6.0",
"id": "31",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "0.14",
"weight": "0.0728",
"id": "11286",
"maxAmount": "1"
},
@@ -43295,7 +43283,7 @@
},
{
"minAmount": "1",
"weight": "2.8",
"weight": "2.5",
"id": "8901",
"maxAmount": "1"
},
@@ -46690,19 +46678,19 @@
},
{
"minAmount": "1",
"weight": "25.0",
"weight": "8.0",
"id": "31",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "0.15",
"weight": "0.0768",
"id": "11286",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "0.03",
"weight": "0.025",
"id": "11335",
"maxAmount": "1"
},
@@ -63408,25 +63396,25 @@
"main": [
{
"minAmount": "1",
"weight": "1.5",
"weight": "1.0",
"id": "13746",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "1.5",
"weight": "1.0",
"id": "13748",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "1.5",
"weight": "1.0",
"id": "13750",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "2.95",
"weight": "2.0",
"id": "13752",
"maxAmount": "1"
},
@@ -63474,7 +63462,19 @@
},
{
"minAmount": "1",
"weight": "60.0",
"weight": "5.0",
"id": "2366",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "5.0",
"id": "1250",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "100.0",
"id": "13734",
"maxAmount": "1"
},
@@ -63504,7 +63504,7 @@
},
{
"minAmount": "2500",
"weight": "175.0",
"weight": "100.0",
"id": "7937",
"maxAmount": "2500"
},
@@ -63521,20 +63521,20 @@
"maxAmount": "500"
},
{
"minAmount": "300",
"weight": "175.0",
"minAmount": "209",
"weight": "125.0",
"id": "560",
"maxAmount": "300"
},
{
"minAmount": "250",
"weight": "175.0",
"weight": "80.0",
"id": "566",
"maxAmount": "250"
},
{
"minAmount": "70",
"weight": "175.0",
"weight": "80.0",
"id": "384",
"maxAmount": "70"
},
@@ -63552,31 +63552,31 @@
},
{
"minAmount": "24",
"weight": "100.0",
"weight": "25.0",
"id": "5321",
"maxAmount": "24"
},
{
"minAmount": "10",
"weight": "24.0",
"weight": "100.0",
"id": "5295",
"maxAmount": "10"
},
{
"minAmount": "30",
"weight": "75.0",
"id": "7060",
"id": "7061",
"maxAmount": "30"
},
{
"minAmount": "40",
"weight": "75.0",
"id": "5953",
"id": "2449",
"maxAmount": "40"
},
{
"minAmount": "1",
"weight": "6.6",
"weight": "3.0",
"id": "13754",
"maxAmount": "1"
},
@@ -63585,108 +63585,6 @@
"weight": "3.1496",
"id": "0",
"maxAmount": "13"
},
{
"minAmount": "1",
"weight": "40.0",
"id": "11133",
"maxAmount": "1"
},
{
"minAmount": "20",
"weight": "80.0",
"id": "226",
"maxAmount": "20"
},
{
"minAmount": "1",
"weight": "24.0",
"id": "12070",
"maxAmount": "1"
},
{
"minAmount": "100",
"weight": "80.0",
"id": "1754",
"maxAmount": "100"
},
{
"minAmount": "125",
"weight": "80.0",
"id": "450",
"maxAmount": "125"
},
{
"minAmount": "20",
"weight": "80.0",
"id": "452",
"maxAmount": "20"
},
{
"minAmount": "35",
"weight": "80.0",
"id": "2362",
"maxAmount": "35"
},
{
"minAmount": "100",
"weight": "80.0",
"id": "8781",
"maxAmount": "100"
},
{
"minAmount": "150",
"weight": "80.0",
"id": "8836",
"maxAmount": "150"
},
{
"minAmount": "75",
"weight": "80.0",
"id": "1514",
"maxAmount": "75"
},
{
"minAmount": "1",
"weight": "20.0",
"id": "31",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "100.0",
"id": "4091",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "100.0",
"id": "4093",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "100.0",
"id": "1403",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "100.0",
"id": "1401",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "100.0",
"id": "1407",
"maxAmount": "1"
},
{
"minAmount": "1",
"weight": "100.0",
"id": "1405",
"maxAmount": "1"
}
]
},
+27
View File
@@ -40578,6 +40578,7 @@
"grand_exchange_price": "29900",
"stand_anim": "1662",
"tradeable": "true",
"rare_item": "true",
"run_anim": "1664",
"archery_ticket_price": "0",
"id": "4153",
@@ -45819,6 +45820,7 @@
"grand_exchange_price": "94300",
"name": "Ahrim's hood",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4708",
"bonuses": "0,0,0,6,-2,15,13,16,6,0,15,0,0,0,0"
@@ -45849,6 +45851,7 @@
"grand_exchange_price": "69500",
"stand_anim": "813",
"tradeable": "true",
"rare_item": "true",
"run_anim": "1210",
"archery_ticket_price": "0",
"id": "4710",
@@ -45887,6 +45890,7 @@
"grand_exchange_price": "1000000",
"name": "Ahrim's robetop",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4712",
"bonuses": "0,0,0,30,-10,52,37,63,30,0,60,0,0,0,0"
@@ -45914,6 +45918,7 @@
"grand_exchange_price": "1700000",
"name": "Ahrim's robeskirt",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4714",
"bonuses": "0,0,0,22,-7,33,30,36,22,0,30,0,0,0,0"
@@ -45942,6 +45947,7 @@
"grand_exchange_price": "1300000",
"name": "Dharok's helm",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4716",
"bonuses": "0,0,0,-3,-1,45,48,44,-1,51,15,0,0,0,0"
@@ -45972,6 +45978,7 @@
"grand_exchange_price": "516900",
"stand_anim": "2065",
"tradeable": "true",
"rare_item": "true",
"run_anim": "824",
"archery_ticket_price": "0",
"id": "4718",
@@ -46009,6 +46016,7 @@
"grand_exchange_price": "511400",
"name": "Dharok's platebody",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4720",
"bonuses": "0,0,0,-30,-10,122,120,107,-6,132,60,0,0,0,0"
@@ -46036,6 +46044,7 @@
"grand_exchange_price": "748800",
"name": "Dharok's platelegs",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4722",
"bonuses": "0,0,0,-21,-7,85,82,83,-4,92,30,0,0,0,0"
@@ -46065,6 +46074,7 @@
"grand_exchange_price": "396300",
"name": "Guthan's helm",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4724",
"bonuses": "0,0,0,-6,-2,55,58,54,-1,62,15,0,0,0,0"
@@ -46095,6 +46105,7 @@
"grand_exchange_price": "588400",
"stand_anim": "813",
"tradeable": "true",
"rare_item": "true",
"run_anim": "1210",
"archery_ticket_price": "0",
"id": "4726",
@@ -46132,6 +46143,7 @@
"grand_exchange_price": "316800",
"name": "Guthan's platebody",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4728",
"bonuses": "0,0,0,-30,-10,122,120,107,-6,132,60,0,0,0,0"
@@ -46159,6 +46171,7 @@
"grand_exchange_price": "315600",
"name": "Guthan's chainskirt",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4730",
"bonuses": "0,0,0,-14,-7,75,72,73,-4,82,30,0,0,0,0"
@@ -46187,6 +46200,7 @@
"grand_exchange_price": "38900",
"name": "Karil's coif",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4732",
"bonuses": "0,0,0,-1,3,6,9,12,6,10,15,0,0,0,0"
@@ -46217,6 +46231,7 @@
"grand_exchange_price": "188000",
"stand_anim": "2074",
"tradeable": "true",
"rare_item": "true",
"run_anim": "2077",
"archery_ticket_price": "0",
"id": "4734",
@@ -46255,6 +46270,7 @@
"grand_exchange_price": "1800000",
"name": "Karil's leathertop",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4736",
"bonuses": "0,0,0,-15,30,47,42,50,65,57,60,0,0,0,0"
@@ -46282,6 +46298,7 @@
"grand_exchange_price": "217000",
"name": "Karil's leatherskirt",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4738",
"bonuses": "0,0,0,-10,17,26,20,28,35,33,30,0,0,0,0"
@@ -46327,6 +46344,7 @@
"grand_exchange_price": "139000",
"name": "Torag's helm",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4745",
"bonuses": "0,0,0,-6,-2,55,58,54,-1,62,15,0,0,0,0"
@@ -46359,6 +46377,7 @@
"attack_audios": "1332,0,0,0",
"name": "Torag's hammers",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4747",
"bonuses": "-4,-4,85,-4,0,0,0,0,0,0,0,72,0,0,0"
@@ -46387,6 +46406,7 @@
"grand_exchange_price": "346200",
"name": "Torag's platebody",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4749",
"bonuses": "0,0,0,-30,-10,122,120,107,-6,132,60,0,0,0,0"
@@ -46414,6 +46434,7 @@
"grand_exchange_price": "427200",
"name": "Torag's platelegs",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4751",
"bonuses": "0,0,0,-21,-7,85,82,83,-4,92,30,0,0,0,0"
@@ -46443,6 +46464,7 @@
"grand_exchange_price": "687200",
"name": "Verac's helm",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4753",
"bonuses": "0,0,0,-6,-2,55,58,54,0,56,15,0,3,0,0"
@@ -46473,6 +46495,7 @@
"grand_exchange_price": "135500",
"stand_anim": "1832",
"tradeable": "true",
"rare_item": "true",
"run_anim": "1831",
"archery_ticket_price": "0",
"id": "4755",
@@ -46511,6 +46534,7 @@
"grand_exchange_price": "270000",
"name": "Verac's brassard",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4757",
"bonuses": "0,0,0,-6,-2,81,95,85,0,81,60,0,5,0,0"
@@ -46538,6 +46562,7 @@
"grand_exchange_price": "411400",
"name": "Verac's plateskirt",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "4759",
"bonuses": "0,0,0,-21,-7,85,82,83,0,84,30,0,4,0,0"
@@ -106101,6 +106126,7 @@
"grand_exchange_price": "95400",
"name": "Dragon boots",
"tradeable": "true",
"rare_item": "true",
"archery_ticket_price": "0",
"id": "11732",
"bonuses": "0,0,0,-3,-1,16,17,18,0,0,15,4,0,0,0"
@@ -121161,6 +121187,7 @@
"grand_exchange_price": "43082",
"stand_anim": "813",
"tradeable": "true",
"rare_item": "true",
"run_anim": "824",
"archery_ticket_price": "0",
"id": "13290",
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -4433,7 +4433,7 @@
},
{
"npc_id": "2329",
"loc_data": "{1702,4823,0,0,6}"
"loc_data": "{3093,3260,0,1,6}-{1702,4822,0,0,0}"
},
{
"npc_id": "2330",
@@ -4,6 +4,7 @@ import core.game.content.dialogue.DialoguePlugin;
import core.game.content.dialogue.FacialExpression;
import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.diary.DiaryType;
import core.game.node.item.Item;
/**
@@ -39,6 +40,11 @@ public final class CuratorHaigHalenDialogue extends DialoguePlugin {
public boolean open(Object... args) {
npc = (NPC) args[0];
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Welcome to the museum of Varrock.");
if (player.getQuestRepository().getPoints() >= 50) {
player.getAchievementDiaryManager().finishTask(player, DiaryType.VARROCK, 0, 12);
}
stage = 0;
return true;
}
@@ -8,6 +8,7 @@ import core.game.node.entity.player.Player;
import core.game.node.item.ChanceItem;
import core.game.node.item.Item;
import core.game.node.item.WeightedChanceItem;
import org.rs09.consts.Items;
import rs09.game.world.GameWorld;
import core.tools.RandomFunction;
@@ -25,370 +26,373 @@ import java.util.List;
public enum ClueLevel {
EASY(new Item(2714), 1 << 16 | 5,
new ChanceItem(2633, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2635, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2637, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2587, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLUE_BERET_2633, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_BERET_2635, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.WHITE_BERET_2637, 1, 1, DropFrequency.UNCOMMON),
// black
// t
new ChanceItem(2583, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2585, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(3472, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2589, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2595, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_FULL_HELMT_2587, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_PLATEBODY_T_2583, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_PLATELEGS_T_2585, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_PLATESKIRT_T_3472, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_KITESHIELD_T_2589, 1, 1, DropFrequency.UNCOMMON),
// black
// g
new ChanceItem(2591, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2593, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(3473, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2597, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2631, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_FULL_HELMG_2595, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_PLATEBODY_G_2591, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_PLATELEGS_G_2593, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_PLATESKIRT_G_3473, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_KITESHIELD_G_2597, 1, 1, DropFrequency.UNCOMMON),
//black h helms
new ChanceItem(Items.BLACK_HELM_H1_10306, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_HELM_H2_10308, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_HELM_H3_10310, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_HELM_H4_10312, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_HELM_H5_10314, 1, 1, DropFrequency.UNCOMMON),
//black h shields
new ChanceItem(Items.BLACK_SHIELDH1_7332, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_SHIELDH2_7338, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_SHIELDH3_7344, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_SHIELDH4_7350, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_SHIELDH5_7356, 1, 1, DropFrequency.UNCOMMON),
// highway
// man
// mask
new ChanceItem(7392, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.HIGHWAYMAN_MASK_2631, 1, 1, DropFrequency.UNCOMMON),
// wizard t
new ChanceItem(7396, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7388, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7390, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.WIZARD_ROBE_T_7392, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.WIZARD_HAT_T_7396, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLUE_SKIRT_T_7388, 1, 1, DropFrequency.UNCOMMON),
// wizard
// g
new ChanceItem(7386, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7394, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7362, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.WIZARD_ROBE_G_7390, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLUE_SKIRT_G_7386, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.WIZARD_HAT_G_7394, 1, 1, DropFrequency.UNCOMMON),
// studded
// g
new ChanceItem(7366, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7364, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.STUDDED_BODY_G_7362, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.STUDDED_CHAPS_G_7366, 1, 1, DropFrequency.UNCOMMON),
// studded
// t
new ChanceItem(7368, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10404, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.STUDDED_BODY_T_7364, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.STUDDED_CHAPS_T_7368, 1, 1, DropFrequency.UNCOMMON),
// red
// ele
// shirt
new ChanceItem(10406, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10424, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10426, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10408, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RED_ELE_SHIRT_10404, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RED_ELE_LEGS_10406, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RED_ELE_BLOUSE_10424, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RED_ELE_SKIRT_10426, 1, 1, DropFrequency.UNCOMMON),
// blue
// ele
// shirt
new ChanceItem(10410, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10428, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10430, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10412, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLUE_ELE_SHIRT_10408, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLUE_ELE_LEGS_10410, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLUE_ELE_BLOUSE_10428, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLUE_ELE_SKIRT_10430, 1, 1, DropFrequency.UNCOMMON),
// green
// ele
// shirt
new ChanceItem(10414, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10432, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10434, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10316, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GREEN_ELE_SHIRT_10412, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.GREEN_ELE_LEGS_10414, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.GREEN_ELE_BLOUSE_10432, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.GREEN_ELE_SKIRT_10434, 1, 1, DropFrequency.UNCOMMON),
// bob
// the
// cat
new ChanceItem(10318, 1, 1, DropFrequency.RARE),
new ChanceItem(10320, 1, 1, DropFrequency.RARE),
new ChanceItem(10322, 1, 1, DropFrequency.RARE),
new ChanceItem(10324, 1, 1, DropFrequency.RARE),
new ChanceItem(10392, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.BOB_SHIRT_10316, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.BOB_SHIRT_10318, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.BOB_SHIRT_10320, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.BOB_SHIRT_10322, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.BOB_SHIRT_10324, 1, 1, DropFrequency.RARE),
// emote
// enhancers
new ChanceItem(10394, 1, 1, DropFrequency.RARE),
new ChanceItem(10396, 1, 1, DropFrequency.RARE),
new ChanceItem(10398, 1, 1, DropFrequency.RARE),
new ChanceItem(10366, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10458, 1, 1, DropFrequency.UNCOMMON),
// vestement
new ChanceItem(Items.A_POWDERED_WIG_10392, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.FLARED_TROUSERS_10394, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.PANTALOONS_10396, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SLEEPING_CAP_10398, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.AMULET_OF_MAGICT_10366, 1, 1, DropFrequency.UNCOMMON),
// vestment
// robes(sara,
// guthix,
// zammy)
new ChanceItem(10464, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10462, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10466, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10460, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10468, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(13095, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.SARADOMIN_ROBE_TOP_10458, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.SARADOMIN_ROBE_LEGS_10464, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.GUTHIX_ROBE_TOP_10462, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.GUTHIX_ROBE_LEGS_10466, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ZAMORAK_ROBE_TOP_10460, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ZAMORAK_ROBE_LEGS_10468, 1, 1, DropFrequency.UNCOMMON),
// black
// cane
new ChanceItem(13105, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.BLACK_CANE_13095, 1, 1, DropFrequency.UNCOMMON),
// spikey
// helmet
new ChanceItem(1077, 1, 1, DropFrequency.COMMON),
new ChanceItem(1089, 1, 1, DropFrequency.COMMON),
new ChanceItem(1107, 1, 1, DropFrequency.COMMON),
new ChanceItem(1125, 1, 1, DropFrequency.COMMON),
new ChanceItem(1151, 1, 1, DropFrequency.COMMON),
new ChanceItem(1165, 1, 1, DropFrequency.COMMON),
new ChanceItem(1179, 1, 1, DropFrequency.COMMON),
new ChanceItem(1195, 1, 1, DropFrequency.COMMON),
new ChanceItem(1217, 1, 1, DropFrequency.COMMON),
new ChanceItem(1283, 1, 1, DropFrequency.COMMON),
new ChanceItem(1297, 1, 1, DropFrequency.COMMON),
new ChanceItem(1313, 1, 1, DropFrequency.COMMON),
new ChanceItem(1327, 1, 1, DropFrequency.COMMON),
new ChanceItem(1341, 1, 1, DropFrequency.COMMON),
new ChanceItem(1361, 1, 1, DropFrequency.COMMON),
new ChanceItem(1367, 1, 1, DropFrequency.COMMON),
new ChanceItem(1426, 1, 1, DropFrequency.COMMON),
new ChanceItem(3098, 1, 1, DropFrequency.COMMON),
new ChanceItem(4821, 1, 1, DropFrequency.COMMON),
new ChanceItem(8779, 4, 38, DropFrequency.COMMON),
new ChanceItem(850, 1, 4, DropFrequency.COMMON),
new ChanceItem(334, 4, 19, DropFrequency.COMMON),
new ChanceItem(1169, 1, 1, DropFrequency.COMMON),
new ChanceItem(1059, 1, 1, DropFrequency.COMMON),
new ChanceItem(1061, 1, 1, DropFrequency.COMMON),
new ChanceItem(1063, 1, 1, DropFrequency.COMMON),
new ChanceItem(1095, 1, 1, DropFrequency.COMMON),
new ChanceItem(1129, 1, 1, DropFrequency.COMMON),
new ChanceItem(1167, 1, 1, DropFrequency.COMMON),
new ChanceItem(1131, 1, 1, DropFrequency.COMMON),
new ChanceItem(858, 1, 4, DropFrequency.COMMON),
new ChanceItem(330, 3, 23, DropFrequency.COMMON),
new ChanceItem(1441, 1, 3, DropFrequency.COMMON),
new ChanceItem(1443, 1, 3, DropFrequency.COMMON),
new ChanceItem(1270, 1, 3, DropFrequency.COMMON),
new ChanceItem(1097, 1, 1, DropFrequency.COMMON),
new ChanceItem(1133, 1, 1, DropFrequency.COMMON)),
new ChanceItem(Items.SPIKED_HELMET_13105, 1, 1, DropFrequency.RARE),
//comp bow
new ChanceItem(Items.WILLOW_COMP_BOW_10280, 1, 1, DropFrequency.UNCOMMON),
//other common crap
new ChanceItem(Items.BLACK_PLATELEGS_1077, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_PLATESKIRT_1089, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_CHAINBODY_1107, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_PLATEBODY_1125, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_MED_HELM_1151, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_FULL_HELM_1165, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_SQ_SHIELD_1179, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_KITESHIELD_1195, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_DAGGER_1217, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_SWORD_1283, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_LONGSWORD_1297, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_2H_SWORD_1313, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_SCIMITAR_1327, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_WARHAMMER_1341, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_AXE_1361, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_BATTLEAXE_1367, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_MACE_1426, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_CLAWS_3098, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_NAILS_4821, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.OAK_PLANK_8779, 4, 38, DropFrequency.COMMON),
new ChanceItem(Items.WILLOW_SHORTBOW_850, 1, 4, DropFrequency.COMMON),
new ChanceItem(Items.TROUT_334, 4, 19, DropFrequency.COMMON),
new ChanceItem(Items.COIF_1169, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.LEATHER_GLOVES_1059, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.LEATHER_BOOTS_1061, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.LEATHER_VAMBRACES_1063, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.LEATHER_CHAPS_1095, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.LEATHER_BODY_1129, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.LEATHER_COWL_1167, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.HARDLEATHER_BODY_1131, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.YEW_SHORTBOW_858, 1, 4, DropFrequency.COMMON),
new ChanceItem(Items.SALMON_330, 3, 23, DropFrequency.COMMON),
new ChanceItem(Items.EARTH_TALISMAN_1441, 1, 3, DropFrequency.COMMON),
new ChanceItem(Items.FIRE_TALISMAN_1443, 1, 3, DropFrequency.COMMON),
new ChanceItem(Items.STEEL_PICKAXE_1270, 1, 3, DropFrequency.COMMON),
new ChanceItem(Items.STUDDED_CHAPS_1097, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.STUDDED_BODY_1133, 1, 1, DropFrequency.COMMON)),
MEDIUM(new Item(2717), 1 << 16 | 6,
new ChanceItem(2605, 1, 1, DropFrequency.UNCOMMON),
// Trimmed
// addy
// shit
new ChanceItem(2599, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2601, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2603, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(3474, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2613, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2607, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2609, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(3475, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2611, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2579, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2647, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAM_FULL_HELMT_2605, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAM_PLATEBODY_T_2599, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAM_PLATELEGS_T_2601, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAM_KITESHIELD_T_2603, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAM_PLATESKIRT_T_3474, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAM_FULL_HELMG_2613, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAM_PLATEBODY_G_2607, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAM_PLATELEGS_G_2609, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAM_PLATESKIRT_G_3475, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAM_KITESHIELD_G_2611, 1, 1, DropFrequency.UNCOMMON),
// Headbands
new ChanceItem(2645, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2649, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2605, 1, 1, DropFrequency.UNCOMMON),
// addy
// trimmed
// shit
new ChanceItem(2599, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2601, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2603, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(3474, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2613, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2607, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2609, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(3475, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2611, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2577, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.BLACK_HEADBAND_2647, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RED_HEADBAND_2645, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BROWN_HEADBAND_2649, 1, 1, DropFrequency.UNCOMMON),
// Boots
new ChanceItem(2579, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2647, 1, 1, DropFrequency.UNCOMMON),
// Headbands
new ChanceItem(2645, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2649, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7319, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RANGER_BOOTS_2577, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.WIZARD_BOOTS_2579, 1, 1, DropFrequency.UNCOMMON),
// Boaters
new ChanceItem(7321, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7323, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7325, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7327, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7372, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RED_BOATER_7319, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ORANGE_BOATER_7321, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.GREEN_BOATER_7323, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLUE_BOATER_7325, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_BOATER_7327, 1, 1, DropFrequency.UNCOMMON),
// Trimmed
// Dragonhide
// shit
new ChanceItem(7380, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7370, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7378, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(13103, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(13097, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(13109, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.DHIDE_BODY_T_7372, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.DHIDE_CHAPS_T_7380, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.DHIDE_BODYG_7370, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.DHIDE_CHAPS_G_7378, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.PITH_HELMET_13103, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAMANT_CANE_13097, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.YEW_COMP_BOW_10282, 1, 1, DropFrequency.UNCOMMON),
// animal
// masks
new ChanceItem(13107, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(13111, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(13113, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(13115, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10364, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.PENGUIN_MASK_13109, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.SHEEP_MASK_13107, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BAT_MASK_13111, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.CAT_MASK_13113, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.WOLF_MASK_13115, 1, 1, DropFrequency.UNCOMMON),
// ammy
// of
// strength
// (t)
new ChanceItem(10420, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.STRENGTH_AMULETT_10364, 1, 1, DropFrequency.UNCOMMON),
// white ele
new ChanceItem(10422, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10400, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.WHITE_ELE_BLOUSE_10420, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.WHITE_ELE_SKIRT_10422, 1, 1, DropFrequency.UNCOMMON),
// black
// ele
new ChanceItem(10402, 1, 1, DropFrequency.RARE),
new ChanceItem(10416, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLACK_ELE_SHIRT_10400, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.BLACK_ELE_LEGS_10402, 1, 1, DropFrequency.RARE),
// purple
// ele
new ChanceItem(10418, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10436, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10438, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10296, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.PURPLE_ELE_SHIRT_10416, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.PURPLE_ELE_LEGS_10418, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.PURPLE_ELE_BLOUSE_10436, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.PURPLE_ELE_SKIRT_10438, 1, 1, DropFrequency.UNCOMMON),
// addy
// heraldic
// helms
new ChanceItem(10298, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10300, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10302, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10304, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10666, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAMANT_HELM_H1_10296, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAMANT_HELM_H2_10298, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAMANT_HELM_H3_10300, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAMANT_HELM_H4_10302, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAMANT_HELM_H5_10304, 1, 1, DropFrequency.UNCOMMON),
// addy
// heraldic
// shield
new ChanceItem(10669, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10672, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10675, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10678, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10446, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAMANT_SHIELDH1_10666, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAMANT_SHIELDH2_10669, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAMANT_SHIELDH3_10672, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAMANT_SHIELDH4_10675, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAMANT_SHIELDH5_10678, 1, 1, DropFrequency.UNCOMMON),
// cloaks
new ChanceItem(10448, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10450, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(1161, 1, 1, DropFrequency.COMMON),
new ChanceItem(1123, 1, 1, DropFrequency.COMMON),
new ChanceItem(1073, 1, 1, DropFrequency.COMMON),
new ChanceItem(1091, 1, 1, DropFrequency.COMMON),
new ChanceItem(1199, 1, 1, DropFrequency.COMMON),
new ChanceItem(1183, 1, 1, DropFrequency.COMMON),
new ChanceItem(1111, 1, 1, DropFrequency.COMMON),
new ChanceItem(1211, 1, 1, DropFrequency.COMMON),
new ChanceItem(1271, 1, 1, DropFrequency.COMMON),
new ChanceItem(1287, 1, 1, DropFrequency.COMMON),
new ChanceItem(1301, 1, 1, DropFrequency.COMMON),
new ChanceItem(1317, 1, 1, DropFrequency.COMMON),
new ChanceItem(1357, 1, 1, DropFrequency.COMMON),
new ChanceItem(1371, 1, 1, DropFrequency.COMMON),
new ChanceItem(1430, 1, 1, DropFrequency.COMMON),
new ChanceItem(4823, 10, 40, DropFrequency.COMMON),
new ChanceItem(9183, 1, 1, DropFrequency.COMMON),
new ChanceItem(1393, 1, 1, DropFrequency.COMMON),
new ChanceItem(1099, 1, 1, DropFrequency.COMMON),
new ChanceItem(1135, 1, 1, DropFrequency.COMMON),
new ChanceItem(857, 1, 1, DropFrequency.COMMON),
new ChanceItem(8781, 10, 43, DropFrequency.COMMON),
new ChanceItem(374, 6, 23, DropFrequency.COMMON),
new ChanceItem(380, 15, 43, DropFrequency.COMMON),
new ChanceItem(10452, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10454, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10456, 1, 1, DropFrequency.UNCOMMON)),
new ChanceItem(Items.SARADOMIN_CLOAK_10446, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.GUTHIX_CLOAK_10448, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ZAMORAK_CLOAK_10450, 1, 1, DropFrequency.UNCOMMON),
//mitres
new ChanceItem(Items.SARADOMIN_MITRE_10452, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.GUTHIX_MITRE_10454, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ZAMORAK_MITRE_10456, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ADAMANT_FULL_HELM_1161, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_PLATEBODY_1123, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_PLATELEGS_1073, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_PLATESKIRT_1091, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_KITESHIELD_1199, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_SQ_SHIELD_1183, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_CHAINBODY_1111, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_DAGGER_1211, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_PICKAXE_1271, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_SWORD_1287, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_LONGSWORD_1301, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_2H_SWORD_1317, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_AXE_1357, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_BATTLEAXE_1371, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_MACE_1430, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANTITE_NAILS_4823, 10, 40, DropFrequency.COMMON),
new ChanceItem(Items.ADAMANT_CROSSBOW_9183, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.FIRE_BATTLESTAFF_1393, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.GREEN_DHIDE_CHAPS_1099, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.GREEN_DHIDE_BODY_1135, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.YEW_SHORTBOW_857, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.TEAK_PLANK_8781, 10, 43, DropFrequency.COMMON),
new ChanceItem(Items.SWORDFISH_374, 6, 23, DropFrequency.COMMON),
new ChanceItem(Items.LOBSTER_380, 15, 43, DropFrequency.COMMON)),
HARD(new Item(2720), 1 << 16 | 8,
new ChanceItem(13101, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(13099, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10470, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10472, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10474, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10440, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10442, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10444, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2628, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.MAGIC_COMP_BOW_10284, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.TOP_HAT_13101, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_CANE_13099, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.SARADOMIN_STOLE_10470, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.GUTHIX_STOLE_10472, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ZAMORAK_STOLE_10474, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.SARADOMIN_CROZIER_10440, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.GUTHIX_CROZIER_10442, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ZAMORAK_CROZIER_10444, 1, 1, DropFrequency.UNCOMMON),
// Trimmed
// rune
// shit
new ChanceItem(2623, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2625, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2629, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2619, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(3477, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2615, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2617, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2628, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2628, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(3476, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2621, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2673, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_FULL_HELM_T_2627, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_PLATEBODY_T_2623, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_PLATELEGS_T_2625, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_PLATESKIRT_T_3477, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_KITESHIELD_T_2629, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_FULL_HELMG_2619, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_PLATEBODY_G_2615, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_PLATELEGS_G_2617, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_PLATESKIRT_G_3476, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_KITESHIELD_G_2621, 1, 1, DropFrequency.UNCOMMON),
// God
// armour
// shit
new ChanceItem(2669, 1, 1, DropFrequency.RARE),
new ChanceItem(2671, 1, 1, DropFrequency.RARE),
new ChanceItem(3480, 1, 1, DropFrequency.RARE),
new ChanceItem(2675, 1, 1, DropFrequency.RARE),
new ChanceItem(2657, 1, 1, DropFrequency.RARE),
new ChanceItem(2653, 1, 1, DropFrequency.RARE),
new ChanceItem(2655, 1, 1, DropFrequency.RARE),
new ChanceItem(2659, 1, 1, DropFrequency.RARE),
new ChanceItem(2665, 1, 1, DropFrequency.RARE),
new ChanceItem(2661, 1, 1, DropFrequency.RARE),
new ChanceItem(3478, 1, 1, DropFrequency.RARE),
new ChanceItem(2663, 1, 1, DropFrequency.RARE),
new ChanceItem(2667, 1, 1, DropFrequency.RARE),
new ChanceItem(3479, 1, 1, DropFrequency.RARE),
new ChanceItem(10286, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_FULL_HELM_2673, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_PLATEBODY_2669, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_PLATELEGS_2671, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_PLATESKIRT_3480, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_KITESHIELD_2675, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_FULL_HELM_2657, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_PLATEBODY_2653, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_PLATELEGS_2655, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_PLATESKIRT_3478, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_KITESHIELD_2659, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SARADOMIN_FULL_HELM_2665, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SARADOMIN_PLATEBODY_2661, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SARADOMIN_PLATELEGS_2663, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SARADOMIN_PLATESKIRT_3479, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SARADOMIN_KITESHIELD_2667, 1, 1, DropFrequency.RARE),
// heraldic
// shit
new ChanceItem(10667, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10288, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10670, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10290, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10673, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10292, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10676, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10294, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10679, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7376, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_HELM_H1_10286, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_SHIELDH1_10667, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_HELM_H2_10288, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_SHIELDH2_10670, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_HELM_H3_10290, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_SHIELDH3_10673, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_HELM_H4_10292, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_SHIELDH4_10676, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_HELM_H5_10294, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.RUNE_SHIELDH5_10679, 1, 1, DropFrequency.UNCOMMON),
// Blue
// dragonhide
// trimmed
new ChanceItem(7384, 1, 1, DropFrequency.COMMON),
new ChanceItem(7374, 1, 1, DropFrequency.COMMON),
new ChanceItem(7382, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.DHIDE_BODY_T_7376, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.DHIDE_CHAPS_T_7384, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.DHIDE_BODY_G_7374, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.DHIDE_CHAPS_G_7382, 1, 1, DropFrequency.COMMON),
// God
// dhide
new ChanceItem(10368, 1, 1, DropFrequency.RARE),
new ChanceItem(10370, 1, 1, DropFrequency.RARE),
new ChanceItem(10372, 1, 1, DropFrequency.RARE),
new ChanceItem(10376, 1, 1, DropFrequency.RARE),
new ChanceItem(10378, 1, 1, DropFrequency.RARE),
new ChanceItem(10380, 1, 1, DropFrequency.RARE),
new ChanceItem(10384, 1, 1, DropFrequency.RARE),
new ChanceItem(10386, 1, 1, DropFrequency.RARE),
new ChanceItem(10388, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_COIF_10374, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_BRACERS_10368, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_DHIDE_10370, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_CHAPS_10372, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_COIF_10382, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_BRACERS_10376, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_DRAGONHIDE_10378, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_CHAPS_10380, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SARADOMIN_COIF_10390, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SARADOMIN_BRACERS_10384, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SARADOMIN_DHIDE_10386, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SARADOMIN_CHAPS_10388, 1, 1, DropFrequency.RARE),
// Hats
new ChanceItem(2651, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2581, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(2639, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.PIRATES_HAT_2651, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ROBIN_HOOD_HAT_2581, 1, 1, DropFrequency.UNCOMMON),
// Cavaliers
new ChanceItem(2641, 1, 1, DropFrequency.COMMON),
new ChanceItem(2643, 1, 1, DropFrequency.COMMON),
new ChanceItem(1163, 1, 1, DropFrequency.COMMON),
new ChanceItem(1127, 1, 1, DropFrequency.COMMON),
new ChanceItem(1079, 1, 1, DropFrequency.COMMON),
new ChanceItem(1093, 1, 1, DropFrequency.COMMON),
new ChanceItem(1201, 1, 1, DropFrequency.COMMON),
new ChanceItem(1185, 1, 1, DropFrequency.COMMON),
new ChanceItem(1213, 1, 1, DropFrequency.COMMON),
new ChanceItem(1275, 1, 1, DropFrequency.COMMON),
new ChanceItem(1289, 1, 1, DropFrequency.COMMON),
new ChanceItem(1303, 1, 1, DropFrequency.COMMON),
new ChanceItem(1319, 1, 1, DropFrequency.COMMON),
new ChanceItem(1359, 1, 1, DropFrequency.COMMON),
new ChanceItem(1373, 1, 1, DropFrequency.COMMON),
new ChanceItem(1432, 1, 1, DropFrequency.COMMON),
new ChanceItem(4824, 10, 43, DropFrequency.COMMON),
new ChanceItem(9144, 6, 23, DropFrequency.COMMON),
new ChanceItem(9185, 1, 1, DropFrequency.COMMON),
new ChanceItem(1747, 1, 1, DropFrequency.COMMON),
new ChanceItem(2503, 1, 1, DropFrequency.COMMON),
new ChanceItem(861, 1, 2, DropFrequency.COMMON),
new ChanceItem(859, 1, 2, DropFrequency.COMMON),
new ChanceItem(8783, 6, 27, DropFrequency.COMMON),
new ChanceItem(380, 16, 38, DropFrequency.COMMON),
new ChanceItem(386, 7, 32, DropFrequency.COMMON),
new ChanceItem(10382, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10374, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(10389, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7398, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7399, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(7400, 1, 1, DropFrequency.UNCOMMON)),
new ChanceItem(Items.TAN_CAVALIER_2639, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.DARK_CAVALIER_2641, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_CAVALIER_2643, 1, 1, DropFrequency.COMMON),
//rune crap
new ChanceItem(Items.RUNE_FULL_HELM_1163, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_PLATEBODY_1127, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_PLATELEGS_1079, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_PLATESKIRT_1093, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_KITESHIELD_1201, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_SQ_SHIELD_1185, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_DAGGER_1213, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_PICKAXE_1275, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_SWORD_1289, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_LONGSWORD_1303, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_2H_SWORD_1319, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_AXE_1359, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_BATTLEAXE_1373, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_MACE_1432, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_NAILS_4824, 10, 43, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_BOLTS_9144, 6, 23, DropFrequency.COMMON),
new ChanceItem(Items.RUNE_CROSSBOW_9185, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_DHIDE_CHAPS_2497, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.BLACK_DHIDE_BODY_2503, 1, 1, DropFrequency.COMMON),
new ChanceItem(Items.MAGIC_SHORTBOW_861, 1, 2, DropFrequency.COMMON),
new ChanceItem(Items.MAGIC_LONGBOW_859, 1, 2, DropFrequency.COMMON),
//planks
new ChanceItem(Items.MAHOGANY_PLANK_8783, 6, 27, DropFrequency.COMMON),
//food
new ChanceItem(Items.LOBSTER_380, 16, 38, DropFrequency.COMMON),
new ChanceItem(Items.SHARK_386, 7, 32, DropFrequency.COMMON),
//enchanted robes
new ChanceItem(Items.ENCHANTED_ROBE_7398, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ENCHANTED_TOP_7399, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ENCHANTED_HAT_7400, 1, 1, DropFrequency.UNCOMMON)),
;
@@ -396,37 +400,29 @@ public enum ClueLevel {
* The default rewards.
*/
private static final ChanceItem[] DEFAULT_REWARDS = new ChanceItem[] {
new ChanceItem(995, 500, 7000, DropFrequency.COMMON),
new ChanceItem(10326, 15, 40, DropFrequency.UNCOMMON),
new ChanceItem(7329, 15, 40, DropFrequency.UNCOMMON),
new ChanceItem(7331, 15, 40, DropFrequency.UNCOMMON),
new ChanceItem(7330, 15, 40, DropFrequency.UNCOMMON),
new ChanceItem(10327, 15, 40, DropFrequency.UNCOMMON),
new ChanceItem(10476, 1, 27, DropFrequency.UNCOMMON),
new ChanceItem(556, 1, 228, DropFrequency.COMMON),
new ChanceItem(554, 1, 228, DropFrequency.COMMON),
new ChanceItem(557, 1, 228, DropFrequency.COMMON),
new ChanceItem(557, 1, 228, DropFrequency.COMMON),
new ChanceItem(1694, 1, 1, DropFrequency.RARE),
new ChanceItem(1696, 1, 1, DropFrequency.RARE),
new ChanceItem(1698, 1, 1, DropFrequency.RARE),
new ChanceItem(1700, 1, 1, DropFrequency.RARE),
new ChanceItem(1702, 1, 1, DropFrequency.RARE),
new ChanceItem(847, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(855, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(859, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(3827, 1, 1, DropFrequency.RARE),
new ChanceItem(3828, 1, 1, DropFrequency.RARE),
new ChanceItem(3829, 1, 1, DropFrequency.RARE),
new ChanceItem(3830, 1, 1, DropFrequency.RARE),
new ChanceItem(3831, 1, 1, DropFrequency.RARE),
new ChanceItem(3832, 1, 1, DropFrequency.RARE),
new ChanceItem(3833, 1, 1, DropFrequency.RARE),
new ChanceItem(3834, 1, 1, DropFrequency.RARE),
new ChanceItem(3835, 1, 1, DropFrequency.RARE),
new ChanceItem(3836, 1, 1, DropFrequency.RARE),
new ChanceItem(3837, 1, 1, DropFrequency.RARE),
new ChanceItem(3838, 1, 1, DropFrequency.RARE)
new ChanceItem(Items.COINS_995, 500, 7000, DropFrequency.COMMON),
new ChanceItem(Items.PURPLE_FIRELIGHTER_10326, 15, 40, DropFrequency.UNCOMMON),
new ChanceItem(Items.RED_FIRELIGHTER_7329, 15, 40, DropFrequency.UNCOMMON),
new ChanceItem(Items.BLUE_FIRELIGHTER_7331, 15, 40, DropFrequency.UNCOMMON),
new ChanceItem(Items.GREEN_FIRELIGHTER_7330, 15, 40, DropFrequency.UNCOMMON),
new ChanceItem(Items.WHITE_FIRELIGHTER_10327, 15, 40, DropFrequency.UNCOMMON),
new ChanceItem(Items.PURPLE_SWEETS_10476, 1, 27, DropFrequency.UNCOMMON),
new ChanceItem(Items.AIR_RUNE_556, 1, 228, DropFrequency.COMMON),
new ChanceItem(Items.FIRE_RUNE_554, 1, 228, DropFrequency.COMMON),
new ChanceItem(Items.EARTH_RUNE_557, 1, 228, DropFrequency.COMMON),
new ChanceItem(Items.WATER_RUNE_555, 1, 228, DropFrequency.COMMON),
new ChanceItem(Items.SARADOMIN_PAGE_1_3827, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SARADOMIN_PAGE_2_3828, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SARADOMIN_PAGE_3_3829, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.SARADOMIN_PAGE_4_3830, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_PAGE_1_3831, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_PAGE_2_3832, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_PAGE_3_3833, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.ZAMORAK_PAGE_4_3834, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_PAGE_1_3835, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_PAGE_2_3836, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_PAGE_3_3837, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.GUTHIX_PAGE_4_3838, 1, 1, DropFrequency.RARE)
};
/**
@@ -434,26 +430,26 @@ public enum ClueLevel {
*/
private static final WeightedChanceItem[] SUPER_RARE = new WeightedChanceItem[] {
//1 Trimmed Glory = 50 = to hit 15%
new WeightedChanceItem(10362, 1, 1, 50),
new WeightedChanceItem(Items.AMULET_OF_GLORYT_10362, 1, 1, 50),
//5 Gilded Items = 150 = to hit 9%
new WeightedChanceItem(3486, 1, 1, 30),
new WeightedChanceItem(3481, 1, 1, 30),
new WeightedChanceItem(3483, 1, 1, 30),
new WeightedChanceItem(3485, 1, 1, 30),
new WeightedChanceItem(3488, 1, 1, 30),
new WeightedChanceItem(Items.GILDED_FULL_HELM_3486, 1, 1, 30),
new WeightedChanceItem(Items.GILDED_PLATEBODY_3481, 1, 1, 30),
new WeightedChanceItem(Items.GILDED_PLATELEGS_3483, 1, 1, 30),
new WeightedChanceItem(Items.GILDED_PLATESKIRT_3485, 1, 1, 30),
new WeightedChanceItem(Items.GILDED_KITESHIELD_3488, 1, 1, 30),
//12 3rd Age = 120 = to hit 3%
new WeightedChanceItem(10330, 1, 1, 10),
new WeightedChanceItem(10332, 1, 1, 10),
new WeightedChanceItem(10334, 1, 1, 10),
new WeightedChanceItem(10336, 1, 1, 10),
new WeightedChanceItem(10338, 1, 1, 10),
new WeightedChanceItem(10340, 1, 1, 10),
new WeightedChanceItem(10342, 1, 1, 10),
new WeightedChanceItem(10344, 1, 1, 10),
new WeightedChanceItem(10346, 1, 1, 10),
new WeightedChanceItem(10348, 1, 1, 10),
new WeightedChanceItem(10350, 1, 1, 10),
new WeightedChanceItem(10352, 1, 1, 10) };
new WeightedChanceItem(Items.THIRD_AGE_RANGE_TOP_10330, 1, 1, 10),
new WeightedChanceItem(Items.THIRD_AGE_RANGE_LEGS_10332, 1, 1, 10),
new WeightedChanceItem(Items.THIRD_AGE_RANGE_COIF_10334, 1, 1, 10),
new WeightedChanceItem(Items.THIRD_AGE_VAMBRACES_10336, 1, 1, 10),
new WeightedChanceItem(Items.THIRD_AGE_ROBE_TOP_10338, 1, 1, 10),
new WeightedChanceItem(Items.THIRD_AGE_ROBE_10340, 1, 1, 10),
new WeightedChanceItem(Items.THIRD_AGE_MAGE_HAT_10342, 1, 1, 10),
new WeightedChanceItem(Items.THIRD_AGE_AMULET_10344, 1, 1, 10),
new WeightedChanceItem(Items.THIRD_AGE_PLATELEGS_10346, 1, 1, 10),
new WeightedChanceItem(Items.THIRD_AGE_PLATEBODY_10348, 1, 1, 10),
new WeightedChanceItem(Items.THIRD_AGE_FULL_HELMET_10350, 1, 1, 10),
new WeightedChanceItem(Items.THIRD_AGE_KITESHIELD_10352, 1, 1, 10) };
/**
* The casket.
@@ -2,7 +2,9 @@ package core.game.interaction.city;
import api.ContentAPI;
import core.cache.def.impl.SceneryDefinition;
import core.game.component.Component;
import core.game.content.global.action.ClimbActionHandler;
import core.game.content.global.action.DoorActionHandler;
import core.game.interaction.OptionHandler;
import core.game.node.Node;
import core.game.node.entity.player.Player;
@@ -29,8 +31,12 @@ public final class EdgevilleNodePlugin extends OptionHandler {
SceneryDefinition.forId(30806).getHandlers().put("option:take-seed", this);
SceneryDefinition.forId(12265).getHandlers().put("option:climb", this);
SceneryDefinition.forId(12266).getHandlers().put("option:open", this);
//Dungeon Wilderness gates
SceneryDefinition.forId(29319).getHandlers().put("option:open", this);
SceneryDefinition.forId(29320).getHandlers().put("option:open", this);
SceneryDefinition.forId(12266).getHandlers().put("option:open", this);
SceneryDefinition.forId(26933).getHandlers().put("option:open", this);
SceneryDefinition.forId(26934).getHandlers().put("option:close", this);
SceneryDefinition.forId(26934).getHandlers().put("option:climb-down", this);
@@ -72,6 +78,19 @@ public final class EdgevilleNodePlugin extends OptionHandler {
ContentAPI.sendMessage(player, "You climb down through the trapdoor...");
ClimbActionHandler.climbLadder(player, (Scenery) node, option);
}
break;
case 29319:
case 29320: // Edgeville Dungeon wilderness entrance
if (option.equalsIgnoreCase("open") && player.getLocation().getY() < 9918) {
Location endLocation = new Location(player.getLocation().getX(),player.getLocation().getY()+1);
player.getInterfaceManager().open(new Component(382));
player.setAttribute("wildy_gate", node);
player.setAttribute("wildy_gate_loc",endLocation);
}
else{ // Leaving the wilderness
Location endLocation = new Location(player.getLocation().getX(),player.getLocation().getY()-1);
DoorActionHandler.handleAutowalkDoor(player, (Scenery) node,endLocation);
}
}
return true;
}
@@ -23,8 +23,8 @@ public class NewsPaperPlugin extends OptionHandler {
player.getInterfaceManager().open(new Component(530));
final String page1 = "Varrock gets Makeover! The city of Varrock is the latest recipient of a complete makeover. When interviewed, King Roald said, 'In order to keep visitors coming to see the sights of our beautiful capital, we felt that tidying-up the city would be more effective than just issuing a decree - make sure you visit the new museum while you are here.'";
final String page2 = "Obituaries Goblin-Died Giant Rat-Died Unicorn-Died Varrock Guard-Died Varrock Guard-Died Bear-Died. Classifieds.";
player.getPacketDispatch().sendString(page1, 530, 2);
player.getPacketDispatch().sendString(page2, 530, 4);
player.getPacketDispatch().sendString(page1, 530, 7);
player.getPacketDispatch().sendString(page2, 530, 8);
return true;
} else
player.getDialogueInterpreter().open(70099, "Come to the Al Kharid Market place! Highquality", "produce at low, low prices! Show this flyer to a", "merchant for money off your next purchase,", "courtesy of Ali Morrisane!");
@@ -3,6 +3,7 @@ package core.game.interaction.object.wildyditch;
import core.game.component.Component;
import core.game.component.ComponentDefinition;
import core.game.component.ComponentPlugin;
import core.game.content.global.action.DoorActionHandler;
import core.game.node.entity.impl.ForceMovement;
import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.audio.Audio;
@@ -35,7 +36,10 @@ public final class WildernessInterfacePlugin extends ComponentPlugin {
if (button != 18) {
return true;
}
handleDitch(player);
if (player.getAttribute("wildy_ditch") != null)
handleDitch(player);
else if(player.getAttribute("wildy_gate") != null)
handleGate(player);
return true;
}
@@ -45,9 +49,6 @@ public final class WildernessInterfacePlugin extends ComponentPlugin {
*/
public static void handleDitch(final Player player) {
Scenery ditch = player.getAttribute("wildy_ditch");
if (ditch == null) {
return;
}
player.removeAttribute("wildy_ditch");
Location l = ditch.getLocation();
int x = player.getLocation().getX();
@@ -71,4 +72,15 @@ public final class WildernessInterfacePlugin extends ComponentPlugin {
ActivityManager.register(new BountyHunterActivity(CraterType.HIGH_LEVEL));
}*/
}
public static void handleGate(final Player player){
Scenery gate = player.getAttribute("wildy_gate");
Location endLocation = player.getAttribute("wildy_gate_loc");
// Cleanup
player.removeAttribute("wildy_gate");
player.removeAttribute("wildy_gate_loc");
// Move player through gate/door
DoorActionHandler.handleAutowalkDoor(player,gate,endLocation);
}
}
@@ -31,6 +31,7 @@ import core.game.world.update.flag.npc.NPCFaceLocation;
import core.game.world.update.flag.npc.NPCForceChat;
import core.game.world.update.flag.npc.NPCSwitchId;
import core.tools.RandomFunction;
import rs09.game.content.global.GlobalKillCounter;
import rs09.game.content.jobs.JobManager;
import rs09.game.node.entity.combat.CombatSwingHandler;
import rs09.game.system.config.NPCConfigParser;
@@ -534,6 +535,7 @@ public class NPC extends Entity {
Player p = !(killer instanceof Player) ? null : (Player) killer;
if (p != null) {
p.incrementAttribute("/save:" + STATS_BASE + ":" + STATS_ENEMIES_KILLED);
GlobalKillCounter.incrementKills(p, originalId);
}
handleDrops(p, killer);
if (!isRespawn()) {
@@ -1,5 +1,6 @@
package core.game.node.entity.npc.drop;
import api.ContentAPI;
import core.cache.def.impl.NPCDefinition;
import core.game.content.global.Bones;
import core.game.ge.GrandExchangeDatabase;
@@ -17,6 +18,7 @@ import core.tools.StringUtils;
import rs09.game.ai.AIPlayer;
import rs09.game.ai.AIRepository;
import rs09.game.ai.general.GeneralBotCreator;
import rs09.game.content.global.GlobalKillCounter;
import rs09.game.content.global.NPCDropTable;
import rs09.game.ge.OfferManager;
import rs09.game.system.config.ItemConfigParser;
@@ -111,9 +113,7 @@ public final class NPCDropTables {
}
return;
}
if (item.getDefinition().getConfiguration(ItemConfigParser.RARE_ITEM, false)) {
Repository.sendNews(player.getUsername() + " has just received: " + item.getAmount() + " x " + item.getName() + ".");
}
ContentAPI.announceIfRare(player, item);
if(item.getId() == 6199 && player instanceof Player){
player.sendMessage("<col=990000>A mystery box has fallen on the ground.</col>");
}
@@ -1,5 +1,7 @@
package core.game.node.entity.npc.familiar;
import core.game.node.entity.skill.SkillBonus;
import core.game.node.entity.skill.Skills;
import core.game.node.entity.skill.summoning.familiar.Familiar;
import core.game.node.entity.skill.summoning.familiar.FamiliarSpecial;
import core.game.node.entity.combat.equipment.WeaponInterface;
@@ -27,6 +29,7 @@ public class LavaTitanNPC extends Familiar {
*/
public LavaTitanNPC(Player owner, int id) {
super(owner, id, 6100, 12788, 4, WeaponInterface.STYLE_AGGRESSIVE);
boosts.add(new SkillBonus(Skills.MINING, 10));
}
@Override
@@ -98,7 +98,7 @@ public enum DiaryType {
"Spin a bowl on the pottery wheel and fire it in the oven in<br><br>Barbarian Village",
"Enter Edgeville Dungeon using the entrance to the south of<br><br>Edgeville",
"Move your player-owned house portal to a different location<br><br>using the Varrock estate agent",
"Speak to Haig Halen after obtaining at least 50 kudos", //TODO need to implement kudos
"Speak to Haig Halen after obtaining at least 50 quest points", //TODO need to changes this back to kudos when implemented
"Enter the Earth Altar using an earth tiara or talisman",
"Have Elsie tell you a story",
"Mine some limestone near Paterdomus, the temple to the east<br><br>of Varrock",
@@ -1,16 +1,18 @@
package core.game.node.entity.skill.runecrafting;
import core.game.container.impl.EquipmentContainer;
import core.game.node.entity.skill.SkillPulse;
import core.game.node.entity.skill.Skills;
import core.game.node.entity.impl.Animator.Priority;
import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.diary.DiaryType;
import core.game.node.entity.skill.SkillPulse;
import core.game.node.entity.skill.Skills;
import core.game.node.item.Item;
import rs09.game.world.GameWorld;
import core.game.world.update.flag.context.Animation;
import core.game.world.update.flag.context.Graphics;
import core.tools.RandomFunction;
import static rs09.game.node.entity.player.info.stats.StatAttributeKeysKt.STATS_BASE;
import static rs09.game.node.entity.player.info.stats.StatAttributeKeysKt.STATS_RC;
import rs09.game.world.GameWorld;
import java.util.ArrayList;
import java.util.Arrays;
@@ -176,6 +178,7 @@ public final class RuneCraftPulse extends SkillPulse<Item> {
if (player.getInventory().remove(item) && player.getInventory().hasSpaceFor(i)) {
player.getInventory().add(i);
player.incrementAttribute("/save:" + STATS_BASE + ":" + STATS_RC, amount);
player.getSkills().addExperience(Skills.RUNECRAFTING, rune.getExperience() * amount, true);
// Achievement Diary handling
@@ -195,6 +198,7 @@ public final class RuneCraftPulse extends SkillPulse<Item> {
}
} else {
if (player.getInventory().remove(item)) {
player.incrementAttribute("/save:" + STATS_BASE + ":" + STATS_RC, amount);
for (int i = 0; i < amount; i++) {
Rune rune = null;
while (rune == null) {
@@ -99,9 +99,6 @@ public final class StallThiefPulse extends SkillPulse<Scenery> {
if (stall == Stall.SILK_STALL) {
player.getSavedData().getGlobalData().setSilkSteal(System.currentTimeMillis() + 1800000);
}
if (stall == Stall.TEA_STALL && player.getLocation().withinDistance(new Location(3266, 3413, 0))) {
player.getAchievementDiaryManager().finishTask(player,DiaryType.VARROCK,0, 12);
}
if (node.isActive()) {
SceneryBuilder.replace(((Scenery) node), ((Scenery) node).transform(stall.getEmpty(node.getId())), stall.getDelay());
}
@@ -7,6 +7,7 @@ import core.game.node.entity.player.info.login.PlayerParser;
import rs09.Server;
import rs09.ServerConstants;
import rs09.ServerStore;
import rs09.game.content.global.GlobalKillCounter;
import rs09.game.ge.OfferManager;
import rs09.game.system.SystemLogger;
import rs09.game.world.repository.Repository;
@@ -91,6 +92,7 @@ public final class SystemTermination {
} catch (Exception ignored) {}
}
Repository.getDisconnectionQueue().update();
GlobalKillCounter.save();
GrandExchangeDatabase.save();
OfferManager.save();
SystemLogger.flushLogs();
+10
View File
@@ -35,7 +35,9 @@ import core.game.world.update.flag.chunk.AnimateObjectUpdateFlag
import core.game.world.update.flag.context.Animation
import core.game.world.update.flag.context.Graphics
import rs09.game.content.dialogue.DialogueFile
import rs09.game.content.global.GlobalKillCounter;
import rs09.game.system.SystemLogger
import rs09.game.system.config.ItemConfigParser;
import rs09.game.world.GameWorld
import rs09.game.world.GameWorld.Pulser
import rs09.game.world.repository.Repository
@@ -1254,4 +1256,12 @@ object ContentAPI {
is Graphics -> Graphics.send(gfx, location)
}
}
@JvmStatic
fun announceIfRare(player: Player, item: Item) {
if (item.definition.getConfiguration(ItemConfigParser.RARE_ITEM, false)) {
ContentAPI.sendNews("${player.username} has just received: ${item.amount} x ${item.name}.");
GlobalKillCounter.incrementRareDrop(player, item);
}
}
}
+2
View File
@@ -10,6 +10,7 @@ import core.tools.TimeStamp
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import rs09.game.content.global.GlobalKillCounter;
import rs09.game.ge.GEAutoStock
import rs09.game.system.SystemLogger
import rs09.game.system.config.ServerConfigParser
@@ -74,6 +75,7 @@ object Server {
startTime = System.currentTimeMillis()
val t = TimeStamp()
SystemLogger.logInfo("Initializing Server Store...")
GlobalKillCounter.init()
ServerStore.init()
SystemLogger.logInfo("Initialized ${ServerStore.counter} store files.")
GameWorld.prompt(true)
@@ -284,10 +284,16 @@ class Adventurer(val style: CombatStyle): Script() {
"no",
"We are no strangers to love",
"You know the rules and so do I",
"A full commitments what Im thinking of",
"You wouldnt get this from any other guy",
"A full commitment's what I'm thinking of",
"You wouldn't get this from any other guy",
"I just wanna tell you how I'm feeling",
"Gotta make you understand",
"Never gonna give you up",
"Never gonna let you down",
"Never gonna run around and desert you",
"Never gonna make you cry",
"Never gonna say goodbye",
"Never gonna tell a lie and hurt you",
"why",
"why",
"why",
@@ -309,7 +315,7 @@ class Adventurer(val style: CombatStyle): Script() {
"A blessing in disguise ${real.username}",
"Break a leg",
"Cut somebody some slack",
"Youre in the right place!",
"You're in the right place!",
"Thanks so much.",
"I really appreciate you ${real.username}",
"Excuse me ${real.username}?",
@@ -318,7 +324,7 @@ class Adventurer(val style: CombatStyle): Script() {
"How does that sound ${real.username}?",
"That sounds great ${real.username}.",
"Im learning English.",
"I dont understand.",
"I don't understand.",
"Could you repeat that please ${real.username}?",
"Could you please talk slower ${real.username}?",
"Thank you. That helps a lot.",
@@ -376,11 +382,11 @@ class Adventurer(val style: CombatStyle): Script() {
"bowdi boy",
"i love bowdi... sometimes",
"${real.username} = ${real.username}",
"Im bacon.. go on dad... say it",
"Im going to leave.",
"Im happy ${real.username}",
"Im not ready yet ${real.username}",
"Im very busy. I dont have time now.",
"I'm bacon.. go on dad... say it",
"I'm going to leave.",
"I'm happy ${real.username}",
"I'm not ready yet ${real.username}",
"I'm very busy. I don't have time now.",
"Is that enough ${real.username}?",
"I thought the clothes were cheaper ${real.username}",
"Ive been here for two days ${real.username}.",
@@ -395,16 +401,157 @@ class Adventurer(val style: CombatStyle): Script() {
"Very good, thanks ${real.username}",
"Your things are all here i think?",
"Long time no see ${real.username}",
"I couldnt agree more ${real.username}",
"I couldn't agree more ${real.username}",
"It cost me a fortune ${real.username}",
"I am dog tired",
"Dont take it personally",
"Dont take it personally",
"We will be having a good time",
"Same as always ${real.username}",
"No problem",
"Anyway I should get going ${real.username}",
"I cant help you there ${real.username}",
"I agree 100% ${real.username}"
"I agree 100% ${real.username}",
"I've gone mentally insane",
"My descent into madness is complete",
"Get real",
"Cry about it",
"Cope",
"Seethe",
"Yes mate",
"I am mentally deranged",
"I've gone past the point of insanity",
"I am beyond the point of no return",
"Sounds tricky.",
"Guthiiiiiiiiiiiiiiiiiiiiiiiiiiiiiixxx!!!!!!",
"530 gang for life",
"${real.username}, have you read the rules?",
"${real.username}, have you checked out the Discord?",
"why are the leprechauns moving?",
"I am beyond the point of no return!",
"Nothin' personnel, kid.",
"All your base are belong to us",
"May Guthix bring you balance.",
"May Guthix bring you balance.",
"May Guthix bring you balance.",
"Thy death was not in vain, for it brought some balance to the world. May Guthix bring you rest.",
"May you walk the path, and never fall, for Guthix walks beside thee on thy journey. May Guthix bring you peace.",
"All things must end, as all begin; Only Guthix knows the role thou must play. May Guthix bring you balance.",
"In life, in death, in joy, in sorrow: May thine experience show thee balance. May Guthix bring you balance.",
"Thou must do as thou must, no matter what. Thine actions bring balance to this world. May Guthix bring you balance.",
"The river flows, the sun ignites, May you stand with Guthix in thy fights. May Guthix bring you balance.",
"A journey of a single step, May take thee over a thousand miles. May Guthix bring you balance.",
"Zamorak give me strength!",
"Zamorak give me strength!",
"Zamorak give me strength!",
"May your bloodthirst never be sated, and may all your battles be glorious. Zamorak bring you strength.",
"There is no opinion that cannot be proven true...by crushing those who choose to disagree with it. Zamorak give me strength!",
"Battles are not lost and won; They simply remove the weak from the equation. Zamorak give me strength!",
"Those who fight, then run away, shame Zamorak with their cowardice. Zamorak give me strength!",
"Battle is by those who choose to disagree with it. Zamorak give me strength!",
"Strike fast, strike hard, strike true: The strength of Zamorak will be with you. Zamorak give me strength!",
"The weak deserve to die, so the strong may flourish. This is the creed of Zamorak.",
"This is Saradomin's wisdom.",
"This is Saradomin's wisdom.",
"This is Saradomin's wisdom.",
"Go in peace in the name of Saradomin; may his glory shine upon you like the sun.",
"Thy cause was false, thy skills did lack; See you in Lumbridge when you get back.",
"Protect your self, protect your friends. Mine is the glory that never ends. This is Saradomin's wisdom.",
"The darkness in life may be avoided, by the light of wisdom shining. This is Saradomin's wisdom.",
"Show love to your friends, and mercy to your enemies, and know that the wisdom of Saradomin will follow. This is Saradomin's wisdom.",
"A fight begun, when the cause is just, will prevail over all others. This is Saradomin's wisdom.",
"The currency of goodness is honour; It retains its value through scarcity. This is Saradomin's wisdom.",
"For Camelot!",
"Firmly grasp it!",
"My legs!",
"Build more farms.",
"B sale at Varrock ${real.username}, don't miss out!",
"Drop party follow me",
"Ryan where is barbass, you said two days Ryan",
"Barbass never",
"What da dog doin' doe?",
"A",
"Ae",
"Mof",
"Moth",
"Fluff",
"Bwuh",
"I'm literally just mothin' bro",
"Certified 2009scape classic.",
"Make sure to like, comment and subscribe ${real.username} it really helps",
"Real 2009scape hours!!! Murder that like if you up!!!!",
"W00t!",
"Owned!",
"Pwned!",
"Lol n00b",
"Epic ownage ${real.username}",
"Gielinor is a strange place, ${real.username}. Best have your wits about you.",
"Mad bloggers bro",
"Vibe check",
"Drip check",
"Uhuhuhuhuhuhuhuhu",
"Ahhhhhhhhhhhhhhhh",
"yall got any deez?",
"Deez nuts",
"When she give you that yoinky sploinky",
"Sir, this is a 2009scape.",
"Oh dear! You are dead!",
"Cor blimey, mate! What are ye doing in me pockets?",
"yeah i got funnies",
"read muv luv",
"Why doesn't she love me bros?",
"${real.username} is off the goop don't listen to the clown",
"do yall got laptops",
"cfunny play the alien warp sound effect",
"Ware to all whom doom hither, where cope is all yet constant.",
"Who wants to come GWD?",
"How do I make money?",
"Ironmen stand alone together!",
"based",
"where is she",
"*S N I I I I I I I I I F F F F F F F F F F F*",
"Hey ${real.username}, who was in Paris?",
"Huh whuh?",
"who's lone?",
"who *is* he?",
"Hi ${real.username}, I'm Dad!",
"anyone wanna play melty blood after I high alch these bows?",
"buru nyaaaa",
"Number 15, Taverley Dungeon Black Dragons.",
"House party at Rimmington! Host: ${real.username}!",
"Spending 200m! Trade me, no junk!",
"Surprise exam, ${real.username}!",
"Nice outfit ${real.username}, does it come in mens?",
"Nice outfit ${real.username}, does it come in womens?",
"Nice outfit ${real.username}, does it come in children's size 12?",
":)",
":D",
"die screaming",
"Only on Tuesdays",
"we stan 2009scape",
"There is no spoon",
"Where's the cow level?",
"Join 2009scape Clan Chat!",
"Join 2009scape Cc!",
"Chop chop!",
"Runescape rox my sox!!!!!!1",
"Type ::scripts for all 99s",
"Help I just died to Evil Chicken and I lost my stuff!",
"Can you fight Bandos in this game?",
"one bad gloop",
"${real.username} is not cute or funny",
"You have committed crimes against Gielinor and her people. What say you?",
"Barrows trauma",
"Uhuhuhuhuhu please Barrows give me the K top ahhhhhh",
"Selling rare lobby 1m",
"Rise and grind bloatscapers, let's get this bread",
"Nice",
"Sandwiches, ${real.username}!",
"What a grand and intoxicating innocence!",
"With this character's death, the thread of prophecy is severed.",
"You must gather your party before venturing forth.",
"Praise Andrew Gower",
"Please help me I can't stop playing 2009scape",
"Are you ignoring me, ${real.username}?!"
)
val current = LocalDateTime.now()
@@ -513,6 +660,7 @@ class Adventurer(val style: CombatStyle): Script() {
"I saw Kermit kissing santaaaa claus",
"You are a mean one, Mr. Grinch",
"Deck the hallsss",
"You doin' anything for Christmas, ${real.username}?",
"ITS BEGINNING TO LOOK A LOT LIKE CHRISTAAMASSSSS"
)
@@ -523,6 +671,8 @@ class Adventurer(val style: CombatStyle): Script() {
"1 more day!!!!!",
"Dont forget to put cookies and milk out tonight!!",
"${real.username} do you like christmas??",
"Dont peek at your presents! Its not Christmas yet!",
"Santa's coming tonight!!!! :)",
"Happy Christmas eve ${real.username} :)"
)
@@ -531,6 +681,9 @@ class Adventurer(val style: CombatStyle): Script() {
"What did you get for christmas ${real.username}?",
"ITS CHRISTMASSSS!!!",
"Christmas party time!!",
"Merry Christmas!!!",
"What presents did you get, ${real.username}?",
"36?! But last year.. last year I had 37!",
"${real.username} vibing with the christmas spirit",
"Cant believe its christmas!!",
"We need to have a christmas party ${real.username}!!",
@@ -549,7 +702,10 @@ class Adventurer(val style: CombatStyle): Script() {
"We should do something for New Years eve today ${real.username}!",
"Happy New Years Eve ${real.username}",
"1 More day left in 2021 thank god",
"Whats your New Years resolution ${real.username}?"
"Whats your New Years resolution ${real.username}?",
"Man this sucks, I'm working on New Years...",
"You doin' anything for New Years, ${real.username}?",
"Ok who's coming to mine to get on the piss?"
)
val NewYears = listOf(
@@ -557,7 +713,11 @@ class Adventurer(val style: CombatStyle): Script() {
"Its New Years Day ${real.username}!",
"HAPPY NEW YEAR ${real.username}!!!",
"2022 lets fucking gooooooo",
"What are your goals for 2022 ${real.username}?"
"What are your goals for 2022 ${real.username}?",
"I better call grandma! :)",
"Happy New Year!",
"Wooooooooooooooooooooooo!!!!",
"New year new me!"
)
val Valentines = listOf(
@@ -631,11 +791,66 @@ class Adventurer(val style: CombatStyle): Script() {
"Who else loves easter like i do??",
"${real.username} and i are going easter egg hunting",
"${real.username} and i are going to look for the easter bunny!!",
"I ate so much chocolate oh god my stomach",
"Mmmmmm choccies...",
"Where did Woah hide the stash of eggs?",
"Hint for anyone who sees this you must dig above eagles peak"
)
val Halloween = listOf(
"Trick or treat!!!",
"Boo! Hahahahaha!!",
"Have you got your costume on, ${real.username}?",
"How much candy did you get, ${real.username}?",
"Don't dead open inside",
"Costume party at my POH!! Follow me!",
"Trick, then!",
"Brrrainssssssss...",
"'Cause this is thriller, thriller night, and no one's gonna save you from the beast about to strike!",
"This is Hallowe'en, this is Hallowe'en, pumpkins scream in the dead of night!",
"This is Hallowe'en, everybody make a scene, Trick or treat till the neighbors gonna die of fright!",
"In this town we call home, everyone hail to the pumpkin song!",
"Watch out for Skeleton Jack!",
"The headless-what-man? Horse? Never heard of those.",
"Bring me their souls!",
"I'll take any sweets you don't want, ${real.username}",
"Whatever you do, don't come to Draynor Manor on this spooky night.",
"Ahhhh! ${real.username}, you scared me! :(",
"I'm making soup from some leftover pumpkins, want any?",
"I'm gonna be so sick from eating all these sweets...",
"Rise from the grave, my minions! Tis' Hallowe'en!",
"This Scream Fortress 2 update hits kinda different...",
"Nice costume Woah",
"Nice costume, ${real.username}!",
"Ooh, a piece of candy.",
"Time to join the skeleton war, ${real.username}.",
"Spooky scary skeletons!",
"Spooky scary skeletons!",
"Spooky scary skeletons!",
"Spooky scary skeletons, send shivers down your spine!",
"Shrieking skulls will shock your soul, seal your doom tonight!",
"Spooky scary skeletons, speak with such a screech!",
"You'll shake and shudder in surprise, when you hear these zombies shriek!",
"'Cause spooky scary skeletons, shout startling shrilly screams!",
"Spooky scary skeletons, will wake you with a boo!",
"*doot doot*"
)
when {
//Celebrates Halloween
formatted.contentEquals("2021-10-31") -> {
if (Random.nextBoolean()) {
val chat = Halloween.random()
bot.sendChat(chat)
bot.updateMasks.register(ChatFlag(ChatMessage(bot, chat, 0, 0)))
}else{
val chat = dialogue.random()
bot.sendChat(chat)
bot.updateMasks.register(ChatFlag(ChatMessage(bot, chat, 0, 0)))
}
}
//Celebrates lead up to Christmas!
until in 2..24 -> {
if (Random.nextBoolean()){
@@ -1,5 +1,6 @@
package rs09.game.content.activity.barrows
import api.ContentAPI
import core.game.component.Component
import core.game.container.access.InterfaceContainer
import core.game.content.global.BossKillCounter
@@ -93,6 +94,7 @@ object RewardChest {
player.interfaceManager.open(Component(Components.TRAIL_REWARD_364))
BossKillCounter.addtoBarrowsCount(player)
for(item in rewards){
ContentAPI.announceIfRare(player, item);
if(!player.inventory.add(item)){
GroundItemManager.create(item,player)
}
@@ -6,11 +6,13 @@ import rs09.game.content.ame.events.certer.CerterNPC
import rs09.game.content.ame.events.drilldemon.SeargentDamienNPC
import rs09.game.content.ame.events.evilchicken.EvilChickenNPC
import rs09.game.content.ame.events.sandwichlady.SandwichLadyRENPC
import rs09.game.content.ame.events.genie.GenieNPC
import rs09.game.content.global.WeightBasedTable
import rs09.game.content.global.WeightedItem
enum class RandomEvents(val npc: RandomEventNPC, val loot: WeightBasedTable? = null) {
SANDWICH_LADY(SandwichLadyRENPC()),
GENIE(GenieNPC()),
CERTER(CerterNPC(),WeightBasedTable.create(
WeightedItem(Items.COINS_995,1,100,2.0),
WeightedItem(Items.SPINACH_ROLL_1969,1,1,2.0),
@@ -0,0 +1,21 @@
package rs09.game.content.ame.events.genie
import api.ContentAPI
import core.game.content.dialogue.FacialExpression
import core.cache.def.impl.ItemDefinition
import core.game.component.Component
import core.game.node.entity.combat.ImpactHandler
import core.game.node.item.GroundItemManager
import core.game.node.item.Item
import rs09.game.content.dialogue.DialogueFile
import rs09.tools.END_DIALOGUE
class GenieDialogue : DialogueFile() {
override fun handle(componentID: Int, buttonID: Int) {
val assigned = player!!.getAttribute("genie:item",0)
npcl(FacialExpression.NEUTRAL, "Ah, so you are there, ${player!!.name.capitalize()}. I'm so glad you summoned me. Please take this lamp and make your wish.")
ContentAPI.addItemOrDrop(player!!, assigned)
player!!.antiMacroHandler.event?.terminate()
stage = END_DIALOGUE
}
}
@@ -0,0 +1,36 @@
package rs09.game.content.ame.events.genie
import core.game.node.entity.npc.NPC
import core.tools.RandomFunction
import org.rs09.consts.Items
import org.rs09.consts.NPCs
import rs09.game.content.ame.RandomEventNPC
import rs09.game.content.global.WeightBasedTable
class GenieNPC(override var loot: WeightBasedTable? = null) : RandomEventNPC(NPCs.GENIE_409) {
val phrases = arrayOf("Greetings, @name!","Ehem... Master @name?","Are you there, Master @name?","No one ignores me!")
var assigned_item = 0
val items = arrayOf(Items.LAMP_2528)
override fun tick() {
if(RandomFunction.random(1,15) == 5){
sendChat(phrases.random().replace("@name",player.name.capitalize()))
}
super.tick()
}
override fun init() {
super.init()
assignItem()
sendChat(phrases.random().replace("@name",player.name.capitalize()))
}
fun assignItem(){
assigned_item = items.random()
player.setAttribute("genie:item",assigned_item)
}
override fun talkTo(npc: NPC) {
player.dialogueInterpreter.open(GenieDialogue(),npc)
}
}
@@ -0,0 +1,107 @@
package rs09.game.content.global
import core.game.node.entity.player.Player
import rs09.game.system.SystemLogger
import java.io.File
import java.io.FileReader
import java.io.FileWriter
import org.json.simple.JSONArray
import org.json.simple.JSONObject
import org.json.simple.parser.JSONParser
import rs09.ServerConstants
import core.game.node.item.Item
object GlobalKillCounter {
val kills: HashMap<String, HashMap<Long, Long>> = HashMap()
val rare_drops: HashMap<String, HashMap<Long, Long>> = HashMap()
fun init() {
val file = File(ServerConstants.DATA_PATH + File.separator + "global_kill_stats.json")
if(!file.exists()) {
return
}
val reader = FileReader(file)
val parser = JSONParser()
try {
val data = parser.parse(reader) as JSONObject
val tmp_kills = data.get("kills")
populate(kills, tmp_kills)
val tmp_rare_drops = data.get("rare_drops")
populate(rare_drops, tmp_rare_drops)
} catch (e: Exception){
SystemLogger.logErr("Failed parsing ${file.name} - stack trace below.")
e.printStackTrace()
}
}
@JvmStatic
fun populate(field: HashMap<String, HashMap<Long, Long>>, obj: Any?) {
if(obj != null && obj is JSONObject) {
for((player, tmp_kc) in obj.asIterable()) {
if(player is String) {
val kc: HashMap<Long, Long> = HashMap()
for((npc_id, count) in (tmp_kc as JSONObject).asIterable()) {
kc.put(java.lang.Long.parseLong(npc_id as String), count as Long)
}
field.put(player, kc)
}
}
}
}
@JvmStatic
fun saveField(field: HashMap<String, HashMap<Long, Long>>): JSONObject {
val tmp_kills = JSONObject()
for((player, kc) in field.asIterable()) {
val tmp_kc = JSONObject()
for((id, count) in kc.asIterable()) {
tmp_kc.put(id, count)
}
tmp_kills.put(player, tmp_kc)
}
return tmp_kills
}
@JvmStatic
fun save() {
val data = JSONObject()
data.put("kills", saveField(kills))
data.put("rare_drops", saveField(rare_drops))
val file = File(ServerConstants.DATA_PATH + File.separator + "global_kill_stats.json")
FileWriter(file).use { it.write(data.toJSONString()); it.flush(); it.close() }
}
@JvmStatic
fun incrementKills(player: Player, npc_id: Int) {
val player_kills = kills.getOrPut(player.username, { HashMap() })
val old_amount = player_kills.getOrElse(npc_id.toLong(), { 0 })
player_kills.put(npc_id.toLong(), 1 + old_amount)
}
@JvmStatic
fun incrementRareDrop(player: Player, item: Item) {
val player_drops = rare_drops.getOrPut(player.username, { HashMap() })
val old_amount = player_drops.getOrElse(item.id.toLong(), { 0 })
player_drops.put(item.id.toLong(), item.amount + old_amount)
}
@JvmStatic
fun getKills(player: Player, npc_id: Int): Long {
return kills.getOrElse(player.username, { HashMap() }).getOrElse(npc_id.toLong(), { 0 })
}
@JvmStatic
fun getKills(player: Player, npc_ids: IntArray): Long {
var sum: Long = 0
for(npc_id in npc_ids) {
sum += getKills(player, npc_id)
}
return sum
}
@JvmStatic
fun getRareDrops(player: Player, item_id: Int): Long {
return rare_drops.getOrElse(player.username, { HashMap() }).getOrElse(item_id.toLong(), { 0 })
}
}
@@ -6,6 +6,7 @@ const val STATS_DEATHS = "deaths"
const val STATS_LOGS = "logs_chopped"
const val STATS_FISH = "fish_caught"
const val STATS_ROCKS = "rocks_mined"
const val STATS_RC = "essence_crafted"
const val STATS_ALKHARID_GATE = "alkharid_gate"
const val FISHING_TRAWLER_GAMES_WON = "fishing-trawler-games"
const val FISHING_TRAWLER_LEAKS_PATCHED = "fishing-trawler-leaks-patched"
@@ -4,10 +4,168 @@ import core.game.component.Component
import core.game.content.global.BossKillCounter
import core.game.node.entity.player.Player
import core.plugin.Initializable
import org.rs09.consts.Items;
import org.rs09.consts.NPCs;
import rs09.game.content.global.GlobalKillCounter;
import rs09.game.interaction.InterfaceListener
import rs09.game.system.command.Command
import rs09.game.system.command.sets.CommandSet
import rs09.game.world.repository.Repository
val TUROTH_IDS = intArrayOf(NPCs.TUROTH_1622, NPCs.TUROTH_1623, NPCs.TUROTH_1626, NPCs.TUROTH_1627, NPCs.TUROTH_1628, NPCs.TUROTH_1629, NPCs.TUROTH_1630)
val KURASK_IDS = intArrayOf(NPCs.KURASK_1608, NPCs.KURASK_1609, NPCs.KURASK_4229, NPCs.KURASK_7811)
val GARGOYLE_IDS = intArrayOf(NPCs.GARGOYLE_1610, NPCs.GARGOYLE_1827, NPCs.GARGOYLE_6389)
val SPIRITUAL_MAGE_IDS = intArrayOf(NPCs.SPIRITUAL_MAGE_6221, NPCs.SPIRITUAL_MAGE_6231, NPCs.SPIRITUAL_MAGE_6257, NPCs.SPIRITUAL_MAGE_6278)
val GREEN_DRAGON_IDS = intArrayOf(NPCs.GREEN_DRAGON_941, NPCs.GREEN_DRAGON_4677, NPCs.GREEN_DRAGON_4678, NPCs.GREEN_DRAGON_4679, NPCs.GREEN_DRAGON_4680, NPCs.BRUTAL_GREEN_DRAGON_5362)
val BLUE_DRAGON_IDS = intArrayOf(NPCs.BLUE_DRAGON_55, NPCs.BLUE_DRAGON_4681, NPCs.BLUE_DRAGON_4682, NPCs.BLUE_DRAGON_4683, NPCs.BLUE_DRAGON_4684, NPCs.BLUE_DRAGON_5178)
val RED_DRAGON_IDS = intArrayOf(NPCs.RED_DRAGON_53, NPCs.RED_DRAGON_4669, NPCs.RED_DRAGON_4670, NPCs.RED_DRAGON_4671, NPCs.RED_DRAGON_4672)
val BLACK_DRAGON_IDS = intArrayOf(NPCs.BLACK_DRAGON_54, NPCs.BLACK_DRAGON_4673, NPCs.BLACK_DRAGON_4674, NPCs.BLACK_DRAGON_4675, NPCs.BLACK_DRAGON_4676)
val BRONZE_DRAGON_IDS = intArrayOf(NPCs.BRONZE_DRAGON_1590)
val IRON_DRAGON_IDS = intArrayOf(NPCs.IRON_DRAGON_1591)
val STEEL_DRAGON_IDS = intArrayOf(NPCs.STEEL_DRAGON_1592, NPCs.STEEL_DRAGON_3590)
val MITHRIL_DRAGON_IDS = intArrayOf(NPCs.MITHRIL_DRAGON_5363, NPCs.MITHRIL_DRAGON_8424)
val SKELETAL_WYVERN_IDS = intArrayOf(NPCs.SKELETAL_WYVERN_3068, NPCs.SKELETAL_WYVERN_3069, NPCs.SKELETAL_WYVERN_3070, NPCs.SKELETAL_WYVERN_3071)
val SPACER = "<str> </str>";
val NUM_PAGES = 3
fun sendStats(player: Player, other: Player, page: Int){
prepareInterface(player, other, page)
val globalData = other.savedData.globalData
for(i in (68..97)) {
when(page) {
0 -> {
when(i) {
//Various stats
97 -> sendLine(player,"Easy Clues: ${other.treasureTrailManager.completedClues[0]}",i)
68 -> sendLine(player,"Medium Clues: ${other.treasureTrailManager.completedClues[1]}",i)
69 -> sendLine(player,"Hard Clues: ${other.treasureTrailManager.completedClues[2]}",i)
70 -> sendLine(player,SPACER,i)
71 -> sendLine(player,"Slayer Tasks: ${other.slayer.totalTasks}",i)
72 -> sendLine(player,"Quest Points: ${other.questRepository.points}",i)
73 -> sendLine(player,"Ironman Mode: ${other.ironmanManager.mode.name.toLowerCase()}",i)
74 -> sendLine(player,"Deaths: ${other.getAttribute("$STATS_BASE:$STATS_DEATHS",0)}",i)
75 -> sendLine(player,SPACER,i)
76 -> sendLine(player,"Logs Chopped: ${other.getAttribute("$STATS_BASE:$STATS_LOGS",0)}",i)
77 -> sendLine(player,"Rocks Mined: ${other.getAttribute("$STATS_BASE:$STATS_ROCKS",0)}",i)
78 -> sendLine(player,"Fish Caught: ${other.getAttribute("$STATS_BASE:$STATS_FISH",0)}",i)
79 -> sendLine(player, "Essence Crafted: ${other.getAttribute("$STATS_BASE:$STATS_RC",0)}", i)
//Boss KC
82 -> sendLine(player, "KBD KC: ${globalData.bossCounters.get(BossKillCounter.KING_BLACK_DRAGON.ordinal)}",i)
83 -> sendLine(player, "TDs KC: ${globalData.bossCounters.get(BossKillCounter.TORMENTED_DEMONS.ordinal)}",i)
84 -> sendLine(player, "Supreme KC: ${globalData.bossCounters.get(BossKillCounter.DAGANNOTH_SUPREME.ordinal)}",i)
85 -> sendLine(player, "Rex KC: ${globalData.bossCounters.get(BossKillCounter.DAGANNOTH_REX.ordinal)}",i)
86 -> sendLine(player, "Prime KC: ${globalData.bossCounters.get(BossKillCounter.DAGANNOTH_PRIME.ordinal)}",i)
87 -> sendLine(player, "Barrows KC: ${globalData.barrowsLoots}",i)
88 -> sendLine(player, "Chaos Ele: ${globalData.bossCounters.get(BossKillCounter.CHAOS_ELEMENTAL.ordinal)}",i)
89 -> sendLine(player, "Mole KC: ${globalData.bossCounters.get(BossKillCounter.GIANT_MOLE.ordinal)}",i)
90 -> sendLine(player, "Sara KC: ${globalData.bossCounters.get(BossKillCounter.SARADOMIN.ordinal)}",i)
91 -> sendLine(player, "Zammy KC: ${globalData.bossCounters.get(BossKillCounter.ZAMORAK.ordinal)}",i)
92 -> sendLine(player, "Bandos KC: ${globalData.bossCounters.get(BossKillCounter.BANDOS.ordinal)}",i)
93 -> sendLine(player, "Arma KC: ${globalData.bossCounters.get(BossKillCounter.ARMADYL.ordinal)}",i)
94 -> sendLine(player, "Jad KC: ${globalData.bossCounters.get(BossKillCounter.JAD.ordinal)}",i)
95 -> sendLine(player, "KQ KC: ${globalData.bossCounters.get(BossKillCounter.KALPHITE_QUEEN.ordinal)}",i)
96 -> sendLine(player, "Corp KC: ${globalData.bossCounters.get(BossKillCounter.CORPOREAL_BEAST.ordinal)}",i)
else -> sendLine(player,"",i)
}
}
1 -> {
when(i) {
97 -> sendLine(player, "Turoths: ${GlobalKillCounter.getKills(other, TUROTH_IDS)}", i)
68 -> sendLine(player, "Kurasks: ${GlobalKillCounter.getKills(other, KURASK_IDS)}", i)
69 -> sendLine(player, "Leaf-bladed swords: ${GlobalKillCounter.getRareDrops(other, Items.LEAF_BLADED_SPEAR_4158)}", i)
70 -> sendLine(player,SPACER,i)
71 -> sendLine(player, "Gargoyles: ${GlobalKillCounter.getKills(other, GARGOYLE_IDS)}", i)
72 -> sendLine(player, "Granite mauls: ${GlobalKillCounter.getRareDrops(other, Items.GRANITE_MAUL_4153)}", i)
73 -> sendLine(player,SPACER,i)
74 -> sendLine(player, "Spiritual mages: ${GlobalKillCounter.getKills(other, SPIRITUAL_MAGE_IDS)}", i)
75 -> sendLine(player, "Dragon boots: ${GlobalKillCounter.getRareDrops(other, Items.DRAGON_BOOTS_11732)}", i)
76 -> sendLine(player,SPACER,i)
77 -> sendLine(player, "Abyssal demons: ${GlobalKillCounter.getKills(other, NPCs.ABYSSAL_DEMON_1615)}", i)
78 -> sendLine(player, "Abyssal whips: ${GlobalKillCounter.getRareDrops(other, Items.ABYSSAL_WHIP_4151)}", i)
79 -> sendLine(player,SPACER,i)
80 -> sendLine(player, "Dark beasts: ${GlobalKillCounter.getKills(other, NPCs.DARK_BEAST_2783)}", i)
81 -> sendLine(player, "Dark bows: ${GlobalKillCounter.getRareDrops(other, Items.DARK_BOW_11235)}", i)
82 -> sendLine(player, "Green Dragons: ${GlobalKillCounter.getKills(other, GREEN_DRAGON_IDS)}", i)
83 -> sendLine(player, "Blue Dragons: ${GlobalKillCounter.getKills(other, BLUE_DRAGON_IDS)}", i)
84 -> sendLine(player, "Red Dragons: ${GlobalKillCounter.getKills(other, RED_DRAGON_IDS)}", i)
85 -> sendLine(player, "Black Dragons: ${GlobalKillCounter.getKills(other, BLACK_DRAGON_IDS)}", i)
86 -> sendLine(player,SPACER,i)
87 -> sendLine(player, "Bronze Dragons: ${GlobalKillCounter.getKills(other, BRONZE_DRAGON_IDS)}", i)
88 -> sendLine(player, "Iron Dragons: ${GlobalKillCounter.getKills(other, IRON_DRAGON_IDS)}", i)
89 -> sendLine(player, "Steel Dragons: ${GlobalKillCounter.getKills(other, STEEL_DRAGON_IDS)}", i)
90 -> sendLine(player, "Mithril Dragons: ${GlobalKillCounter.getKills(other, MITHRIL_DRAGON_IDS)}", i)
91 -> sendLine(player, "Skeletal Wyverns: ${GlobalKillCounter.getKills(other, SKELETAL_WYVERN_IDS)}", i)
92 -> sendLine(player,SPACER,i)
93 -> sendLine(player, "Draconic visages: ${GlobalKillCounter.getRareDrops(other, Items.DRACONIC_VISAGE_11286)}", i)
else -> sendLine(player,"",i)
}
}
2 -> {
when(i) {
97 -> sendLine(player, "Ahrim's hood: ${GlobalKillCounter.getRareDrops(other, Items.AHRIMS_HOOD_4708)}", i)
68 -> sendLine(player, "Ahrim's staff: ${GlobalKillCounter.getRareDrops(other, Items.AHRIMS_STAFF_4710)}", i)
69 -> sendLine(player, "Ahrim's robetop: ${GlobalKillCounter.getRareDrops(other, Items.AHRIMS_ROBETOP_4712)}", i)
70 -> sendLine(player, "Ahrim's robeskirt: ${GlobalKillCounter.getRareDrops(other, Items.AHRIMS_ROBESKIRT_4714)}", i)
71 -> sendLine(player,SPACER,i)
72 -> sendLine(player, "Dharok's helm: ${GlobalKillCounter.getRareDrops(other, Items.DHAROKS_HELM_4716)}", i)
73 -> sendLine(player, "Dharok's greataxe: ${GlobalKillCounter.getRareDrops(other, Items.DHAROKS_GREATAXE_4718)}", i)
74 -> sendLine(player, "Dharok's platebody: ${GlobalKillCounter.getRareDrops(other, Items.DHAROKS_PLATEBODY_4720)}", i)
75 -> sendLine(player, "Dharok's platelegs: ${GlobalKillCounter.getRareDrops(other, Items.DHAROKS_PLATELEGS_4722)}", i)
76 -> sendLine(player,SPACER,i)
77 -> sendLine(player, "Guthan's helm: ${GlobalKillCounter.getRareDrops(other, Items.GUTHANS_HELM_4724)}", i)
78 -> sendLine(player, "Guthan's warspear: ${GlobalKillCounter.getRareDrops(other, Items.GUTHANS_WARSPEAR_4726)}", i)
79 -> sendLine(player, "Guthan's platebody: ${GlobalKillCounter.getRareDrops(other, Items.GUTHANS_PLATEBODY_4728)}", i)
80 -> sendLine(player, "Guthan's chainskirt: ${GlobalKillCounter.getRareDrops(other, Items.GUTHANS_CHAINSKIRT_4730)}", i)
82 -> sendLine(player, "Karil's coif: ${GlobalKillCounter.getRareDrops(other, Items.KARILS_COIF_4732)}", i)
83 -> sendLine(player, "Karil's crossbow: ${GlobalKillCounter.getRareDrops(other, Items.KARILS_CROSSBOW_4734)}", i)
84 -> sendLine(player, "Karil's leathertop: ${GlobalKillCounter.getRareDrops(other, Items.KARILS_LEATHERTOP_4736)}", i)
85 -> sendLine(player, "Karil's leatherskirt: ${GlobalKillCounter.getRareDrops(other, Items.KARILS_LEATHERSKIRT_4738)}", i)
86 -> sendLine(player,SPACER,i)
87 -> sendLine(player, "Torag's helm: ${GlobalKillCounter.getRareDrops(other, Items.TORAGS_HELM_4745)}", i)
88 -> sendLine(player, "Torag's hammers: ${GlobalKillCounter.getRareDrops(other, Items.TORAGS_HAMMERS_4747)}", i)
89 -> sendLine(player, "Torag's platebody: ${GlobalKillCounter.getRareDrops(other, Items.TORAGS_PLATEBODY_4749)}", i)
90 -> sendLine(player, "Torag's platelegs: ${GlobalKillCounter.getRareDrops(other, Items.TORAGS_PLATELEGS_4751)}", i)
91 -> sendLine(player,SPACER,i)
92 -> sendLine(player, "Verac's helm: ${GlobalKillCounter.getRareDrops(other, Items.VERACS_HELM_4753)}", i)
93 -> sendLine(player, "Verac's flail: ${GlobalKillCounter.getRareDrops(other, Items.VERACS_FLAIL_4755)}", i)
94 -> sendLine(player, "Verac's brassard: ${GlobalKillCounter.getRareDrops(other, Items.VERACS_BRASSARD_4757)}", i)
95 -> sendLine(player, "Verac's plateskirt: ${GlobalKillCounter.getRareDrops(other, Items.VERACS_PLATESKIRT_4759)}", i)
else -> sendLine(player,"",i)
}
}
}
}
player.interfaceManager.open(Component(26))
}
fun sendLine(player: Player, line: String, child: Int) {
player.packetDispatch.sendString(line,26,child)
}
fun prepareInterface(player: Player,other: Player, page: Int){
player.setAttribute("stats-page-info", StatsPageInfo(other, page))
if(page == 0) {
player.packetDispatch.sendInterfaceConfig(26,62,true)
player.packetDispatch.sendInterfaceConfig(26,65,true)
} else {
sendLine(player, "Previous", 65)
}
if(page == NUM_PAGES - 1) {
player.packetDispatch.sendInterfaceConfig(26,64,true)
player.packetDispatch.sendInterfaceConfig(26,66,true)
} else {
sendLine(player, "Next", 66)
}
player.packetDispatch.sendString(other.username + "'s Stats - Page ${page + 1}",26,101)
}
data class StatsPageInfo(val other: Player, val page: Int) {}
@Initializable
class StatsCommandSet : CommandSet(Command.Privilege.STANDARD) {
override fun defineCommands() {
@@ -28,64 +186,33 @@ class StatsCommandSet : CommandSet(Command.Privilege.STANDARD) {
return@define
}
sendStats(player,other)
sendStats(player,other, 0)
}
}
fun sendStats(player: Player){
sendStats(player,player)
sendStats(player,player, 0)
}
fun sendStats(player: Player, other: Player){
prepareInterface(player,other)
val globalData = other.savedData.globalData
for(i in (67..96)){
when(i){
//Various stats
67 -> sendLine(player,"Easy Clues: ${other.treasureTrailManager.completedClues[0]}",97)
68 -> sendLine(player,"Medium Clues: ${other.treasureTrailManager.completedClues[1]}",i)
69 -> sendLine(player,"Hard Clues: ${other.treasureTrailManager.completedClues[2]}",i)
70 -> sendLine(player,"<str> </str>",i)
71 -> sendLine(player,"Slayer Tasks: ${other.slayer.totalTasks}",i)
72 -> sendLine(player,"Quest Points: ${other.questRepository.points}",i)
73 -> sendLine(player,"Ironman Mode: ${other.ironmanManager.mode.name.toLowerCase()}",i)
74 -> sendLine(player,"Deaths: ${other.getAttribute("$STATS_BASE:$STATS_DEATHS",0)}",i)
75 -> sendLine(player,"<str> </str>",i)
76 -> sendLine(player,"Logs Chopped: ${other.getAttribute("$STATS_BASE:$STATS_LOGS",0)}",i)
77 -> sendLine(player,"Rocks Mined: ${other.getAttribute("$STATS_BASE:$STATS_ROCKS",0)}",i)
78 -> sendLine(player,"Fish Caught: ${other.getAttribute("$STATS_BASE:$STATS_FISH",0)}",i)
}
//Boss KC
82 -> sendLine(player, "KBD KC: ${globalData.bossCounters.get(BossKillCounter.KING_BLACK_DRAGON.ordinal)}",i)
83 -> sendLine(player, "TDs KC: ${globalData.bossCounters.get(BossKillCounter.TORMENTED_DEMONS.ordinal)}",i)
84 -> sendLine(player, "Supreme KC: ${globalData.bossCounters.get(BossKillCounter.DAGANNOTH_SUPREME.ordinal)}",i)
85 -> sendLine(player, "Rex KC: ${globalData.bossCounters.get(BossKillCounter.DAGANNOTH_REX.ordinal)}",i)
86 -> sendLine(player, "Prime KC: ${globalData.bossCounters.get(BossKillCounter.DAGANNOTH_PRIME.ordinal)}",i)
87 -> sendLine(player, "Barrows KC: ${globalData.barrowsLoots}",i)
88 -> sendLine(player, "Chaos Ele: ${globalData.bossCounters.get(BossKillCounter.CHAOS_ELEMENTAL.ordinal)}",i)
89 -> sendLine(player, "Mole KC: ${globalData.bossCounters.get(BossKillCounter.GIANT_MOLE.ordinal)}",i)
90 -> sendLine(player, "Sara KC: ${globalData.bossCounters.get(BossKillCounter.SARADOMIN.ordinal)}",i)
91 -> sendLine(player, "Zammy KC: ${globalData.bossCounters.get(BossKillCounter.ZAMORAK.ordinal)}",i)
92 -> sendLine(player, "Bandos KC: ${globalData.bossCounters.get(BossKillCounter.BANDOS.ordinal)}",i)
93 -> sendLine(player, "Arma KC: ${globalData.bossCounters.get(BossKillCounter.ARMADYL.ordinal)}",i)
94 -> sendLine(player, "Jad KC: ${globalData.bossCounters.get(BossKillCounter.JAD.ordinal)}",i)
95 -> sendLine(player, "KQ KC: ${globalData.bossCounters.get(BossKillCounter.KALPHITE_QUEEN.ordinal)}",i)
96 -> sendLine(player, "Corp KC: ${globalData.bossCounters.get(BossKillCounter.CORPOREAL_BEAST.ordinal)}",i)
else -> sendLine(player,"",i)
class StatsInterface : InterfaceListener() {
val COMPONENT_ID = 26
override fun defineListeners() {
on(COMPONENT_ID, 61) { player, _, _, _, _, _ ->
val info: StatsPageInfo? = player.getAttribute("stats-page-info", null)
if(info != null) {
sendStats(player, info.other, info.page-1)
}
return@on true
}
on(COMPONENT_ID, 63) { player, _, _, _, _, _ ->
val info: StatsPageInfo? = player.getAttribute("stats-page-info", null)
if(info != null) {
sendStats(player, info.other, info.page+1)
}
return@on true
}
player.interfaceManager.open(Component(26))
}
fun sendLine(player: Player, line: String, child: Int){
player.packetDispatch.sendString(line,26,child)
}
fun prepareInterface(player: Player,other: Player){
player.packetDispatch.sendInterfaceConfig(26,64,true)
player.packetDispatch.sendInterfaceConfig(26,62,true)
player.packetDispatch.sendInterfaceConfig(26,65,true)
player.packetDispatch.sendInterfaceConfig(26,66,true)
player.packetDispatch.sendString(other.username + "'s Stats",26,101)
}
}