From b8cb90cdd038ad20d144d9031f7809df45249360 Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Tue, 1 Aug 2023 21:26:14 -0500 Subject: [PATCH] mob pulse delay added to mobAI --- src/engine/mobileAI/MobAI.java | 17 +++++++++++------ src/engine/server/world/WorldServer.java | 6 +++++- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/engine/mobileAI/MobAI.java b/src/engine/mobileAI/MobAI.java index 0b788f1e..689e8a38 100644 --- a/src/engine/mobileAI/MobAI.java +++ b/src/engine/mobileAI/MobAI.java @@ -382,6 +382,13 @@ public class MobAI { if (mob == null) return; + if(mob.getTimestamps().containsKey("lastExecution") == false){ + mob.getTimestamps().put("lastExecution",System.currentTimeMillis()); + } + if(System.currentTimeMillis() < mob.getTimeStamp("lastExecution")){ + return; + } + mob.getTimestamps().put("lastExecution",System.currentTimeMillis() + MobAIThread.AI_PULSE_MOB_THRESHOLD); if (mob.despawned && mob.getMobBase().getLoadID() == 13171) { //trebuchet spawn handler CheckForRespawn(mob); @@ -439,10 +446,6 @@ public class MobAI { mob.setCombatTarget(null); return; } - if(target.getClientConnection() == null){ - mob.setCombatTarget(null); - return; - } } } //if(mob.getTimestamps().containsKey("LOCATIONSYNC") == false){ @@ -705,14 +708,16 @@ public class MobAI { case PlayerCharacter: case Mob: mob.destination = MovementUtilities.GetDestinationToCharacter(mob, (AbstractCharacter) mob.getCombatTarget()); - MovementUtilities.moveToLocation(mob, mob.destination, mob.getRange()); + MovementUtilities.moveToLocation(mob, mob.destination, mob.getRange() + 1); break; case Building: mob.destination = mob.getCombatTarget().getLoc(); MovementUtilities.moveToLocation(mob,mob.getCombatTarget().getLoc(),0); break; } - + if (CombatUtilities.inRange2D(mob, mob.getCombatTarget(), mob.getRange()) == true){ + mob.stopMovement(mob.getLoc()); + } } } } catch(Exception e){ diff --git a/src/engine/server/world/WorldServer.java b/src/engine/server/world/WorldServer.java index 91d16acc..b7b520e6 100644 --- a/src/engine/server/world/WorldServer.java +++ b/src/engine/server/world/WorldServer.java @@ -704,7 +704,11 @@ public class WorldServer { Logger.error("Unable to find PlayerCharacter to logout"); return; } - + //remove player from loaded mobs agro maps + for(AbstractWorldObject awo : WorldGrid.getObjectsInRangePartial(player.getLoc(),MBServerStatics.CHARACTER_LOAD_RANGE,MBServerStatics.MASK_MOB)) { + Mob loadedMob = (Mob) awo; + loadedMob.playerAgroMap.remove(player.getObjectUUID()); + } player.getTimestamps().put("logout", System.currentTimeMillis()); player.setEnteredWorld(false);