Code:
package org.nova.kshan.content;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.nova.Constants;
import org.nova.game.item.Item;
import org.nova.game.item.ItemsContainer;
import org.nova.game.player.Player;
import org.nova.game.player.controllers.impl.Wilderness;
/**
* Handles the mystery box
*
* @author K-Shan
*
*/
public class MysteryBox {
public static int[] commonItems = {
20135, 20139, 20143, 22440, 22441, 22442, 21793, 21787, 21793, 21790,
4151, 11694, 11726, 11698, 13738, 13740, 19784, 11283, 1050, 6585,
11283, 4151, 11726, 11732, 11730, 14484, 2434, 2434, 2434, 2434
};
/**
* Opens the mystery box for the player
* They won't be able to spin if they don't have spins (lol)
* @param player
*/
public static void openBox(Player player) {
player.interfaces().sendInterface(1161);
ItemsContainer<Item> asContainer = new ItemsContainer<Item>(30, false);
for(int i = 0; i < commonItems.length; i++) {
player.getPackets().sendItemOnIComponent(1161, 71 + i, commonItems[i], 1);
asContainer.add(new Item(commonItems[i], 1));
}
player.getPackets().sendItems(90, false, asContainer);
player.getPackets().sendInterSetItemsOptionsScript(1161, 104, 90, 4, 9, "Examine");
player.getPackets().sendUnlockIComponentOptionSlots(1161, 104, 0, 160, 0);
for(int i = 0; i < 6; i++)
player.getPackets().sendIComponentText(1161, 108 + i, "");
List<String> recent = new ArrayList<String>(player.getRecentMBoxRewards());
Collections.reverse(recent);
for(int i = 0; i < recent.size(); i++) {
player.getPackets().sendIComponentText(1161, 108 + i, recent.get(i));
}
player.getPackets().sendIComponentText(1161, 101, "Get more spins ("+player.getMBoxSpins()+")");
}
/**
* Spins the mystery box
* @param player
*/
public static void spin(Player player) {
if(Wilderness.isAtWild(player)) {
player.sm("You cannot use this in the wilderness.");
player.sm("Also, you are cheating. Stahp.");
return;
}
if(player.getMBoxSpins() < 1) {
player.sm("The box is unable to spin. Please get more spins first.");
return;
}
if(player.spinningMBox) {
player.sm("You are already using the mystery box, please wait.");
return;
}
if(!player.getInventory().hasFreeSlots()) {
player.sm("Please clear up your inventory before using the box.");
return;
}
player.getPackets().spinMysteryBox(commonItems.length);
ItemsContainer<Item> asContainer = new ItemsContainer<Item>(30, false);
for(int i = 0; i < commonItems.length; i++) {
player.getPackets().sendItemOnIComponent(1161, 71 + i, commonItems[i], 1);
asContainer.add(new Item(commonItems[i], 1));
}
player.getPackets().sendItems(90, false, asContainer);
player.getPackets().sendInterSetItemsOptionsScript(1161, 104, 90, 4, 9, "Examine");
player.getPackets().sendUnlockIComponentOptionSlots(1161, 104, 0, 160, 0);
for(int i = 0; i < 6; i++)
player.getPackets().sendIComponentText(1161, 108 + i, "");
List<String> recent = new ArrayList<String>(player.getRecentMBoxRewards());
Collections.reverse(recent);
for(int i = 0; i < recent.size(); i++) {
player.getPackets().sendIComponentText(1161, 108 + i, recent.get(i));
}
List<Integer> asList = new ArrayList<Integer>();
for(int i = 0; i < commonItems.length; i++)
asList.add(commonItems[i]);
Collections.shuffle(asList);
for(int i = 0; i < 30; i++)
player.getPackets().sendItemOnIComponent(1161, 71 + i, asList.get(i), 1);
player.getPackets().sendHideIComponent(1161, 13, true);
player.getPackets().sendHideIComponent(1161, 38, true);
player.getPackets().sendHideIComponent(1161, 39, true);
player.getPackets().sendHideIComponent(1161, 122, true);
player.getPackets().sendHideIComponent(1161, 123, true);
player.spinningMBox = true;
player.getPackets().sendHideIComponent(1161, 114, true);
for(int i = 116; i <= 121; i++)
player.getPackets().sendHideIComponent(1161, i, true);
player.getPackets().sendIComponentText(1161, 101, "Get more spins ("+player.getMBoxSpins()+")");
player.getPackets().sendBlackOut(5);
player.setInfiniteStopDelay();
player.doAfterDelay(Constants.WORLD_CYCLE_TIME * 8, () -> {
player.getPackets().sendHideIComponent(1161, 13, false);
player.getPackets().sendHideIComponent(1161, 38, false);
player.getPackets().sendHideIComponent(1161, 39, false);
player.getPackets().sendHideIComponent(1161, 122, false);
player.getPackets().sendHideIComponent(1161, 123, false);
player.addMBoxReward(asList.get(12));
player.getPackets().sendIComponentText(1161, 101, "Get more spins ("+player.getMBoxSpins()+")");
player.getPackets().sendBlackOut(0);
player.spinningMBox = false;
List<String> recentRewards = new ArrayList<String>(player.getRecentMBoxRewards());
Collections.reverse(recentRewards);
for(int i = 0; i < recentRewards.size(); i++) {
player.getPackets().sendIComponentText(1161, 108 + i, recentRewards.get(i));
}
// TODO add the "You've won" interface
player.getPackets().sendHideIComponent(1161, 114, false);
for(int i = 116; i <= 121; i++)
player.getPackets().sendHideIComponent(1161, i, false);
player.getPackets().sendIComponentText(1161, 120, new Item(asList.get(12), 1).getName());
player.getPackets().sendItemOnIComponent(1161, 121, asList.get(12), 1);
//player.getRecentMBoxRewards().clear();
player.resetStopDelay();
});
}
public static void click(Player player, int interfaceId, int cId, int slotId, int packetId) {
if(cId == 122)
MysteryBox.spin(player);
if(cId == 101)
player.getPackets().sendExecMessage("https://google.com");
}
}