Chase functionality (/c name) to warp to the exact location of the target
This commit is contained in:
@@ -255,6 +255,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
|
|||||||
private long lastExpGainTime;
|
private long lastExpGainTime;
|
||||||
private boolean pendingNameChange; //only used to change name on logout, not to be relied upon elsewhere
|
private boolean pendingNameChange; //only used to change name on logout, not to be relied upon elsewhere
|
||||||
private long loginTime;
|
private long loginTime;
|
||||||
|
private boolean chasing = false;
|
||||||
|
|
||||||
private MapleCharacter() {
|
private MapleCharacter() {
|
||||||
super.setListener(new AbstractCharacterListener() {
|
super.setListener(new AbstractCharacterListener() {
|
||||||
@@ -11323,5 +11324,12 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
|
|||||||
public int getLanguage() {
|
public int getLanguage() {
|
||||||
return getClient().getLanguage();
|
return getClient().getLanguage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isChasing() {
|
||||||
|
return chasing;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChasing(boolean chasing) {
|
||||||
|
this.chasing = chasing;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import tools.FilePrinter;
|
|||||||
import tools.MaplePacketCreator;
|
import tools.MaplePacketCreator;
|
||||||
import tools.data.input.SeekableLittleEndianAccessor;
|
import tools.data.input.SeekableLittleEndianAccessor;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
@@ -79,7 +80,13 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
|
|||||||
String startwp = slea.readMapleAsciiString();
|
String startwp = slea.readMapleAsciiString();
|
||||||
MaplePortal portal = chr.getMap().getPortal(startwp);
|
MaplePortal portal = chr.getMap().getPortal(startwp);
|
||||||
slea.readByte();
|
slea.readByte();
|
||||||
boolean wheel = slea.readShort() > 0;
|
boolean wheel = slea.readByte() > 0;
|
||||||
|
|
||||||
|
boolean chasing = slea.readByte() == 1 && chr.isGM();
|
||||||
|
if (chasing) {
|
||||||
|
chr.setChasing(true);
|
||||||
|
chr.setPosition(new Point(slea.readInt(), slea.readInt()));
|
||||||
|
}
|
||||||
|
|
||||||
if (targetid != -1) {
|
if (targetid != -1) {
|
||||||
if (!chr.isAlive()) {
|
if (!chr.isAlive()) {
|
||||||
|
|||||||
@@ -1037,7 +1037,12 @@ public class MaplePacketCreator {
|
|||||||
mplew.writeInt(to.getId());
|
mplew.writeInt(to.getId());
|
||||||
mplew.write(spawnPoint);
|
mplew.write(spawnPoint);
|
||||||
mplew.writeShort(chr.getHp());
|
mplew.writeShort(chr.getHp());
|
||||||
mplew.writeBool(false);
|
mplew.writeBool(chr.isChasing());
|
||||||
|
if (chr.isChasing()) {
|
||||||
|
chr.setChasing(false);
|
||||||
|
mplew.writeInt(chr.getPosition().x);
|
||||||
|
mplew.writeInt(chr.getPosition().y);
|
||||||
|
}
|
||||||
mplew.writeLong(getTime(Server.getInstance().getCurrentTime()));
|
mplew.writeLong(getTime(Server.getInstance().getCurrentTime()));
|
||||||
return mplew.getPacket();
|
return mplew.getPacket();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user