// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.net.client.handlers; import engine.Enum; import engine.exception.MsgSendException; import engine.gameManager.BuildingManager; import engine.gameManager.MovementManager; import engine.net.client.ClientConnection; import engine.net.client.msg.ClientNetMsg; import engine.net.client.msg.MoveToPointMsg; import engine.objects.*; public class MoveToPointHandler extends AbstractClientMsgHandler { public MoveToPointHandler() { super(MoveToPointMsg.class); } @Override protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException { MoveToPointMsg msg = (MoveToPointMsg) baseMsg; PlayerCharacter pc = (origin != null) ? (origin.getPlayerCharacter()) : null; if (pc == null) return false; if (msg.getInitiatedFromAttack() == 1) { //move message was initiated by an attack message Enum.GameObjectType combatTargetType = pc.combatTarget.getObjectType(); if (combatTargetType.equals(Enum.GameObjectType.NPC)) { msg.clearTarget(); pc.setCombatTarget(null); origin.sendMsg(msg); } else if (combatTargetType.equals(Enum.GameObjectType.Building)) { Building targetBuilding = BuildingManager.getBuilding(pc.combatTarget.getObjectUUID()); if (targetBuilding != null) { if (!targetBuilding.isVulnerable() || targetBuilding.getRank() < 0) { msg.clearTarget(); pc.setCombatTarget(null); origin.sendMsg(msg); } } } msg.setEndCoord(pc.loc); origin.sendMsg(msg); return true; } MovementManager.movement(msg, pc); return true; } }