So Basicly when I switch to range it will run up to them when it should just stay back a certain number of tiles heres a gif if someone could help me out that would be fantastic thanks!
via Imgflip GIF Maker
Here is Another gif I did with the crossbow it happens with all ranged weapons
via Imgflip GIF Maker
Here is my attackplayer.java
Code:
package server.model.players.packets;
import server.model.players.Client;
import server.model.players.PacketType;
import server.model.players.PlayerHandler;
import server.util.Misc;
import server.model.players.combat.MagicInfo;
/**
* Attack Player
**/
public class AttackPlayer implements PacketType {
public static final int ATTACK_PLAYER = 73, MAGE_PLAYER = 249;
public void processPacket(Client c, int packetType, int packetSize) {
c.playerIndex = 0;
c.npcIndex = 0;
switch(packetType) {
case ATTACK_PLAYER:
c.playerIndex = c.getInStream().readSignedWordBigEndian();
c.weaponryCheck(c.playerIndex);
break;
case MAGE_PLAYER:
if (!c.mageAllowed) {
c.mageAllowed = true;
break;
}
c.playerIndex = c.getInStream().readSignedWordA();
int castingSpellId = c.getInStream().readSignedWordBigEndian();
c.usingMagic = false;
c.usingBow = false;
c.usingOtherRangeWeapons = false;
if(PlayerHandler.players[c.playerIndex] == null || !c.getPlayerAction().checkWalking()) {
c.playerIndex = 0;
break;
}
if (PlayerHandler.players[c.playerIndex].playerLevel[3] < 1) {
c.stopMovement();
return;
}
if(c.duelStatus == 5) {
if(c.duelCount > 0) {
c.sendMessage("The duel hasn't started yet!");
c.playerIndex = 0;
return;
}
if(c.duelRule[4]) {
c.sendMessage("Magic has been disabled in this duel!");
return;
}
}
if (castingSpellId == 30298 && MagicInfo.onLunarSpellbook(c)) {
c.getPA().vengOther();
break;
}
for(int i = 0; i < MagicInfo.SPELLS_DATA.length; i++) {
if(castingSpellId == MagicInfo.SPELLS_DATA[i][0]) {
if (MagicInfo.SPELLS_DATA[i][16] != c.playerMagicBook)
return;
c.spellId = i;
c.usingMagic = true;
break;
}
}
if (c.autocasting)
c.autocasting = false;
for(int r = 0; r < c.REDUCE_SPELLS.length; r++){ // reducing spells, confuse etc
if(PlayerHandler.players[c.playerIndex].REDUCE_SPELLS[r] == MagicInfo.SPELLS_DATA[c.spellId][0]) {
if((System.currentTimeMillis() - PlayerHandler.players[c.playerIndex].reduceSpellDelay[r]) < PlayerHandler.players[c.playerIndex].REDUCE_SPELL_TIME[r]) {
c.sendMessage("That player is currently immune to this spell.");
c.usingMagic = false;
c.stopMovement();
c.getCombat().resetPlayerAttack();
}
break;
}
}
if(System.currentTimeMillis() - PlayerHandler.players[c.playerIndex].teleBlockDelay < PlayerHandler.players[c.playerIndex].teleBlockLength && MagicInfo.SPELLS_DATA[c.spellId][0] == 12445) {
c.sendMessage("That player is already affected by this spell.");
c.usingMagic = false;
c.stopMovement();
c.getCombat().resetPlayerAttack();
}
if(c.usingMagic) {
if(Misc.goodDistance(c.getX(), c.getY(), PlayerHandler.players[c.playerIndex].getX(), PlayerHandler.players[c.playerIndex].getY(), 7)) {
c.mageFollow = true;
c.stopMovement();
} else
c.mageFollow = false;
if (c.getCombat().checkReqs(c)) {
c.followId = c.playerIndex;
c.mageFollow = true;
}
}
break;
}
}
}