Code:
package server.model.minigames;
import server.model.players.Client;
import server.event.Event;
import server.event.EventManager;
import server.event.EventContainer;
import server.Server;
/**
* @author Brandyn
*/
public class WarriorsGuild {
public WarriorsGuild() {
//TO DO
}
private int xCoord, yCoord;
public void setSpawned(Client c, boolean spawned) {
c.spawned = spawned;
}
private final int[][] ARMORREQUIRED = {{1075, 1117, 1155, 4278, 20, 5, 30, 100}, {1067, 1115, 1153, 4279, 30, 7, 40, 100}, {1069, 1119, 1157, 4280, 40, 10, 60, 100}, {1077, 1125, 1165, 4281, 50, 15, 70, 100},
{1071, 1121, 1159, 4282, 60, 15, 80, 100}, {1091, 1123, 1161, 4283, 80, 17, 90, 10}, {1079, 1127, 1163, 4284, 100, 20, 100, 100}};
/**
* Handles which armor through ItemOnObject
* @param itemId The item id used
* @param X The object X-Coordinate
* @param Y The object Y-Coordinate
*/
public void handleArmor(Client c, int itemId, int X, int Y) {
if(!c.spawned) {
this.xCoord = X;
this.yCoord = Y;
for(int i = 0; i < ARMORREQUIRED.length; i++) {
for(int f = 0; f < ARMORREQUIRED[0].length; f++) {
if(itemId == ARMORREQUIRED[i][f]) {
if(hasItem(c, ARMORREQUIRED[i][0], true) && hasItem(c, ARMORREQUIRED[i][1], true) && hasItem(c, ARMORREQUIRED[i][2], true)) {
animateArmor(c, new int[] {ARMORREQUIRED[i][0], ARMORREQUIRED[i][1], ARMORREQUIRED[i][2]}, ARMORREQUIRED[i][3], ARMORREQUIRED[i][4], ARMORREQUIRED[i][5], ARMORREQUIRED[i][6], ARMORREQUIRED[i][7]);
}
}
}
}
} else {
c.sendMessage("You already have armor spawned!");
}
}
/**
* Checks if the player has an item in his inventory and/or equipment.
* @param itemId The item id needed
* @param inventory If the item needs to be in inventory, or in equipment
* @return returns if it has the item.
*/
private boolean hasItem(Client c, int itemId, boolean inventory) {
return inventory ? c.getItems().playerHasItem(itemId) : c.getItems().playerHasItem(itemId) || c.playerEquipment[5] == itemId;
}
/**
* Animates the armor, deletes items, and walks 3 steps back.
*
*/
private void animateArmor(Client c, int[] usedArmor, int npcId, int hitPoints, int maxHit, int attack, int defence) {
c.getPA().walkTo(0, 3);
for(int i = 0; i < 3; i++) {
c.getItems().deleteItem(usedArmor[i], 1);
}
c.spawned = true;
Server.npcHandler.spawnNpc(c, npcId, xCoord, yCoord, 0, 0, hitPoints, maxHit, attack, defence, true, true);
}
private final String[][] DEFENDER = {{"20072", "Dragon"},{"8850", "Rune"}, {"8849", "Adamant"}, {"8848", "Mithril"}, {"8847", "Black"}, {"8846", "Steel"}, {"8845", "Iron"}, {"8844", "Bronze"}};
/**
* Gets the cyclops' drop itemid.
*/
public int getCyclopsDrop(Client c) {
if(!c.kamfreenaDone)
return Integer.parseInt(DEFENDER[7][0]);
for(int i = 0; i < DEFENDER.length; i++) {
try {
if(hasItem(c, Integer.parseInt(DEFENDER[i][0]), false))
return Integer.parseInt(DEFENDER[i - 1][0]);
} catch(Exception e) {
return Integer.parseInt(DEFENDER[0][0]);
}
}
return Integer.parseInt(DEFENDER[7][0]);
}
/**
* @return Returns the defender dropped in text.
*/
public String getCyclopsDrop126(Client c) {
for(int i = 0; i < DEFENDER.length; i++) {
if(Integer.parseInt(DEFENDER[i][0]) == getCyclopsDrop(c)) {
return DEFENDER[i][1];
}
}
return DEFENDER[0][1];
}
/**
* Handles Kamfreena's Dialogue
*/
public void handleKamfreena(Client c, boolean door) {
if(door) {
if(c.UsedTimer == 0 && c.UsedTimer2 == 0) {
if(c.kamfreenaDone) {
c.getDH().sendDialogues(47, 4289);
}
if(!c.kamfreenaDone) {
c.getDH().sendDialogues(45, 4289);
}
if(!c.getItems().playerHasItem(8851, 100)) {
c.sendMessage("You need 100 tokens to go in!");
return;
}
c.getPA().movePlayer(2848, 3541, 2);
executeCyclopsTimer(c);
c.UsedTimer = 1;
c.UsedTimer2 = 1;
c.inCyclops = true;
return;
}
if(c.UsedTimer == 1 && c.UsedTimer2 == 1) {
c.getPA().movePlayer(2846, 3540, 2);
c.UsedTimer = 1;
c.UsedTimer2 = 2;
c.inCyclops = false;
return;
}
if(c.UsedTimer == 1 && c.UsedTimer2 == 2) {
if(c.kamfreenaDone) {
c.getDH().sendDialogues(47, 4289);
}
if(!c.kamfreenaDone) {
c.getDH().sendDialogues(45, 4289);
}
if(!c.getItems().playerHasItem(8851, 100)) {
c.sendMessage("You need 100 tokens to go in!");
return;
}
c.UsedTimer = 1;
c.UsedTimer2 = 1;
c.inCyclops = true;
c.getPA().movePlayer(2848, 3541, 2);
return;
}
}
}
/**
* 60 Second timer removing 20 tokens.
* @return returns the timer event
*/
private Event cyclopsTimer(final Client c) {
return new Event() {
public void execute(EventContainer e) {
if(c.getItems().playerHasItem(8851, 20) && c.inCyclops) {
c.sendMessage("20 Warrior-Guild tokens crumbles to dust...");
c.getItems().deleteItem2(8851, 20);
}
if(!c.getItems().playerHasItem(8851, 20)) {
c.inCyclops = false;
c.sendMessage("You have ran out of tokens!");
c.getPA().movePlayer(2846, 3541, 2);
c.UsedTimer = 0;
c.UsedTimer2 = 0;
e.stop();
} else {
}
}
};
}
/**
* Executes the timed token removal. (60 seconds / 1 minute)
*/
private void executeCyclopsTimer(Client c) {
c.inCyclops = true;
EventManager.getSingleton().addEvent(cyclopsTimer(c), 60000);
}
}
Not sure where it states the drop rate for any defender, i checked in npcdrops.tsm