From 5fabd314953ee4827ed4c53e1a1e59725afd8961 Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Sat, 22 Feb 2025 22:38:40 -0600 Subject: [PATCH] region heights issue --- src/engine/devcmd/cmds/InfoCmd.java | 7 +++++-- src/engine/mobileAI/MobAI.java | 7 ++++--- src/engine/objects/AbstractWorldObject.java | 19 ++++++++++++++++++- src/engine/objects/PlayerCharacter.java | 4 +++- 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/engine/devcmd/cmds/InfoCmd.java b/src/engine/devcmd/cmds/InfoCmd.java index edd10365..328c3ecd 100644 --- a/src/engine/devcmd/cmds/InfoCmd.java +++ b/src/engine/devcmd/cmds/InfoCmd.java @@ -342,8 +342,11 @@ public class InfoCmd extends AbstractDevCmd { output += newline; output += "isMoving : " + targetPC.isMoving(); output += newline; - output += "Zerg Multiplier : " + targetPC.ZergMultiplier+ newline; - output += "Hidden : " + targetPC.getHidden(); + output += "Zerg Multiplier : " + targetPC.ZergMultiplier + newline; + output += "Hidden : " + targetPC.getHidden() + newline; + output += "Target Loc: " + targetPC.loc + newline; + output += "Player Loc: " + pc.loc + newline; + output += "Distance Squared: " + pc.loc.distanceSquared(targetPC.loc); break; case NPC: diff --git a/src/engine/mobileAI/MobAI.java b/src/engine/mobileAI/MobAI.java index d2d79c38..bcc57f07 100644 --- a/src/engine/mobileAI/MobAI.java +++ b/src/engine/mobileAI/MobAI.java @@ -620,9 +620,6 @@ public class MobAI { if (mob == null) return; - if(mob.isAlive()) - if(!mob.getMovementLoc().equals(Vector3fImmutable.ZERO)) - mob.setLoc(mob.getMovementLoc()); if (mob.getTimestamps().containsKey("lastExecution") == false) mob.getTimestamps().put("lastExecution", System.currentTimeMillis()); @@ -678,6 +675,10 @@ public class MobAI { return; } + if(mob.isAlive()) + if(!mob.getMovementLoc().equals(Vector3fImmutable.ZERO)) + mob.setLoc(mob.getMovementLoc()); + if(mob.isPet() == false && mob.isPlayerGuard == false) CheckToSendMobHome(mob); diff --git a/src/engine/objects/AbstractWorldObject.java b/src/engine/objects/AbstractWorldObject.java index e76b6666..3cb086e7 100644 --- a/src/engine/objects/AbstractWorldObject.java +++ b/src/engine/objects/AbstractWorldObject.java @@ -15,6 +15,7 @@ import engine.Enum.GameObjectType; import engine.Enum.GridObjectType; import engine.InterestManagement.HeightMap; import engine.InterestManagement.WorldGrid; +import engine.gameManager.ZoneManager; import engine.job.AbstractScheduleJob; import engine.job.JobContainer; import engine.job.JobScheduler; @@ -500,8 +501,24 @@ public abstract class AbstractWorldObject extends AbstractGameObject { if (loc.x > MBServerStatics.MAX_WORLD_WIDTH || loc.z < MBServerStatics.MAX_WORLD_HEIGHT) return; this.lastLoc = new Vector3fImmutable(this.loc); + if(AbstractCharacter.IsAbstractCharacter(this)){ + float y; + float worldHeight = HeightMap.getWorldHeight(loc); + Zone zone = ZoneManager.findSmallestZone(loc); + if(zone != null && zone.isPlayerCity()){ + worldHeight = zone.absY; + } + if(this.region != null){ + float regionAlt = this.region.lerpY(this); + float altitude = this.getAltitude(); + y = regionAlt + altitude + worldHeight; + }else{ + y = HeightMap.getWorldHeight(loc) + this.getAltitude(); + } + loc.setY(y); + } this.loc = loc; - this.loc = this.loc.setY(HeightMap.getWorldHeight(this) + this.getAltitude()); + //this.loc = this.loc.setY(HeightMap.getWorldHeight(this) + this.getAltitude()); //lets not add mob to world grid if he is currently despawned. if (this.getObjectType().equals(GameObjectType.Mob) && ((Mob) this).despawned) diff --git a/src/engine/objects/PlayerCharacter.java b/src/engine/objects/PlayerCharacter.java index 9cebb79c..bec2aeb8 100644 --- a/src/engine/objects/PlayerCharacter.java +++ b/src/engine/objects/PlayerCharacter.java @@ -5330,9 +5330,11 @@ public class PlayerCharacter extends AbstractCharacter { return; } - setLoc(newLoc); + this.region = AbstractWorldObject.GetRegionByWorldObject(this); + setLoc(newLoc); + if (this.getDebug(1)) ChatManager.chatSystemInfo(this, "Distance to target " + this.getEndLoc().distance2D(this.getLoc()) + " speed " + this.getSpeed());