mirror of
https://github.com/2006-Scape/2006Scape.git
synced 2026-07-03 00:31:51 +00:00
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:
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+16
-27
@@ -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.");
|
||||
}
|
||||
|
||||
}
|
||||
+148
@@ -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);
|
||||
}
|
||||
}
|
||||
+36
@@ -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) {
|
||||
}
|
||||
}
|
||||
+288
@@ -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);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user