Well i think its time to release something since its been over a week now since i have released anything.
100% Rune-scape mystery box with correct items, chances, quantity, grammar, sounds, text etc. Enjoy!
Code:
package com.rs.game.player.content.items;
import com.rs.cache.loaders.ItemDefinitions;
import com.rs.game.player.Player;
import com.rs.utils.Utils;
/**
* @author HerBrightSkies @rune-server.org
*/
public class MysteryBox {
private static final int COMMON[][] = {{995, 5000}, {685, 1}, {1623, 1}, {559, 1}, {1925, 1}, {1965, 1}, {956, 1},
{1061, 1}, {1957, 1}, {592, 1}, {359, 1}};
private static final int UNCOMMON[][] = {{3589, 1}, {1621, 1}, {7937, 30}, {1119, 1}, {1442, 1}, {1444, 1}};
private static final int RARE[][] = {{1601, 1}, {563, 10}, {561, 20}, {1329, 1}, {1315, 1}, {1123, 1}, {1454, 1}};
private static final int VERY_RARE[][] = {{1127, 1}, {985, 1}, {987, 1}};
private static int reward, r, c, q;
private static void handle(Player p) {
r = Utils.random(10);
p.getInventory().deleteItem(6199, 1);
p.getPackets().sendSound(98, 0, 1);
switch (r) {
case 1:
r = Utils.random(VERY_RARE.length);
q = VERY_RARE[r][1];
p.getInventory().addItem(VERY_RARE[r][0], q);
reward = VERY_RARE[r][0];
p.sm("You open the box and find " + getGrammar() + " " + getNameForItem() + ", awesome!");
break;
case 2:
case 3:
r = Utils.random(RARE.length);
q = RARE[r][1];
p.getInventory().addItem(RARE[r][0], q);
reward = RARE[r][0];
p.sm("You open the box and find " + getGrammar() + " " + getNameForItem() + ", excellent.");
break;
case 4:
case 5:
case 6:
r = Utils.random(UNCOMMON.length);
q = UNCOMMON[r][1];
p.getInventory().addItem(UNCOMMON[r][0], q);
reward = UNCOMMON[r][0];
p.sm("You open the box and find " + getGrammar() + " " + getNameForItem() + ", not bad.");
break;
default:
c = Utils.random(COMMON[0][1]);
r = Utils.random(COMMON.length);
q = COMMON[r][1];
p.getInventory().addItem(COMMON[r][0], COMMON[r][0] == (995) ? c : q);
reward = COMMON[r][0];
p.sm((String) "You open the box and find " + (COMMON[r][0] == (995) ? c : getGrammar()) + " "
+ getNameForItem() + ", " + (COMMON[r][0] == (995) ? "sweet!" : "better luck next time."));
break;
}
}
private static String getGrammar() {
if (q == 1) {
return sw("a") || sw("u") || sw("o") ? "an" : "a";
}
return q + "";
}
private static boolean sw(String n) {
return getNameForItem().startsWith(n);
}
private static String getNameForItem() {
switch (reward) {
case 995:
return COMMON[r][1] == (1) ? "coin" : "coins";
case 1061:
return "pair of leather boots";
case 592:
return "ash";
case 563:
return "law runes";
case 561:
return "nature runes";
case 1329:
return "mithril scimitar";
case 1315:
return "mithril two handed sword";
}
return ItemDefinitions.getItemDefinitions(reward).getName().toLowerCase();
}
public static boolean isBox(int itemId, Player p) {
switch (itemId) {
case 6199:
handle(p);
return true;
}
return false;
}
}