Here's the real RS rates by the way..
Global Tables:
Code:
private static WeightedTable BISCUITS_SWEETS = new WeightedTable(new Drop(10476, 2, 27), new Drop(19467, 2, 27));
private static WeightedTable TELEPORT_SCROLLS = new WeightedTable(new Drop(19475, 5, 16), new Drop(19476, 5, 16), new Drop(19477, 5, 16), new Drop(19478, 5, 16), new Drop(19479, 5, 16), new Drop(19480, 5, 16));
private static WeightedTable FIRELIGHTERS = new WeightedTable(new Drop(7329, 3, 15), new Drop(7330, 3, 15), new Drop(7331, 3, 15), new Drop(10326, 3, 15), new Drop(10327, 3, 15));
private static WeightedTable GOD_PAGES = new WeightedTable(new Drop(3827, 1), new Drop(3828, 1), new Drop(3829, 1), new Drop(3830, 1), new Drop(3831, 1), new Drop(3832, 1), new Drop(3833, 1), new Drop(3834, 1), new Drop(3835, 1), new Drop(3836, 1), new Drop(3837, 1), new Drop(3838, 1), new Drop(19600, 1), new Drop(19601, 1), new Drop(19602, 1), new Drop(19603, 1), new Drop(19604, 1), new Drop(19605, 1), new Drop(19606, 1), new Drop(19607, 1), new Drop(19608, 1), new Drop(19609, 1), new Drop(19610, 1), new Drop(19611, 1));
private static WeightedTable GOD_ARROWS = new WeightedTable(new Drop(19152, 20, 100), new Drop(19157, 20, 100), new Drop(19162, 20, 100));
Easy clues: 2-4 reward rolls per clue
Easy standard (11/12 per easy roll):
Code:
private static DropSet EASY_STANDARD = new WeightedSet(
TELEPORT_SCROLLS,
BISCUITS_SWEETS,
FIRELIGHTERS,
GOD_PAGES,
GOD_ARROWS,
new WeightedTable(new Drop(995, 50, 200)),
new WeightedTable(new Drop(334, 6, 10)),
new WeightedTable(new Drop(330, 6, 10)),
new WeightedTable(new Drop(556, 30, 50)),
new WeightedTable(new Drop(554, 30, 50)),
new WeightedTable(new Drop(555, 30, 50)),
new WeightedTable(new Drop(557, 30, 50)),
new WeightedTable(new Drop(558, 30, 50)),
new WeightedTable(new Drop(559, 30, 50)),
new WeightedTable(new Drop(563, 5, 10)),
new WeightedTable(new Drop(562, 5, 10)),
new WeightedTable(new Drop(561, 5, 10)),
new WeightedTable(new Drop(1125)),
new WeightedTable(new Drop(1297)),
new WeightedTable(new Drop(1165)),
new WeightedTable(new Drop(1077)),
new WeightedTable(new Drop(1367)),
new WeightedTable(new Drop(1361)),
new WeightedTable(new Drop(1269)),
new WeightedTable(new Drop(1217)),
new WeightedTable(new Drop(1381)),
new WeightedTable(new Drop(1097)),
new WeightedTable(new Drop(1133)),
new WeightedTable(new Drop(849)),
new WeightedTable(new Drop(1169)),
new WeightedTable(new Drop(1727), new Drop(1727), new Drop(1727), new Drop(1727), new Drop(1727), new Drop(1727), new Drop(1727), new Drop(1727), new Drop(1727), new Drop(10366)),
new WeightedTable(new Drop(847), new Drop(847), new Drop(847), new Drop(847), new Drop(847), new Drop(847), new Drop(847), new Drop(847), new Drop(847), new Drop(10280))
);
Easy rare (1/12 per easy roll):
Code:
private static DropSet EASY_RARE = new WeightedSet(new WeightedTable(new Drop(10280)), new WeightedTable(new Drop(2583)), new WeightedTable(new Drop(2585)), new WeightedTable(new Drop(2587)), new WeightedTable(new Drop(2589)), new WeightedTable(new Drop(3472)), new WeightedTable(new Drop(2591)), new WeightedTable(new Drop(2593)), new WeightedTable(new Drop(2595)), new WeightedTable(new Drop(2597)), new WeightedTable(new Drop(3473)), new WeightedTable(new Drop(7332)), new WeightedTable(new Drop(7338)), new WeightedTable(new Drop(7344)), new WeightedTable(new Drop(7350)), new WeightedTable(new Drop(7356)), new WeightedTable(new Drop(10306)), new WeightedTable(new Drop(10308)), new WeightedTable(new Drop(10310)), new WeightedTable(new Drop(10312)), new WeightedTable(new Drop(10314)), new WeightedTable(new Drop(2633)), new WeightedTable(new Drop(2635)), new WeightedTable(new Drop(2637)), new WeightedTable(new Drop(2631)), new WeightedTable(new Drop(7388)), new WeightedTable(new Drop(7392)), new WeightedTable(new Drop(7396)), new WeightedTable(new Drop(7386)), new WeightedTable(new Drop(7390)), new WeightedTable(new Drop(7394)), new WeightedTable(new Drop(7364)), new WeightedTable(new Drop(7368)), new WeightedTable(new Drop(7362)), new WeightedTable(new Drop(7366)), new WeightedTable(new Drop(10408)), new WeightedTable(new Drop(10410)), new WeightedTable(new Drop(10428)), new WeightedTable(new Drop(10430)), new WeightedTable(new Drop(10404)), new WeightedTable(new Drop(10406)), new WeightedTable(new Drop(10424)), new WeightedTable(new Drop(10426)), new WeightedTable(new Drop(10412)), new WeightedTable(new Drop(10414)), new WeightedTable(new Drop(10432)), new WeightedTable(new Drop(10434)), new WeightedTable(new Drop(10316)), new WeightedTable(new Drop(10318)), new WeightedTable(new Drop(10320)), new WeightedTable(new Drop(10322)), new WeightedTable(new Drop(10324)), new WeightedTable(new Drop(10394)), new WeightedTable(new Drop(10398)), new WeightedTable(new Drop(10392)), new WeightedTable(new Drop(10396)), new WeightedTable(new Drop(10458)), new WeightedTable(new Drop(10462)), new WeightedTable(new Drop(10466)), new WeightedTable(new Drop(10460)), new WeightedTable(new Drop(10468)), new WeightedTable(new Drop(10366)), new WeightedTable(new Drop(13095)), new WeightedTable(new Drop(13105)));
Medium clues: 3-5 reward rolls per clue
Medium standard (10/11 per medium roll):
Code:
private static DropSet MEDIUM_STANDARD = new WeightedSet(
TELEPORT_SCROLLS,
BISCUITS_SWEETS,
FIRELIGHTERS,
GOD_PAGES,
GOD_ARROWS,
new WeightedTable(new Drop(995, 200, 1000)),
new WeightedTable(new Drop(374, 8, 12)),
new WeightedTable(new Drop(380, 8, 12)),
new WeightedTable(new Drop(556, 50, 100)),
new WeightedTable(new Drop(554, 50, 100)),
new WeightedTable(new Drop(555, 50, 100)),
new WeightedTable(new Drop(557, 50, 100)),
new WeightedTable(new Drop(558, 50, 100)),
new WeightedTable(new Drop(559, 50, 50)),
new WeightedTable(new Drop(563, 10, 20)),
new WeightedTable(new Drop(562, 10, 20)),
new WeightedTable(new Drop(561, 10, 20)),
new WeightedTable(new Drop(1301)),
new WeightedTable(new Drop(1161)),
new WeightedTable(new Drop(1073)),
new WeightedTable(new Drop(1371)),
new WeightedTable(new Drop(1357)),
new WeightedTable(new Drop(1271)),
new WeightedTable(new Drop(1211)),
new WeightedTable(new Drop(1123)),
new WeightedTable(new Drop(1393)),
new WeightedTable(new Drop(1099)),
new WeightedTable(new Drop(1135)),
new WeightedTable(new Drop(857)),
new WeightedTable(new Drop(1731), new Drop(1731), new Drop(1731), new Drop(1731), new Drop(1731), new Drop(1731), new Drop(1731), new Drop(1731), new Drop(1731), new Drop(10364)),
new WeightedTable(new Drop(855), new Drop(855), new Drop(855), new Drop(855), new Drop(855), new Drop(855), new Drop(855), new Drop(855), new Drop(855), new Drop(10282))
);
Medium rare (1/11 per medium roll):
Code:
private static DropSet MEDIUM_RARE = new WeightedSet(new WeightedTable(new Drop(10282)), new WeightedTable(new Drop(2599)), new WeightedTable(new Drop(2601)), new WeightedTable(new Drop(2603)), new WeightedTable(new Drop(2605)), new WeightedTable(new Drop(3474)), new WeightedTable(new Drop(2607)), new WeightedTable(new Drop(2609)), new WeightedTable(new Drop(2611)), new WeightedTable(new Drop(2613)), new WeightedTable(new Drop(3475)), new WeightedTable(new Drop(2577)), new WeightedTable(new Drop(2579)), new WeightedTable(new Drop(2645)), new WeightedTable(new Drop(2647)), new WeightedTable(new Drop(2649)), new WeightedTable(new Drop(7319)), new WeightedTable(new Drop(7321)), new WeightedTable(new Drop(7323)), new WeightedTable(new Drop(7325)), new WeightedTable(new Drop(7327)), new WeightedTable(new Drop(7372)), new WeightedTable(new Drop(7380)), new WeightedTable(new Drop(7370)), new WeightedTable(new Drop(7378)), new WeightedTable(new Drop(10400)), new WeightedTable(new Drop(10402)), new WeightedTable(new Drop(10420)), new WeightedTable(new Drop(10422)), new WeightedTable(new Drop(10416)), new WeightedTable(new Drop(10418)), new WeightedTable(new Drop(10436)), new WeightedTable(new Drop(10438)), new WeightedTable(new Drop(10452)), new WeightedTable(new Drop(10454)), new WeightedTable(new Drop(10456)), new WeightedTable(new Drop(10446)), new WeightedTable(new Drop(10448)), new WeightedTable(new Drop(10450)), new WeightedTable(new Drop(19380)), new WeightedTable(new Drop(19386)), new WeightedTable(new Drop(19384)), new WeightedTable(new Drop(19388)), new WeightedTable(new Drop(19382)), new WeightedTable(new Drop(19390)), new WeightedTable(new Drop(13109)), new WeightedTable(new Drop(13107)), new WeightedTable(new Drop(13111)), new WeightedTable(new Drop(13113)), new WeightedTable(new Drop(13115)), new WeightedTable(new Drop(10364)), new WeightedTable(new Drop(13097)), new WeightedTable(new Drop(13103, 1)));
Hard clues: 4-6 reward rolls per clue
Hard standard (12/13 per hard roll):
Code:
private static DropSet HARD_STANDARD = new WeightedSet(
TELEPORT_SCROLLS,
BISCUITS_SWEETS,
FIRELIGHTERS,
GOD_PAGES,
GOD_ARROWS,
new WeightedTable(new Drop(995, 1000, 5000)),
new WeightedTable(new Drop(380, 12, 15)),
new WeightedTable(new Drop(386, 12, 15)),
new WeightedTable(new Drop(563, 30, 50)),
new WeightedTable(new Drop(565, 20, 30)),
new WeightedTable(new Drop(561, 30, 50)),
new WeightedTable(new Drop(1303)),
new WeightedTable(new Drop(1163)),
new WeightedTable(new Drop(1079)),
new WeightedTable(new Drop(1373)),
new WeightedTable(new Drop(1359)),
new WeightedTable(new Drop(1275)),
new WeightedTable(new Drop(1213)),
new WeightedTable(new Drop(1127)),
new WeightedTable(new Drop(1093)),
new WeightedTable(new Drop(1201)),
new WeightedTable(new Drop(2497)),
new WeightedTable(new Drop(2503)),
new WeightedTable(new Drop(861)),
new WeightedTable(new Drop(859), new Drop(859), new Drop(859), new Drop(859), new Drop(859), new Drop(859), new Drop(859), new Drop(859), new Drop(859), new Drop(10284))
);
Hard rare (1/13 per hard roll):
Code:
private static DropSet HARD_RARE = new WeightedSet(
new WeightedTable(125, new Drop(10284)),
new WeightedTable(125, new Drop(2623)),
new WeightedTable(125, new Drop(2625)),
new WeightedTable(125, new Drop(2627)),
new WeightedTable(125, new Drop(2629)),
new WeightedTable(125, new Drop(3477)),
new WeightedTable(125, new Drop(2615)),
new WeightedTable(125, new Drop(2617)),
new WeightedTable(125, new Drop(2619)),
new WeightedTable(125, new Drop(2621)),
new WeightedTable(125, new Drop(3476)),
new WeightedTable(125, new Drop(2657)),
new WeightedTable(125, new Drop(2653)),
new WeightedTable(125, new Drop(2655)),
new WeightedTable(125, new Drop(2659)),
new WeightedTable(125, new Drop(2665)),
new WeightedTable(125, new Drop(2661)),
new WeightedTable(125, new Drop(2663)),
new WeightedTable(125, new Drop(2667)),
new WeightedTable(125, new Drop(2673)),
new WeightedTable(125, new Drop(2669)),
new WeightedTable(125, new Drop(2671)),
new WeightedTable(125, new Drop(2675)),
new WeightedTable(125, new Drop(3480)),
new WeightedTable(125, new Drop(3479)),
new WeightedTable(125, new Drop(3478)),
new WeightedTable(125, new Drop(7374)),
new WeightedTable(125, new Drop(7382)),
new WeightedTable(125, new Drop(7376)),
new WeightedTable(125, new Drop(7384)),
new WeightedTable(125, new Drop(2651)),
new WeightedTable(125, new Drop(2581)),
new WeightedTable(125, new Drop(2639)),
new WeightedTable(125, new Drop(2641)),
new WeightedTable(125, new Drop(2643)),
new WeightedTable(125, new Drop(7336)),
new WeightedTable(125, new Drop(7342)),
new WeightedTable(125, new Drop(7348)),
new WeightedTable(125, new Drop(7354)),
new WeightedTable(125, new Drop(7360)),
new WeightedTable(125, new Drop(10286)),
new WeightedTable(125, new Drop(10288)),
new WeightedTable(125, new Drop(10290)),
new WeightedTable(125, new Drop(10292)),
new WeightedTable(125, new Drop(10294)),
new WeightedTable(125, new Drop(10362)),
new WeightedTable(125, new Drop(10452)),
new WeightedTable(125, new Drop(10454)),
new WeightedTable(125, new Drop(10456)),
new WeightedTable(125, new Drop(19374)),
new WeightedTable(125, new Drop(19376)),
new WeightedTable(125, new Drop(19378)),
new WeightedTable(125, new Drop(10470)),
new WeightedTable(125, new Drop(10472)),
new WeightedTable(125, new Drop(10474)),
new WeightedTable(125, new Drop(19372)),
new WeightedTable(125, new Drop(10450)),
new WeightedTable(125, new Drop(10448)),
new WeightedTable(125, new Drop(10446)),
new WeightedTable(125, new Drop(19368)),
new WeightedTable(125, new Drop(19370)),
new WeightedTable(125, new Drop(10440)),
new WeightedTable(125, new Drop(10442)),
new WeightedTable(125, new Drop(10444)),
new WeightedTable(125, new Drop(19380)),
new WeightedTable(125, new Drop(19386)),
new WeightedTable(125, new Drop(19384)),
new WeightedTable(125, new Drop(19388)),
new WeightedTable(125, new Drop(19382)),
new WeightedTable(125, new Drop(19390)),
new WeightedTable(125, new Drop(10460)),
new WeightedTable(125, new Drop(10468)),
new WeightedTable(125, new Drop(10462)),
new WeightedTable(125, new Drop(10466)),
new WeightedTable(125, new Drop(10458)),
new WeightedTable(125, new Drop(10464)),
new WeightedTable(125, new Drop(10368)),
new WeightedTable(125, new Drop(10370)),
new WeightedTable(125, new Drop(10372)),
new WeightedTable(125, new Drop(10374)),
new WeightedTable(125, new Drop(10376)),
new WeightedTable(125, new Drop(10378)),
new WeightedTable(125, new Drop(10380)),
new WeightedTable(125, new Drop(10382)),
new WeightedTable(125, new Drop(10384)),
new WeightedTable(125, new Drop(10386)),
new WeightedTable(125, new Drop(10388)),
new WeightedTable(125, new Drop(10390)),
new WeightedTable(125, new Drop(19272)),
new WeightedTable(125, new Drop(19275)),
new WeightedTable(125, new Drop(19278)),
new WeightedTable(125, new Drop(19281)),
new WeightedTable(125, new Drop(19284)),
new WeightedTable(125, new Drop(19287)),
new WeightedTable(125, new Drop(13101)),
new WeightedTable(125, new Drop(13099)),
new WeightedTable(6, new Drop(3481), new Drop(3483), new Drop(3485), new Drop(3486), new Drop(3488)),
new WeightedTable(3, new Drop(10330), new Drop(10332), new Drop(10334), new Drop(10336), new Drop(10338), new Drop(10340), new Drop(10342), new Drop(10344), new Drop(10346), new Drop(10348), new Drop(10350), new Drop(10352))
);
Elite clues: 4-6 reward rolls per clue
Elite standard (24/25 per elite roll):
Code:
private static DropSet ELITE_STANDARD = new WeightedSet(
TELEPORT_SCROLLS,
BISCUITS_SWEETS,
FIRELIGHTERS,
GOD_PAGES,
GOD_ARROWS,
new WeightedTable(new Drop(995, 2500, 50000)),
new WeightedTable(new Drop(5289)),
new WeightedTable(new Drop(5288)),
new WeightedTable(new Drop(5315)),
new WeightedTable(new Drop(5303, 2)),
new WeightedTable(new Drop(5302, 2)),
new WeightedTable(new Drop(3025, 9)),
new WeightedTable(new Drop(2453, 9)),
new WeightedTable(new Drop(2435, 9)),
new WeightedTable(new Drop(1445, 8)),
new WeightedTable(new Drop(10163, 15)),
new WeightedTable(new Drop(2364, 5)),
new WeightedTable(new Drop(238, 10)),
new WeightedTable(new Drop(24373, 15)),
new WeightedTable(new Drop(9194, 12)),
new WeightedTable(new Drop(1632, 2)),
new WeightedTable(new Drop(1392, 8)),
new WeightedTable(new Drop(8783, 40)),
new WeightedTable(new Drop(1149)),
new WeightedTable(new Drop(1127))
);
Elite rare (1/25 per elite roll):
Code:
private static DropSet ELITE_RARE = new WeightedSet(
new WeightedTable(200, new Drop(19362)),
new WeightedTable(200, new Drop(19364)),
new WeightedTable(200, new Drop(19366)),
new WeightedTable(200, new Drop(19392)),
new WeightedTable(200, new Drop(19394)),
new WeightedTable(200, new Drop(19396)),
new WeightedTable(200, new Drop(19323)),
new WeightedTable(200, new Drop(19325)),
new WeightedTable(200, new Drop(19327)),
new WeightedTable(200, new Drop(19329)),
new WeightedTable(200, new Drop(19331)),
new WeightedTable(200, new Drop(19333)),
new WeightedTable(200, new Drop(19346)),
new WeightedTable(200, new Drop(19348)),
new WeightedTable(200, new Drop(19350)),
new WeightedTable(200, new Drop(19352)),
new WeightedTable(200, new Drop(19354)),
new WeightedTable(200, new Drop(19356)),
new WeightedTable(200, new Drop(19358)),
new WeightedTable(200, new Drop(19360)),
new WeightedTable(200, new Drop(19398)),
new WeightedTable(200, new Drop(19401)),
new WeightedTable(200, new Drop(19404)),
new WeightedTable(200, new Drop(19407)),
new WeightedTable(200, new Drop(19410)),
new WeightedTable(200, new Drop(19413)),
new WeightedTable(200, new Drop(19416)),
new WeightedTable(200, new Drop(19419)),
new WeightedTable(200, new Drop(19422)),
new WeightedTable(200, new Drop(19425)),
new WeightedTable(200, new Drop(19428)),
new WeightedTable(200, new Drop(19431)),
new WeightedTable(200, new Drop(19434)),
new WeightedTable(200, new Drop(19437)),
new WeightedTable(200, new Drop(19440)),
new WeightedTable(200, new Drop(19443)),
new WeightedTable(200, new Drop(19445)),
new WeightedTable(200, new Drop(19447)),
new WeightedTable(200, new Drop(19449)),
new WeightedTable(200, new Drop(19451)),
new WeightedTable(200, new Drop(19453)),
new WeightedTable(200, new Drop(19455)),
new WeightedTable(200, new Drop(19457)),
new WeightedTable(200, new Drop(19459)),
new WeightedTable(200, new Drop(19461)),
new WeightedTable(200, new Drop(19463)),
new WeightedTable(200, new Drop(19465)),
new WeightedTable(50, new Drop(19290), new Drop(19293), new Drop(19296), new Drop(19299), new Drop(19302), new Drop(19305)),
new WeightedTable(10, new Drop(19143), new Drop(19149), new Drop(19146)),
new WeightedTable(3, new Drop(19308), new Drop(19311), new Drop(19314), new Drop(19317), new Drop(19320))
);
Generating rewards:
Code:
public static Item[] generateRewards(Player player, int level) {
ArrayList<Item> rewards = new ArrayList<Item>();
if (level == EASY) {
for (int i = 0;i < Utils.randomInclusive(2, 4);i++) {
if (Utils.random(12) == 0) {
Utils.add(rewards, DropTable.calculateDrops(player, EASY_RARE));
} else {
Utils.add(rewards, DropTable.calculateDrops(player, EASY_STANDARD));
}
}
} else if (level == MEDIUM) {
for (int i = 0;i < Utils.randomInclusive(3, 5);i++) {
if (Utils.random(11) == 0) {
Utils.add(rewards, DropTable.calculateDrops(player, MEDIUM_RARE));
} else {
Utils.add(rewards, DropTable.calculateDrops(player, MEDIUM_STANDARD));
}
}
} else if (level == HARD) {
for (int i = 0;i < Utils.randomInclusive(4, 6);i++) {
if (Utils.random(13) == 0) {
Utils.add(rewards, DropTable.calculateDrops(player, HARD_RARE));
} else {
Utils.add(rewards, DropTable.calculateDrops(player, HARD_STANDARD));
}
}
} else if (level == ELITE) {
for (int i = 0;i < Utils.randomInclusive(4, 6);i++) {
if (Utils.random(25) == 0) {
Utils.add(rewards, DropTable.calculateDrops(player, ELITE_RARE));
} else {
Utils.add(rewards, DropTable.calculateDrops(player, ELITE_STANDARD));
}
}
}
Item[] rewArr = new Item[rewards.size()];
for (int i = 0;i < rewArr.length;i++) {
rewArr[i] = rewards.get(i);
}
return rewArr;
}