Attempt on Mystic Doors
Partially fixed Mystic Doors.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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.");
|
||||
|
||||
@@ -21,12 +21,16 @@
|
||||
*/
|
||||
package net.server.world;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Collection;
|
||||
|
||||
import server.maps.MapleDoor;
|
||||
import server.MapleStatEffect;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleJob;
|
||||
import java.util.Collections;
|
||||
|
||||
public class MaplePartyCharacter {
|
||||
private String name;
|
||||
@@ -35,7 +39,7 @@ public class MaplePartyCharacter {
|
||||
private int channel, world;
|
||||
private int jobid;
|
||||
private int mapid;
|
||||
private ArrayList<MapleDoor> door = new ArrayList<MapleDoor>();
|
||||
private Map<Integer, MapleDoor> doors = new LinkedHashMap<>();
|
||||
private boolean online;
|
||||
private MapleJob job;
|
||||
private MapleCharacter character;
|
||||
@@ -51,8 +55,8 @@ public class MaplePartyCharacter {
|
||||
this.mapid = maplechar.getMapId();
|
||||
this.online = true;
|
||||
this.job = maplechar.getJob();
|
||||
for (MapleDoor doors : maplechar.getDoors()) {
|
||||
this.door.add(doors);
|
||||
for (Entry<Integer, MapleDoor> entry : maplechar.getDoors().entrySet()) {
|
||||
doors.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,12 +120,16 @@ public class MaplePartyCharacter {
|
||||
return character.getGuildId();
|
||||
}
|
||||
|
||||
public void updateDoor(MapleDoor door) {
|
||||
this.door.add(door);
|
||||
public void addDoor(Integer owner, MapleDoor door) {
|
||||
this.doors.put(owner, door);
|
||||
}
|
||||
|
||||
public void removeDoor(Integer owner) {
|
||||
this.doors.remove(owner);
|
||||
}
|
||||
|
||||
public Collection<MapleDoor> getDoors() {
|
||||
return door;
|
||||
return Collections.unmodifiableCollection(doors.values());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user