Converted clue scroll rewards to JSON weighted tables

This commit is contained in:
Ceikry
2022-07-09 08:13:48 +00:00
committed by Ryan
parent 670d59cce3
commit 14e3e6723b
5 changed files with 2347 additions and 578 deletions
@@ -18,585 +18,136 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import api.IfaceSettingsBuilder;
import rs09.game.system.config.ClueRewardParser;
/**
* A clue scroll level.
*
* @author Vexia
*/
public enum ClueLevel {
EASY(new Item(2714), 1 << 16 | 5,
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(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(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(Items.HIGHWAYMAN_MASK_2631, 1, 1, DropFrequency.UNCOMMON),
// wizard t
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(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(Items.STUDDED_BODY_G_7362, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.STUDDED_CHAPS_G_7366, 1, 1, DropFrequency.UNCOMMON),
// studded
// t
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(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(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(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(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(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(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(Items.BLACK_CANE_13095, 1, 1, DropFrequency.UNCOMMON),
// spikey
// helmet
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,
// Trimmed
// addy
// shit
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(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(Items.RANGER_BOOTS_2577, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.WIZARD_BOOTS_2579, 1, 1, DropFrequency.UNCOMMON),
// Boaters
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(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(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(Items.STRENGTH_AMULETT_10364, 1, 1, DropFrequency.UNCOMMON),
// white ele
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(Items.BLACK_ELE_SHIRT_10400, 1, 1, DropFrequency.RARE),
new ChanceItem(Items.BLACK_ELE_LEGS_10402, 1, 1, DropFrequency.RARE),
// purple
// ele
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(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(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(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(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(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(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(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(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(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(Items.PIRATES_HAT_2651, 1, 1, DropFrequency.UNCOMMON),
new ChanceItem(Items.ROBIN_HOOD_HAT_2581, 1, 1, DropFrequency.UNCOMMON),
// Cavaliers
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)),
EASY(Items.CASKET_2714, 1, 5),
MEDIUM(Items.CASKET_2717, 1, 6),
HARD(Items.CASKET_2720, 1, 8),
UNKNOWN(0, 0, 0)
;
/**
* The default rewards.
*/
private static final ChanceItem[] DEFAULT_REWARDS = new ChanceItem[] {
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)
};
public int casketId, minSteps, maxSteps;
/**
* The super rare items.
*/
private static final WeightedChanceItem[] SUPER_RARE = new WeightedChanceItem[] {
//1 Trimmed Glory = 50 = to hit 15%
new WeightedChanceItem(Items.AMULET_OF_GLORYT_10362, 1, 1, 50),
//5 Gilded Items = 150 = to hit 9%
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(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.
*/
private final Item casket;
/**
* The length hash of the level.
*/
private final int lengthHash;
/**
* The reward items.
*/
private final ChanceItem[] rewards;
/**
* Constructs a new {@Code ClueLevel} {@Code Object}
*
* @param casket
* the casket.
* @param lengthHash
* the hash.
* @param rewards
* the rewards.
*/
private ClueLevel(Item casket, int lengthHash, ChanceItem... rewards) {
this.casket = casket;
this.lengthHash = lengthHash;
this.rewards = rewards;
private ClueLevel(int casketId, int minSteps, int maxSteps) {
this.casketId = casketId;
this.minSteps = minSteps;
this.maxSteps = maxSteps;
}
/**
* Opens a cakset for the player.
*
* @param player
* the player.
* @param casket
* the casket.
*/
public void open(Player player, Item casket) {
if (casket != null) {
if (!player.getInventory().containsItem(casket)) {
return;
}
private static ClueLevel getLevelForCasket(Item casket) {
switch (casket.getId()) {
case Items.CASKET_2714:
return ClueLevel.EASY;
case Items.CASKET_2717:
return ClueLevel.MEDIUM;
case Items.CASKET_2720:
return ClueLevel.HARD;
}
if (TreasureTrailManager.getInstance(player).isCompleted() || GameWorld.getSettings().isDevMode()) {
final List<Item> rewards = getLoot(player);
player.getInterfaceManager().open(new Component(364).setCloseEvent(new CloseEvent() {
private boolean given;
@Override
public boolean close(Player player, Component c) {
if (!given) {
for (Item item : rewards) {
player.getInventory().add(item, player);
}
given = true;
}
return true;
return ClueLevel.UNKNOWN;
}
public static void open(Player player, Item casket) {
if (casket == null || !player.getInventory().containsItem(casket)) {
return;
}
TreasureTrailManager playerTrails = TreasureTrailManager.getInstance(player);
boolean trailCompleted = playerTrails.isCompleted();
boolean isDevMode = GameWorld.getSettings().isDevMode();
ClueLevel clueLevel = getLevelForCasket(casket);
if (trailCompleted || isDevMode) {
List<Item> rewards = rollLoot(player, clueLevel);
player.getInterfaceManager().open(new Component(364));
if (player.getInventory().remove(casket)) {
long rewardValue = 0L;
for (Item reward : rewards) {
api.ContentAPIKt.addItemOrDrop(player, reward.getId(), reward.getAmount());
rewardValue += reward.getValue();
}
}));
if (casket != null) {
player.getInventory().remove(casket);
playerTrails.incrementClues(clueLevel);
playerTrails.clearTrail();
player.sendMessage("Well done, you've completed the Treasure Trail!");
player.sendMessage(
getChatColor(clueLevel)
+ "You have completed "
+ playerTrails.getCompletedClues(clueLevel)
+ " "
+ clueLevel.getName().toLowerCase()
+ " clues."
);
player.sendMessage(
"<col=990000>Your clue is worth approximately "
+ NumberFormat.getInstance().format(rewardValue)
+ " coins!</col>"
);
int clueIfaceSettings = new IfaceSettingsBuilder().enableAllOptions().build();
player.getPacketDispatch().sendIfaceSettings(clueIfaceSettings, 4, 364, 0, 6);
InterfaceContainer.generateItems(
player,
rewards.toArray(new Item[] {}),
new String[] {""},
364, 4, 3, 3
);
}
TreasureTrailManager.getInstance(player).incrementClues(this);
TreasureTrailManager.getInstance(player).clearTrail();
player.sendMessage("Well done, you've completed the Treasure Trail!");
player.sendMessage(getChatColor(this) + "You have completed " + TreasureTrailManager.getInstance(player).getCompletedClues(this) + " " + this.getName().toLowerCase() + " Treasure Trails.</col>");
long value = 0;
for (Item item : rewards) {
value += item.getValue();
}
player.sendMessage("<col=990000>Your clue is worth approximately " + NumberFormat.getInstance().format(value) + " coins!</col>");
player.getPacketDispatch().sendIfaceSettings(1278, 4, 364, 0, 6);
InterfaceContainer.generateItems(player, rewards.toArray(new Item[] {}), new String[] { "" }, 364, 4, 3, 3);
return;
}
Item clue = ClueScrollPlugin.getClue(this);
if (clue == null) {
player.sendMessage("Error! Clue not found! Report to admin.");
return;
}
if (casket != null) {
player.getInventory().replace(clue, casket.getSlot());
Item newClue = ClueScrollPlugin.getClue(clueLevel);
if (casket != null && player.getInventory().remove(casket)) {
player.getInventory().replace(newClue, casket.getSlot());
} else {
player.getInventory().add(clue);
player.getInventory().add(newClue);
}
TreasureTrailManager.getInstance(player).setClueId(clue.getId());
player.getDialogueInterpreter().sendItemMessage(clue, "You've found another clue!");
playerTrails.setClueId(newClue.getId());
player.getDialogueInterpreter().sendItemMessage(newClue, "You've found another clue!");
}
/**
* Gets the rewards.ds.
*
* @return the rewar
*/
public List<Item> getLoot(Player player) {
List<ChanceItem> items = new ArrayList<>(20);
List<Integer> ids = new ArrayList<>(20);
items.addAll(Arrays.asList(DEFAULT_REWARDS));
items.addAll(Arrays.asList(this.getRewards()));
List<Item> rewards = new ArrayList<>(20);
int size = RandomFunction.random(1, 6);
if (this == HARD) {
size = RandomFunction.random(4, 6);
}
Item item = null;
for (int i = 0; i < size; i++) {
rewards.addAll(RandomFunction.rollChanceTable(false,items));
}
/*
int rand = 1400;// 2000
if (this == HARD && rand == 11)
*/
//Super Rare Table
if (this == HARD && RandomFunction.random(100) == 50) {
rewards.remove(0);
rewards.add(RandomFunction.rollWeightedChanceTable(SUPER_RARE).asItem());
}
return rewards;
}
public static List<Item> rollLoot(Player player, ClueLevel level) {
ArrayList<Item> loot = new ArrayList();
int itemCount = RandomFunction.random(1,6);
/**
* Gets a reward item.
*
* @return the item.
*/
public Item getReward(List<ChanceItem> items) {
Collections.shuffle(items);
return RandomFunction.getChanceItem(items.toArray(new ChanceItem[] {})).getRandomItem();
}
if (level == ClueLevel.HARD) {
itemCount = Math.max(itemCount, RandomFunction.random(4,6));
}
/**
* Gets the clue level for the casket.
*
* @param node
* the node.
* @return the level.
*/
public static ClueLevel forCasket(Item node) {
for (ClueLevel level : values()) {
if (node.getId() == level.getCasket().getId()) {
return level;
for (; itemCount > 0; itemCount--) {
switch (level) {
case EASY:
loot.addAll(ClueRewardParser.getEasyTable().roll());
break;
case MEDIUM:
loot.addAll(ClueRewardParser.getMedTable().roll());
break;
case HARD:
loot.addAll(ClueRewardParser.getHardTable().roll());
break;
}
}
return null;
if (level == ClueLevel.HARD && RandomFunction.random(100) == 50) {
loot.addAll(ClueRewardParser.getRareTable().roll());
}
return loot;
}
/**
@@ -619,7 +170,7 @@ public enum ClueLevel {
* @return the length.
*/
public int getMaximumLength() {
return lengthHash & 0xFFFF;
return maxSteps;
}
/**
@@ -628,16 +179,7 @@ public enum ClueLevel {
* @return the length.
*/
public int getMinimumLength() {
return lengthHash >> 16 & 0xFFFF;
}
/**
* Gets the brewards.
*
* @return the rewards
*/
public ChanceItem[] getRewards() {
return rewards;
return minSteps;
}
/**
@@ -646,16 +188,7 @@ public enum ClueLevel {
* @return the casket
*/
public Item getCasket() {
return casket;
}
/**
* Gets the blengthHash.
*
* @return the lengthHash
*/
public int getLengthHash() {
return lengthHash;
return new Item(casketId);
}
/**
@@ -68,7 +68,7 @@ public final class TreasureTrailPlugin extends OptionHandler {
if (!player.getInventory().containsItem(node.asItem())) {
return true;
}
ClueLevel.forCasket((Item) node).open(player, (Item) node);
ClueLevel.open(player, (Item) node);
break;
case "look through":
player.getInterfaceManager().open(new Component(365));
@@ -0,0 +1,53 @@
package rs09.game.system.config
import org.json.simple.JSONArray
import org.json.simple.JSONObject
import org.json.simple.parser.JSONParser
import rs09.ServerConstants
import rs09.game.content.global.WeightBasedTable
import rs09.game.content.global.WeightedItem
import java.io.FileReader
class ClueRewardParser {
companion object {
@JvmStatic var easyTable = WeightBasedTable()
@JvmStatic var medTable = WeightBasedTable()
@JvmStatic var hardTable = WeightBasedTable()
@JvmStatic var rareTable = WeightBasedTable()
}
val parser = JSONParser()
var reader: FileReader? = null
fun load() {
reader = FileReader(ServerConstants.CONFIG_PATH + "clue_rewards.json")
val rawData = parser.parse(reader) as JSONObject
easyTable = parseClueTable(rawData["easy"] as JSONArray)
medTable = parseClueTable(rawData["medium"] as JSONArray)
hardTable = parseClueTable(rawData["hard"] as JSONArray)
rareTable = parseClueTable(rawData["rare"] as JSONArray)
}
private fun parseClueTable(data: JSONArray) : WeightBasedTable {
val table = WeightBasedTable()
for (element in data) {
val itemData = element as JSONObject
table.add(WeightedItem(
itemData["id"].toString().toInt(),
itemData["minAmount"].toString().toInt(),
itemData["maxAmount"].toString().toInt(),
itemData["weight"].toString().toDouble(),
false
))
}
return table
}
}
@@ -27,6 +27,7 @@ class ConfigParser : Commands {
MusicConfigLoader().load()
RangedConfigLoader().load()
CustomVarbitParser().load()
ClueRewardParser().load()
}
fun reloadConfigs(callback: () -> Unit) {