Update Slayer (#196)

* tidy up

* Update DialogueHandler.java

* Slayer master gives specific difficulty tasks

* int

* tidy up
This commit is contained in:
Danial
2019-11-19 06:01:03 +13:00
committed by Daniel Ginovker
parent 26ff191af3
commit e5a0f84fcc
2 changed files with 90 additions and 126 deletions
@@ -8,10 +8,17 @@ import redone.util.Misc;
public class Slayer {
public static final int VERY_EASY_TASK = 0, EASY_TASK = 1, MEDIUM_TASK = 2,
HARD_TASK = 3, VERY_HARD_TASK = 4, VERY_EASY_AMOUNT = 15 + r(25),
EASY_AMOUNT = 25 + r(25), MEDIUM_AMOUNT = 50 + r(25),
HARD_AMOUNT = 100 + r(50), VERY_HARD_AMOUNT = 130 + r(70),
public static final int
VERY_EASY_TASK = 0,
EASY_TASK = 1,
MEDIUM_TASK = 2,
HARD_TASK = 3,
VERY_HARD_TASK = 4,
VERY_EASY_AMOUNT = 15 + r(25),
EASY_AMOUNT = 25 + r(25),
MEDIUM_AMOUNT = 50 + r(25),
HARD_AMOUNT = 100 + r(50),
VERY_HARD_AMOUNT = 130 + r(70),
DRAGON_AMOUNT = 10 + r(40);
public static ArrayList<Integer> veryEasyTask = new ArrayList<Integer>();
@@ -27,18 +34,19 @@ public class Slayer {
}
public enum SlayerMasters {
TURAEL(70, 1, "Taverly", "Turael"), MAZCHNA(1596, 20, "Canifis",
"Mazchna"), VANNAKA(1597, 40, "Edgeville", "Vannaka"), CHAELDAR(
1598, 70, "Zanaris", "Chaeldar"), DURADEL(1599, 100,
"Shilo Village", "Duradel");
TURAEL(70, 1, VERY_EASY_TASK,"Taverly", "Turael"),
MAZCHNA(1596, 20, EASY_TASK, "Canifis", "Mazchna"),
VANNAKA(1597, 40, MEDIUM_TASK, "Edgeville", "Vannaka"),
CHAELDAR(1598, 70, HARD_TASK, "Zanaris", "Chaeldar"),
DURADEL(1599, 100, VERY_HARD_TASK, "Shilo Village", "Duradel");
private int masterId, combatReq;
private int masterId, combatReq, diffuculty;
private String masterLocation, masterName;
private SlayerMasters(int masterId, int combatReq,
String masterLocation, String masterName) {
private SlayerMasters(int masterId, int combatReq, int diffuculty, String masterLocation, String masterName) {
this.masterId = masterId;
this.combatReq = combatReq;
this.diffuculty = diffuculty;
this.masterLocation = masterLocation;
this.masterName = masterName;
}
@@ -59,13 +67,17 @@ public class Slayer {
return masterName;
}
public int getDifficulty() {
return diffuculty;
}
}
//dark beast, red dragon, skeleton
public enum Task {
ABERRANT_SPECTRE(1604, 60, 90, 3, "Slayer Tower"),
ABYSSAL_DEMON(1615, 85, 150, 4, "Slayer Tower"),
BANSHEE(1612, 15, 22, 0 + r(2), "Slayer Tower"),
BANSHEE(1612, 15, 22, 0 + r(1), "Slayer Tower"),
BASILISK(1616, 40, 75, 2, "Fremennik Slayer Dungeon"),
BAT(412, 1, 8, 1, "Road to Paterdomus"),
BLACK_DEMON(84, 1, 157, 3, "Taverly Dungeon"),
@@ -74,10 +86,10 @@ public class Slayer {
BLUE_DRAGON(55, 1, 107, 3, "Taverly Dungeon"),
BRONZE_DRAGON(1590, 1, 125, 3, "Brimhaven Dungeon"),
CAVE_CRAWLER(1600, 10, 22, 1, "Fremennik Slayer Dungeon"),
COCKATRICE(1620, 25, 37, 2, "Fremennik Slayer Dungeon"),
COCKATRICE(1620, 25, 37, 2, "Fremennik Slayer Dungeon"),
CRAWLING_HAND(1648, 5, 16 + r(3), 1 + r(1), "Slayer Tower"),
DAGANNOTH_74(1338, 1, 70 + r(50), 3, "Lighthouse Basement"),
DAGANNOTH_92(1342, 1, 70 + r(50), 3, "Lighthouse Basement"),
DAGANNOTH_92(1342, 1, 80 + r(50), 3, "Lighthouse Basement"),
DARK_BEAST(2783, 90, 180, 4, "Slayer Tower"),
DUST_DEVIL(1624, 65, 105, 2, "Slayer Tower"),
EARTH_WARRIOR(124, 1, 54, 2, "Edgeville Dungeon"),
@@ -92,7 +104,7 @@ public class Slayer {
ICE_WARRIOR(125, 1, 59, 2, "Asgarnian Ice Caves or the Wilderness"),
SKELETAL_WYVERN(3068, 72, 210, 4, "Asgarnian Ice Caves"),
INFERNAL_MAGE(1643, 45, 60, 2, "Slayer Tower"),
IRON_DRAGON(1591, 1, (int) 173.2, 4, "Brimhaven Dungeon"),
IRON_DRAGON(1591, 1, 174, 4, "Brimhaven Dungeon"),
JELLY(1637, 52, 75, 2, "Fremennik Slayer Dungeon"),
KALPHITE_WORKER(1156, 1, 40, 1 + r(1), "Kalphite Lair"),
KALPHITE_SOLDIER(1154, 1, 90, 3, "Kalphite Lair"),
@@ -103,12 +115,12 @@ public class Slayer {
NECHRYAELS(1613, 80, 1, 3, "Slayer Tower"),
PYREFIEND(1633, 30, 1, 1, "Fremennik Slayer Dungeon"),
RED_DRAGON(53, 1, 120, 3, "Brimhaven Dungeon"),
ROCKSLUG(1622, 20, 27, 1, "Fremennik Slayer Dungeon"),
SKELETON(90, 1, 30, 0 + r(2), "Edgeville Dungeon or Taverly Dungeon"),
ROCKSLUG(1622, 20, 27, 1, "Fremennik Slayer Dungeon"),
SKELETON(90, 1, 30, 0 + r(2), "Edgeville Dungeon or Taverly Dungeon"),
KARAMAJA_SKELETON(91, 1, 30, 0 + r(2), "Karamaja"),
WILDERNESS_SKELETON(92, 1, 30, 0 + r(2), "Wilderness"),
STEEL_DRAGON(1592, 1, 221, 4, "Brimhaven Dungeon"),
GRIZZLY_BEAR(105, 1, 27, 0, "Goblin Village"),
WILDERNESS_SKELETON(92, 1, 30, 0 + r(2), "Wilderness"),
STEEL_DRAGON(1592, 1, 221, 4, "Brimhaven Dungeon"),
BEAR(105, 1, 27, 0, "Goblin Village"),
GREEN_GOBLIN(298, 1, 6, 0, "Goblin Village"),
RED_GOBLIN(299, 1, 6, 0, "Goblin Village"),
SCORPION(107, 1, 17, 0, "Goblin Village"),
@@ -122,7 +134,7 @@ public class Slayer {
this.exp = exp;
this.levelReq = levelReq;
this.location = location;
diff = difficulty;
this.diff = difficulty;
}
public int getNpcId() {
@@ -198,13 +210,11 @@ public class Slayer {
}
}
public boolean getMasterRequirment(int id) {
public static boolean getMasterRequirment(Client c, int id) {
for (SlayerMasters slayermasters : SlayerMasters.values()) {
if (c.combatLevel < slayermasters.getCombatRequirement()
&& slayermasters.getId() == id) {
c.getActionSender().sendMessage(
"You need " + slayermasters.getCombatRequirement()
+ " combat to use this slayer master.");
c.getActionSender().sendMessage("You need " + slayermasters.getCombatRequirement() + " combat to use this slayer master.");
return false;
}
}
@@ -309,8 +319,7 @@ public class Slayer {
public void generateTask() {
if (hasTask() && !c.needsNewTask) {
c.getDialogueHandler().sendDialogues(1226, c.npcType);// already have
// task
c.getDialogueHandler().sendDialogues(1226, c.npcType);// already have task
return;
}
if (hasTask() && c.needsNewTask) {// assigning new task
@@ -331,7 +340,7 @@ public class Slayer {
*/
}
}
int taskLevel = getSlayerDifficulty();
int taskLevel = getSlayerDifficulty(c);
// System.out.println("EASY :" + easyTask + "\nMEDIUM: " + mediumTask+
// "\nHARD: " + hardTask + "");
for (Task slayerTask : Task.values()) {
@@ -342,8 +351,7 @@ public class Slayer {
int task = getRandomTask(taskLevel);
for (int removedTask : c.removedTasks) {
if (task == removedTask) {
c.getActionSender().sendMessage(
"Unavailable task: " + task);
c.getActionSender().sendMessage("Unavailable task: " + task);
generateTask();
return;
}
@@ -354,8 +362,7 @@ public class Slayer {
int task = getRandomTask(getDifficulty(taskLevel - 1));
for (int removedTask : c.removedTasks) {
if (task == removedTask) {
c.getActionSender().sendMessage(
"Unavailable task: " + task);
c.getActionSender().sendMessage("Unavailable task: " + task);
generateTask();
return;
}
@@ -364,12 +371,8 @@ public class Slayer {
c.taskAmount = getTaskAmount(getDifficulty(c.slayerTask) - 1);
c.needsNewTask = false;
}
c.getDialogueHandler().sendDialogues(1237, c.npcType);// assign
// task
c.getActionSender().sendMessage(
"You have been assigned " + c.taskAmount + " "
+ getTaskName(c.slayerTask)
+ ", good luck " + c.playerName + ".");
c.getDialogueHandler().sendDialogues(1237, c.npcType);// assign task
c.getActionSender().sendMessage("You have been assigned " + c.taskAmount + " " + getTaskName(c.slayerTask) + ", good luck " + c.playerName + ".");
return;
}
}
@@ -392,18 +395,11 @@ public class Slayer {
return EASY_AMOUNT;
}
public int getSlayerDifficulty() {
if (c.combatLevel > 0 && c.combatLevel < 20) {
return VERY_EASY_TASK;
} else if (c.combatLevel >= 20 && c.combatLevel < 40) {
return EASY_TASK;
} else if (c.combatLevel >= 40 && c.combatLevel < 70) {
return MEDIUM_TASK;
} else if (c.combatLevel >= 70 && c.combatLevel < 100) {
return HARD_TASK;
} else if (c.combatLevel >= 100) {
return VERY_HARD_TASK;
}
public int getSlayerDifficulty(Client c) {
for(SlayerMasters master : SlayerMasters.values()){
if (master.getId() == c.SlayerMaster)
return master.getDifficulty();
}
return EASY_TASK;
}
@@ -424,16 +420,13 @@ public class Slayer {
public void handleInterface(String shop) {
if (shop.equalsIgnoreCase("buy")) {
c.getPlayerAssistant().sendFrame126(
"Slayer Points: " + c.slayerPoints, 41011);
c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints, 41011);
c.getPlayerAssistant().showInterface(41000);
} else if (shop.equalsIgnoreCase("learn")) {
c.getPlayerAssistant().sendFrame126(
"Slayer Points: " + c.slayerPoints, 41511);
c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints, 41511);
c.getPlayerAssistant().showInterface(41500);
} else if (shop.equalsIgnoreCase("assignment")) {
c.getPlayerAssistant().sendFrame126(
"Slayer Points: " + c.slayerPoints, 42011);
c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints, 42011);
updateCurrentlyRemoved();
c.getPlayerAssistant().showInterface(42000);
}
@@ -441,24 +434,18 @@ public class Slayer {
public void cancelTask() {
if (!hasTask()) {
c.getActionSender().sendMessage(
"You must have a task to cancel first.");
c.getActionSender().sendMessage("You must have a task to cancel first.");
return;
}
if (c.slayerPoints < 30) {
c.getActionSender()
.sendMessage(
"This requires atleast 30 slayer points, which you don't have.");
c.getDialogueHandler()
.sendNpcChat1(
"This requires atleast 30 slayer points, which you don't have.",
c.npcType, NpcHandler.getNpcListName(c.talkingNpc));
c.getActionSender().sendMessage("This requires atleast 30 slayer points, which you don't have.");
c.getDialogueHandler().sendNpcChat1("This requires atleast 30 slayer points, which you don't have.",
c.npcType,
NpcHandler.getNpcListName(c.talkingNpc));
c.nextChat = 0;
return;
}
c.getActionSender().sendMessage(
"You have cancelled your current task of " + c.taskAmount + " "
+ getTaskName(c.slayerTask) + ".");
c.getActionSender().sendMessage("You have cancelled your current task of " + c.taskAmount + " " + getTaskName(c.slayerTask) + ".");
c.slayerTask = -1;
c.taskAmount = 0;
c.slayerPoints -= 30;
@@ -467,18 +454,14 @@ public class Slayer {
public void removeTask() {
int counter = 0;
if (!hasTask()) {
c.getActionSender().sendMessage(
"You must have a task to remove first.");
c.getActionSender().sendMessage("You must have a task to remove first.");
return;
}
if (c.slayerPoints < 100) {
c.getActionSender()
.sendMessage(
"This requires atleast 100 slayer points, which you don't have.");
c.getDialogueHandler()
.sendNpcChat1(
"This requires atleast 100 slayer points, which you don't have.",
c.npcType, NpcHandler.getNpcListName(c.talkingNpc));
c.getActionSender().sendMessage("This requires atleast 100 slayer points, which you don't have.");
c.getDialogueHandler().sendNpcChat1("This requires atleast 100 slayer points, which you don't have.",
c.npcType,
NpcHandler.getNpcListName(c.talkingNpc));
c.nextChat = 0;
return;
}
@@ -487,8 +470,7 @@ public class Slayer {
counter++;
}
if (counter == 4) {
c.getActionSender().sendMessage(
"You don't have any open slots left to remove tasks.");
c.getActionSender().sendMessage("You don't have any open slots left to remove tasks.");
return;
}
if (c.removedTasks[i] == -1) {
@@ -496,9 +478,7 @@ public class Slayer {
c.slayerPoints -= 100;
c.slayerTask = -1;
c.taskAmount = 0;
c.getActionSender()
.sendMessage(
"Your current slayer task has been removed, you can't obtain this task again.");
c.getActionSender().sendMessage("Your current slayer task has been removed, you can't obtain this task again.");
updateCurrentlyRemoved();
return;
}
@@ -506,12 +486,9 @@ public class Slayer {
}
public void updatePoints() {
c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints,
41011);
c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints,
41511);
c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints,
42011);
c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints, 41011);
c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints, 41511);
c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints, 42011);
}
public void updateCurrentlyRemoved() {
@@ -531,17 +508,13 @@ public class Slayer {
return;
}
if (c.slayerPoints < 50) {
c.getActionSender()
.sendMessage(
"You need at least 50 slayer points to gain 32,500 Experience.");
c.getActionSender().sendMessage( "You need at least 50 slayer points to gain 32,500 Experience.");
return;
}
c.buySlayerTimer = System.currentTimeMillis();
c.slayerPoints -= 50;
c.getPlayerAssistant().addSkillXP(16250, 18);
c.getActionSender()
.sendMessage(
"You spend 50 slayer points and gain 16,250 experience in slayer.");
c.getPlayerAssistant().addSkillXP(32500, 18);
c.getActionSender().sendMessage("You spend 50 slayer points and gain 32,500 experience in slayer.");
updatePoints();
}
@@ -550,23 +523,19 @@ public class Slayer {
return;
}
if (c.slayerPoints < 35) {
c.getActionSender().sendMessage(
"You need at least 35 slayer points to buy Slayer darts.");
c.getActionSender().sendMessage("You need at least 35 slayer points to buy Slayer darts.");
return;
}
if (c.getItemAssistant().freeSlots() < 2
&& !c.getItemAssistant().playerHasItem(560)
&& !c.getItemAssistant().playerHasItem(558)) {
c.getActionSender().sendMessage(
"You need at least 2 free lots to purchase this.");
c.getActionSender().sendMessage("You need at least 2 free lots to purchase this.");
return;
}
c.buySlayerTimer = System.currentTimeMillis();
c.slayerPoints -= 35;
c.getActionSender()
.sendMessage(
"You spend 35 slayer points and aquire 250 casts of Slayer darts.");
c.getActionSender().sendMessage("You spend 35 slayer points and aquire 250 casts of Slayer darts.");
c.getItemAssistant().addItem(558, 1000);
c.getItemAssistant().addItem(560, 250);
updatePoints();
@@ -577,20 +546,17 @@ public class Slayer {
return;
}
if (c.slayerPoints < 25) {
c.getActionSender().sendMessage(
"You need at least 25 slayer points to buy Broad arrows.");
c.getActionSender().sendMessage("You need at least 25 slayer points to buy Broad arrows.");
return;
}
if (c.getItemAssistant().freeSlots() < 1
&& !c.getItemAssistant().playerHasItem(4160)) {
c.getActionSender().sendMessage(
"You need at least 1 free lot to purchase this.");
c.getActionSender().sendMessage("You need at least 1 free lot to purchase this.");
return;
}
c.buySlayerTimer = System.currentTimeMillis();
c.slayerPoints -= 25;
c.getActionSender().sendMessage(
"You spend 35 slayer points and aquire 250 Broad arrows.");
c.getActionSender().sendMessage("You spend 35 slayer points and aquire 250 Broad arrows.");
c.getItemAssistant().addItem(4160, 250);
updatePoints();
}
@@ -600,16 +566,12 @@ public class Slayer {
return;
}
if (c.slayerPoints < 25) {
c.getActionSender()
.sendMessage(
"You need at least 25 slayer points to buy Slayer's respite.");
c.getActionSender().sendMessage("You need at least 25 slayer points to buy Slayer's respite.");
return;
}
c.buySlayerTimer = System.currentTimeMillis();
c.slayerPoints -= 25;
c.getActionSender()
.sendMessage(
"You spend 25 slayer points and aquire a useful Slayer's respite.");
c.getActionSender().sendMessage("You spend 25 slayer points and aquire a useful Slayer's respite.");
c.getItemAssistant().addItem(5841, 1);
updatePoints();
}
@@ -6,6 +6,7 @@ import redone.game.content.quests.QuestRewards;
import redone.game.content.randomevents.FreakyForester;
import redone.game.content.randomevents.RandomEventHandler;
import redone.game.content.skills.SkillHandler;
import redone.game.content.skills.slayer.Slayer;
import redone.game.content.traveling.Sailing;
import redone.game.globalworldobjects.PassDoor;
import redone.game.items.ItemAssistant;
@@ -4221,6 +4222,7 @@ public class DialogueHandler {
sendNpcChat1("Hummph.", player.talkingNpc, "Saniboch");
player.nextChat = 0;
break;
// Slayer masters
case 1226:
sendNpcChat2("You already have a slayer task",
"please finish it talk to me again.", player.talkingNpc,
@@ -4235,10 +4237,13 @@ public class DialogueHandler {
player.nextChat = 0;
break;
case 1228:
sendNpcChat1("'Ello and what are you after then?",
player.talkingNpc,
NpcHandler.getNpcListName(player.talkingNpc));
player.nextChat = 1229;
if (!Slayer.getMasterRequirment(player, player.talkingNpc)) {
sendNpcChat1("Increase your combat level then come back.", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc));
player.nextChat = 0;
} else {
sendNpcChat1("'Ello and what are you after then?", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc));
player.nextChat = 1229;
}
break;
case 1229:
sendOption4("I need another assignement.",
@@ -4267,14 +4272,11 @@ public class DialogueHandler {
break;
case 1235:
if (player.getSlayer().hasTask()) {
sendNpcChat1("Your Slayer Task is located at "
+ player.getSlayer().getLocation(player.slayerTask)
+ ".", player.talkingNpc,
NpcHandler.getNpcListName(player.talkingNpc));
sendNpcChat1("Your Slayer Task is located at " + player.getSlayer().getLocation(player.slayerTask) + ".", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc));
player.nextChat = 0;
} else {
sendNpcChat2("You don't have a slayer task",
"if you wish to get one talk to a slayer mask.",
"if you wish to get one talk to a slayer master.",
player.talkingNpc,
NpcHandler.getNpcListName(player.talkingNpc));
player.nextChat = 0;
@@ -4285,9 +4287,9 @@ public class DialogueHandler {
player.nextChat = 0;
break;
case 1237:
sendNpcChat2("You have been assigned " + player.taskAmount + " "
+ player.getSlayer().getTaskName(player.slayerTask) + ",",
"Good luck " + player.playerName + ".", player.talkingNpc,
sendNpcChat2("You have been assigned " + player.taskAmount + " " + player.getSlayer().getTaskName(player.slayerTask) + ",",
"Good luck " + player.playerName + ".",
player.talkingNpc,
NpcHandler.getNpcListName(player.talkingNpc));
player.nextChat = 0;
break;