diff --git a/src/engine/net/client/handlers/MoveToPointHandler.java b/src/engine/net/client/handlers/MoveToPointHandler.java index 1d700cfe..ddadd9cd 100644 --- a/src/engine/net/client/handlers/MoveToPointHandler.java +++ b/src/engine/net/client/handlers/MoveToPointHandler.java @@ -33,20 +33,48 @@ public class MoveToPointHandler extends AbstractClientMsgHandler { if (pc == null) return false; - AbstractWorldObject target = pc.combatTarget; + AbstractWorldObject target; Enum.GameObjectType targetType; + targetType = Enum.GameObjectType.values()[msg.getTargetType()]; + + switch(targetType){ + case Mob: + target = Mob.getMob(msg.getTargetID()); + break; + case PlayerCharacter: + target = PlayerCharacter.getPlayerCharacter(msg.getTargetID()); + break; + case Building: + target = BuildingManager.getBuilding(msg.getTargetID()); + break; + default: + target = null; + break; + } + if(target != null) { switch (target.getObjectType()) { case Building: target = BuildingManager.getBuilding(msg.getTargetID()); - if (target == null) + if (target == null) { + pc.teleport(pc.loc); + msg.setEndCoord(pc.loc); + origin.sendMsg(msg); return true;// early exit for no building pulled + } Building targetBuilding = (Building) target; - if (!targetBuilding.isVulnerable() || targetBuilding.getRank() < 0) + if (!targetBuilding.isVulnerable() || targetBuilding.getRank() < 0) { + pc.teleport(pc.loc); + msg.setEndCoord(pc.loc); + origin.sendMsg(msg); return true;// cannot attack destroyed building or protected building + } break; case NPC: + pc.teleport(pc.loc); + msg.setEndCoord(pc.loc); + origin.sendMsg(msg); return true;//cannot attack anything other than the 3 above } }