Attempt on Mystic Doors

Partially fixed Mystic Doors.
This commit is contained in:
ronancpl
2017-07-09 20:00:31 -03:00
parent b3734cbaf7
commit b7c0bb6c07
83 changed files with 443 additions and 241 deletions

View File

@@ -23,22 +23,22 @@ package net.server.channel.handlers;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import server.maps.MapleDoor;
import server.maps.MapleDoorObject;
import server.maps.MapleMapObject;
import tools.data.input.SeekableLittleEndianAccessor;
/**
*
* @author Matze
* @author Matze, Ronan
*/
public final class DoorHandler extends AbstractMaplePacketHandler {
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
int oid = slea.readInt();
int ownerid = slea.readInt();
boolean mode = (slea.readByte() == 0); // specifies if backwarp or not, 1 town to target, 0 target to town
for (MapleMapObject obj : c.getPlayer().getMap().getMapObjects()) {
if (obj instanceof MapleDoor) {
MapleDoor door = (MapleDoor) obj;
if (door.getOwner().getId() == oid) {
if (obj instanceof MapleDoorObject) {
MapleDoorObject door = (MapleDoorObject) obj;
if (door.getOwnerId() == ownerid) {
door.warp(c.getPlayer(), mode);
return;
}

View File

@@ -116,12 +116,12 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler {
if (slea.available() == 5) {
pos = new Point(slea.readShort(), slea.readShort());
}
if (skill.getId() == Priest.MYSTIC_DOOR && !chr.isGM()) {
c.announce(MaplePacketCreator.enableActions());
return;
}
if (chr.isAlive()) {
if (skill.getId() != Priest.MYSTIC_DOOR || chr.canDoor()) {
if (skill.getId() != Priest.MYSTIC_DOOR) {
skill.getEffect(skillLevel).applyTo(c.getPlayer(), pos);
} else if(chr.canDoor()) {
//update door lists
chr.cancelMagicDoor();
skill.getEffect(skillLevel).applyTo(c.getPlayer(), pos);
} else {
chr.message("Please wait 5 seconds before casting Mystic Door again.");