Fixed losing target with instant teleport.

This commit is contained in:
MobiusDevelopment
2021-04-06 22:05:56 +00:00
parent b5318b1f40
commit 7e112206dc
251 changed files with 1254 additions and 1156 deletions

View File

@@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
import org.l2jmobius.gameserver.util.Util;
/**
@@ -91,6 +92,8 @@ public class Blink extends AbstractEffect
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
effected.broadcastPacket(new FlyToLocation(effected, destination, _flyType, _flySpeed, _flyDelay, _animationSpeed));
effected.teleToLocationInstant(destination);
effected.setXYZ(destination);
effected.broadcastPacket(new ValidateLocation(effected));
effected.revalidateZone(true);
}
}

View File

@@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
/**
* This Blink effect switches the location of the caster and the target.<br>
@@ -54,12 +55,15 @@ public class BlinkSwap extends AbstractEffect
effector.broadcastPacket(new FlyToLocation(effector, effectedLoc, FlyType.DUMMY));
effector.abortAttack();
effector.abortCast();
effector.teleToLocationInstant(effectedLoc);
effector.setXYZ(effectedLoc);
effector.broadcastPacket(new ValidateLocation(effector));
effected.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
effected.broadcastPacket(new FlyToLocation(effected, effectorLoc, FlyType.DUMMY));
effected.abortAttack();
effected.abortCast();
effected.teleToLocationInstant(effectorLoc);
effected.setXYZ(effectorLoc);
effected.broadcastPacket(new ValidateLocation(effected));
effected.revalidateZone(true);
}
}

View File

@@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
/**
* Throw Up effect implementation.
@@ -59,6 +60,8 @@ public class FlyAway extends AbstractEffect
final Location destination = GeoEngine.getInstance().getValidLocation(effected.getX(), effected.getY(), effected.getZ(), x, y, z, effected.getInstanceWorld());
effected.broadcastPacket(new FlyToLocation(effected, destination, FlyType.THROW_UP));
effected.teleToLocationInstant(destination);
effected.setXYZ(destination);
effected.broadcastPacket(new ValidateLocation(effected));
effected.revalidateZone(true);
}
}

View File

@@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Formulas;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
import org.l2jmobius.gameserver.util.Util;
/**
@@ -140,7 +141,9 @@ public class KnockBack extends AbstractEffect
{
effected.setHeading(Util.calculateHeadingFrom(effected, effector));
}
effected.teleToLocationInstant(loc);
effected.setXYZ(loc);
effected.broadcastPacket(new ValidateLocation(effected));
effected.revalidateZone(true);
}
}
}

View File

@@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Formulas;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
/**
* An effect that pulls effected target back to the effector.
@@ -75,7 +76,9 @@ public class PullBack extends AbstractEffect
if (GeoEngine.getInstance().canMoveToTarget(effected.getX(), effected.getY(), effected.getZ(), effector.getX(), effector.getY(), effector.getZ(), effected.getInstanceWorld()))
{
effected.broadcastPacket(new FlyToLocation(effected, effector, _type, _speed, _delay, _animationSpeed));
effected.teleToLocationInstant(effector.getX(), effector.getY(), GeoEngine.getInstance().getHeight(effector.getX(), effector.getY(), effector.getZ()) + 10);
effected.setXYZ(effector.getX(), effector.getY(), GeoEngine.getInstance().getHeight(effector.getX(), effector.getY(), effector.getZ()) + 10);
effected.broadcastPacket(new ValidateLocation(effected), false);
effected.revalidateZone(true);
}
}
}

View File

@@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
/**
* Teleport player/party to summoned npc effect implementation.
@@ -94,7 +95,9 @@ public class TeleportToNpc extends AbstractEffect
effected.broadcastPacket(new FlyToLocation(effected, location, FlyType.DUMMY));
effected.abortAttack();
effected.abortCast();
effected.teleToLocationInstant(location);
effected.setXYZ(location);
effected.broadcastPacket(new ValidateLocation(effected));
effected.revalidateZone(true);
}
else
{

View File

@@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
import org.l2jmobius.gameserver.util.Util;
/**
@@ -86,12 +87,14 @@ public class TeleportToSummon extends AbstractEffect
final int y = (int) (py + (25 * Math.sin(ph)));
final int z = summon.getZ();
final Location loc = GeoEngine.getInstance().getValidLocation(effector.getX(), effector.getY(), effector.getZ(), x, y, z, effector.getInstanceWorld());
final Location loc = GeoEngine.getInstance().getValidLocation(effector.getX(), effector.getY(), effector.getZ(), x, y, z,effector.getInstanceWorld());
effector.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
effector.broadcastPacket(new FlyToLocation(effector, loc.getX(), loc.getY(), loc.getZ(), FlyType.DUMMY));
effector.abortAttack();
effector.abortCast();
effector.teleToLocationInstant(loc);
effector.setXYZ(loc);
effector.broadcastPacket(new ValidateLocation(effector));
effected.revalidateZone(true);
}
}

View File

@@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
import org.l2jmobius.gameserver.util.Util;
/**
@@ -75,12 +76,14 @@ public class TeleportToTarget extends AbstractEffect
final int y = (int) (py + (25 * Math.sin(ph)));
final int z = effected.getZ();
final Location loc = GeoEngine.getInstance().getValidLocation(effector.getX(), effector.getY(), effector.getZ(), x, y, z, effector.getInstanceWorld());
final Location loc = GeoEngine.getInstance().getValidLocation(effector.getX(), effector.getY(), effector.getZ(), x, y, z,effector.getInstanceWorld());
effector.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
effector.broadcastPacket(new FlyToLocation(effector, loc.getX(), loc.getY(), loc.getZ(), FlyType.DUMMY));
effector.abortAttack();
effector.abortCast();
effector.teleToLocationInstant(loc);
effector.setXYZ(loc);
effector.broadcastPacket(new ValidateLocation(effector));
effected.revalidateZone(true);
}
}