Code:
package com.rs.game.player.content;
import com.rs.game.player.Player;
import com.rs.game.player.QuestManager.Quests;
public class CompletionistStand {
public static int checkAllStats(Player player) {
int reqs = 0;
for (int i = 0; i < 24; i++) {
if (player.getSkills().getLevelForXp(i) >= 99) {
if (i == 24 && player.getSkills().getLevelForXp(24) < 120)
reqs--;
reqs++;
}
}
return reqs;
}
public static boolean completionistCapeRequierment(Player player,
Boolean trimmed) {
if (!player.isCompletedFightKiln()) {
return false;
} else if (!player.isKilledCulinaromancer()) {
return false;
} else if (!player.isKilledBork()) {
return false;
} else if (!player.isKilledQueenBlackDragon()) {
return false;
} else if (!player.isGotInfernoAdze() == true) {
return false;
} else if (!player.getQuestManager().completedQuest(
Quests.NOMADS_REQUIEM)) {
return false;
} else if (player.getBarbarianAdvancedLaps() < 250
&& player.getGnomeAdvancedLaps() < 200) {
return false;
} else if (!player.isHasCutEnoughLogs() == true) {
return false;
} else if (player.getBarsDone() < 3000) {
return false;
} else if (player.getRocktailsCooked() < 5000) {
return false;
} else if (checkAllStats(player) < 24) {
return false;
}
if (trimmed && player.getPestControlGames() < 100) {
return false;
}
if (trimmed && !player.isHasCutMoreEnoughLogs()) {
return false;
}
for (boolean requirement : player.completionistCapeRequirements) {
if (!requirement) {
return false;
}
}
if (trimmed) {
for (boolean requirement : player.completionistCapeTRequirements) {
if (!requirement) {
return false;
}
}
}
return true;
}
public static void openCapeStandInterface(Player player, boolean trimmed) {
player.getInterfaceManager().sendInterface(275);
for (int i = 0; i < 100; i++) {
player.getPackets().sendIComponentText(275, i, "");
}
player.getPackets().sendIComponentText(
275,
1,
trimmed ? "Trimmed Requirements"
: "Completionist Cape Requirements");
if (!trimmed) {
if (checkAllStats(player) == 24)
player.getPackets().sendIComponentText(275, 10,
"<str>99 All stats and 120 Dungeoneering.");
else
player.getPackets().sendIComponentText(275, 10,
"99 All stats and 120 Dungeoneering.");
if (!player.isGotInfernoAdze() == true)
player.getPackets().sendIComponentText(
275,
11,
"Burn " + player.getMagicLogsBurned()
+ "/2000 Magic Logs");
else
player.getPackets().sendIComponentText(275, 11,
"<str>Burn 2000 Magic Logs");
if (!player.isKilledQueenBlackDragon())
player.getPackets().sendIComponentText(275, 12,
"Kill Queen Black Dragon Once");
else
player.getPackets().sendIComponentText(275, 12,
"<str>Kill Queen Black Dragon Once");
if (!player.isKilledBork())
player.getPackets().sendIComponentText(275, 13, "Slay Bork");
else
player.getPackets().sendIComponentText(275, 13,
"<str>Slay Bork");
if (!player.isKilledCulinaromancer())
player.getPackets().sendIComponentText(275, 14,
"Complete Recipe for Diaster");
else
player.getPackets().sendIComponentText(275, 14,
"<str>Complete Recipe for Diaster");
if (!player.isCompletedFightKiln())
player.getPackets().sendIComponentText(275, 15,
"Complete Fight-Kiln & Fight Caves");
else
player.getPackets().sendIComponentText(275, 15,
"<str>Complete Fight-Kiln & Fight Caves");
if (player.getBarbarianAdvancedLaps() < 250)
player.getPackets().sendIComponentText(
275,
16,
"You've ran " + player.getBarbarianAdvancedLaps()
+ "/250 Barbarian Advanced Laps");
else
player.getPackets().sendIComponentText(275, 16,
"<str>You've ran 250/250 Barbarian Advanced Laps");
if (player.getGnomeAdvancedLaps() < 200)
player.getPackets().sendIComponentText(
275,
17,
"You've ran " + player.getGnomeAdvancedLaps()
+ "/200 Gnome Advanced Laps");
else
player.getPackets().sendIComponentText(
275,
17,
"<str>You've ran " + player.getGnomeAdvancedLaps()
+ "/200 Gnome Advanced Laps");
if (!player.isHasCutEnoughLogs() == true)
player.getPackets().sendIComponentText(
275,
18,
"You've cut " + player.getLogsCut()
+ "/5000 Trees (Magic,Yew,Maple)");
else
player.getPackets().sendIComponentText(
275,
18,
"<str>You've cut " + player.getLogsCut()
+ "/5000 Magic/Yew/Maple trees");
if (player.getBarsDone() < 3000)
player.getPackets().sendIComponentText(
275,
19,
"You've smithed " + player.getBarsDone()
+ "/3000 Rune items");
else
player.getPackets().sendIComponentText(
275,
19,
"<str>You've smithed " + player.getBarsDone()
+ "/3000 Rune items");
if (player.getRocktailsCooked() < 5000)
player.getPackets().sendIComponentText(
275,
20,
"You've cook " + player.getRocktailsCooked()
+ "/5000 Rocktails");
else
player.getPackets().sendIComponentText(
275,
20,
"<str>You've cook " + player.getRocktailsCooked()
+ "/5000 Rocktails");
if (!player.getQuestManager().completedQuest(Quests.NOMADS_REQUIEM))
player.getPackets().sendIComponentText(275, 21,
"Nomad's Requiem miniquest");
else
player.getPackets().sendIComponentText(275, 21,
"<str>Nomad's Requiem miniquest");
if (player.completionistCapeRequirements[0])
player.getPackets().sendIComponentText(275, 22, "<str>You've killed General Graardor " + player.killedBandos + "/25 times.");
else
player.getPackets().sendIComponentText(275, 22, "You've killed General Graardor " + player.killedBandos + "/25 times.");
if (player.completionistCapeRequirements[1])
player.getPackets().sendIComponentText(275, 23, "<str>You've killed Sunfreet " + player.killedSunfreet + "/10 times.");
else
player.getPackets().sendIComponentText(275, 23, "You've killed Sunfreet " + player.killedSunfreet + "/10 times.");
if (player.completionistCapeRequirements[2])
player.getPackets().sendIComponentText(275, 24, "<str>You've killed the Avatar of Destruction " + player.killedAvatar + "/10 times.");
else
player.getPackets().sendIComponentText(275, 24, "You've killed the Avatar of Destruction " + player.killedAvatar + "/10 times.");
if (player.completionistCapeRequirements[3])
player.getPackets().sendIComponentText(275, 25, "<str>You've killed the Party Demon " + player.killedPartyD + "/10 times.");
else
player.getPackets().sendIComponentText(275, 25, "You've killed the Party Demon " + player.killedPartyD + "/10 times.");
if (player.completionistCapeRequirements[4])
player.getPackets().sendIComponentText(275, 26, "<str>You've killed WildyWyrms " + player.killedWildyW + "/25 times.");
else
player.getPackets().sendIComponentText(275, 26, "You've killed WildyWyrms " + player.killedWildyW + "/25 times.");
if (player.completionistCapeRequirements[5])
player.getPackets().sendIComponentText(275, 27, "<str>You've killed Vorago " + player.killedVorago + "/1 times.");
else
player.getPackets().sendIComponentText(275, 27, "You've killed Vorago " + player.killedVorago + "/1 times.");
if (player.completionistCapeRequirements[6])
player.getPackets().sendIComponentText(275, 28, "<str>You've killed Glacors " + player.killedGlacor + "/25 times.");
else
player.getPackets().sendIComponentText(275, 28, "You've killed the Glacors " + player.killedGlacor + "/25 times.");
if (player.completionistCapeRequirements[7])
player.getPackets().sendIComponentText(275, 29, "<str>You've killed the Pest Queen " + player.killedPestQ + "/10 times.");
else
player.getPackets().sendIComponentText(275, 29, "You've killed the Pest Queen " + player.killedPestQ + "/10 times.");
if (player.completionistCapeRequirements[8])
player.getPackets().sendIComponentText(275, 30, "<str>You've killed Blink " + player.killedBlink + "/10 times.");
else
player.getPackets().sendIComponentText(275, 30, "You've killed Blink " + player.killedBlink + "/10 times.");
if (player.completionistCapeRequirements[9])
player.getPackets().sendIComponentText(275, 31, "<str>You've killed Yk'Lagor the Thunderous " + player.killedYklagor + "/10 times.");
else
player.getPackets().sendIComponentText(275, 31, "You've killed Yk'Lagor the Thunderous " + player.killedYklagor + "/10 times.");
if (player.completionistCapeRequirements[10])
player.getPackets().sendIComponentText(275, 32, "<str>You've killed King Black Dragon " + player.killedKBD + "/25 times.");
else
player.getPackets().sendIComponentText(275, 32, "You've killed King Black Dragon " + player.killedKBD + "/25 times.");
if (player.completionistCapeRequirements[11])
player.getPackets().sendIComponentText(275, 33, "<str>You've killed Nex " + player.killedNex + "/3 times.");
else
player.getPackets().sendIComponentText(275, 33, "You've killed Nex " + player.killedNex + "/3 times.");
if (player.completionistCapeRequirements[12])
player.getPackets().sendIComponentText(275, 34, "<str>You've killed Giant Mole " + player.killedGiantMole + "/25 times.");
else
player.getPackets().sendIComponentText(275, 34, "You've killed Giant Mole " + player.killedGiantMole + "/25 times.");
if (player.completionistCapeRequirements[13])
player.getPackets().sendIComponentText(275, 35, "<str>You've killed Barrelchest " + player.killedBarrelchest + "/25 times.");
else
player.getPackets().sendIComponentText(275, 35, "You've killed Barrelchest " + player.killedBarrelchest + "/25 times.");
if (player.completionistCapeRequirements[14])
player.getPackets().sendIComponentText(275, 36, "<str>You've cut " + player.gemsCut + "/5000 gems.");
else
player.getPackets().sendIComponentText(275, 36, "You've cut " + player.gemsCut + "/5000 gems.");
if (player.completionistCapeRequirements[15])
player.getPackets().sendIComponentText(275, 37, "<str>You've ran the Wilderness Agility Course " + player.wildyCourseCompleted + "/200 times.");
else
player.getPackets().sendIComponentText(275, 37, "You've ran the Wilderness Agility Course " + player.wildyCourseCompleted + "/200 times.");
} else if (trimmed) {
if (!completionistCapeRequierment(player, false))
player.getPackets().sendIComponentText(275, 10,
"All Completionist Cape reqs.");
else
player.getPackets().sendIComponentText(275, 10,
"<str>All Completionist Cape reqs.");
if (!player.isHasCutMoreEnoughLogs())
player.getPackets().sendIComponentText(
275,
12,
"You've cut " + player.getLogsCut()
+ "/8000 logs (Maple, yew and Magic)");
else
player.getPackets().sendIComponentText(
275,
12,
"<str>You've cut " + player.getLogsCut()
+ "/8000 logs (Maple, yew and Magic)");
if (player.completionistCapeTRequirements[0])
player.getPackets().sendIComponentText(275, 15, "<str>You've ran the Barbarian Agility Course " + player.barbarianCourseCompleted + "/400 times.");
else
player.getPackets().sendIComponentText(275, 15, "You've ran the Barbarian Agility Course " + player.barbarianCourseCompleted + "/400 times.");
if (player.completionistCapeTRequirements[1])
player.getPackets().sendIComponentText(275, 16, "<str>You've successfully cooked " + player.foodCooked + "/5000 food.");
else
player.getPackets().sendIComponentText(275, 16, "You've successfully cooked " + player.foodCooked + "/5000 food.");
if (player.completionistCapeTRequirements[2])
player.getPackets().sendIComponentText(275, 17, "<str>You've fished " + player.fishFished + "/5000 fish.");
else
player.getPackets().sendIComponentText(275, 17, "You've fished " + player.fishFished + "/5000 fish.");
if (player.completionistCapeTRequirements[3])
player.getPackets().sendIComponentText(275, 18, "<str>You've mined " + player.minedOres + "/5000 ore.");
else
player.getPackets().sendIComponentText(275, 18, "You've mined " + player.minedOres + "/5000 ore.");
if (player.completionistCapeTRequirements[4])
player.getPackets().sendIComponentText(275, 19, "<str>You've ran the Gnome Agility Course " + player.gnomeCourseCompleted + "/400 times.");
else
player.getPackets().sendIComponentText(275, 19, "You've ran the Gnome Agility Course " + player.gnomeCourseCompleted + "/400 times.");
if (player.completionistCapeTRequirements[5])
player.getPackets().sendIComponentText(275, 20, "<str>You've opened the Crystal Chest " + player.openedChest + "/50 times.");
else
player.getPackets().sendIComponentText(275, 20, "You've opened the Crystal Chest " + player.openedChest + "/50 times.");
}
}
}
So I decided to rewrite it:
Code:
package com.rs.game.player.content;
import com.rs.game.player.Player;
import com.rs.game.player.Skills;
import com.rs.utils.Utils;
/**
* Created by Arham 4 in 8/5/2015
*/
public class CompletionistStand {
private static boolean checkAll(Player player) {
for (int i = 0; i < 25; i++) {
if (i == Skills.CONSTRUCTION)
continue;
if (player.getSkills().getLevel(i) < (i == Skills.DUNGEONEERING ? 120 : 99))
return false;
}
return true;
}
public static boolean completionistCapeRequirement(Player player, boolean trimmed) {
if (!player.isKilledQueenBlackDragon())
return false;
if (player.killedKBD < 25)
return false;
if (player.killedVorago < 1)
return false;
if (player.killedNex < 3)
return false;
if (player.killedBlink < 10)
return false;
if (player.killedBandos < 25 && player.killedZamorak < 25 && player.killedSaradomin < 25 && player.killedArmadyl < 25)
return false;
if (player.killedPartyD < 5)
return false;
if (player.killedYklagor < 5)
return false;
if (player.killedWildyW < 25)
return false;
if (player.killedCorp < 5)
return false;
if (player.killedKalphiteQueen < 10)
return false;
if (player.killedRex < 10 && player.killedSupreme < 10 && player.killedPrime < 10)
return false;
if (!player.isKilledBork())
return false;
if (player.killedTormentedDemon < 5)
return false;
if (player.killedGlacor < 25)
return false;
if (player.getLogsCut() < 2000)
return false;
if (player.getMagicLogsBurned() < 2000)
return false;
if (player.fishFished < 2000)
return false;
if (player.foodCooked < 2000)
return false;
if (player.minedOres < 2000)
return false;
if (player.capturedDragonImps < 50)
return false;
if (player.plantedMagicTrees < 10)
return false;
if (player.gemsCut < 5000)
return false;
if (player.smithRuneItem < 500)
return false;
if (!checkAll(player))
return false;
if (!player.isCompletedRfd())
return false;
if (player.openedChest < 25)
return false;
if (player.getTasksComplete() < 100)
return false;
if (trimmed) {
if (player.getLogsCut() < 8000)
return false;
if (player.foodCooked < 5000)
return false;
if (player.fishFished < 5000)
return false;
if (player.minedOres < 5000)
return false;
if (player.openedChest < 50)
return false;
}
return true;
}
public static void openCapeStandInterface(Player player, boolean trimmed) {
player.getInterfaceManager().sendInterface(275);
for (int i = 0; i < 100; i++) {
player.getPackets().sendIComponentText(275, i, "");
}
if (!trimmed) {
player.getPackets().sendIComponentText(275, 1, "Untrimmed Cape Requirements");
player.getPackets().sendIComponentText(275, 11, "<u>Player versus Monster (PvM)");
sendIComponentText(player, 275, 12, "Killed the Queen Black Dragon once", !player.isKilledQueenBlackDragon());
sendIComponentText(player, 275, 13, "Killed Vorago once", player.killedVorago < 1);
sendIComponentText(player, 275, 14, "Killed Nex 3 times (" + getAmountLeft(player.killedNex, 3) + " more times left)", player.killedNex < 3);
sendIComponentText(player, 275, 15, "Killed Blink 10 times (" + getAmountLeft(player.killedBlink, 10) + " more times left)", player.killedBlink < 10);
sendIComponentText(player, 275, 16, "Killed all the GWD bosses 25 times: ", player.killedBandos < 25 && player.killedZamorak < 25 && player.killedSaradomin < 25 && player.killedArmadyl < 25);
sendIComponentText(player, 275, 18, "- Killed General Graardor 25 times (" + getAmountLeft(player.killedBandos, 25) + " more times left)", player.killedBandos < 25);
sendIComponentText(player, 275, 19, "- Killed K'ril Tsutsaroth 25 times (" + getAmountLeft(player.killedZamorak, 25) + " more times left)", player.killedZamorak < 25);
sendIComponentText(player, 275, 20, "- Killed Commander Zilyana 25 times (" + getAmountLeft(player.killedSaradomin, 25) + " more times left)", player.killedSaradomin < 25);
sendIComponentText(player, 275, 21, "- Killed Kree'arra 25 times (" + getAmountLeft(player.killedArmadyl, 25) + " more times left)", player.killedArmadyl < 25);
sendIComponentText(player, 275, 23, "Killed the Party Demon 5 times (" + getAmountLeft(player.killedPartyD, 5) + " more times left)", player.killedPartyD < 5);
sendIComponentText(player, 275, 24, "Killed Yk'Lagor the Thunderous 5 times (" + getAmountLeft(player.killedYklagor, 5) + " more times left)", player.killedYklagor < 5);
sendIComponentText(player, 275, 25, "Killed the WildyWyrm 25 times (" + getAmountLeft(player.killedWildyW, 25) + " more times left)", player.killedWildyW < 25);
sendIComponentText(player, 275, 26, "Killed the Corporeal Beast 5 times (" + getAmountLeft(player.killedCorp, 5) + " more times left)", player.killedCorp < 5);
sendIComponentText(player, 275, 27, "Killed the Kalphite Queen 10 times (" + getAmountLeft(player.killedKalphiteQueen, 10) + " more times left)", player.killedKalphiteQueen < 10);
sendIComponentText(player, 275, 28, "Killed the Dagannoth Kings 10 times:", player.killedRex < 10 && player.killedSupreme < 10 && player.killedPrime < 10);
sendIComponentText(player, 275, 30, "- Killed the Dagannoth Prime 10 times (" + getAmountLeft(player.killedPrime, 10) + " more times left)", player.killedPrime < 10);
sendIComponentText(player, 275, 31, "- Killed the Dagannoth Supreme 10 times (" + getAmountLeft(player.killedSupreme, 10) + " more times left)", player.killedSupreme < 10);
sendIComponentText(player, 275, 32, "- Killed the Dagannoth Rex 10 times (" + getAmountLeft(player.killedRex, 10) + " more times left)", player.killedRex < 10);
sendIComponentText(player, 275, 34, "Killed Bork once", !player.isKilledBork());
sendIComponentText(player, 275, 35, "Killed Tormented Demons 5 times (" + getAmountLeft(player.killedTormentedDemon, 5) + " more times left)", player.killedTormentedDemon < 5);
sendIComponentText(player, 275, 36, "Killed Glacors 25 times (" + getAmountLeft(player.killedGlacor, 25) + " more times left)", player.killedGlacor < 25);
player.getPackets().sendIComponentText(275, 38, "<u>Skilling");
sendIComponentText(player, 275, 39, "Cut 2,000 Maple, Yew, Magic logs (" + Utils.format(getAmountLeft(player.getLogsCut(), 2000)) + " left)", player.getLogsCut() < 2000);
sendIComponentText(player, 275, 40, "Burn 2,000 Magic logs (bonfire included) (" + Utils.format(getAmountLeft(player.getMagicLogsBurned(), 2000)) + " left)", player.getMagicLogsBurned() < 2000);
sendIComponentText(player, 275, 41, "Fish 2,000 Shark or Rocktail (" + Utils.format(getAmountLeft(player.fishFished, 2000)) + " left)", player.fishFished < 2000);
sendIComponentText(player, 275, 42, "Cook 2,000 Shark or Rocktail (" + Utils.format(getAmountLeft(player.foodCooked, 2000)) + " left)", player.foodCooked < 2000);
sendIComponentText(player, 275, 43, "Mine 2,000 Ore (" + Utils.format(getAmountLeft(player.minedOres, 2000)) + " left)", player.minedOres < 2000);
sendIComponentText(player, 275, 44, "Capture 50 Dragon implings (" + Utils.format(getAmountLeft(player.capturedDragonImps, 50)) + " left)", player.capturedDragonImps < 50);
sendIComponentText(player, 275, 45, "Plant 10 Magic trees (" + Utils.format(getAmountLeft(player.plantedMagicTrees, 10)) + " left)", player.plantedMagicTrees < 10);
sendIComponentText(player, 275, 46, "Cut 5,000 gems (" + Utils.format(getAmountLeft(player.gemsCut, 5000)) + " left)", player.gemsCut < 5000);
sendIComponentText(player, 275, 47, "Smith 500 runite equipment (" + Utils.format(getAmountLeft(player.smithRuneItem, 500)) + " left)", player.smithRuneItem < 500);
player.getPackets().sendIComponentText(275, 49, "<u>Miscellaneous");
sendIComponentText(player, 275, 50, "Achieve level 99 in every skill with the exception of Dungeoneering,", !checkAll(player));
sendIComponentText(player, 275, 51, "which requires level 120, and Construction (until it is added in-game)", !checkAll(player));
sendIComponentText(player, 275, 52, "Complete the Recipe for Disaster", !player.isCompletedRfd());
sendIComponentText(player, 275, 53, "Open the Crystal chest 25 times (" + getAmountLeft(player.openedChest, 25) + " more times left)", player.openedChest < 25);
sendIComponentText(player, 275, 54, "Complete 100 Slayer tasks (" + getAmountLeft(player.getTasksComplete(), 100) + " left)", player.getTasksComplete() < 100);
} else {
player.getPackets().sendIComponentText(275, 1, "Trimmed Cape Requirements");
sendIComponentText(player, 275, 11, "All Untrimmed Completionist cape requirements met", !completionistCapeRequirement(player, false));
sendIComponentText(player, 275, 13, "Cut 8,000 Maple, Yew, Magic logs (" + Utils.format(getAmountLeft(player.getLogsCut(), 8000)) + " left)", player.getLogsCut() < 8000);
sendIComponentText(player, 275, 14, "Fish 5,000 Shark or Rocktail (" + Utils.format(getAmountLeft(player.fishFished, 5000)) + " left)", player.fishFished < 5000);
sendIComponentText(player, 275, 15, "Cook 5,000 Shark or Rocktail (" + Utils.format(getAmountLeft(player.foodCooked, 5000)) + " left)", player.foodCooked < 5000);
sendIComponentText(player, 275, 16, "Mine 5,000 Ore (" + Utils.format(getAmountLeft(player.minedOres, 5000)) + " left)", player.minedOres < 5000);
sendIComponentText(player, 275, 17, "Open the Crystal chest 50 times (" + getAmountLeft(player.openedChest, 50) + " more times left)", player.openedChest < 50);
}
}
private static int getAmountLeft(int amountDone, int max) {
int amountLeft = max - amountDone;
return amountLeft < 0 ? 0 : amountLeft;
}
private static void sendIComponentText(Player player, int interfaceId, int componentId, String text, boolean complete) {
String line = (complete ? "" : "<str>") + text;
player.getPackets().sendIComponentText(interfaceId, componentId, line);
}
}
Is there any more ways for me to improve this?