The engine used is the same with L2jServer.
Take that in mind to consider that L2jServer ignores this issue.
The problem is still there tho.
A simple solution is to ignore the problem as well, by removing the code that checks if geodata actually exist.
Index: java/org/l2jmobius/gameserver/model/actor/Creature.java
===================================================================
--- java/org/l2jmobius/gameserver/model/actor/Creature.java (revision 8319)
+++ java/org/l2jmobius/gameserver/model/actor/Creature.java (working copy)
@@ -3383,6 +3383,7 @@
final Location destiny = GeoEngine.getInstance().canMoveToTargetLoc(curX, curY, curZ, x, y, z, getInstanceWorld());
x = destiny.getX();
y = destiny.getY();
+ z = destiny.getZ();
dx = x - curX;
dy = y - curY;
dz = z - curZ;
@@ -3396,13 +3397,17 @@
m.geoPath = GeoEnginePathfinding.getInstance().findPath(curX, curY, curZ, originalX, originalY, originalZ, getInstanceWorld());
if ((m.geoPath == null) || (m.geoPath.size() < 2)) // No path found
{
+ if ((isPlayer()) || (!isPlayable() && !isMinion() && (Math.abs(z - curZ) > 140)) || (isSummon() && !((Summon) this).getFollowStatus()))
+ {
+ return;
+ }
+
m.disregardingGeodata = true;
- // Mobius: Verify destination. Prevents wall collision issues.
- final Location newDestination = GeoEngine.getInstance().canMoveToTargetLoc(curX, curY, curZ, originalX, originalY, originalZ, getInstanceWorld());
- x = newDestination.getX();
- y = newDestination.getY();
- z = newDestination.getZ();
+ x = originalX;
+ y = originalY;
+ z = originalZ;
+ distance = originalDistance;
}
else
{