can no longer run to invalid targets

This commit is contained in:
2023-09-10 16:45:17 -05:00
parent ca6e079053
commit 426ef989f8
2 changed files with 33 additions and 12 deletions
@@ -56,9 +56,12 @@ public class AttackCmdMsgHandler extends AbstractClientMsgHandler {
case Building: case Building:
target = BuildingManager.getBuilding(msg.getTargetID()); target = BuildingManager.getBuilding(msg.getTargetID());
break; break;
case NPC:
target = NPC.getNPC(msg.getTargetID());
break;
} }
if(target == null) { if(target == null) {
playerCharacter.setCombatTarget(null);
return true; // cannot attack a null target return true; // cannot attack a null target
} }
//set sources target //set sources target
@@ -33,20 +33,38 @@ public class MoveToPointHandler extends AbstractClientMsgHandler {
if (pc == null) if (pc == null)
return false; return false;
AbstractWorldObject target = null; if(pc.combatTarget == null){
Enum.GameObjectType targetType; MovementManager.movement(msg, pc);
return true;
} else{
Enum.GameObjectType combatTargetType = pc.combatTarget.getObjectType();
if(combatTargetType.equals(Enum.GameObjectType.NPC)){
msg.clearTarget();
pc.setCombatTarget(null);
origin.sendMsg(msg);
}
targetType = Enum.GameObjectType.values()[msg.getTargetType()]; if(combatTargetType.equals(Enum.GameObjectType.Mob) || combatTargetType.equals(Enum.GameObjectType.PlayerCharacter)){
switch(targetType){ MovementManager.movement(msg, pc);
case Building: return true;
int i = 1; } else if(combatTargetType.equals(Enum.GameObjectType.Building)) {
break; Building targetBuilding = BuildingManager.getBuilding(pc.combatTarget.getObjectUUID());
case NPC: if (targetBuilding != null) {
int j = 1; if (targetBuilding.isVulnerable() && targetBuilding.getRank() > -1) {
break; MovementManager.movement(msg, pc);
return true;
} else{
msg.clearTarget();
pc.setCombatTarget(null);
origin.sendMsg(msg);
}
}
}
} }
MovementManager.movement(msg, pc); pc.teleport(pc.loc);
msg.setEndCoord(pc.loc);
origin.sendMsg(msg);
return true; return true;
} }
} }