Random slayer task amounts, Move unequiped item to same slot as weapon you are equiping (#206)

* tidy up

* Update DialogueHandler.java

* Slayer master gives specific difficulty tasks

* int

* tidy up

* replace difficulty int, with variable

* Dragons give lower amount needed to kill

* vail -> vial

* Update ObjectsActions.java

* tidy up

* tidy up

* tidy up

* Assign random amounts

* tidy up, remove magic numbers

* move rebinding of equip slot

* tidy up and move unequiped items to same inventory slot

* Drop castlewars flag when equiping a weapon

* vars

* tidy up
This commit is contained in:
Danial
2019-11-22 08:10:30 +13:00
committed by Daniel Ginovker
parent 92688def31
commit 4b3bb7ade7
10 changed files with 376 additions and 395 deletions
@@ -18,32 +18,53 @@ public class FightCaves {
/**
* Holds the data for the 63 waves fight cave.
*/
private final int[][] WAVES = { { TZ_KIH }, { TZ_KIH, TZ_KIH }, { TZ_KEK },
{ TZ_KEK, TZ_KIH }, { TZ_KEK, TZ_KIH, TZ_KIH }, { TZ_KEK, TZ_KEK },
{ TOK_XIL }, { TOK_XIL, TZ_KIH }, { TOK_XIL, TZ_KIH, TZ_KIH },
{ TOK_XIL, TZ_KEK }, { TOK_XIL, TZ_KEK, TZ_KIH },
{ TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH }, { TOK_XIL, TZ_KEK, TZ_KEK },
{ TOK_XIL, TOK_XIL }, { YT_MEJKOT }, { YT_MEJKOT, TZ_KIH },
{ YT_MEJKOT, TZ_KIH, TZ_KIH }, { YT_MEJKOT, TZ_KEK },
private final int[][] WAVES = {
{ TZ_KIH },
{ TZ_KIH, TZ_KIH },
{ TZ_KEK },
{ TZ_KEK, TZ_KIH },
{ TZ_KEK, TZ_KIH, TZ_KIH },
{ TZ_KEK, TZ_KEK },
{ TOK_XIL },
{ TOK_XIL, TZ_KIH },
{ TOK_XIL, TZ_KIH, TZ_KIH },
{ TOK_XIL, TZ_KEK },
{ TOK_XIL, TZ_KEK, TZ_KIH },
{ TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH },
{ TOK_XIL, TZ_KEK, TZ_KEK },
{ TOK_XIL, TOK_XIL },
{ YT_MEJKOT },
{ YT_MEJKOT, TZ_KIH },
{ YT_MEJKOT, TZ_KIH, TZ_KIH },
{ YT_MEJKOT, TZ_KEK },
{ YT_MEJKOT, TZ_KEK, TZ_KIH },
{ YT_MEJKOT, TZ_KEK, TZ_KIH, TZ_KIH },
{ YT_MEJKOT, TZ_KEK, TZ_KEK }, { YT_MEJKOT, TOK_XIL },
{ YT_MEJKOT, TZ_KEK, TZ_KEK },
{ YT_MEJKOT, TOK_XIL },
{ YT_MEJKOT, TOK_XIL, TZ_KIH },
{ YT_MEJKOT, TOK_XIL, TZ_KIH, TZ_KIH },
{ YT_MEJKOT, TOK_XIL, TZ_KEK },
{ YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KIH },
{ YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH },
{ YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KEK },
{ YT_MEJKOT, TOK_XIL, TOK_XIL }, { YT_MEJKOT, YT_MEJKOT },
{ KET_ZEK }, { KET_ZEK, TZ_KIH }, { KET_ZEK, TZ_KIH, TZ_KIH },
{ KET_ZEK, TZ_KEK }, { KET_ZEK, TZ_KEK, TZ_KIH },
{ KET_ZEK, TZ_KEK, TZ_KIH, TZ_KIH }, { KET_ZEK, TZ_KEK, TZ_KEK },
{ KET_ZEK, TOK_XIL }, { KET_ZEK, TOK_XIL, TZ_KIH },
{ KET_ZEK, TOK_XIL, TZ_KIH, TZ_KIH }, { KET_ZEK, TOK_XIL, TZ_KEK },
{ YT_MEJKOT, TOK_XIL, TOK_XIL },
{ YT_MEJKOT, YT_MEJKOT },
{ KET_ZEK },
{ KET_ZEK, TZ_KIH },
{ KET_ZEK, TZ_KIH, TZ_KIH },
{ KET_ZEK, TZ_KEK },
{ KET_ZEK, TZ_KEK, TZ_KIH },
{ KET_ZEK, TZ_KEK, TZ_KIH, TZ_KIH },
{ KET_ZEK, TZ_KEK, TZ_KEK },
{ KET_ZEK, TOK_XIL },
{ KET_ZEK, TOK_XIL, TZ_KIH },
{ KET_ZEK, TOK_XIL, TZ_KIH, TZ_KIH },
{ KET_ZEK, TOK_XIL, TZ_KEK },
{ KET_ZEK, TOK_XIL, TZ_KEK, TZ_KIH },
{ KET_ZEK, TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH },
{ KET_ZEK, TOK_XIL, TZ_KEK, TZ_KEK },
{ KET_ZEK, TOK_XIL, TOK_XIL }, { KET_ZEK, YT_MEJKOT },
{ KET_ZEK, TOK_XIL, TOK_XIL },
{ KET_ZEK, YT_MEJKOT },
{ KET_ZEK, YT_MEJKOT, TZ_KIH },
{ KET_ZEK, YT_MEJKOT, TZ_KIH, TZ_KIH },
{ KET_ZEK, YT_MEJKOT, TZ_KEK },
@@ -58,8 +79,10 @@ public class FightCaves {
{ KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH },
{ KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KEK },
{ KET_ZEK, YT_MEJKOT, TOK_XIL, TOK_XIL },
{ KET_ZEK, YT_MEJKOT, YT_MEJKOT }, { KET_ZEK, KET_ZEK },
{ TZTOK_JAD } };
{ KET_ZEK, YT_MEJKOT, YT_MEJKOT },
{ KET_ZEK, KET_ZEK },
{ TZTOK_JAD }
};
private static final int[][] JAD_SPAWNS = {{2400, 5090},{2419, 5080}};
private static final int[][] HEALER_COORDS = {{2390, 5101}, {2391, 5077}, {2411, 5084}, {2398, 5091}};
@@ -18,7 +18,8 @@ import redone.util.Misc;
public class Prayer {
private static int[][] data = { { 526, 5 }, // NPC BONES
private static int[][] data = {
{ 526, 5 }, // NPC BONES
{ 528, 5 }, // BURNT BONES
{ 530, 5 }, // BAT BONES
{ 2859, 5 }, // WOLF BONES
@@ -13,13 +13,14 @@ public class Slayer {
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);
VERY_HARD_TASK = 4;
public static final int[]
VERY_EASY_AMOUNT = new int[]{15, 40},
EASY_AMOUNT = new int[]{25, 50},
MEDIUM_AMOUNT = new int[]{50, 75},
HARD_AMOUNT = new int[]{100, 150},
VERY_HARD_AMOUNT = new int[]{130, 200},
DRAGON_AMOUNT = new int[]{20, 60};
public static ArrayList<Integer> veryEasyTask = new ArrayList<Integer>();
public static ArrayList<Integer> easyTask = new ArrayList<Integer>();
@@ -75,61 +76,61 @@ public class Slayer {
//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(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"),
BLACK_DRAGON(54, 1, 258, 4, "Taverly Dungeon"),
BLOODVELD(1618, 50, 120, 3 + r(1), "Slayer Tower"),
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"),
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, 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"),
FIRE_GIANT(110, 1, 111, 3, "Brimhaven Dungeon"),
GARGOYLE(1611, 75, 105, 3, "Slayer Tower"),
GHOST(103, 1, 25, 1 + r(1), "Taverly Dungeon"),
GREATER_DEMON(83, 1, 87, 3, "Brimhaven Dungeon"),
GREEN_DRAGON(941, 1, 75, 2, "The Wilderness"),
HELLHOUND(49, 1, 116, 3 + r(1),"Taverly Dungeon"),
HILL_GIANT(117, 1, 35, 2, "Edgeville Dungeon"),
ICE_GIANT(111, 1, 70, 2, "Asgarnian Ice Caves or White Wolf Mountain"),
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, 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"),
KALPHITE_GUARDIAN(1157, 1, 170, 4, "Kalphite Lair"),
KURASK(1608, 70, 97, 3, "Fremennik Slayer Dungeon"),
LESSER_DEMON(82, 1, 79, 3, "Karamja Dungeon"),
MOSS_GIANT(112, 1, 60, 2, "Brimhaven Dungeon"),
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"),
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"),
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"),
TUROTH(1632, 55, 77, 3, "Fremennik Slayer Dungeon");
ABERRANT_SPECTRE(1604, 60, 90, HARD_TASK, "Slayer Tower"),
ABYSSAL_DEMON(1615, 85, 150, VERY_HARD_TASK, "Slayer Tower"),
BANSHEE(1612, 15, 22, VERY_EASY_TASK + r(1), "Slayer Tower"),
BASILISK(1616, 40, 75, MEDIUM_TASK, "Fremennik Slayer Dungeon"),
BAT(412, 1, 8, EASY_TASK, "Road to Paterdomus"),
BLACK_DEMON(84, 1, 157, HARD_TASK, "Taverly Dungeon"),
BLACK_DRAGON(54, 1, 258, VERY_HARD_TASK, "Taverly Dungeon"),
BLOODVELD(1618, 50, 120, HARD_TASK + r(1), "Slayer Tower"),
BLUE_DRAGON(55, 1, 107, HARD_TASK, "Taverly Dungeon"),
BRONZE_DRAGON(1590, 1, 125, HARD_TASK, "Brimhaven Dungeon"),
CAVE_CRAWLER(1600, 10, 22, EASY_TASK, "Fremennik Slayer Dungeon"),
COCKATRICE(1620, 25, 37, MEDIUM_TASK, "Fremennik Slayer Dungeon"),
CRAWLING_HAND(1648, 5, 16 + r(3), EASY_TASK + r(1), "Slayer Tower"),
DAGANNOTH_74(1338, 1, 70 + r(50), HARD_TASK, "Lighthouse Basement"),
DAGANNOTH_92(1342, 1, 80 + r(50), HARD_TASK, "Lighthouse Basement"),
DARK_BEAST(2783, 90, 180, VERY_HARD_TASK, "Slayer Tower"),
DUST_DEVIL(1624, 65, 105, MEDIUM_TASK, "Slayer Tower"),
EARTH_WARRIOR(124, 1, 54, MEDIUM_TASK, "Edgeville Dungeon"),
FIRE_GIANT(110, 1, 111, HARD_TASK, "Brimhaven Dungeon"),
GARGOYLE(1611, 75, 105, HARD_TASK, "Slayer Tower"),
GHOST(103, 1, 25, EASY_TASK + r(1), "Taverly Dungeon"),
GREATER_DEMON(83, 1, 87, HARD_TASK, "Brimhaven Dungeon"),
GREEN_DRAGON(941, 1, 75, MEDIUM_TASK, "The Wilderness"),
HELLHOUND(49, 1, 116, HARD_TASK + r(1),"Taverly Dungeon"),
HILL_GIANT(117, 1, 35, MEDIUM_TASK, "Edgeville Dungeon"),
ICE_GIANT(111, 1, 70, MEDIUM_TASK, "Asgarnian Ice Caves or White Wolf Mountain"),
ICE_WARRIOR(125, 1, 59, MEDIUM_TASK, "Asgarnian Ice Caves or the Wilderness"),
SKELETAL_WYVERN(3068, 72, 210, VERY_HARD_TASK, "Asgarnian Ice Caves"),
INFERNAL_MAGE(1643, 45, 60, MEDIUM_TASK, "Slayer Tower"),
IRON_DRAGON(1591, 1, 174, VERY_HARD_TASK, "Brimhaven Dungeon"),
JELLY(1637, 52, 75, MEDIUM_TASK, "Fremennik Slayer Dungeon"),
KALPHITE_WORKER(1156, 1, 40, EASY_TASK + r(1), "Kalphite Lair"),
KALPHITE_SOLDIER(1154, 1, 90, HARD_TASK, "Kalphite Lair"),
KALPHITE_GUARDIAN(1157, 1, 170, VERY_HARD_TASK, "Kalphite Lair"),
KURASK(1608, 70, 97, HARD_TASK, "Fremennik Slayer Dungeon"),
LESSER_DEMON(82, 1, 79, HARD_TASK, "Karamja Dungeon"),
MOSS_GIANT(112, 1, 60, MEDIUM_TASK, "Brimhaven Dungeon"),
NECHRYAELS(1613, 80, 1, HARD_TASK, "Slayer Tower"),
PYREFIEND(1633, 30, 1, EASY_TASK, "Fremennik Slayer Dungeon"),
RED_DRAGON(53, 1, 120, HARD_TASK, "Brimhaven Dungeon"),
ROCKSLUG(1622, 20, 27, EASY_TASK, "Fremennik Slayer Dungeon"),
SKELETON(90, 1, 30, VERY_EASY_TASK + r(2), "Edgeville Dungeon or Taverly Dungeon"),
KARAMAJA_SKELETON(91, 1, 30, VERY_EASY_TASK + r(2), "Karamaja"),
WILDERNESS_SKELETON(92, 1, 30, VERY_EASY_TASK + r(2), "Wilderness"),
STEEL_DRAGON(1592, 1, 221, VERY_HARD_TASK, "Brimhaven Dungeon"),
BEAR(105, 1, 27, VERY_EASY_TASK, "Goblin Village"),
GREEN_GOBLIN(298, 1, 6, VERY_EASY_TASK, "Goblin Village"),
RED_GOBLIN(299, 1, 6, VERY_EASY_TASK, "Goblin Village"),
SCORPION(107, 1, 17, VERY_EASY_TASK, "Goblin Village"),
TUROTH(1632, 55, 77, HARD_TASK, "Fremennik Slayer Dungeon");
private int npcId, levelReq, diff, exp;
private String location;
private Task(int npcId, int levelReq, int exp, int difficulty, String location) {
Task(int npcId, int levelReq, int exp, int difficulty, String location) {
this.npcId = npcId;
this.exp = exp;
this.levelReq = levelReq;
@@ -357,7 +358,7 @@ public class Slayer {
}
}
c.slayerTask = task;
c.taskAmount = getTaskAmount(taskLevel);
c.taskAmount = getTaskAmount(task);
} else {
int task = getRandomTask(getDifficulty(taskLevel - 1));
for (int removedTask : c.removedTasks) {
@@ -368,7 +369,7 @@ public class Slayer {
}
}
c.slayerTask = task;
c.taskAmount = getTaskAmount(getDifficulty(c.slayerTask) - 1);
c.taskAmount = getTaskAmount(task);
c.needsNewTask = false;
}
c.getDialogueHandler().sendDialogues(1237, c.npcType);// assign task
@@ -379,20 +380,42 @@ public class Slayer {
}
}
public int getTaskAmount(int diff) {
switch (diff) {
case 0:
return VERY_EASY_AMOUNT;
case 1:
return EASY_AMOUNT;
case 2:
return MEDIUM_AMOUNT;
case 3:
return HARD_AMOUNT;
case 4:
return VERY_HARD_AMOUNT;
public int getTaskAmount(int task_id) {
Task task = null;
for (Task _task : Task.values())
if (_task.getNpcId() == task_id)
task = _task;
int[] amounts = VERY_EASY_AMOUNT;
if (task == null){
amounts = VERY_EASY_AMOUNT;
}
return EASY_AMOUNT;
else if (task.name().toLowerCase().contains("_dragon")) {
amounts = DRAGON_AMOUNT;
}
else {
switch (task.getDifficulty()) {
case 0:
amounts = VERY_EASY_AMOUNT;
break;
case 1:
amounts = EASY_AMOUNT;
break;
case 2:
amounts = MEDIUM_AMOUNT;
break;
case 3:
amounts = HARD_AMOUNT;
break;
case 4:
amounts = VERY_HARD_AMOUNT;
break;
default:
amounts = VERY_EASY_AMOUNT;
break;
}
}
return Misc.random(amounts[0], amounts[1]);
}
public int getSlayerDifficulty(Client c) {
@@ -222,15 +222,10 @@ public class Item {
}
counter = 0;
try {
FileInputStream dataIn = new FileInputStream(new File("./data/data/notes.dat"));
while ((c = dataIn.read()) != -1) {
if (c == 0) {
itemIsNote[counter] = true;
} else {
itemIsNote[counter] = false;
}
itemIsNote[counter] = c == 0;
counter++;
}
dataIn.close();
@@ -243,11 +238,135 @@ public class Item {
try {
FileInputStream dataIn = new FileInputStream(new File("./data/data/equipment.dat"));
while ((c = dataIn.read()) != -1) {
targetSlots[counter++] = c;
int slot;
// rebind item equip slot here
switch (counter) {
// Legs
case 6181:
case 428:
case 538:
case 6343:
case 6353:
case 6363:
case 6396:
case 6373:
case 6404:
case 5044:
case 5046:
case 5050:
case 5052:
case 5040:
case 5038:
case 6752:
case 5048:
case 5036:
case 5042:
case 4300:
case 1835:
case 7116:
case 7126:
case 7132:
case 7138:
case 548:
case 6185:
slot = Constants.LEGS;
break;
// Hats
case 4166:
case 1167:
case 5525:
case 4168:
case 1025:
case 7112:
case 7124:
case 7130:
case 7136:
case 4611:
case 5527:
case 5529:
case 5531:
case 5533:
case 5535:
case 5537:
case 5539:
case 5541:
case 5543:
case 5545:
case 5547:
slot = Constants.HAT;
break;
// Cape
case 4304:
case 3759:
case 3761:
case 3763:
case 3765:
case 3777:
case 3779:
case 3781:
case 3783:
case 3785:
case 3787:
case 3789:
case 4514:
case 4516:
slot = Constants.CAPE;
break;
// Shield
case 7051:
case 7053:
slot = Constants.SHIELD;
break;
// Chest
case 577:
case 426:
case 540:
case 430:
case 6786:
case 581:
case 5024:
case 5030:
case 1757:
case 5034:
case 5032:
case 3793:
case 1005:
case 546:
case 6402:
case 6788:
case 6184:
case 7390:
case 7392:
case 6186:
slot = Constants.CHEST;
break;
// Amulet
case 3853:
case 3855:
case 3857:
case 3859:
case 3861:
case 3863:
case 1718:
case 3865:
case 4306:
case 3867:
case 1702:
slot = Constants.AMULET;
break;
// Hands
case 776:
slot = Constants.HANDS;
break;
default:
slot = c;
}
targetSlots[counter] = slot;
counter++;
}
dataIn.close();
} catch (IOException e) {
System.out.println("Critical error while loading notedata! Trace:");
System.out.println("Critical error while loading equipment data! Trace:");
e.printStackTrace();
}
@@ -9,6 +9,10 @@ import redone.game.players.Client;
import redone.game.players.PlayerHandler;
import redone.util.Misc;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class ItemAssistant {
private final Client c;
@@ -1191,12 +1195,12 @@ public class ItemAssistant {
return true;
}
switch (itemId) {
case 6724: // seercull
case 11730:
case 4153:
case 6528:
case 14484:
return true;
case 6724: // seercull
case 11730:
case 4153:
case 6528:
case 14484:
return true;
}
return false;
}
@@ -1360,21 +1364,19 @@ public class ItemAssistant {
**/
public boolean wearItem(int wearID, int slot) {
// Check the player has the item the want to wear
if (!playerHasItem(wearID, 1, slot)) {
// add a method here for logging cheaters(If you want)
return false;
}
if (c.tutorialProgress < 22) {
c.getActionSender().sendMessage(
"You'll be told how to equip items later.");
c.getActionSender().sendMessage("You'll be told how to equip items later.");
return false;
}
if (c.tutorialProgress == 22) {
c.getActionSender().chatbox(6180);
c.getDialogueHandler()
.chatboxText(
c,
.chatboxText(c,
"Clothes, armour, weapons and many other items are equipped",
"like this. You can unequip items by clicking on the item in the",
"worn inventory. You can close this window by clicking on the",
@@ -1396,144 +1398,119 @@ public class ItemAssistant {
c.getActionSender().flashSideBarIcon(0);
// c.getPacketDispatcher().tutorialIslandInterface(50, 11);
}
int targetSlot = 0;
int wearAmount = c.playerItemsN[slot];
if (wearAmount < 1) {
return false;
}
int targetSlot = Constants.HAT;
boolean canWearItem = true;
if (c.playerItems[slot] == wearID + 1) {
getRequirements(getItemName(wearID).toLowerCase(), wearID);
targetSlot = Item.targetSlots[wearID];
if (c.duelRule[11] && targetSlot == 0) {
c.getActionSender().sendMessage(
"Wearing hats has been disabled in this duel!");
c.getActionSender().sendMessage("Wearing hats has been disabled in this duel!");
return false;
}
if (c.duelRule[12] && targetSlot == 1) {
c.getActionSender().sendMessage(
"Wearing capes has been disabled in this duel!");
c.getActionSender().sendMessage("Wearing capes has been disabled in this duel!");
return false;
}
if (c.duelRule[13] && targetSlot == 2) {
c.getActionSender().sendMessage(
"Wearing amulets has been disabled in this duel!");
c.getActionSender().sendMessage("Wearing amulets has been disabled in this duel!");
return false;
}
if (c.duelRule[14] && targetSlot == 3) {
c.getActionSender().sendMessage(
"Wielding weapons has been disabled in this duel!");
c.getActionSender().sendMessage("Wielding weapons has been disabled in this duel!");
return false;
}
if (c.duelRule[15] && targetSlot == 4) {
c.getActionSender().sendMessage(
"Wearing bodies has been disabled in this duel!");
c.getActionSender().sendMessage("Wearing bodies has been disabled in this duel!");
return false;
}
if (c.duelRule[16] && targetSlot == 5 || c.duelRule[16]
&& is2handed(getItemName(wearID).toLowerCase(), wearID)) {
c.getActionSender().sendMessage(
"Wearing shield has been disabled in this duel!");
if (c.duelRule[16] && targetSlot == 5 || c.duelRule[16] && is2handed(getItemName(wearID).toLowerCase(), wearID)) {
c.getActionSender().sendMessage("Wearing shield has been disabled in this duel!");
return false;
}
if (c.duelRule[17] && targetSlot == 7) {
c.getActionSender().sendMessage(
"Wearing legs has been disabled in this duel!");
c.getActionSender().sendMessage("Wearing legs has been disabled in this duel!");
return false;
}
if (c.duelRule[18] && targetSlot == 9) {
c.getActionSender().sendMessage(
"Wearing gloves has been disabled in this duel!");
c.getActionSender().sendMessage("Wearing gloves has been disabled in this duel!");
return false;
}
if (c.duelRule[19] && targetSlot == 10) {
c.getActionSender().sendMessage(
"Wearing boots has been disabled in this duel!");
c.getActionSender().sendMessage("Wearing boots has been disabled in this duel!");
return false;
}
if (c.duelRule[20] && targetSlot == 12) {
c.getActionSender().sendMessage(
"Wearing rings has been disabled in this duel!");
c.getActionSender().sendMessage("Wearing rings has been disabled in this duel!");
return false;
}
if (c.duelRule[21] && targetSlot == 13) {
c.getActionSender().sendMessage(
"Wearing arrows has been disabled in this duel!");
c.getActionSender().sendMessage("Wearing arrows has been disabled in this duel!");
return false;
}
if (Constants.itemRequirements) {
if (targetSlot == 10 || targetSlot == 7 || targetSlot == 5
|| targetSlot == 4 || targetSlot == 0
|| targetSlot == 9 || targetSlot == 10) {
// Check if slot is armor
if (targetSlot == Constants.FEET
|| targetSlot == Constants.LEGS
|| targetSlot == Constants.SHIELD
|| targetSlot == Constants.CHEST
|| targetSlot == Constants.HAT
|| targetSlot == Constants.HANDS) {
if (c.defenceLevelReq > 0) {
if (c.getPlayerAssistant().getLevelForXP(c.playerXP[1]) < c.defenceLevelReq) {
c.getActionSender().sendMessage(
"You need a defence level of "
+ c.defenceLevelReq
+ " to wear this item.");
c.getActionSender().sendMessage("You need a defence level of " + c.defenceLevelReq + " to wear this item.");
canWearItem = false;
}
}
if (c.rangeLevelReq > 0) {
if (c.getPlayerAssistant().getLevelForXP(c.playerXP[4]) < c.rangeLevelReq) {
c.getActionSender().sendMessage(
"You need a range level of "
+ c.rangeLevelReq
+ " to wear this item.");
c.getActionSender().sendMessage("You need a range level of " + c.rangeLevelReq + " to wear this item.");
canWearItem = false;
}
}
if (c.magicLevelReq > 0) {
if (c.getPlayerAssistant().getLevelForXP(c.playerXP[6]) < c.magicLevelReq) {
c.getActionSender().sendMessage(
"You need a magic level of "
+ c.magicLevelReq
+ " to wear this item.");
c.getActionSender().sendMessage("You need a magic level of " + c.magicLevelReq + " to wear this item.");
canWearItem = false;
}
}
}
if (c.slayerLevelReq > 0) {
if (c.getPlayerAssistant().getLevelForXP(c.playerXP[18]) < c.slayerLevelReq) {
c.getActionSender().sendMessage(
"You need a slayer level of "
+ c.slayerLevelReq
+ " to wear this item.");
c.getActionSender().sendMessage("You need a slayer level of " + c.slayerLevelReq + " to wear this item.");
canWearItem = false;
}
}
if (c.agilityLevelReq > 0) {
if (c.getPlayerAssistant().getLevelForXP(c.playerXP[16]) < c.agilityLevelReq) {
c.getActionSender().sendMessage(
"You need a agility level of "
+ c.agilityLevelReq
+ " to wear this item.");
c.getActionSender().sendMessage("You need a agility level of " + c.agilityLevelReq + " to wear this item.");
canWearItem = false;
}
}
if (targetSlot == 3) {
// Weapon
if (targetSlot == Constants.WEAPON) {
if (c.attackLevelReq > 0) {
if (c.getPlayerAssistant().getLevelForXP(c.playerXP[0]) < c.attackLevelReq) {
c.getActionSender().sendMessage(
"You need an attack level of "
+ c.attackLevelReq
+ " to wield this weapon.");
c.getActionSender().sendMessage("You need an attack level of " + c.attackLevelReq + " to wield this weapon.");
canWearItem = false;
}
}
if (c.rangeLevelReq > 0) {
if (c.getPlayerAssistant().getLevelForXP(c.playerXP[4]) < c.rangeLevelReq) {
c.getActionSender().sendMessage(
"You need a range level of "
+ c.rangeLevelReq
+ " to wield this weapon.");
c.getActionSender().sendMessage("You need a range level of " + c.rangeLevelReq + " to wield this weapon.");
canWearItem = false;
}
}
if (c.magicLevelReq > 0) {
if (c.getPlayerAssistant().getLevelForXP(c.playerXP[6]) < c.magicLevelReq) {
c.getActionSender().sendMessage(
"You need a magic level of "
+ c.magicLevelReq
+ " to wield this weapon.");
c.getActionSender().sendMessage("You need a magic level of " + c.magicLevelReq + " to wield this weapon.");
canWearItem = false;
}
}
@@ -1541,154 +1518,35 @@ public class ItemAssistant {
}
switch (wearID) {
case 6181:
case 428:// legs
case 538:
case 6343:
case 6353:
case 6363:
case 6396:
case 6373:
case 6404:
case 5044:
case 5046:
case 5050:
case 5052:
case 5040:
case 5038:
case 6752:
case 5048:
case 5036:
case 5042:
case 4300:
case 1835:
case 7116:
case 7126:
case 7132:
case 7138:
case 548:
case 6185:
targetSlot = 7;
break;
case 4166:// hats
case 1167:
case 5525:
case 4168:
case 1025:
case 7112:
case 7124:
case 7130:
case 7136:
case 4611:
case 5527:
case 5529:
case 5531:
case 5533:
case 5535:
case 5537:
case 5539:
case 5541:
case 5543:
case 5545:
case 5547:
targetSlot = 0;
break;
case 4304:// cape
case 3759:
case 3761:
case 3763:
case 3765:
case 3777:
case 3779:
case 3781:
case 3783:
case 3785:
case 3787:
case 3789:
case 4514:
case 4516:
targetSlot = 1;
break;
case 7051:
case 7053:// shields
targetSlot = 5;
break;
case 577:
case 426:// bodies
case 540:
case 430:
case 6786:
case 581:
case 5024:
case 5030:
case 1757:
case 5034:
case 5032:
case 3793:
case 1005:
case 546:
case 6402:
case 6788:
case 6184:
case 7390:
case 7392:
case 6186:
targetSlot = 4;
break;
case 3853:
case 3855:
case 3857:
case 3859:
case 3861:
case 3863:
case 1718:
case 3865:
case 4306:
case 3867:// necklace/amulet
case 1702:
targetSlot = 2;
break;
case 776:// gloves
targetSlot = 9;
break;
case 1215:
case 1231:
case 5680:
case 5698:
case 1305:
if (c.spiritTree == false && c.playerRights != 3) {
c.getActionSender().sendMessage("You need to beat the tree spirit to wear this.");
return false;
}
// Dragon daggers/sword
case 1215:
case 1231:
case 5680:
case 5698:
case 1305:
if (c.spiritTree == false && c.playerRights != 3) {
c.getActionSender().sendMessage("You need to beat the tree spirit to wield this weapon.");
canWearItem = false;
}
}
if (!canWearItem) {
// return false here so we can send multiple messages of requirements
return false;
}
int wearAmount = c.playerItemsN[slot];
if (wearAmount < 1) {
return false;
}
if (targetSlot == c.playerWeapon) {
c.autocasting = false;
c.autocastId = 0;
c.getPlayerAssistant().sendConfig(108, 0);
}
if (CastleWars.isInCw(c) || CastleWars.isInCwWait(c)) {
if (targetSlot == 1 || targetSlot == 0) {
if (targetSlot == Constants.CAPE || targetSlot == Constants.HAT) {
c.getActionSender().sendMessage("You can't wear your own capes or hats in a Castle Wars Game!");
return false;
}
}
/*
* if (slot >= 0 && wearID >= 0) { int toEquip =
* c.playerItems[slot]; int toEquipN = c.playerItemsN[slot]; int
* toRemove = c.playerEquipment[targetSlot]; int toRemoveN =
* c.playerEquipmentN[targetSlot];
*/
if (targetSlot == Constants.WEAPON) {
c.autocasting = false;
c.autocastId = 0;
c.getPlayerAssistant().sendConfig(108, 0);
}
if (slot >= 0 && wearID >= 0) {
int toEquip = c.playerItems[slot];
@@ -1698,51 +1556,35 @@ public class ItemAssistant {
if (toEquip == toRemove + 1 && Item.itemStackable[toRemove]) {
deleteItem(toRemove, getItemSlot(toRemove), toEquipN);
c.playerEquipmentN[targetSlot] += toEquipN;
/*
* Castle wars
*/
if (CastleWars.SARA_BANNER == toRemove
|| CastleWars.ZAMMY_BANNER == toRemove) { // alk
// update
CastleWars.dropFlag(c, toRemove);
toRemove = -1;
toRemoveN = 0;
}
} else if (targetSlot != 5 && targetSlot != 3) {
// c.playerItems[slot] = 0;
// c.playerItemsN[slot] = 0;
// c.playerEquipment[targetSlot] = toEquip - 1;
// c.playerEquipmentN[targetSlot] = toEquipN;
c.playerItems[slot] = 0;
c.playerItemsN[slot] = 0;
if (toRemove > 0 && toRemoveN > 0) {
addItem(toRemove, toRemoveN);
}
} else if (targetSlot != Constants.SHIELD && targetSlot != Constants.WEAPON) {
c.playerItems[slot] = toRemove + 1;
c.playerItemsN[slot] = toRemoveN;
c.playerEquipment[targetSlot] = toEquip - 1;
c.playerEquipmentN[targetSlot] = toEquipN;
} else if (targetSlot == 5) {
boolean wearing2h = is2handed(
getItemName(c.playerEquipment[c.playerWeapon])
.toLowerCase(),
c.playerEquipment[c.playerWeapon]);
} else if (targetSlot == Constants.SHIELD) {
boolean wearing2h = is2handed(getItemName(c.playerEquipment[Constants.WEAPON]).toLowerCase(), c.playerEquipment[Constants.WEAPON]);
if (wearing2h) {
// remove the weapon, add to inventory
toRemove = c.playerEquipment[c.playerWeapon];
toRemoveN = c.playerEquipmentN[c.playerWeapon];
c.playerEquipment[c.playerWeapon] = -1;
c.playerEquipmentN[c.playerWeapon] = 0;
updateSlot(c.playerWeapon);
updateSlot(Constants.WEAPON);
}
c.playerItems[slot] = toRemove + 1;
c.playerItemsN[slot] = toRemoveN;
c.playerEquipment[targetSlot] = toEquip - 1;
c.playerEquipmentN[targetSlot] = toEquipN;
} else if (targetSlot == 3) {
boolean is2h = is2handed(getItemName(wearID).toLowerCase(),
wearID);
boolean wearingShield = c.playerEquipment[c.playerShield] > 0;
boolean wearingWeapon = c.playerEquipment[c.playerWeapon] > 0;
} else if (targetSlot == Constants.WEAPON) {
if (CastleWars.SARA_BANNER == toRemove || CastleWars.ZAMMY_BANNER == toRemove) { // alk
// update
CastleWars.dropFlag(c, toRemove);
toRemove = -1;
toRemoveN = 0;
}
boolean is2h = is2handed(getItemName(wearID).toLowerCase(), wearID);
boolean wearingShield = c.playerEquipment[Constants.SHIELD] > 0;
boolean wearingWeapon = c.playerEquipment[Constants.WEAPON] > 0;
if (is2h) {
if (wearingShield && wearingWeapon) {
if (freeSlots() > 0) {
@@ -1750,22 +1592,19 @@ public class ItemAssistant {
c.playerItemsN[slot] = toRemoveN;
c.playerEquipment[targetSlot] = toEquip - 1;
c.playerEquipmentN[targetSlot] = toEquipN;
removeItem(c.playerEquipment[c.playerShield],
c.playerShield);
removeItem(c.playerEquipment[Constants.SHIELD], Constants.SHIELD);
} else {
c.getActionSender()
.sendMessage(
"You do not have enough inventory space to do this.");
c.getActionSender().sendMessage("You do not have enough inventory space to do this.");
return false;
}
} else if (wearingShield && !wearingWeapon) {
c.playerItems[slot] = c.playerEquipment[c.playerShield] + 1;
c.playerItemsN[slot] = c.playerEquipmentN[c.playerShield];
c.playerItems[slot] = c.playerEquipment[Constants.SHIELD] + 1;
c.playerItemsN[slot] = c.playerEquipmentN[Constants.SHIELD];
c.playerEquipment[targetSlot] = toEquip - 1;
c.playerEquipmentN[targetSlot] = toEquipN;
c.playerEquipment[c.playerShield] = -1;
c.playerEquipmentN[c.playerShield] = 0;
updateSlot(c.playerShield);
c.playerEquipment[Constants.SHIELD] = -1;
c.playerEquipmentN[Constants.SHIELD] = 0;
updateSlot(Constants.SHIELD);
} else {
c.playerItems[slot] = toRemove + 1;
c.playerItemsN[slot] = toRemoveN;
@@ -1773,26 +1612,15 @@ public class ItemAssistant {
c.playerEquipmentN[targetSlot] = toEquipN;
}
} else {
// c.playerItems[slot] = toRemove + 1;
// c.playerItemsN[slot] = toRemoveN;
// c.playerEquipment[targetSlot] = toEquip - 1;
// c.playerEquipmentN[targetSlot] = toEquipN;
c.playerItems[slot] = 0;
c.playerItemsN[slot] = 0;
// c.playerItems[slot] = toRemove + 1;
// c.playerItemsN[slot] = toRemoveN;
if (toRemove > 0 && toRemoveN > 0) {
addItem(toRemove, toRemoveN);
}
c.playerItems[slot] = toRemove + 1;
c.playerItemsN[slot] = toRemoveN;
c.playerEquipment[targetSlot] = toEquip - 1;
c.playerEquipmentN[targetSlot] = toEquipN;
}
}
}
resetItems(3214);
if (targetSlot == 3) {
if (targetSlot == Constants.WEAPON) {
c.usingSpecial = false;
addSpecialBar(wearID);
}
@@ -1812,8 +1640,7 @@ public class ItemAssistant {
c.getOutStream().endFrameVarSizeWord();
c.flushOutStream();
}
sendWeapon(c.playerEquipment[c.playerWeapon],
getItemName(c.playerEquipment[c.playerWeapon]));
sendWeapon(c.playerEquipment[c.playerWeapon], getItemName(c.playerEquipment[c.playerWeapon]));
resetBonus();
getBonus();
writeBonus();
@@ -1888,7 +1888,7 @@ public class NPCDrops extends NPCDropsHandler {
new ItemDrop( 217, 1, RARE ),
};
public static final ItemDrop[] kalphitesolider = {
public static final ItemDrop[] kalphitesoldier = {
new ItemDrop( i("steel full helm"), 1, COMMON ),
new ItemDrop( i("steel scimitar"), 1, COMMON ),
new ItemDrop( i("steel axe"), 1, COMMON ),
@@ -2249,7 +2249,7 @@ public class NPCDrops extends NPCDropsHandler {
new ItemDrop( i("mind rune"), 12, COMMON ),
new ItemDrop( i("nature rune"), 3, UNCOMMON ),
new ItemDrop( 995, new int[]{2, 485}, COMMON ),
new ItemDrop( i("vail of water"), 1, COMMON ),
new ItemDrop( i("vial of water"), 1, COMMON ),
new ItemDrop( 540, 1, COMMON ),
new ItemDrop( 538, 1, COMMON ),
new ItemDrop( i("bronze longsword"), 1, UNCOMMON ),
@@ -74,8 +74,7 @@ public class NPCDropsHandler {
return NPCDrops.firegiant;
} else if (npc.equals("basilisk")) {
return NPCDrops.basilisk;
} else if (npc.equals("baby_blue_dragon")
|| npc.equals("baby_red_dragon") || npc.equals("baby_dragon")) {
} else if (npc.equals("baby_blue_dragon") || npc.equals("baby_red_dragon") || npc.equals("baby_dragon")) {
return NPCDrops.babybluedragon;
} else if (npc.equals("red_dragon")) {
return NPCDrops.reddragon;
@@ -134,7 +133,7 @@ public class NPCDropsHandler {
} else if (npc.equals("kalphite_worker")) {
return NPCDrops.kalphiteworker;
} else if (npc.equals("kalphite_soldier")) {
return NPCDrops.kalphitesolider;
return NPCDrops.kalphitesoldier;
} else if (npc.equals("kalphite_guardian")) {
return NPCDrops.kalphiteguardian;
} else if (npc.equals("bat") || npc.equals("giant_bat")) {
@@ -2226,9 +2226,7 @@ public class ObjectsActions {
} else {
player.getActionSender().setSidebarInterface(6, 1151); // modern
player.playerMagicBook = 0;
player.getActionSender().sendMessage(
"You feel a drain on your memory.");
player.autocastId = -1;
player.getActionSender().sendMessage("You feel a drain on your memory.");
player.getPlayerAssistant().resetAutocast();
}
break;
@@ -1913,8 +1913,7 @@ public class PlayerAssistant {
}
resetDamageDone();
player.specAmount = 10;
player.getItemAssistant().addSpecialBar(
player.playerEquipment[player.playerWeapon]);
player.getItemAssistant().addSpecialBar(player.playerEquipment[player.playerWeapon]);
player.lastVeng = 0;
player.vengOn = false;
resetFollowers();
@@ -1794,24 +1794,21 @@ public class ClickingButtons implements PacketType {
case 9179:
if (player.dialogueAction == 2) {
player.getPlayerAssistant().startTeleport(2884, 3395, 0,
"modern");
player.getPlayerAssistant().startTeleport(2884, 3395, 0, "modern");
}
if (player.dialogueAction == 122 && player.objectId == 12163 || player.objectId == 12165 || player.objectId == 12166) {//champ
player.getPlayerAssistant().startTeleport(3203, 3343, 0, "modern");
} else if (player.objectId == 12164) {
if (player.dialogueAction == 122) {
player.getActionSender().sendMessage("You can't take the canoe to the Champion Guild because you're already there!");
player.getPlayerAssistant().handleCanoe();
player.getActionSender().sendMessage("You can't take the canoe to the Champion Guild because you're already there!");
player.getPlayerAssistant().handleCanoe();
}
}
if (player.dialogueAction == 4) {
player.getPlayerAssistant().startTeleport(2444, 5170, 0,
"modern");
player.getPlayerAssistant().startTeleport(2444, 5170, 0, "modern");
}
if (player.dialogueAction == 3) {
player.getPlayerAssistant().startTeleport(3243, 3513, 0,
"modern");
player.getPlayerAssistant().startTeleport(3243, 3513, 0, "modern");
}
if (player.dialogueAction == 31) {
player.getDialogueHandler().sendDialogues(502, player.npcType);
@@ -1826,8 +1823,7 @@ public class ClickingButtons implements PacketType {
player.getDialogueHandler().sendDialogues(376, player.npcType);
}
if (player.dialogueAction == 51) {
player.getPlayerAssistant().gloryTeleport(3293, 3174, 0,
"modern");
player.getPlayerAssistant().gloryTeleport(3293, 3174, 0, "modern");
}
Teles.necklaces(player);
if (player.dialogueAction == 52) {
@@ -1864,8 +1860,7 @@ public class ClickingButtons implements PacketType {
case 9180:
if (player.dialogueAction == 2) {
player.getPlayerAssistant().startTeleport(2471, 10137, 0,
"modern");
player.getPlayerAssistant().startTeleport(2471, 10137, 0, "modern");
}
if (player.dialogueAction == 69) {
player.getDialogueHandler().sendDialogues(500003, player.npcType);
@@ -1879,12 +1874,10 @@ public class ClickingButtons implements PacketType {
}
}
if (player.dialogueAction == 3) {
player.getPlayerAssistant().startTeleport(3363, 3676, 0,
"modern");
player.getPlayerAssistant().startTeleport(3363, 3676, 0, "modern");
}
if (player.dialogueAction == 4) {
player.getPlayerAssistant().startTeleport(2659, 2676, 0,
"modern");
player.getPlayerAssistant().startTeleport(2659, 2676, 0, "modern");
}
if (player.dialogueAction == 31) {
player.getDialogueHandler().sendDialogues(501, player.npcType);
@@ -1899,8 +1892,7 @@ public class ClickingButtons implements PacketType {
player.getDialogueHandler().sendDialogues(377, player.npcType);
}
if (player.dialogueAction == 51) {
player.getPlayerAssistant().gloryTeleport(2911, 3152, 0,
"modern");
player.getPlayerAssistant().gloryTeleport(2911, 3152, 0, "modern");
}
Teles.necklaces(player);
if (player.dialogueAction == 52) {