Mage Training Arena and stuff (#504)

* Fixup door/stairs in mage training arena

* Fixup bedsheets, should be worn on head, not weapon slot

* [Mage Training Arena] spawn rewards guardian

* [Mage Training Arena] Add arena teleports (non functioning)

* Just adding some comments

* [Mage Training Arena] Basic mage training arena stuff

* [Mage Training Arena] Allow shop to open and show items correctly

* [Mage Training Arena] Show shop prices when clicked

* noclip

* [Mage Training Arena] Add 2nd option handler (filler)

* [Mage Training Arena] Be able to purchase stuff, lock bones to peaches

* Update MageArena.java

* [Mage Training Arena] setup boundary

* Readability

* Tidy up enchanting

* MageArena -> MageTrainingArena

* Create Alchemy.java

* Update RSInterface.java

* [Mage Training Arena] Spawn entrance npcs

* [Mage Training Arena] Initial Alchemy

* [Mage Training Arena]  Add comments

* [Mage Training Arena] Handle alchemy while in arena

* [Mage Training Arena] Show interface for alchemy room

* [Mage Training Arena] Display values, Search cupboards

* [Mage Training Arena] Don't allow the player to wear items from the Alchemy game

* [Mage Training Arena] Announce when items are changing

* Don't allow the player to bring any coins with them

* Sort by values

* [Mage Training Arena] Allow alching items etc

* Update method name

* Show magic tab after using alch even if can't alch

* [Mage Training Arena] Coin collector - temp

* [Mage Training Arena] Give player points, take items, add bonus xp, add bank items

* [Mage Training Arena] Remove items when player leaves the alchemy training area

* Fixup staffs for runes, Tidy up checks

Was missing all Mystic staff
This commit is contained in:
Danial
2021-10-01 10:25:48 +13:00
committed by GitHub
parent 8589277ece
commit bbe1587e20
23 changed files with 821 additions and 418 deletions
@@ -525,6 +525,8 @@ final class CollisionMap {
return false;
}
// Something to do with moving to objects/npcs etc when clicked on
// Maybe checking distance?
public boolean method221(int i, int j, int k, int l, int i1, int j1, int k1) {
int l1 = j + j1 - 1;
int i2 = i + l - 1;
+6
View File
@@ -5015,11 +5015,17 @@ public class Game extends RSApplet {
definitionSearch(searchString, searchType);
}
}
// submitted string
if ((j == 13 || j == 10) && inputString.length() > 0) {
if (inputString.equals("::gfxtgl") || inputString.equals("::tglgfx") || inputString.equals("::togglerender") || inputString.equals("::togglegfx")) {
graphicsEnabled = !graphicsEnabled;
}
if (myPrivilege >= 0) {
if(inputString.equals("::noclip"))
for(int k1 = 0; k1 < 4; k1++)
for(int i2 = 1; i2 < 103; i2++)
for(int k2 = 1; k2 < 103; k2++)
aClass11Array1230[k1].anIntArrayArray294[i2][k2] = 0;
if (inputString.equals("::clientdrop")) {
dropClient();
}
+51 -1
View File
@@ -24103,7 +24103,7 @@
"walk": 1,
"height": 0
},
{
{
"maxHit": 0,
"strength": 0,
"attack": 0,
@@ -24112,5 +24112,55 @@
"id": 1320,
"walk": 1,
"height": 0
},
{
"maxHit": 0,
"strength": 0,
"attack": 0,
"x": 3363,
"y": 3318,
"id": 3103,
"walk": 1,
"height": 1
},
{
"maxHit": 0,
"strength": 0,
"attack": 0,
"x": 3363,
"y": 3304,
"id": 3097,
"walk": 1,
"height": 0
},
{
"maxHit": 0,
"strength": 0,
"attack": 0,
"x": 3363,
"y": 3306,
"id": 3095,
"walk": 1,
"height": 0
},
{
"maxHit": 0,
"strength": 0,
"attack": 0,
"x": 3363,
"y": 3302,
"id": 3094,
"walk": 1,
"height": 0
},
{
"maxHit": 0,
"strength": 0,
"attack": 0,
"x": 3365,
"y": 9627,
"id": 3099,
"walk": 1,
"height": 2
}
]
@@ -22,6 +22,7 @@ import com.rs2.game.content.minigames.FightCaves;
import com.rs2.game.content.minigames.FightPits;
import com.rs2.game.content.minigames.PestControl;
import com.rs2.game.content.minigames.castlewars.CastleWars;
import com.rs2.game.content.minigames.magetrainingarena.MageTrainingArena;
import com.rs2.game.content.minigames.trawler.Trawler;
import com.rs2.game.globalworldobjects.Doors;
import com.rs2.game.globalworldobjects.DoubleDoors;
@@ -232,6 +233,7 @@ public class GameEngine {
FightPits.process();
pestControl.process();
objectHandler.process();
MageTrainingArena.process();
CycleEventHandler.getSingleton().process();
PlayersOnlineWebsite.addUpdatePlayersOnlineTask();
if(GameConstants.WEBSITE_TOTAL_CHARACTERS_INTEGRATION) {
@@ -97,11 +97,12 @@ public class Enchanting {
}
private enum EnchantSpell {
SAPPHIRE(1155, 555, 1, 564, 1, -1, 0), EMERALD(1165, 556, 3, 564, 1,
-1, 0), RUBY(1176, 554, 5, 564, 1, -1, 0), DIAMOND(1180, 557,
10, 564, 1, -1, 0), DRAGONSTONE(1187, 555, 15, 557, 15, 564, 1), ONYX(
6003, 557, 20, 554, 20, 564, 1);
SAPPHIRE(1155, 555, 1, 564, 1, -1, 0),
EMERALD(1165, 556, 3, 564, 1, -1, 0),
RUBY(1176, 554, 5, 564, 1, -1, 0),
DIAMOND(1180, 557, 10, 564, 1, -1, 0),
DRAGONSTONE(1187, 555, 15, 557, 15, 564, 1),
ONYX(6003, 557, 20, 554, 20, 564, 1);
int spell, reqRune1, reqAmtRune1, reqRune2, reqAmtRune2, reqRune3,
reqAmtRune3;
@@ -195,36 +196,33 @@ public class Enchanting {
Enchant enc = Enchant.forId(itemID);
EnchantSpell ens = EnchantSpell.forId(spellID);
if (enc == null || ens == null) {
return;
}
if (c.playerLevel[GameConstants.MAGIC] >= enc.getLevelReq()) {
if (c.getItemAssistant().playerHasItem(enc.getUnenchanted(), 1)) {
if(CastRequirements.hasRunes(c, getRequiredRunes(ens))){
if (getEnchantmentLevel(spellID) == enc.getELevel()) {
c.getItemAssistant().deleteItem(enc.getUnenchanted(), 1);
c.getItemAssistant().addItem(enc.getEnchanted(), 1);
c.getPlayerAssistant().addSkillXP(enc.getXp(),
GameConstants.MAGIC);
CastRequirements.deleteRunes(c, getRequiredRunes(ens));
c.startAnimation(enc.getAnim());
c.gfx100(enc.getGFX());
c.getPacketSender().sendFrame106(6);
} else {
c.getPacketSender().sendMessage(
"You can only enchant this jewelery using a level-"
+ enc.getELevel()
+ " enchantment spell!");
}
} else {
c.getPacketSender().sendMessage(
"You do not have enough runes to cast this spell.");
}
}
} else {
if (c.playerLevel[GameConstants.MAGIC] < enc.getLevelReq()) {
c.getPacketSender().sendMessage(
"You need a magic level of at least " + enc.getLevelReq()
+ " to cast this spell.");
"You need a magic level of at least "
+ enc.getLevelReq() + " to cast this spell.");
return;
}
if (!c.getItemAssistant().playerHasItem(enc.getUnenchanted(), 1)) {
return;
}
if(!CastRequirements.hasRunes(c, getRequiredRunes(ens))){
c.getPacketSender().sendMessage("You do not have enough runes to cast this spell.");
return;
}
if (getEnchantmentLevel(spellID) != enc.getELevel()) {
c.getPacketSender().sendMessage(
"You can only enchant this jewelery using a level-"
+ enc.getELevel() + " enchantment spell!");
return;
}
// Everything is fine, Enchant the item
c.getItemAssistant().replaceItem(enc.getUnenchanted(), enc.getEnchanted());
c.getPlayerAssistant().addSkillXP(enc.getXp(), GameConstants.MAGIC);
CastRequirements.deleteRunes(c, getRequiredRunes(ens));
c.startAnimation(enc.getAnim());
c.gfx100(enc.getGFX());
c.getPacketSender().sendShowTab(6);
}
}
@@ -10,23 +10,23 @@ public class MagicRequirements {
public static boolean wearingStaff(Player player, int runeId) {
int wep = player.playerEquipment[player.playerWeapon];
switch (runeId) {
case 554:
if (wep == 1387 || wep == 1393 || wep == 3053) {
case 554: // Fire runes
if (wep == 1387 || wep == 1393 || wep == 1401 || wep == 3053 || wep == 3054) {
return true;
}
break;
case 555:
if (wep == 1383 || wep == 1395 || wep == 6562) {
case 555: // Water runes
if (wep == 1383 || wep == 1395 || wep == 1403 || wep == 6562 || wep == 6563) {
return true;
}
break;
case 556:
if (wep == 1381 || wep == 1397) {
case 556: // Air runes
if (wep == 1381 || wep == 1397 || wep == 1405) {
return true;
}
break;
case 557:
if (wep == 1385 || wep == 1399 || wep == 3053 || wep == 6562) {
case 557: // Earth runes
if (wep == 1385 || wep == 1399 || wep == 3053 || wep == 3054 || wep == 6562 || wep == 6563) {
return true;
}
break;
@@ -35,26 +35,15 @@ public class MagicRequirements {
}
public static boolean checkMagicReqs(Player c, int spell) {
int[] spellData = MagicData.MAGIC_SPELLS[spell];
if (c.usingMagic && MagicTeleports.RUNES_REQUIRED) { // check for runes
if (!c.getItemAssistant().playerHasItem(
MagicData.MAGIC_SPELLS[spell][8],
MagicData.MAGIC_SPELLS[spell][9])
&& !wearingStaff(c, MagicData.MAGIC_SPELLS[spell][8])
|| !c.getItemAssistant().playerHasItem(
MagicData.MAGIC_SPELLS[spell][10],
MagicData.MAGIC_SPELLS[spell][11])
&& !wearingStaff(c, MagicData.MAGIC_SPELLS[spell][10])
|| !c.getItemAssistant().playerHasItem(
MagicData.MAGIC_SPELLS[spell][12],
MagicData.MAGIC_SPELLS[spell][13])
&& !wearingStaff(c, MagicData.MAGIC_SPELLS[spell][12])
|| !c.getItemAssistant().playerHasItem(
MagicData.MAGIC_SPELLS[spell][14],
MagicData.MAGIC_SPELLS[spell][15])
&& !wearingStaff(c, MagicData.MAGIC_SPELLS[spell][14])) {
c.getPacketSender()
.sendMessage(
"You don't have the required runes to cast this spell.");
if (
!c.getItemAssistant().playerHasItem(spellData[8], spellData[9]) && !wearingStaff(c, spellData[8])
|| !c.getItemAssistant().playerHasItem(spellData[10], spellData[11]) && !wearingStaff(c, spellData[10])
|| !c.getItemAssistant().playerHasItem(spellData[12], spellData[13]) && !wearingStaff(c, spellData[12])
|| !c.getItemAssistant().playerHasItem(spellData[14], spellData[15]) && !wearingStaff(c, spellData[14])
) {
c.getPacketSender().sendMessage("You don't have the required runes to cast this spell.");
return false;
}
}
@@ -1,267 +0,0 @@
/*
* To change this template, choose Tools | Templates and open the template in
* the editor.
*/
package com.rs2.game.content.minigames;
import com.rs2.game.items.ItemAssistant;
import com.rs2.game.players.Client;
/**
* @author D
*/
public class MageArena {
private final Client c;
public MageArena(Client c) {
this.c = c;
}
private final int telePoints = 0;
private final int enchantPoints = 0;
private final int gravePoints = 0;
private final int alchPoints = 0;
private final int[] shopItems = { 6908, 6910, 6912, 6914, 6916, 6918, 6920,
6922, 6924, 6889, 6926, 1391, 4695, 4696, 4698, 4697, 4694, 4699,
564, 561, 560, 563, 565, 6891 };
private final String[] interfaceText = { "Magic Training Arena Shop",
"Telekinetic Pizazz Points", "Enchantment Pizazz Points",
"Graveyard Pizazz Points", "Alchemist Pizazz Points" };
public void openShop() {
for (int i = 0; i < shopItems.length; i++) {
c.getPacketSender().sendFrame34(15948, shopItems[i], i, 100);
}
for (int i = 15950; i < interfaceText.length; i++) {
c.getPacketSender().sendString(interfaceText[i - 15950], i);
}
c.getPacketSender().sendString(Integer.toString(telePoints), 15955);
c.getPacketSender().sendString(Integer.toString(enchantPoints),
15956);
c.getPacketSender().sendString(Integer.toString(gravePoints), 15957);
c.getPacketSender().sendString(Integer.toString(alchPoints), 15958);
c.getPacketSender().showInterface(15944);
}
public int getTelVal(int itemId) {
switch (itemId) {
case 6922:
return 175;
case 6918:
return 350;
case 6916:
return 400;
case 6924:
return 450;
case 6920:
return 120;
case 1391:
return 1;
case 6908:
return 30;
case 6910:
return 60;
case 6912:
return 60;
case 6914:
return 150;
case 6889:
return 500;
case 6926:
return 200;
case 4695:
case 4694:
case 4696:
case 4697:
case 4698:
case 4699:
return 1;
case 564:
case 561:
return 0;
case 560:
case 563:
case 565:
return 2;
default:
return 1;
}
}
public int getAlchVal(int itemId) {
switch (itemId) {
case 6922:
return 225;
case 6918:
return 400;
case 6916:
return 450;
case 6924:
return 500;
case 6920:
return 120;
case 1391:
return 2;
case 6908:
return 30;
case 6910:
return 60;
case 6912:
return 200;
case 6914:
return 240;
case 6889:
return 550;
case 6926:
return 300;
case 4695:
case 4694:
case 4696:
case 4697:
case 4698:
case 4699:
return 1;
case 564:
case 561:
return 1;
case 560:
case 563:
case 565:
return 2;
default:
return 1;
}
}
public int getEnchVal(int itemId) {
switch (itemId) {
case 6922:
return 1300;
case 6918:
return 3000;
case 6916:
return 4000;
case 6924:
return 5000;
case 6920:
return 1200;
case 1391:
return 20;
case 6908:
return 300;
case 6910:
return 600;
case 6912:
return 1500;
case 6914:
return 2400;
case 6889:
return 6000;
case 6926:
return 2000;
case 4695:
case 4694:
case 4696:
case 4697:
case 4698:
case 4699:
return 15;
case 564:
case 561:
return 5;
case 560:
case 563:
case 565:
return 25;
default:
return 1;
}
}
public int getGraveValue(int itemId) {
switch (itemId) {
case 6922:
return 175;
case 6918:
return 350;
case 6916:
return 400;
case 6924:
return 450;
case 6920:
return 120;
case 1391:
return 2;
case 6908:
return 30;
case 6910:
return 60;
case 6912:
return 150;
case 6914:
return 240;
case 6889:
return 500;
case 6926:
return 200;
case 4695:
case 4694:
case 4696:
case 4697:
case 4698:
case 4699:
return 1;
case 564:
case 561:
return 1;
case 560:
case 563:
case 565:
return 2;
default:
return 1;
}
}
public void sendMessage(int itemId) {
c.getPacketSender().sendMessage(
ItemAssistant.getItemName(itemId) + " costs "
+ getGraveValue(itemId) + " Graveyard points, "
+ getAlchVal(itemId) + " Alchemy points,");
c.getPacketSender().sendMessage(
"" + getEnchVal(itemId) + " Enchantment points, and "
+ getTelVal(itemId) + " Telekinetic points.");
}
}
@@ -0,0 +1,148 @@
package com.rs2.game.content.minigames.magetrainingarena;
import java.util.Random;
import com.rs2.GameConstants;
import com.rs2.game.content.combat.magic.MagicData;
import com.rs2.game.content.music.sound.SoundList;
import com.rs2.game.npcs.NpcHandler;
import com.rs2.game.players.Player;
import com.rs2.game.players.PlayerHandler;
import com.rs2.world.Boundary;
public class Alchemy {
private final Player player;
public Alchemy(Player c) {
this.player = c;
}
public void searchCupboard(int objectID) {
int index = (objectID - firstCupboard) / 2;
int item = Alchemy.items[(index + offset) % Alchemy.items.length];
if (item < 0) {
player.getPacketSender().sendMessage("The cupboard is empty.");
} else {
player.getItemAssistant().addItem(item, 1);
}
}
public void alchItem(int itemID, int spellID) {
if (System.currentTimeMillis() - player.alchDelay <= 1000) {
return;
}
int index = -1;
for (int i = 0; i < items.length; i++) {
if (items[i] == itemID) {
index = i;
}
}
// Item not found, player trying to alch a different item
if (index < 0) {
player.getPacketSender().sendMessage("You cannot alch that item while here.");
return;
}
int value = values[(index + valueOffset) % values.length];
player.getItemAssistant().deleteItem(itemID, 1);
player.getItemAssistant().addItem(995, value);
player.alchDelay = System.currentTimeMillis();
if (spellID == 1162) {
player.startAnimation(MagicData.MAGIC_SPELLS[49][2]);
player.gfx100(MagicData.MAGIC_SPELLS[49][3]);
player.getPlayerAssistant().addSkillXP(31, 6);
player.getPacketSender().sendSound(SoundList.LOW_ALCHEMY, 100, 0);
} else if (spellID == 1178) {
player.startAnimation(MagicData.MAGIC_SPELLS[50][2]);
player.gfx100(MagicData.MAGIC_SPELLS[50][3]);
player.alchDelay = System.currentTimeMillis();
player.getPlayerAssistant().addSkillXP(65, 6);
player.getPacketSender().sendSound(SoundList.HIGH_ALCHEMY, 100, 0);
}
player.getPacketSender().sendShowTab(6);
player.getPlayerAssistant().refreshSkill(6);
}
public void collectCoins() {
int coins = player.getItemAssistant().getItemAmount(995);
if (coins < 100) {
player.getPacketSender().sendMessage("You need to deposit at least 100 coins.");
return;
}
int points = (int) Math.floor(coins / 100);
int bonusExp = coins * 2;
int toBank = points * 10;
player.getPacketSender().sendMessage("Coins: " + coins + ", Points: " + points + ", Banked: " + toBank + ", EXP: " + bonusExp);
player.getItemAssistant().deleteItem(995, coins);
player.alchemyPoints += points;
player.getItemAssistant().addItemToBank(995, toBank);
player.getPlayerAssistant().addSkillXP(bonusExp, GameConstants.MAGIC);
}
public void clearItems() {
for (int item: items) {
player.getItemAssistant().deleteItem(item, Integer.MAX_VALUE);
}
player.getItemAssistant().deleteItem(995, Integer.MAX_VALUE);
}
/* ITEMS */
// 6893 - Leather boots
// 6894 - Adamant Kiteshield
// 6895 - Adamant Med Helm
// 6896 - Emerald
// 6897 - Rune Sword
public static int[] items = {6893, 6894, 6895, 6896, 6897, -1, -1, -1};
public static int[] values = {30, 15, 8, 5, 1};
public static int ticks = 0;
public static int offset = 0;
public static int valueOffset = 0;
public static int firstCupboard = 10783;
private static Random random = new Random();
/* OBJECTS */
// 10734 - Coin Collector
// 10783 - 1st Cupboard (+2 for the next 7 cupboards)
/* INTERFACES */
// 15892 - Alchemy training arena interface
public static void process() {
for (Player p : PlayerHandler.players) {
if (p == null) {
continue;
}
updateInterface(p);
}
if (++ticks < 71) {
return;
}
ticks = 0;
offset = random.nextInt(items.length);
valueOffset = random.nextInt(values.length);
for (int i = 0; i < NpcHandler.MAX_NPCS; i ++) {
if (NpcHandler.npcs[i] != null && NpcHandler.npcs[i].npcType == 3099) {
NpcHandler.npcs[i].forceChat("Items are changing!");
}
}
for (Player p : PlayerHandler.players) {
if (p == null) {
continue;
}
updateInterface(p);
}
}
public static void updateInterface(Player player) {
if (!Boundary.isIn(player, Boundary.MAGE_TRAINING_ARENA_ALCHEMY)) {
return;
}
int startInterface = 15902;
for (int i = 0; i < values.length; i++) {
player.getPacketSender().sendString("" + values[(i + valueOffset) % values.length], startInterface + i);
}
player.getPacketSender().sendString("" + player.alchemyPoints, 15896);
player.getPacketSender().walkableInterface(15892);
}
}
@@ -0,0 +1,36 @@
package com.rs2.game.content.minigames.magetrainingarena;
import com.rs2.game.players.Player;
public class Enchanting {
/* ITEMS */
// 6898 - Green Cylinder
// 6899 - Yellow Cube
// 6900 - Blue Icosahedron
// 6901 - Red Pentamid
// 6902 - Orb
/* OBJECTS */
// 10799 - Yellow Cube Pile
// 10800 - Green Cylinder Pile
// 10801 - Blue Icosahedron Pile
// 10802 - Red Pentamid Pile
// 10803 - Deposit Hole
/* INTERFACES */
// 15917 - Enchantment training arena interface
// 15930 - Bonus text
// 15921 - How many enchantment points they have
// 15922 -> 15925 - Bonus object frame (not sure how to get it to show)
// 15926 -> 15929 - Bonus object (not sure how to get it to show)
private final Player player;
public Enchanting(Player c) {
this.player = c;
}
public void enchantItem(int itemID, int spellID) {
}
}
@@ -0,0 +1,288 @@
/*
* To change this template, choose Tools | Templates and open the template in
* the editor.
*/
package com.rs2.game.content.minigames.magetrainingarena;
import com.rs2.game.items.ItemAssistant;
import com.rs2.game.players.Player;
/**
* @author RedSparr0w
*/
public class MageTrainingArena {
public static void process() {
Alchemy.process();
}
private final Player player;
public final Enchanting enchanting;
public final Alchemy alchemy;
public MageTrainingArena(Player c) {
this.player = c;
this.enchanting = new Enchanting(c);
this.alchemy = new Alchemy(c);
}
private final int[] shopItems = {
6908, 6910, 6912, 6914, 6916, 6918,
6920, 6922, 6924, 6889, 6926, 1391,
4695, 4696, 4698, 4697, 4694, 4699,
564, 561, 560, 563, 565, 6891
};
private final int[] shopItemsN = {
100, 100, 100, 100, 100, 100,
100, 100, 100, 100, 100, 100,
100, 100, 100, 100, 100, 100,
100, 100, 100, 100, 100, 100
};
private final String[] interfaceText = { "Magic Training Arena Shop",
"Telekinetic Pizazz Points", "Enchantment Pizazz Points",
"Graveyard Pizazz Points", "Alchemist Pizazz Points" };
public void openShop() {
for (int i = 0; i < shopItems.length; i++) {
player.getPacketSender().sendUpdateItems(15948, shopItems, shopItemsN);
}
for (int i = 15950; i < interfaceText.length; i++) {
player.getPacketSender().sendString(interfaceText[i - 15950], i);
}
player.getPacketSender().sendString(Integer.toString(player.telekineticPoints), 15955);
player.getPacketSender().sendString(Integer.toString(player.enchantmentPoints), 15956);
player.getPacketSender().sendString(Integer.toString(player.graveyardPoints), 15957);
player.getPacketSender().sendString(Integer.toString(player.alchemyPoints), 15958);
player.getPacketSender().showInterface(15944);
}
public int getTelekineticPointValue(int itemId) {
switch (itemId) {
case 564:
case 561:
return 0;
case 1391:
case 4695:
case 4694:
case 4696:
case 4697:
case 4698:
case 4699:
return 1;
case 560:
case 563:
case 565:
return 2;
case 6908:
return 30;
case 6910:
case 6912:
return 60;
case 6920:
return 120;
case 6914:
return 150;
case 6922:
return 175;
case 6926:
return 200;
case 6918:
return 350;
case 6916:
return 400;
case 6924:
return 450;
case 6889:
return 500;
default:
return 1;
}
}
public int getAlchemyPointValue(int itemId) {
switch (itemId) {
case 4695:
case 4694:
case 4696:
case 4697:
case 4698:
case 4699:
case 564:
case 561:
return 1;
case 560:
case 563:
case 565:
case 1391:
return 2;
case 6908:
return 30;
case 6910:
return 60;
case 6920:
return 120;
case 6912:
return 200;
case 6922:
return 225;
case 6914:
return 240;
case 6926:
return 300;
case 6918:
return 400;
case 6916:
return 450;
case 6924:
return 500;
case 6889:
return 550;
default:
return 1;
}
}
public int getEnchantmentPointValue(int itemId) {
switch (itemId) {
case 564:
case 561:
return 5;
case 4695:
case 4694:
case 4696:
case 4697:
case 4698:
case 4699:
return 15;
case 1391:
return 20;
case 560:
case 563:
case 565:
return 25;
case 6908:
return 300;
case 6910:
return 600;
case 6920:
return 1200;
case 6922:
return 1300;
case 6912:
return 1500;
case 6926:
return 2000;
case 6914:
return 2400;
case 6918:
return 3000;
case 6916:
return 4000;
case 6924:
return 5000;
case 6889:
return 6000;
default:
return 1;
}
}
public int getGraveyardPointValue(int itemId) {
switch (itemId) {
case 4695:
case 4694:
case 4696:
case 4697:
case 4698:
case 4699:
case 564:
case 561:
return 1;
case 560:
case 563:
case 565:
case 1391:
return 2;
case 6908:
return 30;
case 6910:
return 60;
case 6920:
return 120;
case 6912:
return 150;
case 6922:
return 175;
case 6926:
return 200;
case 6914:
return 240;
case 6918:
return 350;
case 6916:
return 400;
case 6924:
return 450;
case 6889:
return 500;
default:
return 1;
}
}
public void sendItemValue(int itemId) {
player.getPacketSender().sendMessage(
ItemAssistant.getItemName(itemId) + " costs "
+ getGraveyardPointValue(itemId) + " Graveyard points, "
+ getAlchemyPointValue(itemId) + " Alchemy points,");
player.getPacketSender().sendMessage(
"" + getEnchantmentPointValue(itemId) + " Enchantment points, and "
+ getTelekineticPointValue(itemId) + " Telekinetic points.");
}
public void buyItem(int itemId) {
// If player already unlocked bones to peaches spell
if (itemId == 6926 && player.unlockedBonesToPeaches) {
player.getPacketSender().sendMessage("You've already unlocked this spell.");
return;
}
int graveValue = getGraveyardPointValue(itemId);
int alchValue = getAlchemyPointValue(itemId);
int enchantValue = getEnchantmentPointValue(itemId);
int teleValue = getTelekineticPointValue(itemId);
if (
graveValue > player.graveyardPoints ||
alchValue > player.alchemyPoints ||
enchantValue > player.enchantmentPoints ||
teleValue > player.telekineticPoints
) {
player.getPacketSender().sendMessage("You don't have enough Pizazz Points to buy that.");
return;
}
player.graveyardPoints -= graveValue;
player.alchemyPoints -= alchValue;
player.enchantmentPoints -= enchantValue;
player.telekineticPoints -= teleValue;
if (itemId == 6926) {
player.unlockedBonesToPeaches = true;
} else {
player.getItemAssistant().addItem(itemId, 1);
}
}
public void enchantItem(int itemID, int spellID) {
enchanting.enchantItem(itemID, spellID);
}
public void alchItem(int itemID, int spellID) {
alchemy.alchItem(itemID, spellID);
}
}
@@ -63,7 +63,7 @@ public class Superheat {
if (itemID != 444) {
player.getPlayerAssistant().addSkillXP(smelt[7], GameConstants.SMITHING);
}
player.getPacketSender().sendFrame106(6);
player.getPacketSender().sendShowTab(6);
return true;
}
}
@@ -1246,6 +1246,9 @@ public class ItemAssistant {
if (!playerHasItem(wearID, 1, slot)) {
return false;
}
if (slot < 0) {
return false;
}
boolean greegree = Greegree.attemptGreegree(player, wearID);
if (!greegree) {
return false;
@@ -72,7 +72,7 @@ public class ItemData {
6128, 6131, 6137, 6182, 6188, 6335, 6337, 6339, 6345, 6355, 6365,
6375, 6382, 6392, 6400, 6918, 6656, 2581, 7539, 7394, 7396, 7534,
5574, 6885, 6858, 6860, 6862, 6856, 6326, 6128, 6137, 7400, 7323,
7325, 7327, 7003, 4168, 7112, 7124, 7130, 7136 };
7325, 7327, 7003, 4168, 7112, 7124, 7130, 7136, 4284, 4285 };
public static int amulets[] = { 1654, 1656, 1658, 1660, 1662, 1664, 8081,
8033, 7968, 6585, 86, 87, 295, 421, 552, 589, 1478, 1692, 1694,
1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1725, 1727,
@@ -295,6 +295,8 @@ public class ItemData {
case 5543:
case 5545:
case 5547:
case 4284:
case 4285:
slot = ItemConstants.HAT;
break;
// Cape
@@ -361,6 +363,13 @@ public class ItemData {
case 776:
slot = ItemConstants.HANDS;
break;
case 6893:
case 6894:
case 6895:
case 6896:
case 6897:
slot = -1;
break;
default:
slot = c;
}
@@ -1,6 +1,7 @@
package com.rs2.game.npcs;
import com.rs2.GameConstants;
import com.rs2.game.content.minigames.magetrainingarena.MageTrainingArena;
import com.rs2.game.content.quests.QuestAssistant;
import com.rs2.game.content.skills.core.Fishing;
import com.rs2.game.content.skills.crafting.Tanning;
@@ -1078,7 +1079,7 @@ public class NpcActions {
}
}
switch (npcType) {
case 3021 :
case 3021:
player.getFarmingTools().loadInterfaces();
break;
@@ -1277,6 +1278,9 @@ public class NpcActions {
player.getPlayerAssistant().spellTeleport(3027, 4852, 0);
break;
case 3103: // Mage arena point shop
player.getMageTrainingArena().openShop();
default:
if (player.playerRights == 3) {
Misc.println("Third Click NPC : " + npcType);
@@ -716,7 +716,7 @@ public class ObjectsActions {
"You pass through the energy barrier.");
player.getPlayerAssistant().movePlayer(player.absX, player.absY - 2, 0);
}
break;
break;
case 5262:
if (player.heightLevel == 0)
@@ -2629,6 +2629,54 @@ public class ObjectsActions {
player.getPlayerAssistant().walkTo(0, -1);
}
break;
case 10721:
if (player.absY == 3298)
player.getPlayerAssistant().movePlayer(player.absX, player.absY + 2, 0);
else if (player.absY == 3300)
player.getPlayerAssistant().movePlayer(player.absX, player.absY - 2, 0);
break;
case 10734: // Coin Collector
player.getMageTrainingArena().alchemy.collectCoins();
break;
case 10771:
player.getPlayerAssistant().movePlayer(3369, 3307, 1);
break;
case 10773:
player.getPlayerAssistant().movePlayer(3366, 3306, 0);
break;
case 10775:
player.getPlayerAssistant().movePlayer(3357, 3307, 1);
break;
case 10776:
player.getPlayerAssistant().movePlayer(3360, 3306, 0);
break;
case 10778:
// TODO: Require Pizazz progress hat equiped
player.getDialogueHandler().sendStatement("This area is currently closed.");
// player.getPlayerAssistant().startTeleport2(3336, 9718, 0); // Telekinetic floor 0
break;
case 10779:
// TODO: Require Pizazz progress hat equiped
player.getDialogueHandler().sendStatement("This area is currently closed.");
// player.getPlayerAssistant().startTeleport2(3363, 9639, 0); // Enchantment training
break;
case 10780:
// TODO: Require Pizazz progress hat equiped
if (player.getItemAssistant().playerHasItem(995)) {
player.getDialogueHandler().sendStatement("You cannot bring coins with you.");
return;
}
player.getPlayerAssistant().startTeleport2(3365, 9624, 2); // Alchemy training
break;
case 10781:
// TODO: Require Pizazz progress hat equiped
player.getDialogueHandler().sendStatement("This area is currently closed.");
// player.getPlayerAssistant().startTeleport2(3364, 9639, 1); // Graveyard training
break;
case 10782: // Leave mage training rooms
player.getPlayerAssistant().startTeleport2(3363, 3318, 0);
break;
case 2873:
if (player.getItemAssistant().hasFreeSlots(1))
player.getItemAssistant().addItem(2412, 1);
@@ -2685,6 +2733,16 @@ public class ObjectsActions {
if (objectX == 3678 && objectY == 2948)
player.getPlayerAssistant().movePlayer(3677, 2948, 0);
break;
case 10783:
case 10785:
case 10787:
case 10789:
case 10791:
case 10793:
case 10795:
case 10797:
player.getMageTrainingArena().alchemy.searchCupboard(objectType);
break;
}
}
@@ -32,6 +32,7 @@ import com.rs2.game.content.minigames.Dueling;
import com.rs2.game.content.minigames.FightPits;
import com.rs2.game.content.minigames.PestControl;
import com.rs2.game.content.minigames.castlewars.CastleWars;
import com.rs2.game.content.minigames.magetrainingarena.MageTrainingArena;
import com.rs2.game.content.music.PlayList;
import com.rs2.game.content.music.sound.SoundList;
import com.rs2.game.content.skills.SkillInterfaces;
@@ -114,6 +115,7 @@ public abstract class Player {
public IoSession session;
private final ItemAssistant itemAssistant = new ItemAssistant(this);
private final ShopAssistant shopAssistant = new ShopAssistant(this);
private final MageTrainingArena mageArena = new MageTrainingArena(this);
private final Trading trading = new Trading(this);
private final Dueling duel = new Dueling(this);
private final PlayerAssistant playerAssistant = new PlayerAssistant(this);
@@ -400,6 +402,10 @@ public abstract class Player {
return shopAssistant;
}
public MageTrainingArena getMageTrainingArena() {
return mageArena;
}
public Trading getTrading() {
return trading;
}
@@ -814,6 +820,8 @@ public abstract class Player {
isSnowy = false;
} else if (inCw() || inPits) {
getPacketSender().showOption(3, 0, "Attack", 1);
} else if (Boundary.isIn(this, Boundary.MAGE_TRAINING_ARENA_ALCHEMY)) {
getPacketSender().walkableInterface(15892);
} else {
getPacketSender().sendMapState(0);
if (!isSnowy) {
@@ -1624,7 +1632,7 @@ public abstract class Player {
* Combat variables
*/
public boolean doubleHit, usingSpecial, usingRangeWeapon,
usingBow, usingMagic, castingMagic;
usingBow, usingMagic, castingMagic, unlockedBonesToPeaches;
public int castingSpellId, oldSpellId,
spellId, hitDelay;
public int specMaxHitIncrease, freezeDelay, freezeTimer = -6, killerId,
@@ -1632,7 +1640,7 @@ public abstract class Player {
crystalBowArrowCount, playerMagicBook, teleGfx, teleEndAnimation,
teleHeight, teleX, teleY, rangeItemUsed, killingNpcIndex,
totalDamageDealt, globalDamageDealt, oldNpcIndex, fightMode, attackTimer,
bowSpecShot, ectofuntusWorshipped;
bowSpecShot, ectofuntusWorshipped, graveyardPoints, alchemyPoints, enchantmentPoints, telekineticPoints;
public boolean magicFailed, oldMagicFailed;
/**
* End
@@ -2145,13 +2153,18 @@ public abstract class Player {
mapRegionX = (teleportToX >> 3) - 6;
mapRegionY = (teleportToY >> 3) - 6;
}
if (Boundary.isIn(this, Boundary.MAGE_TRAINING_ARENA_ALCHEMY) && !Boundary.isIn(teleportToX, teleportToY, teleHeight, Boundary.MAGE_TRAINING_ARENA_ALCHEMY)) {
// remove any alchemy training items
getMageTrainingArena().alchemy.clearItems();
}
currentX = teleportToX - 8 * mapRegionX;
currentY = teleportToY - 8 * mapRegionY;
absX = teleportToX;
absY = teleportToY;
heightLevel = teleHeight >= 0 ? teleHeight : heightLevel >= 0 ? heightLevel : 0;
resetWalkingQueue();
teleportToX = teleportToY = -1;
teleportToX = teleportToY = teleHeight = -1;
didTeleport = true;
updateWalkEntities();
} else {
@@ -845,7 +845,6 @@ public class PlayerAssistant {
public void processTeleport() {
player.teleportToX = player.teleX;
player.teleportToY = player.teleY;
player.heightLevel = player.teleHeight;
if (player.teleEndAnimation > 0) {
player.startAnimation(player.teleEndAnimation);
}
@@ -859,7 +858,7 @@ public class PlayerAssistant {
if(player.heightLevel != h) {
player.refresh = true;
}
player.heightLevel = h;
player.teleHeight = h;
player.getPlayerAssistant().requestUpdates();
}
@@ -1165,53 +1164,60 @@ public class PlayerAssistant {
|| itemId == 995) {
return;
}
boolean canAlch = true;
switch (spellId) {
case 1162: // low alch
player.getPacketSender().sendShowTab(6);
if (player.inTrade) {
player.getPacketSender().sendMessage("You can't alch while in a trade!");
return;
}
if (System.currentTimeMillis() - player.alchDelay > 1000) {
if (!player.getCombatAssistant().checkMagicReqs(49)) {
break;
if (System.currentTimeMillis() - player.alchDelay <= 1000) {
return;
}
if (!player.getCombatAssistant().checkMagicReqs(49)) {
return;
}
if (Boundary.isIn(player, Boundary.MAGE_TRAINING_ARENA)) {
player.getMageTrainingArena().alchItem(itemId, spellId);
return;
}
canAlch = true;
for (int i : ItemConstants.ITEM_UNALCHABLE) {
if (itemId == i) {
player.getPacketSender().sendMessage("You can't alch that item!");
canAlch = false;
return;
}
boolean canAlch = true;
for (int i : ItemConstants.ITEM_UNALCHABLE) {
if (itemId == i) {
player.getPacketSender().sendMessage("You can't alch that item!");
canAlch = false;
return;
}
}
if (canAlch) {
int value = (int) Math.floor(player.getShopAssistant().getItemShopValue(itemId) * 0.4);
String itemName = ItemAssistant.getItemName(itemId).toLowerCase();
if (player.getPlayerAssistant().isPlayer()) {
GameLogger.writeLog(player.playerName, "alchemy", player.playerName + " cast Low Alchemy on " + itemName + " for " + GameLogger.formatCurrency(value) + " coins");
}
if (canAlch) {
int value = (int) Math.floor(player.getShopAssistant().getItemShopValue(itemId) * 0.4);
String itemName = ItemAssistant.getItemName(itemId).toLowerCase();
if (player.getPlayerAssistant().isPlayer()) {
GameLogger.writeLog(player.playerName, "alchemy", player.playerName + " cast Low Alchemy on " + itemName + " for " + GameLogger.formatCurrency(value) + " coins");
}
player.getItemAssistant().deleteItem(itemId, slot, 1);
//855 - 858
if (itemId > 854 && itemId < 857) {
player.getItemAssistant().addItem(995, 512);
} else if (itemId > 856 && itemId < 859) {
player.getItemAssistant().addItem(995, 320);
} else if (itemId > 860 && itemId < 863) {
player.getItemAssistant().addItem(995, 640);
} else if (itemId > 858 && itemId < 861) {
player.getItemAssistant().addItem(995, 1024);
} else {
player.getItemAssistant().addItem(995, value);
}
player.startAnimation(MagicData.MAGIC_SPELLS[49][2]);
player.gfx100(MagicData.MAGIC_SPELLS[49][3]);
player.alchDelay = System.currentTimeMillis();
player.getPacketSender().sendFrame106(6);
addSkillXP(31, 6);
player.getPacketSender().sendSound(
SoundList.LOW_ALCHEMY, 100, 0);
RandomEventHandler.addRandom(player);
refreshSkill(6);
player.getItemAssistant().deleteItem(itemId, slot, 1);
//855 - 858
if (itemId > 854 && itemId < 857) {
player.getItemAssistant().addItem(995, 512);
} else if (itemId > 856 && itemId < 859) {
player.getItemAssistant().addItem(995, 320);
} else if (itemId > 860 && itemId < 863) {
player.getItemAssistant().addItem(995, 640);
} else if (itemId > 858 && itemId < 861) {
player.getItemAssistant().addItem(995, 1024);
} else {
player.getItemAssistant().addItem(995, value);
}
player.startAnimation(MagicData.MAGIC_SPELLS[49][2]);
player.gfx100(MagicData.MAGIC_SPELLS[49][3]);
player.alchDelay = System.currentTimeMillis();
player.getPacketSender().sendShowTab(6);
addSkillXP(31, 6);
player.getPacketSender().sendSound(
SoundList.LOW_ALCHEMY, 100, 0);
RandomEventHandler.addRandom(player);
refreshSkill(6);
}
break;
@@ -1227,54 +1233,64 @@ public class PlayerAssistant {
case 1180: // Lvl-4 enchant diamond
case 1187: // Lvl-5 enchant dragonstone
case 6003: // Lvl-6 enchant onyx
player.getEnchanting().enchantItem(itemId, spellId);
if (Boundary.isIn(player, Boundary.MAGE_TRAINING_ARENA)) {
player.getMageTrainingArena().enchantItem(itemId, spellId);
} else {
player.getEnchanting().enchantItem(itemId, spellId);
}
break;
case 1178: // high alch
player.getPacketSender().sendShowTab(6);
if (player.inTrade) {
player.getPacketSender().sendMessage("You can't alch while in a trade!");
return;
}
if (System.currentTimeMillis() - player.alchDelay > 1000) {
if (!player.getCombatAssistant().checkMagicReqs(50)) {
break;
if (System.currentTimeMillis() - player.alchDelay <= 1000) {
return;
}
if (!player.getCombatAssistant().checkMagicReqs(50)) {
break;
}
if (Boundary.isIn(player, Boundary.MAGE_TRAINING_ARENA)) {
player.getMageTrainingArena().alchItem(itemId, spellId);
return;
}
canAlch = true;
for (int i : ItemConstants.ITEM_UNALCHABLE) {
if (itemId == i) {
player.getPacketSender().sendMessage("You can't alch that item!");
canAlch = false;
return;
}
boolean canAlch = true;
for (int i : ItemConstants.ITEM_UNALCHABLE) {
if (itemId == i) {
player.getPacketSender().sendMessage("You can't alch that item!");
canAlch = false;
return;
}
}
if (canAlch) {
int value = (int) Math.floor(player.getShopAssistant().getItemShopValue(itemId) * 0.75);
String itemName = ItemAssistant.getItemName(itemId).toLowerCase();
if (player.getPlayerAssistant().isPlayer()) {
GameLogger.writeLog(player.playerName, "alchemy", player.playerName + " cast High Alchemy on " + itemName + " for" + GameLogger.formatCurrency(value) + " coins");
}
if (canAlch) {
int value = (int) Math.floor(player.getShopAssistant().getItemShopValue(itemId) * 0.75);
String itemName = ItemAssistant.getItemName(itemId).toLowerCase();
if (player.getPlayerAssistant().isPlayer()) {
GameLogger.writeLog(player.playerName, "alchemy", player.playerName + " cast High Alchemy on " + itemName + " for" + GameLogger.formatCurrency(value) + " coins");
}
player.getItemAssistant().deleteItem(itemId, slot, 1);
if (itemId > 854 && itemId < 857) {
player.getItemAssistant().addItem(995, 768);
} else if (itemId > 856 && itemId < 859) {
player.getItemAssistant().addItem(995, 480);
} else if (itemId > 858 && itemId < 861) {
player.getItemAssistant().addItem(995, 1536);
} else if (itemId > 860 && itemId < 863) {
player.getItemAssistant().addItem(995, 960);
} else {
player.getItemAssistant().addItem(995, (int) (player.getShopAssistant().getItemShopValue(itemId) * .75));
}
player.startAnimation(MagicData.MAGIC_SPELLS[50][2]);
player.gfx100(MagicData.MAGIC_SPELLS[50][3]);
player.alchDelay = System.currentTimeMillis();
player.getPacketSender().sendFrame106(6);
RandomEventHandler.addRandom(player);
addSkillXP(65, 6);
player.getPacketSender().sendSound(
SoundList.HIGH_ALCHEMY, 100, 0);
refreshSkill(6);
player.getItemAssistant().deleteItem(itemId, slot, 1);
if (itemId > 854 && itemId < 857) {
player.getItemAssistant().addItem(995, 768);
} else if (itemId > 856 && itemId < 859) {
player.getItemAssistant().addItem(995, 480);
} else if (itemId > 858 && itemId < 861) {
player.getItemAssistant().addItem(995, 1536);
} else if (itemId > 860 && itemId < 863) {
player.getItemAssistant().addItem(995, 960);
} else {
player.getItemAssistant().addItem(995, (int) (player.getShopAssistant().getItemShopValue(itemId) * .75));
}
player.startAnimation(MagicData.MAGIC_SPELLS[50][2]);
player.gfx100(MagicData.MAGIC_SPELLS[50][3]);
player.alchDelay = System.currentTimeMillis();
player.getPacketSender().sendShowTab(6);
RandomEventHandler.addRandom(player);
addSkillXP(65, 6);
player.getPacketSender().sendSound(
SoundList.HIGH_ALCHEMY, 100, 0);
refreshSkill(6);
}
break;
}
@@ -81,6 +81,7 @@ public class PlayerSave {
switch (token) {
case "character-height":
player.heightLevel = Integer.parseInt(token2);
player.teleHeight = Integer.parseInt(token2);
break;
case "character-posx":
player.teleportToX = Integer.parseInt(token2) <= 0 ? player.lastX : Integer.parseInt(token2);
@@ -412,6 +413,21 @@ public class PlayerSave {
case "ectofuntusWorshipped":
player.ectofuntusWorshipped = Integer.parseInt(token2);
break;
case "graveyard-points":
player.graveyardPoints = Integer.parseInt(token2);
break;
case "alchemy-points":
player.alchemyPoints = Integer.parseInt(token2);
break;
case "enchantment-points":
player.enchantmentPoints = Integer.parseInt(token2);
break;
case "telekinetic-points":
player.telekineticPoints = Integer.parseInt(token2);
break;
case "unlocked-bones-to-peaches":
player.unlockedBonesToPeaches = Boolean.parseBoolean(token2);
break;
}
break;
case 3:
@@ -782,6 +798,16 @@ public class PlayerSave {
characterfile.newLine();
characterfile.write("ectofuntusWorshipped = " + player.ectofuntusWorshipped);
characterfile.newLine();
characterfile.write("graveyard-points = " + player.graveyardPoints);
characterfile.newLine();
characterfile.write("alchemy-points = " + player.alchemyPoints);
characterfile.newLine();
characterfile.write("enchantment-points = " + player.enchantmentPoints);
characterfile.newLine();
characterfile.write("telekinetic-points = " + player.telekineticPoints);
characterfile.newLine();
characterfile.write("unlocked-bones-to-peaches = " + player.unlockedBonesToPeaches);
characterfile.newLine();
String voidStatus = "";
for (int voidS : player.voidStatus){
voidStatus += voidS + "\t";
@@ -14,7 +14,6 @@ import com.rs2.game.items.ItemConstants;
import com.rs2.game.items.Weight;
import com.rs2.game.items.impl.LightSources;
import com.rs2.game.players.Client;
import com.rs2.game.players.MainFrameIDs;
import com.rs2.game.players.Player;
import com.rs2.game.players.PlayerHandler;
import com.rs2.util.Misc;
@@ -430,7 +429,8 @@ public class PacketSender {
return this;
}
public PacketSender sendFrame106(int sideIcon) { //Something to do with magic
// Show a certain tab
public PacketSender sendShowTab(int sideIcon) {
if (player.getOutStream() != null && player != null) {
player.getOutStream().createFrame(106);
player.getOutStream().writeByteC(sideIcon);
@@ -98,6 +98,10 @@ public class Bank5 implements PacketType {
case 1123:
player.getSmithing().readInput(player, player.playerLevel[GameConstants.SMITHING], removeId, 5);
break;
case 15948: // Mage Training Arena Shop
player.getMageTrainingArena().buyItem(removeId);
break;
}
}
@@ -153,7 +153,7 @@ public class ClickingButtons implements PacketType {
player.getPlayerAssistant().refreshSkill(GameConstants.MAGIC);
player.startAnimation(722);
player.gfx100(141);
player.getPacketSender().sendFrame106(6);
player.getPacketSender().sendShowTab(6);
player.getPacketSender().sendSound(
SoundList.BONES_TO_BANNAS, 100, 0);
player.boneDelay = System.currentTimeMillis();
@@ -175,9 +175,13 @@ public class ClickingButtons implements PacketType {
player.getPacketSender().sendChatInterface(356);
return;
}
if (!player.unlockedBonesToPeaches) {
player.getPacketSender().sendString("You haven't unlocked this spell yet.", 357);
player.getPacketSender().sendChatInterface(356);
return;
}
if (!player.getItemAssistant().playerHasItem(526, 1)) {
player.getPacketSender().sendMessage(
"You don't have any bones!");
player.getPacketSender().sendMessage("You don't have any bones!");
return;
}
if (!player.getItemAssistant().playerHasItem(561, 2)
@@ -197,7 +201,7 @@ public class ClickingButtons implements PacketType {
player.getPlayerAssistant().refreshSkill(GameConstants.MAGIC);
player.startAnimation(722);
player.gfx100(311);
player.getPacketSender().sendFrame106(6);
player.getPacketSender().sendShowTab(6);
player.boneDelay = System.currentTimeMillis();
do {
player.getItemAssistant().deleteItem(526, 1);
@@ -101,6 +101,9 @@ public class RemoveItem implements PacketType {
player.getSmithing().readInput(player, player.playerLevel[GameConstants.SMITHING], removeId, 1);
break;
case 15948: // Mage Training Arena Shop
player.getMageTrainingArena().sendItemValue(removeId);
break;
}
Weight.updateWeight(player);
}
@@ -110,6 +110,15 @@ public class Boundary {
return x >= boundaries.minX && x <= boundaries.highX && y >= boundaries.minY && y <= boundaries.highY;
}
public static boolean isIn(int x, int y, int h, Boundary boundaries) {
if (boundaries.height >= 0) {
if (h != boundaries.height) {
return false;
}
}
return x >= boundaries.minX && x <= boundaries.highX && y >= boundaries.minY && y <= boundaries.highY;
}
/**
*
* @param npc
@@ -303,5 +312,7 @@ public class Boundary {
public static final Boundary[] FIGHT_PITS = new Boundary[] { new Boundary(2378, 3415, 5133, 5167), new Boundary(2394, 2404, 5169, 5174) };
public static final Boundary PARTY_ROOM = new Boundary(2727, 2746, 3460, 3479);
public static final Boundary PARTY_ROOM_TABLE = new Boundary(2735, 2740, 3467, 3468);
public static final Boundary MAGE_TRAINING_ARENA = new Boundary(3330, 3388, 9614, 9727);
public static final Boundary MAGE_TRAINING_ARENA_ALCHEMY = new Boundary(3350, 3379, 9616, 9655, 2);
}