Make sure summons do not spawn in a walls.
Contributed by Sahar.
This commit is contained in:
parent
24182a9979
commit
b022639ba5
@ -27,6 +27,7 @@ import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||
import com.l2jmobius.gameserver.enums.InstanceType;
|
||||
import com.l2jmobius.gameserver.enums.Race;
|
||||
import com.l2jmobius.gameserver.enums.Team;
|
||||
import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
import com.l2jmobius.gameserver.handler.IItemHandler;
|
||||
import com.l2jmobius.gameserver.handler.ItemHandler;
|
||||
import com.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
@ -34,6 +35,7 @@ import com.l2jmobius.gameserver.model.AggroInfo;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
import com.l2jmobius.gameserver.model.L2Party;
|
||||
import com.l2jmobius.gameserver.model.L2World;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.stat.SummonStat;
|
||||
import com.l2jmobius.gameserver.model.actor.status.SummonStatus;
|
||||
@ -96,7 +98,12 @@ public abstract class L2Summon extends L2Playable
|
||||
_owner = owner;
|
||||
getAI();
|
||||
|
||||
setXYZInvisible(owner.getX() + Rnd.get(-100, 100), owner.getY() + Rnd.get(-100, 100), owner.getZ());
|
||||
// Make sure summon does not spawn in a wall.
|
||||
final int x = owner.getX();
|
||||
final int y = owner.getY();
|
||||
final int z = owner.getZ();
|
||||
final Location location = GeoEngine.getInstance().canMoveToTargetLoc(x, y, z, x + Rnd.get(-100, 100), y + Rnd.get(-100, 100), z, owner.getInstanceWorld());
|
||||
setXYZInvisible(location.getX(), location.getY(), location.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -27,6 +27,7 @@ import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||
import com.l2jmobius.gameserver.enums.InstanceType;
|
||||
import com.l2jmobius.gameserver.enums.Race;
|
||||
import com.l2jmobius.gameserver.enums.Team;
|
||||
import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
import com.l2jmobius.gameserver.handler.IItemHandler;
|
||||
import com.l2jmobius.gameserver.handler.ItemHandler;
|
||||
import com.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
@ -34,6 +35,7 @@ import com.l2jmobius.gameserver.model.AggroInfo;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
import com.l2jmobius.gameserver.model.L2Party;
|
||||
import com.l2jmobius.gameserver.model.L2World;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.stat.SummonStat;
|
||||
import com.l2jmobius.gameserver.model.actor.status.SummonStatus;
|
||||
@ -96,7 +98,12 @@ public abstract class L2Summon extends L2Playable
|
||||
_owner = owner;
|
||||
getAI();
|
||||
|
||||
setXYZInvisible(owner.getX() + Rnd.get(-100, 100), owner.getY() + Rnd.get(-100, 100), owner.getZ());
|
||||
// Make sure summon does not spawn in a wall.
|
||||
final int x = owner.getX();
|
||||
final int y = owner.getY();
|
||||
final int z = owner.getZ();
|
||||
final Location location = GeoEngine.getInstance().canMoveToTargetLoc(x, y, z, x + Rnd.get(-100, 100), y + Rnd.get(-100, 100), z, owner.getInstanceWorld());
|
||||
setXYZInvisible(location.getX(), location.getY(), location.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -27,6 +27,7 @@ import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||
import com.l2jmobius.gameserver.enums.InstanceType;
|
||||
import com.l2jmobius.gameserver.enums.Race;
|
||||
import com.l2jmobius.gameserver.enums.Team;
|
||||
import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
import com.l2jmobius.gameserver.handler.IItemHandler;
|
||||
import com.l2jmobius.gameserver.handler.ItemHandler;
|
||||
import com.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
@ -34,6 +35,7 @@ import com.l2jmobius.gameserver.model.AggroInfo;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
import com.l2jmobius.gameserver.model.L2Party;
|
||||
import com.l2jmobius.gameserver.model.L2World;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.stat.SummonStat;
|
||||
import com.l2jmobius.gameserver.model.actor.status.SummonStatus;
|
||||
@ -96,7 +98,12 @@ public abstract class L2Summon extends L2Playable
|
||||
_owner = owner;
|
||||
getAI();
|
||||
|
||||
setXYZInvisible(owner.getX() + Rnd.get(-100, 100), owner.getY() + Rnd.get(-100, 100), owner.getZ());
|
||||
// Make sure summon does not spawn in a wall.
|
||||
final int x = owner.getX();
|
||||
final int y = owner.getY();
|
||||
final int z = owner.getZ();
|
||||
final Location location = GeoEngine.getInstance().canMoveToTargetLoc(x, y, z, x + Rnd.get(-100, 100), y + Rnd.get(-100, 100), z, owner.getInstanceWorld());
|
||||
setXYZInvisible(location.getX(), location.getY(), location.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -27,6 +27,7 @@ import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||
import com.l2jmobius.gameserver.enums.InstanceType;
|
||||
import com.l2jmobius.gameserver.enums.Race;
|
||||
import com.l2jmobius.gameserver.enums.Team;
|
||||
import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
import com.l2jmobius.gameserver.handler.IItemHandler;
|
||||
import com.l2jmobius.gameserver.handler.ItemHandler;
|
||||
import com.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
@ -34,6 +35,7 @@ import com.l2jmobius.gameserver.model.AggroInfo;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
import com.l2jmobius.gameserver.model.L2Party;
|
||||
import com.l2jmobius.gameserver.model.L2World;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.stat.SummonStat;
|
||||
import com.l2jmobius.gameserver.model.actor.status.SummonStatus;
|
||||
@ -96,7 +98,12 @@ public abstract class L2Summon extends L2Playable
|
||||
_owner = owner;
|
||||
getAI();
|
||||
|
||||
setXYZInvisible(owner.getX() + Rnd.get(-100, 100), owner.getY() + Rnd.get(-100, 100), owner.getZ());
|
||||
// Make sure summon does not spawn in a wall.
|
||||
final int x = owner.getX();
|
||||
final int y = owner.getY();
|
||||
final int z = owner.getZ();
|
||||
final Location location = GeoEngine.getInstance().canMoveToTargetLoc(x, y, z, x + Rnd.get(-100, 100), y + Rnd.get(-100, 100), z, owner.getInstanceWorld());
|
||||
setXYZInvisible(location.getX(), location.getY(), location.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -17,6 +17,7 @@
|
||||
package com.l2jmobius.gameserver.model.actor;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.commons.util.Rnd;
|
||||
import com.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
import com.l2jmobius.gameserver.ai.L2CharacterAI;
|
||||
import com.l2jmobius.gameserver.ai.L2SummonAI;
|
||||
@ -35,6 +36,7 @@ import com.l2jmobius.gameserver.model.actor.instance.L2ItemInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2SiegeSummonInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.knownlist.SummonKnownList;
|
||||
import com.l2jmobius.gameserver.model.actor.position.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.stat.SummonStat;
|
||||
import com.l2jmobius.gameserver.model.actor.status.SummonStatus;
|
||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -104,7 +106,12 @@ public abstract class L2Summon extends L2Playable
|
||||
_owner = owner;
|
||||
_ai = new L2SummonAI(new L2Summon.AIAccessor());
|
||||
|
||||
setXYZInvisible(owner.getX() + 50, owner.getY() + 100, owner.getZ() + 100);
|
||||
// Make sure summon does not spawn in a wall.
|
||||
final int x = owner.getX();
|
||||
final int y = owner.getY();
|
||||
final int z = owner.getZ();
|
||||
final Location location = GeoData.getInstance().moveCheck(x, y, z, x + Rnd.get(-100, 100), y + Rnd.get(-100, 100), z);
|
||||
setXYZInvisible(location.getX(), location.getY(), location.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -37,6 +37,7 @@ import com.l2jmobius.gameserver.model.AggroInfo;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
import com.l2jmobius.gameserver.model.L2Party;
|
||||
import com.l2jmobius.gameserver.model.L2World;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2NpcInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.stat.SummonStat;
|
||||
@ -103,7 +104,12 @@ public abstract class L2Summon extends L2Playable
|
||||
_owner = owner;
|
||||
getAI();
|
||||
|
||||
setXYZInvisible(owner.getX() + Rnd.get(-100, 100), owner.getY() + Rnd.get(-100, 100), owner.getZ());
|
||||
// Make sure summon does not spawn in a wall.
|
||||
final int x = owner.getX();
|
||||
final int y = owner.getY();
|
||||
final int z = owner.getZ();
|
||||
final Location location = GeoEngine.getInstance().canMoveToTargetLoc(x, y, z, x + Rnd.get(-100, 100), y + Rnd.get(-100, 100), z, owner.getInstanceId());
|
||||
setXYZInvisible(location.getX(), location.getY(), location.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -27,6 +27,7 @@ import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||
import com.l2jmobius.gameserver.enums.InstanceType;
|
||||
import com.l2jmobius.gameserver.enums.Race;
|
||||
import com.l2jmobius.gameserver.enums.Team;
|
||||
import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
import com.l2jmobius.gameserver.handler.IItemHandler;
|
||||
import com.l2jmobius.gameserver.handler.ItemHandler;
|
||||
import com.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
@ -34,6 +35,7 @@ import com.l2jmobius.gameserver.model.AggroInfo;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
import com.l2jmobius.gameserver.model.L2Party;
|
||||
import com.l2jmobius.gameserver.model.L2World;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.stat.SummonStat;
|
||||
import com.l2jmobius.gameserver.model.actor.status.SummonStatus;
|
||||
@ -96,7 +98,12 @@ public abstract class L2Summon extends L2Playable
|
||||
_owner = owner;
|
||||
getAI();
|
||||
|
||||
setXYZInvisible(owner.getX() + Rnd.get(-100, 100), owner.getY() + Rnd.get(-100, 100), owner.getZ());
|
||||
// Make sure summon does not spawn in a wall.
|
||||
final int x = owner.getX();
|
||||
final int y = owner.getY();
|
||||
final int z = owner.getZ();
|
||||
final Location location = GeoEngine.getInstance().canMoveToTargetLoc(x, y, z, x + Rnd.get(-100, 100), y + Rnd.get(-100, 100), z, owner.getInstanceWorld());
|
||||
setXYZInvisible(location.getX(), location.getY(), location.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -27,6 +27,7 @@ import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||
import com.l2jmobius.gameserver.enums.InstanceType;
|
||||
import com.l2jmobius.gameserver.enums.Race;
|
||||
import com.l2jmobius.gameserver.enums.Team;
|
||||
import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
import com.l2jmobius.gameserver.handler.IItemHandler;
|
||||
import com.l2jmobius.gameserver.handler.ItemHandler;
|
||||
import com.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
@ -34,6 +35,7 @@ import com.l2jmobius.gameserver.model.AggroInfo;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
import com.l2jmobius.gameserver.model.L2Party;
|
||||
import com.l2jmobius.gameserver.model.L2World;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.stat.SummonStat;
|
||||
import com.l2jmobius.gameserver.model.actor.status.SummonStatus;
|
||||
@ -96,7 +98,12 @@ public abstract class L2Summon extends L2Playable
|
||||
_owner = owner;
|
||||
getAI();
|
||||
|
||||
setXYZInvisible(owner.getX() + Rnd.get(-100, 100), owner.getY() + Rnd.get(-100, 100), owner.getZ());
|
||||
// Make sure summon does not spawn in a wall.
|
||||
final int x = owner.getX();
|
||||
final int y = owner.getY();
|
||||
final int z = owner.getZ();
|
||||
final Location location = GeoEngine.getInstance().canMoveToTargetLoc(x, y, z, x + Rnd.get(-100, 100), y + Rnd.get(-100, 100), z, owner.getInstanceWorld());
|
||||
setXYZInvisible(location.getX(), location.getY(), location.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -27,6 +27,7 @@ import com.l2jmobius.gameserver.datatables.ItemTable;
|
||||
import com.l2jmobius.gameserver.enums.InstanceType;
|
||||
import com.l2jmobius.gameserver.enums.Race;
|
||||
import com.l2jmobius.gameserver.enums.Team;
|
||||
import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
import com.l2jmobius.gameserver.handler.IItemHandler;
|
||||
import com.l2jmobius.gameserver.handler.ItemHandler;
|
||||
import com.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
@ -34,6 +35,7 @@ import com.l2jmobius.gameserver.model.AggroInfo;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
import com.l2jmobius.gameserver.model.L2Party;
|
||||
import com.l2jmobius.gameserver.model.L2World;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.stat.SummonStat;
|
||||
import com.l2jmobius.gameserver.model.actor.status.SummonStatus;
|
||||
@ -96,7 +98,12 @@ public abstract class L2Summon extends L2Playable
|
||||
_owner = owner;
|
||||
getAI();
|
||||
|
||||
setXYZInvisible(owner.getX() + Rnd.get(-100, 100), owner.getY() + Rnd.get(-100, 100), owner.getZ());
|
||||
// Make sure summon does not spawn in a wall.
|
||||
final int x = owner.getX();
|
||||
final int y = owner.getY();
|
||||
final int z = owner.getZ();
|
||||
final Location location = GeoEngine.getInstance().canMoveToTargetLoc(x, y, z, x + Rnd.get(-100, 100), y + Rnd.get(-100, 100), z, owner.getInstanceWorld());
|
||||
setXYZInvisible(location.getX(), location.getY(), location.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user