mirror of
https://github.com/2006-Scape/2006Scape.git
synced 2026-07-06 16:49:07 +00:00
Projectile clipping, PassDoor fix (#176)
* Numbered packet sizes. Corrected sound packet length to 6 from 5. Corrected sound packet in server. Teleport sound now plays correctly. Corrected modern teleport animation playthrough. Removed redundant teleport delay. * Changed sendSound packet size back to 5 and removed type attribute to maintain compatibility with Parabot. * After running around an object to attack the player will no longer wait a number of ticks to start attacking again. Fixed an issue where walkTo being called from CycleEvents would not execute correctly. Player will no longer face a killed npc after it respawns. Added projectile clipping. Added a new algorithm for player->player/npc following that accounts for projectile clipping.
This commit is contained in:
committed by
Daniel Ginovker
parent
a4e4b89d99
commit
c827d46ca0
@@ -21,6 +21,7 @@ import redone.game.content.music.sound.CombatSounds;
|
||||
import redone.game.content.music.sound.SoundList;
|
||||
import redone.game.content.skills.slayer.SlayerRequirements;
|
||||
import redone.game.items.ItemAssistant;
|
||||
import redone.game.npcs.Npc;
|
||||
import redone.game.npcs.NpcHandler;
|
||||
import redone.game.players.Client;
|
||||
import redone.game.players.Player;
|
||||
@@ -430,21 +431,91 @@ public class CombatAssistant {
|
||||
}
|
||||
}
|
||||
|
||||
public void attackingNpcTick() {
|
||||
int i = c.npcIndex;
|
||||
if (i > 0 && NpcHandler.npcs[i] != null) {
|
||||
if (NpcHandler.npcs[i].isDead) {
|
||||
c.npcIndex = 0;
|
||||
c.followId2 = 0;
|
||||
c.faceNpc(0);
|
||||
return;
|
||||
}
|
||||
|
||||
boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon;
|
||||
if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, NpcHandler.npcs[i].absX, NpcHandler.npcs[i].absY)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c) && !c.usingRangeWeapon && !c.usingBow && !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 4) && c.usingRangeWeapon&& !c.usingBow && !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 1)&& !c.usingRangeWeapon && !RangeData.usingHally(c) && !c.usingBow && !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 8) && (c.usingBow || c.usingMagic)) {
|
||||
return;
|
||||
} else {
|
||||
c.stopMovement();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void attackingPlayerTick() {
|
||||
int i = c.playerIndex;
|
||||
if (i > 0 && PlayerHandler.players[i] != null) {
|
||||
if (PlayerHandler.players[i].isDead) {
|
||||
c.playerIndex = 0;
|
||||
c.followId = 0;
|
||||
c.faceNpc(0);
|
||||
return;
|
||||
}
|
||||
|
||||
boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon;
|
||||
if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, PlayerHandler.players[i].absX, PlayerHandler.players[i].absY)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!c.goodDistance(c.getX(), c.getY(),
|
||||
PlayerHandler.players[i].getX(),
|
||||
PlayerHandler.players[i].getY(), 4)
|
||||
&& c.usingRangeWeapon
|
||||
&& !c.usingBow
|
||||
&& !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(),
|
||||
PlayerHandler.players[i].getX(),
|
||||
PlayerHandler.players[i].getY(), 2)
|
||||
&& !c.usingRangeWeapon
|
||||
&& RangeData.usingHally(c)
|
||||
&& !c.usingBow
|
||||
&& !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(),
|
||||
PlayerHandler.players[i].getX(),
|
||||
PlayerHandler.players[i].getY(),
|
||||
getRequiredDistance())
|
||||
&& !c.usingRangeWeapon
|
||||
&& !RangeData.usingHally(c)
|
||||
&& !c.usingBow
|
||||
&& !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(),
|
||||
PlayerHandler.players[i].getX(),
|
||||
PlayerHandler.players[i].getY(), 10)
|
||||
&& (c.usingBow || c.usingMagic)) {
|
||||
return;
|
||||
} else {
|
||||
c.stopMovement();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void attackNpc(int i) {
|
||||
// int equippedWeapon = c.playerEquipment[c.playerWeapon];
|
||||
// final int npcId = NPCHandler.npcs[i].npcType;
|
||||
if (NpcHandler.npcs[i] != null) {
|
||||
Npc npc = NpcHandler.npcs[i];
|
||||
if (NpcHandler.npcs[i].isDead || NpcHandler.npcs[i].MaxHP <= 0) {
|
||||
c.usingMagic = false;
|
||||
c.faceUpdate(0);
|
||||
c.npcIndex = 0;
|
||||
return;
|
||||
}
|
||||
if (c.absY == 3228 && NpcHandler.npcs[i].absY == 3227) {
|
||||
resetPlayerAttack();
|
||||
return;
|
||||
}
|
||||
if (c.absY == 3224 && NpcHandler.npcs[i].absY == 3225) {
|
||||
/*if (c.absY == 3224 && NpcHandler.npcs[i].absY == 3225) {
|
||||
resetPlayerAttack();
|
||||
return;
|
||||
}
|
||||
@@ -459,7 +530,7 @@ public class CombatAssistant {
|
||||
if (c.absX == 3252 && c.absY > 3254 && c.absY < 3272 || c.absY == 3254 && c.absX > 3252 && c.absX < 3265) {
|
||||
resetPlayerAttack();
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
if (c.usingMagic && MagicData.MAGIC_SPELLS[c.spellId][0] == 1171) {
|
||||
if (!NpcHandler.isUndead(i)) {
|
||||
c.getActionSender().sendMessage("This spell only affects skeletons, zombies, ghosts and shades.");
|
||||
@@ -546,12 +617,13 @@ public class CombatAssistant {
|
||||
c.getActionSender().sendMessage("This monster was not spawned for you.");
|
||||
return;
|
||||
}
|
||||
|
||||
c.followId2 = i;
|
||||
c.followId = 0;
|
||||
if (c.attackTimer <= 0) {
|
||||
boolean usingBow = false;
|
||||
c.usingBow = false;
|
||||
c.usingRangeWeapon = false;
|
||||
boolean usingArrows = false;
|
||||
boolean usingOtherRangeWeapons = false;
|
||||
boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185;
|
||||
c.bonusAttack = 0;
|
||||
c.rangeItemUsed = 0;
|
||||
@@ -563,13 +635,13 @@ public class CombatAssistant {
|
||||
if (c.spellId > 0) {
|
||||
c.usingMagic = true;
|
||||
}
|
||||
c.attackTimer = getAttackDelay();
|
||||
|
||||
c.specAccuracy = 1.0;
|
||||
c.specDamage = 1.0;
|
||||
if (!c.usingMagic) {
|
||||
for (int bowId : RangeData.BOWS) {
|
||||
if (c.playerEquipment[c.playerWeapon] == bowId) {
|
||||
usingBow = true;
|
||||
c.usingBow = true;
|
||||
for (int arrowId : RangeData.ARROWS) {
|
||||
if (c.playerEquipment[c.playerArrows] == arrowId) {
|
||||
usingArrows = true;
|
||||
@@ -580,44 +652,41 @@ public class CombatAssistant {
|
||||
|
||||
for (int otherRangeId : RangeData.OTHER_RANGE_WEAPONS) {
|
||||
if (c.playerEquipment[c.playerWeapon] == otherRangeId) {
|
||||
usingOtherRangeWeapons = true;
|
||||
c.usingRangeWeapon = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (armaNpc(i) && !usingCross && !usingBow && !c.usingMagic
|
||||
&& !RangeData.usingCrystalBow(c) && !usingOtherRangeWeapons) {
|
||||
if (armaNpc(i) && !usingCross && !c.usingBow && !c.usingMagic
|
||||
&& !RangeData.usingCrystalBow(c) && !c.usingRangeWeapon) {
|
||||
resetPlayerAttack();
|
||||
return;
|
||||
}
|
||||
if (usingOtherRangeWeapons || usingBow
|
||||
if (c.usingRangeWeapon || c.usingBow
|
||||
&& Constants.combatSounds
|
||||
&& NpcHandler.npcs[i].npcType < 3177
|
||||
&& NpcHandler.npcs[i].npcType > 3180) {
|
||||
c.getActionSender().sendSound(SoundList.SHOOT_ARROW,
|
||||
100, 0);
|
||||
}
|
||||
if (!c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c) && !usingOtherRangeWeapons && !usingBow && !c.usingMagic || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 4)
|
||||
&& usingOtherRangeWeapons
|
||||
&& !usingBow
|
||||
&& !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(),
|
||||
NpcHandler.npcs[i].getX(),
|
||||
NpcHandler.npcs[i].getY(), 1)
|
||||
&& !usingOtherRangeWeapons
|
||||
&& !RangeData.usingHally(c)
|
||||
&& !usingBow
|
||||
&& !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(),
|
||||
NpcHandler.npcs[i].getX(),
|
||||
NpcHandler.npcs[i].getY(), 8)
|
||||
&& (usingBow || c.usingMagic)) {
|
||||
c.attackTimer = 2;
|
||||
|
||||
boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon;
|
||||
|
||||
if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, npc.absX, npc.absY)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c) && !c.usingRangeWeapon && !c.usingBow && !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 4) && c.usingRangeWeapon && !c.usingBow && !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 1)&& !c.usingRangeWeapon && !RangeData.usingHally(c) && !c.usingBow && !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 8) && (c.usingBow || c.usingMagic)) {
|
||||
return;
|
||||
} else {
|
||||
c.stopMovement();
|
||||
}
|
||||
|
||||
if (!usingCross
|
||||
&& !usingArrows
|
||||
&& usingBow
|
||||
&& c.usingBow
|
||||
&& (c.playerEquipment[c.playerWeapon] < 4212 || c.playerEquipment[c.playerWeapon] > 4223)) {
|
||||
c.getActionSender().sendMessage(
|
||||
"There is no ammo left in your quiver.");
|
||||
@@ -626,7 +695,7 @@ public class CombatAssistant {
|
||||
return;
|
||||
}
|
||||
if (RangeData.correctBowAndArrows(c) < c.playerEquipment[c.playerArrows]
|
||||
&& Constants.CORRECT_ARROWS && usingBow
|
||||
&& Constants.CORRECT_ARROWS && c.usingBow
|
||||
&& !RangeData.usingCrystalBow(c)
|
||||
&& c.playerEquipment[c.playerWeapon] != 9185) {
|
||||
c.getItemAssistant();
|
||||
@@ -653,30 +722,14 @@ public class CombatAssistant {
|
||||
return;
|
||||
}
|
||||
|
||||
if (usingBow
|
||||
if (c.usingBow
|
||||
|| c.usingMagic
|
||||
|| usingOtherRangeWeapons
|
||||
|| c.usingRangeWeapon
|
||||
|| c.goodDistance(c.getX(), c.getY(),
|
||||
NpcHandler.npcs[i].getX(),
|
||||
NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c)) {
|
||||
c.stopMovement();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Npc projectiles
|
||||
*/
|
||||
if (PlayerAssistant.pathBlocked(c, NpcHandler.npcs[i])) {
|
||||
if((c.usingBow || c.usingMagic || usingOtherRangeWeapons || c.autocasting)) {
|
||||
PathFinder.getPathFinder().findRoute(c, NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), true, 8, 8);
|
||||
if(!c.usingBow && !c.usingMagic && !usingOtherRangeWeapons && !c.autocasting) {
|
||||
PathFinder.getPathFinder().findRoute(c,NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), true, 1, 1);
|
||||
c.attackTimer = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!checkMagicReqs(c.spellId)) {
|
||||
c.stopMovement();
|
||||
@@ -685,6 +738,7 @@ public class CombatAssistant {
|
||||
}
|
||||
|
||||
c.faceUpdate(i);
|
||||
c.attackTimer = getAttackDelay();
|
||||
NpcHandler.npcs[i].underAttackBy = c.playerId;
|
||||
NpcHandler.npcs[i].lastDamageTaken = System.currentTimeMillis();
|
||||
if (c.usingSpecial && !c.usingMagic) {
|
||||
@@ -729,7 +783,7 @@ public class CombatAssistant {
|
||||
}
|
||||
c.lastWeaponUsed = c.playerEquipment[c.playerWeapon];
|
||||
c.lastArrowUsed = c.playerEquipment[c.playerArrows];
|
||||
if (!usingBow && !c.usingMagic && !usingOtherRangeWeapons) { // melee
|
||||
if (!c.usingBow && !c.usingMagic && !c.usingRangeWeapon) { // melee
|
||||
// hit
|
||||
// delay
|
||||
c.hitDelay = getHitDelay();
|
||||
@@ -737,7 +791,7 @@ public class CombatAssistant {
|
||||
c.oldNpcIndex = i;
|
||||
}
|
||||
|
||||
if (usingBow && !usingOtherRangeWeapons && !c.usingMagic
|
||||
if (c.usingBow && !c.usingRangeWeapon && !c.usingMagic
|
||||
|| usingCross) { // range hit delay
|
||||
if (usingCross) {
|
||||
c.usingBow = true;
|
||||
@@ -763,7 +817,7 @@ public class CombatAssistant {
|
||||
fireProjectileNpc();
|
||||
}
|
||||
|
||||
if (usingOtherRangeWeapons && !c.usingMagic && !usingBow) { // knives,
|
||||
if (c.usingRangeWeapon && !c.usingMagic && !c.usingBow) { // knives,
|
||||
// darts,
|
||||
// etc
|
||||
// hit
|
||||
@@ -813,7 +867,7 @@ public class CombatAssistant {
|
||||
}
|
||||
}
|
||||
|
||||
if (usingBow && Constants.CRYSTAL_BOW_DEGRADES) { // crystal
|
||||
if (c.usingBow && Constants.CRYSTAL_BOW_DEGRADES) { // crystal
|
||||
// bow
|
||||
// degrading
|
||||
if (c.playerEquipment[c.playerWeapon] == 4212) { // new
|
||||
@@ -871,13 +925,13 @@ public class CombatAssistant {
|
||||
int equippedWeapon = c.playerEquipment[c.playerWeapon];
|
||||
|
||||
if (PlayerHandler.players[i] != null) {
|
||||
|
||||
if (c.usingMagic && MagicData.MAGIC_SPELLS[c.spellId][0] == 1171) {
|
||||
c.getActionSender().sendMessage("This spell only affects skeletons, zombies, ghosts and shades, not humans.");
|
||||
resetPlayerAttack();
|
||||
c.stopMovement();
|
||||
return;
|
||||
}
|
||||
|
||||
if (c.usingMagic && MagicData.MAGIC_SPELLS[c.spellId][0] == 1171) {
|
||||
c.getActionSender().sendMessage("This spell only affects skeletons, zombies, ghosts and shades, not humans.");
|
||||
resetPlayerAttack();
|
||||
c.stopMovement();
|
||||
return;
|
||||
}
|
||||
|
||||
if (CastleWars.isInCw(PlayerHandler.players[i])
|
||||
&& CastleWars.isInCw(c)) {
|
||||
@@ -935,9 +989,7 @@ public class CombatAssistant {
|
||||
c.specEffect = 0;
|
||||
c.usingRangeWeapon = false;
|
||||
c.rangeItemUsed = 0;
|
||||
boolean usingBow = false;
|
||||
boolean usingArrows = false;
|
||||
boolean usingOtherRangeWeapons = false;
|
||||
boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185;
|
||||
c.projectileStage = 0;
|
||||
if (c.absX == PlayerHandler.players[i].absX
|
||||
@@ -953,7 +1005,7 @@ public class CombatAssistant {
|
||||
if (!c.usingMagic) {
|
||||
for (int bowId : RangeData.BOWS) {
|
||||
if (c.playerEquipment[c.playerWeapon] == bowId) {
|
||||
usingBow = true;
|
||||
c.usingBow = true;
|
||||
for (int arrowId : RangeData.ARROWS) {
|
||||
if (c.playerEquipment[c.playerArrows] == arrowId) {
|
||||
usingArrows = true;
|
||||
@@ -964,7 +1016,7 @@ public class CombatAssistant {
|
||||
|
||||
for (int otherRangeId : RangeData.OTHER_RANGE_WEAPONS) {
|
||||
if (c.playerEquipment[c.playerWeapon] == otherRangeId) {
|
||||
usingOtherRangeWeapons = true;
|
||||
c.usingRangeWeapon = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -975,7 +1027,7 @@ public class CombatAssistant {
|
||||
if (c.spellId > 0) {
|
||||
c.usingMagic = true;
|
||||
}
|
||||
c.attackTimer = getAttackDelay();
|
||||
|
||||
|
||||
if (c.duelRule[9]) {
|
||||
boolean canUseWeapon = false;
|
||||
@@ -991,12 +1043,13 @@ public class CombatAssistant {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (c.duelRule[2] && (usingBow || usingOtherRangeWeapons)) {
|
||||
|
||||
if (c.duelRule[2] && (c.usingBow || c.usingRangeWeapon)) {
|
||||
c.getActionSender().sendMessage(
|
||||
"Range has been disabled in this duel!");
|
||||
return;
|
||||
}
|
||||
if (c.duelRule[3] && !usingBow && !usingOtherRangeWeapons
|
||||
if (c.duelRule[3] && !c.usingBow && !c.usingRangeWeapon
|
||||
&& !c.usingMagic) {
|
||||
c.getActionSender().sendMessage(
|
||||
"Melee has been disabled in this duel!");
|
||||
@@ -1010,34 +1063,40 @@ public class CombatAssistant {
|
||||
return;
|
||||
}
|
||||
|
||||
boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon;
|
||||
|
||||
if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, PlayerHandler.players[i].absX, PlayerHandler.players[i].absY)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!c.goodDistance(c.getX(), c.getY(),
|
||||
PlayerHandler.players[i].getX(),
|
||||
PlayerHandler.players[i].getY(), 4)
|
||||
&& usingOtherRangeWeapons
|
||||
&& !usingBow
|
||||
&& c.usingRangeWeapon
|
||||
&& !c.usingBow
|
||||
&& !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(),
|
||||
PlayerHandler.players[i].getX(),
|
||||
PlayerHandler.players[i].getY(), 2)
|
||||
&& !usingOtherRangeWeapons
|
||||
PlayerHandler.players[i].getX(),
|
||||
PlayerHandler.players[i].getY(), 2)
|
||||
&& !c.usingRangeWeapon
|
||||
&& RangeData.usingHally(c)
|
||||
&& !usingBow
|
||||
&& !c.usingBow
|
||||
&& !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(),
|
||||
PlayerHandler.players[i].getX(),
|
||||
PlayerHandler.players[i].getY(),
|
||||
getRequiredDistance())
|
||||
&& !usingOtherRangeWeapons
|
||||
PlayerHandler.players[i].getX(),
|
||||
PlayerHandler.players[i].getY(),
|
||||
getRequiredDistance())
|
||||
&& !c.usingRangeWeapon
|
||||
&& !RangeData.usingHally(c)
|
||||
&& !usingBow
|
||||
&& !c.usingBow
|
||||
&& !c.usingMagic
|
||||
|| !c.goodDistance(c.getX(), c.getY(),
|
||||
PlayerHandler.players[i].getX(),
|
||||
PlayerHandler.players[i].getY(), 10)
|
||||
&& (usingBow || c.usingMagic)) {
|
||||
PlayerHandler.players[i].getX(),
|
||||
PlayerHandler.players[i].getY(), 10)
|
||||
&& (c.usingBow || c.usingMagic)) {
|
||||
// c.getPacketDispatcher().sendMessage("Setting attack timer to 1");
|
||||
c.attackTimer = 1;
|
||||
if (!usingBow && !c.usingMagic && !usingOtherRangeWeapons
|
||||
//c.attackTimer = 1;
|
||||
if (!c.usingBow && !c.usingMagic && !c.usingRangeWeapon
|
||||
&& c.freezeTimer > 0) {
|
||||
resetPlayerAttack();
|
||||
}
|
||||
@@ -1046,7 +1105,7 @@ public class CombatAssistant {
|
||||
|
||||
if (!usingCross
|
||||
&& !usingArrows
|
||||
&& usingBow
|
||||
&& c.usingBow
|
||||
&& (c.playerEquipment[c.playerWeapon] < 4212 || c.playerEquipment[c.playerWeapon] > 4223)
|
||||
&& !c.usingMagic) {
|
||||
c.getActionSender().sendMessage(
|
||||
@@ -1056,7 +1115,7 @@ public class CombatAssistant {
|
||||
return;
|
||||
}
|
||||
if (RangeData.correctBowAndArrows(c) < c.playerEquipment[c.playerArrows]
|
||||
&& Constants.CORRECT_ARROWS && usingBow
|
||||
&& Constants.CORRECT_ARROWS && c.usingBow
|
||||
&& !RangeData.usingCrystalBow(c)
|
||||
&& c.playerEquipment[c.playerWeapon] != 9185
|
||||
&& !c.usingMagic) {
|
||||
@@ -1065,12 +1124,12 @@ public class CombatAssistant {
|
||||
c.getActionSender().sendMessage(
|
||||
"You can't use "
|
||||
+ ItemAssistant.getItemName(
|
||||
c.playerEquipment[c.playerArrows])
|
||||
.toLowerCase()
|
||||
c.playerEquipment[c.playerArrows])
|
||||
.toLowerCase()
|
||||
+ "s with a "
|
||||
+ ItemAssistant.getItemName(
|
||||
c.playerEquipment[c.playerWeapon])
|
||||
.toLowerCase() + ".");
|
||||
c.playerEquipment[c.playerWeapon])
|
||||
.toLowerCase() + ".");
|
||||
c.stopMovement();
|
||||
resetPlayerAttack();
|
||||
return;
|
||||
@@ -1084,25 +1143,11 @@ public class CombatAssistant {
|
||||
return;
|
||||
}
|
||||
|
||||
if (usingBow || c.usingMagic || usingOtherRangeWeapons
|
||||
if (c.usingBow || c.usingMagic || c.usingRangeWeapon
|
||||
|| RangeData.usingHally(c)) {
|
||||
c.stopMovement();
|
||||
}
|
||||
|
||||
/**
|
||||
* Player projectiles
|
||||
*/
|
||||
if(PlayerAssistant.pathBlocked(c, o)) {
|
||||
if((c.usingBow || c.usingMagic || usingOtherRangeWeapons || c.autocasting)) {
|
||||
PathFinder.getPathFinder().findRoute(c, o.absX, o.absY, true, 8, 8);
|
||||
if(!c.usingBow && !c.usingMagic && !usingOtherRangeWeapons && !c.autocasting) {
|
||||
PathFinder.getPathFinder().findRoute(c, o.absX, o.absY, true, 1, 1);
|
||||
c.attackTimer = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!checkMagicReqs(c.spellId)) {
|
||||
c.stopMovement();
|
||||
resetPlayerAttack();
|
||||
@@ -1116,7 +1161,7 @@ public class CombatAssistant {
|
||||
&& FightPits.getState(c) == null) {
|
||||
if (!c.attackedPlayers.contains(c.playerIndex)
|
||||
&& !PlayerHandler.players[c.playerIndex].attackedPlayers
|
||||
.contains(c.playerId)) {
|
||||
.contains(c.playerId)) {
|
||||
c.attackedPlayers.add(c.playerIndex);
|
||||
c.isSkulled = true;
|
||||
c.skullTimer = Constants.SKULL_TIMER;
|
||||
@@ -1183,24 +1228,26 @@ public class CombatAssistant {
|
||||
0);
|
||||
}
|
||||
}
|
||||
|
||||
c.attackTimer = getAttackDelay();
|
||||
PlayerHandler.players[i].underAttackBy = c.playerId;
|
||||
PlayerHandler.players[i].logoutDelay = System.currentTimeMillis();
|
||||
PlayerHandler.players[i].singleCombatDelay = System.currentTimeMillis();
|
||||
PlayerHandler.players[i].killerId = c.playerId;
|
||||
c.lastArrowUsed = 0;
|
||||
c.rangeItemUsed = 0;
|
||||
if (!usingBow && !c.usingMagic && !usingOtherRangeWeapons) { // melee
|
||||
// hit
|
||||
// delay;
|
||||
if (!c.usingBow && !c.usingMagic && !c.usingRangeWeapon) { // melee
|
||||
// hit
|
||||
// delay;
|
||||
c.followId = PlayerHandler.players[c.playerIndex].playerId;
|
||||
c.getPlayerAssistant().followPlayer();
|
||||
//c.getPlayerAssistant().followPlayer();
|
||||
c.hitDelay = getHitDelay();
|
||||
c.delayedDamage = Misc.random(meleeMaxHit());
|
||||
c.projectileStage = 0;
|
||||
c.oldPlayerIndex = i;
|
||||
}
|
||||
|
||||
if (usingBow && !usingOtherRangeWeapons && !c.usingMagic
|
||||
if (c.usingBow && !c.usingRangeWeapon && !c.usingMagic
|
||||
|| usingCross) { // range hit delay
|
||||
if (c.playerEquipment[c.playerWeapon] >= 4212
|
||||
&& c.playerEquipment[c.playerWeapon] <= 4223) {
|
||||
@@ -1219,7 +1266,7 @@ public class CombatAssistant {
|
||||
|
||||
c.usingBow = true;
|
||||
c.followId = PlayerHandler.players[c.playerIndex].playerId;
|
||||
c.getPlayerAssistant().followPlayer();
|
||||
//c.getPlayerAssistant().followPlayer();
|
||||
c.lastWeaponUsed = c.playerEquipment[c.playerWeapon];
|
||||
c.lastArrowUsed = c.playerEquipment[c.playerArrows];
|
||||
c.gfx100(RangeData.getRangeStartGFX(c));
|
||||
@@ -1229,12 +1276,12 @@ public class CombatAssistant {
|
||||
fireProjectilePlayer();
|
||||
}
|
||||
|
||||
if (usingOtherRangeWeapons) { // knives, darts, etc hit delay
|
||||
if (c.usingRangeWeapon) { // knives, darts, etc hit delay
|
||||
c.rangeItemUsed = c.playerEquipment[c.playerWeapon];
|
||||
c.getItemAssistant().deleteEquipment();
|
||||
c.usingRangeWeapon = true;
|
||||
c.followId = PlayerHandler.players[c.playerIndex].playerId;
|
||||
c.getPlayerAssistant().followPlayer();
|
||||
//c.getPlayerAssistant().followPlayer();
|
||||
c.gfx100(RangeData.getRangeStartGFX(c));
|
||||
if (c.fightMode == 2) {
|
||||
c.attackTimer--;
|
||||
@@ -1307,42 +1354,42 @@ public class CombatAssistant {
|
||||
}
|
||||
}
|
||||
|
||||
if (usingBow && Constants.CRYSTAL_BOW_DEGRADES) { // crystal
|
||||
// bow
|
||||
// degrading
|
||||
if (c.usingBow && Constants.CRYSTAL_BOW_DEGRADES) { // crystal
|
||||
// bow
|
||||
// degrading
|
||||
if (c.playerEquipment[c.playerWeapon] == 4212) { // new
|
||||
// crystal
|
||||
// bow
|
||||
// becomes
|
||||
// full
|
||||
// bow
|
||||
// on
|
||||
// the
|
||||
// first
|
||||
// shot
|
||||
// crystal
|
||||
// bow
|
||||
// becomes
|
||||
// full
|
||||
// bow
|
||||
// on
|
||||
// the
|
||||
// first
|
||||
// shot
|
||||
c.getItemAssistant().wearItem(4214, 1, 3);
|
||||
}
|
||||
if (c.crystalBowArrowCount >= 250) {
|
||||
switch (c.playerEquipment[c.playerWeapon]) {
|
||||
|
||||
case 4223: // 1/10 bow
|
||||
c.getItemAssistant().wearItem(-1, 1, 3);
|
||||
c.getActionSender().sendMessage(
|
||||
"Your crystal bow has fully degraded.");
|
||||
if (!c.getItemAssistant().addItem(4207, 1)) {
|
||||
Server.itemHandler.createGroundItem(c, 4207,
|
||||
c.getX(), c.getY(), 1, c.getId());
|
||||
}
|
||||
c.crystalBowArrowCount = 0;
|
||||
break;
|
||||
case 4223: // 1/10 bow
|
||||
c.getItemAssistant().wearItem(-1, 1, 3);
|
||||
c.getActionSender().sendMessage(
|
||||
"Your crystal bow has fully degraded.");
|
||||
if (!c.getItemAssistant().addItem(4207, 1)) {
|
||||
Server.itemHandler.createGroundItem(c, 4207,
|
||||
c.getX(), c.getY(), 1, c.getId());
|
||||
}
|
||||
c.crystalBowArrowCount = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
c.getItemAssistant().wearItem(
|
||||
++c.playerEquipment[c.playerWeapon], 1, 3);
|
||||
c.getActionSender().sendMessage(
|
||||
"Your crystal bow degrades.");
|
||||
c.crystalBowArrowCount = 0;
|
||||
break;
|
||||
default:
|
||||
c.getItemAssistant().wearItem(
|
||||
++c.playerEquipment[c.playerWeapon], 1, 3);
|
||||
c.getActionSender().sendMessage(
|
||||
"Your crystal bow degrades.");
|
||||
c.crystalBowArrowCount = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,31 +51,37 @@ public class MagicTeleports {
|
||||
|
||||
public static final boolean MAGIC_LEVEL_REQUIRED = true, RUNES_REQUIRED = true;
|
||||
|
||||
public static boolean teleportCheck(Client player) {
|
||||
if (player.teleTimer > 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void paddewwaTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 1}, {AIR_RUNE, 1}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 54) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 54 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 1}, {AIR_RUNE, 1}});
|
||||
player.getPlayerAssistant().startTeleport(PADDEWWA_X + Misc.random(2), PADDEWWA_Y - Misc.random(2), 0, "ancient");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(64, player.playerMagic);
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 1}, {AIR_RUNE, 1}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 54) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 54 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 1}, {AIR_RUNE, 1}});
|
||||
player.getPlayerAssistant().startTeleport(PADDEWWA_X + Misc.random(2), PADDEWWA_Y - Misc.random(2), 0, "ancient");
|
||||
player.getPlayerAssistant().addSkillXP(64, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void senntisenTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
@@ -93,12 +99,11 @@ public class MagicTeleports {
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {SOUL_RUNE, 1}});
|
||||
player.getPlayerAssistant().startTeleport(SENNTISTEN_X + Misc.random(1), SENNTISTEN_Y - Misc.random(1), 0, "ancient");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(70, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void kharyllTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
@@ -116,60 +121,57 @@ public class MagicTeleports {
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {BLOOD_RUNE, 1}});
|
||||
player.getPlayerAssistant().startTeleport(KHARYRLL_X, KHARYRLL_Y, 0, "ancient");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(76, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void lassarTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 4}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 4}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 72) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 72 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 4}});
|
||||
player.getPlayerAssistant().startTeleport(LASSAR_X + Misc.random(2), LASSAR_Y - Misc.random(2), 0, "ancient");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(82, player.playerMagic);
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 72) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 72 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 4}});
|
||||
player.getPlayerAssistant().startTeleport(LASSAR_X + Misc.random(2), LASSAR_Y - Misc.random(2), 0, "ancient");
|
||||
player.getPlayerAssistant().addSkillXP(82, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void dareeyakTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 3}, {AIR_RUNE, 2}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 78) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 78 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 3}, {AIR_RUNE, 2}});
|
||||
player.getPlayerAssistant().startTeleport(
|
||||
DAREEYAK_X + Misc.random(1),
|
||||
DAREEYAK_Y - Misc.random(1), 0, "ancient");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(88, player.playerMagic);
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 3}, {AIR_RUNE, 2}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 78) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 78 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 3}, {AIR_RUNE, 2}});
|
||||
player.getPlayerAssistant().startTeleport(
|
||||
DAREEYAK_X + Misc.random(1),
|
||||
DAREEYAK_Y - Misc.random(1), 0, "ancient");
|
||||
player.getPlayerAssistant().addSkillXP(88, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void carrallangarTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
@@ -189,12 +191,11 @@ public class MagicTeleports {
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {SOUL_RUNE, 2}});
|
||||
player.getPlayerAssistant().startTeleport(CARRALLANGAR_X + Misc.random(2), CARRALLANGAR_Y - Misc.random(2), 0, "ancient");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(94, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void annakarlTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
@@ -212,224 +213,214 @@ public class MagicTeleports {
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {BLOOD_RUNE, 2}});
|
||||
player.getPlayerAssistant().startTeleport(ANNAKARL_X + Misc.random(1), ANNAKARL_Y - Misc.random(1), 0, "ancient");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(100, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void ghorrockTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 8}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 8}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 96) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 96 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 8}});
|
||||
player.getPlayerAssistant().startTeleport(GHORROCK_X + Misc.random(3),
|
||||
GHORROCK_Y - Misc.random(3), 0, "ancient");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(106, player.playerMagic);
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 96) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 96 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 8}});
|
||||
player.getPlayerAssistant().startTeleport(GHORROCK_X + Misc.random(3),
|
||||
GHORROCK_Y - Misc.random(3), 0, "ancient");
|
||||
player.getPlayerAssistant().addSkillXP(106, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void varrockTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {FIRE_RUNE, 1}, {AIR_RUNE, 3}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 25) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 25 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {FIRE_RUNE, 1}, {AIR_RUNE, 3}});
|
||||
player.getPlayerAssistant().startTeleport(VARROCK_X + Misc.random(2), VARROCK_Y - Misc.random(2), 0, "modern");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(35, player.playerMagic);
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {FIRE_RUNE, 1}, {AIR_RUNE, 3}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 25) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 25 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {FIRE_RUNE, 1}, {AIR_RUNE, 3}});
|
||||
player.getPlayerAssistant().startTeleport(VARROCK_X + Misc.random(2), VARROCK_Y - Misc.random(2), 0, "modern");
|
||||
player.getPlayerAssistant().addSkillXP(35, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void lumbridgeTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {EARTH_RUNE, 1}, {AIR_RUNE, 3}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 32) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 32 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {EARTH_RUNE, 1}, {AIR_RUNE, 3}});
|
||||
player.getPlayerAssistant().startTeleport(LUMBRIDGE_X, LUMBRIDGE_Y, 0, "modern");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(35, player.playerMagic);
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {EARTH_RUNE, 1}, {AIR_RUNE, 3}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 32) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 32 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {EARTH_RUNE, 1}, {AIR_RUNE, 3}});
|
||||
player.getPlayerAssistant().startTeleport(LUMBRIDGE_X, LUMBRIDGE_Y, 0, "modern");
|
||||
player.getPlayerAssistant().addSkillXP(35, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void faladorTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {WATER_RUNE, 1}, {AIR_RUNE, 3}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 37) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 37 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {WATER_RUNE, 1}, {AIR_RUNE, 3}});
|
||||
player.getPlayerAssistant().startTeleport(FALADOR_X + Misc.random(4), FALADOR_Y - Misc.random(4), 0, "modern");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(48, player.playerMagic);
|
||||
/*if (!teleportCheck(player)) {
|
||||
return;
|
||||
}*/
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {WATER_RUNE, 1}, {AIR_RUNE, 3}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 37) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 37 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {WATER_RUNE, 1}, {AIR_RUNE, 3}});
|
||||
player.getPlayerAssistant().startTeleport(FALADOR_X + Misc.random(4), FALADOR_Y - Misc.random(4), 0, "modern");
|
||||
player.getPlayerAssistant().addSkillXP(48, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void camelotTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {AIR_RUNE, 5}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {AIR_RUNE, 5}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 45) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 45 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {AIR_RUNE, 5}});
|
||||
// 2757, 3479
|
||||
player.getPlayerAssistant().startTeleport(CAMELOT_X + Misc.random(1), CAMELOT_Y - Misc.random(1), 0, "modern");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(55.5, player.playerMagic);
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 45) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 45 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {AIR_RUNE, 5}});
|
||||
// 2757, 3479
|
||||
player.getPlayerAssistant().startTeleport(CAMELOT_X + Misc.random(1), CAMELOT_Y - Misc.random(1), 0, "modern");
|
||||
player.getPlayerAssistant().addSkillXP(55.5, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void ardougneTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 2}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 2}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 51) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 51 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 2}});
|
||||
player.getPlayerAssistant().startTeleport(ARDOUGNE_X + Misc.random(4),
|
||||
ARDOUGNE_Y - Misc.random(4), 0, "modern");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(61, player.playerMagic);
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 51) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 51 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 2}});
|
||||
player.getPlayerAssistant().startTeleport(ARDOUGNE_X + Misc.random(4),
|
||||
ARDOUGNE_Y - Misc.random(4), 0, "modern");
|
||||
player.getPlayerAssistant().addSkillXP(61, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void watchTowerTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {EARTH_RUNE, 2}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {EARTH_RUNE, 2}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 58) {
|
||||
player.getActionSender().sendMessage(
|
||||
"You need a magic level of 58 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {EARTH_RUNE, 2}});
|
||||
player.getPlayerAssistant().startTeleport(WATCHTOWER_X, WATCHTOWER_Y, 1, "modern");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(68, player.playerMagic);
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 58) {
|
||||
player.getActionSender().sendMessage(
|
||||
"You need a magic level of 58 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {EARTH_RUNE, 2}});
|
||||
player.getPlayerAssistant().startTeleport(WATCHTOWER_X, WATCHTOWER_Y, 1, "modern");
|
||||
player.getPlayerAssistant().addSkillXP(68, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void trollhiemTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}})) {
|
||||
player.getActionSender().sendMessage("You don't have the required runes to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 61) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 61 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}});
|
||||
player.getPlayerAssistant().startTeleport(2892 + Misc.random(2),
|
||||
3679 - Misc.random(2), 0, "modern");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(68, player.playerMagic);
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 61) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 61 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}});
|
||||
player.getPlayerAssistant().startTeleport(2892 + Misc.random(2),
|
||||
3679 - Misc.random(2), 0, "modern");
|
||||
player.getPlayerAssistant().addSkillXP(68, player.playerMagic);
|
||||
}
|
||||
|
||||
public static void apeAtollTeleport(Client player) {
|
||||
if (System.currentTimeMillis() - player.lastCast < 5000) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}, {WATER_RUNE, 2}}) || !player.getItemAssistant().playerHasItem(BANANA, 1)) {
|
||||
player.getActionSender().sendMessage("You don't have the required items to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (player.questPoints < 19) {
|
||||
player.getActionSender().sendMessage("You need " + 19 + " quest points to teleport here.");
|
||||
return;
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 64) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 64 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}, {WATER_RUNE, 2}});
|
||||
player.getItemAssistant().deleteItem2(BANANA, 1);
|
||||
player.getPlayerAssistant().startTeleport(2798 + Misc.random(1), 2798 - Misc.random(1), 1, "modern");
|
||||
player.lastCast = System.currentTimeMillis();
|
||||
player.getPlayerAssistant().addSkillXP(76, player.playerMagic);
|
||||
if (!teleportCheck(player)) {
|
||||
return;
|
||||
}
|
||||
RandomEventHandler.addRandom(player);
|
||||
if (RUNES_REQUIRED) {
|
||||
if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}, {WATER_RUNE, 2}}) || !player.getItemAssistant().playerHasItem(BANANA, 1)) {
|
||||
player.getActionSender().sendMessage("You don't have the required items to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (player.questPoints < 19) {
|
||||
player.getActionSender().sendMessage("You need " + 19 + " quest points to teleport here.");
|
||||
return;
|
||||
}
|
||||
if (MAGIC_LEVEL_REQUIRED) {
|
||||
if (player.playerLevel[player.playerMagic] < 64) {
|
||||
player.getActionSender().sendMessage("You need a magic level of 64 to cast this spell.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}, {WATER_RUNE, 2}});
|
||||
player.getItemAssistant().deleteItem2(BANANA, 1);
|
||||
player.getPlayerAssistant().startTeleport(2798 + Misc.random(1), 2798 - Misc.random(1), 1, "modern");
|
||||
player.getPlayerAssistant().addSkillXP(76, player.playerMagic);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user