Avoid front backstab visual character rotation.
This commit is contained in:
parent
aee19fe012
commit
ab19b0ba91
@ -122,7 +122,6 @@ import org.l2jmobius.gameserver.network.serverpackets.StopMove;
|
|||||||
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.TargetUnselected;
|
import org.l2jmobius.gameserver.network.serverpackets.TargetUnselected;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.TeleportToLocation;
|
import org.l2jmobius.gameserver.network.serverpackets.TeleportToLocation;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
|
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocationInVehicle;
|
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocationInVehicle;
|
||||||
import org.l2jmobius.gameserver.taskmanager.GameTimeTaskManager;
|
import org.l2jmobius.gameserver.taskmanager.GameTimeTaskManager;
|
||||||
import org.l2jmobius.gameserver.util.Util;
|
import org.l2jmobius.gameserver.util.Util;
|
||||||
@ -7792,10 +7791,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
|
|||||||
*/
|
*/
|
||||||
public boolean isBehind(WorldObject target)
|
public boolean isBehind(WorldObject target)
|
||||||
{
|
{
|
||||||
double angleChar; //
|
|
||||||
double angleTarget;
|
|
||||||
double angleDiff;
|
|
||||||
final double maxAngleDiff = 40;
|
|
||||||
if (target == null)
|
if (target == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -7803,23 +7798,24 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
|
|||||||
|
|
||||||
if (target instanceof Creature)
|
if (target instanceof Creature)
|
||||||
{
|
{
|
||||||
((Creature) target).sendPacket(new ValidateLocation(this));
|
// This was a Fix for avoid front backstab.
|
||||||
sendPacket(new ValidateLocation(((Creature) target)));
|
// Removed for problem with visual char rotation.
|
||||||
|
// ((Creature) target).sendPacket(new ValidateLocation(this));
|
||||||
|
// sendPacket(new ValidateLocation(((Creature) target)));
|
||||||
|
|
||||||
final Creature target1 = (Creature) target;
|
final Creature target1 = (Creature) target;
|
||||||
angleChar = Util.calculateAngleFrom(target1, this);
|
double angleChar = Util.calculateAngleFrom(target1, this);
|
||||||
angleTarget = Util.convertHeadingToDegree(target1.getHeading());
|
double angleTarget = Util.convertHeadingToDegree(target1.getHeading());
|
||||||
angleDiff = angleChar - angleTarget;
|
double angleDiff = angleChar - angleTarget;
|
||||||
|
final double maxAngleDiff = 40;
|
||||||
if (angleDiff <= (-360 + maxAngleDiff))
|
if (angleDiff <= (-360 + maxAngleDiff))
|
||||||
{
|
{
|
||||||
angleDiff += 360;
|
angleDiff += 360;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (angleDiff >= (360 - maxAngleDiff))
|
if (angleDiff >= (360 - maxAngleDiff))
|
||||||
{
|
{
|
||||||
angleDiff -= 360;
|
angleDiff -= 360;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Math.abs(angleDiff) <= maxAngleDiff)
|
if (Math.abs(angleDiff) <= maxAngleDiff)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
@ -7880,10 +7876,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
|
|||||||
*/
|
*/
|
||||||
public boolean isFront(WorldObject target)
|
public boolean isFront(WorldObject target)
|
||||||
{
|
{
|
||||||
double angleChar;
|
|
||||||
double angleTarget;
|
|
||||||
double angleDiff;
|
|
||||||
final double maxAngleDiff = 40;
|
|
||||||
if (target == null)
|
if (target == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -7891,23 +7883,24 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
|
|||||||
|
|
||||||
if (target instanceof Creature)
|
if (target instanceof Creature)
|
||||||
{
|
{
|
||||||
((Creature) target).sendPacket(new ValidateLocation(this));
|
// This was a Fix for avoid front backstab.
|
||||||
sendPacket(new ValidateLocation(((Creature) target)));
|
// Removed for problem with visual char rotation.
|
||||||
|
// ((Creature) target).sendPacket(new ValidateLocation(this));
|
||||||
|
// sendPacket(new ValidateLocation(((Creature) target)));
|
||||||
|
|
||||||
final Creature target1 = (Creature) target;
|
final Creature target1 = (Creature) target;
|
||||||
angleChar = Util.calculateAngleFrom(target1, this);
|
double angleChar = Util.calculateAngleFrom(target1, this);
|
||||||
angleTarget = Util.convertHeadingToDegree(target1.getHeading());
|
double angleTarget = Util.convertHeadingToDegree(target1.getHeading());
|
||||||
angleDiff = angleChar - angleTarget;
|
double angleDiff = angleChar - angleTarget;
|
||||||
|
final double maxAngleDiff = 40;
|
||||||
if (angleDiff <= (-180 + maxAngleDiff))
|
if (angleDiff <= (-180 + maxAngleDiff))
|
||||||
{
|
{
|
||||||
angleDiff += 180;
|
angleDiff += 180;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (angleDiff >= (180 - maxAngleDiff))
|
if (angleDiff >= (180 - maxAngleDiff))
|
||||||
{
|
{
|
||||||
angleDiff -= 180;
|
angleDiff -= 180;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Math.abs(angleDiff) <= maxAngleDiff)
|
if (Math.abs(angleDiff) <= maxAngleDiff)
|
||||||
{
|
{
|
||||||
return !isBehind(_target);
|
return !isBehind(_target);
|
||||||
|
@ -124,7 +124,6 @@ import org.l2jmobius.gameserver.network.serverpackets.StopMove;
|
|||||||
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.TargetUnselected;
|
import org.l2jmobius.gameserver.network.serverpackets.TargetUnselected;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.TeleportToLocation;
|
import org.l2jmobius.gameserver.network.serverpackets.TeleportToLocation;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
|
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocationInVehicle;
|
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocationInVehicle;
|
||||||
import org.l2jmobius.gameserver.taskmanager.GameTimeTaskManager;
|
import org.l2jmobius.gameserver.taskmanager.GameTimeTaskManager;
|
||||||
import org.l2jmobius.gameserver.util.Util;
|
import org.l2jmobius.gameserver.util.Util;
|
||||||
@ -7839,10 +7838,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
|
|||||||
*/
|
*/
|
||||||
public boolean isBehind(WorldObject target)
|
public boolean isBehind(WorldObject target)
|
||||||
{
|
{
|
||||||
double angleChar; //
|
|
||||||
double angleTarget;
|
|
||||||
double angleDiff;
|
|
||||||
final double maxAngleDiff = 40;
|
|
||||||
if (target == null)
|
if (target == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -7850,23 +7845,24 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
|
|||||||
|
|
||||||
if (target instanceof Creature)
|
if (target instanceof Creature)
|
||||||
{
|
{
|
||||||
((Creature) target).sendPacket(new ValidateLocation(this));
|
// This was a Fix for avoid front backstab.
|
||||||
sendPacket(new ValidateLocation(((Creature) target)));
|
// Removed for problem with visual char rotation.
|
||||||
|
// ((Creature) target).sendPacket(new ValidateLocation(this));
|
||||||
|
// sendPacket(new ValidateLocation(((Creature) target)));
|
||||||
|
|
||||||
final Creature target1 = (Creature) target;
|
final Creature target1 = (Creature) target;
|
||||||
angleChar = Util.calculateAngleFrom(target1, this);
|
double angleChar = Util.calculateAngleFrom(target1, this);
|
||||||
angleTarget = Util.convertHeadingToDegree(target1.getHeading());
|
double angleTarget = Util.convertHeadingToDegree(target1.getHeading());
|
||||||
angleDiff = angleChar - angleTarget;
|
double angleDiff = angleChar - angleTarget;
|
||||||
|
final double maxAngleDiff = 40;
|
||||||
if (angleDiff <= (-360 + maxAngleDiff))
|
if (angleDiff <= (-360 + maxAngleDiff))
|
||||||
{
|
{
|
||||||
angleDiff += 360;
|
angleDiff += 360;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (angleDiff >= (360 - maxAngleDiff))
|
if (angleDiff >= (360 - maxAngleDiff))
|
||||||
{
|
{
|
||||||
angleDiff -= 360;
|
angleDiff -= 360;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Math.abs(angleDiff) <= maxAngleDiff)
|
if (Math.abs(angleDiff) <= maxAngleDiff)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
@ -7927,10 +7923,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
|
|||||||
*/
|
*/
|
||||||
public boolean isFront(WorldObject target)
|
public boolean isFront(WorldObject target)
|
||||||
{
|
{
|
||||||
double angleChar;
|
|
||||||
double angleTarget;
|
|
||||||
double angleDiff;
|
|
||||||
final double maxAngleDiff = 40;
|
|
||||||
if (target == null)
|
if (target == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -7938,23 +7930,24 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
|
|||||||
|
|
||||||
if (target instanceof Creature)
|
if (target instanceof Creature)
|
||||||
{
|
{
|
||||||
((Creature) target).sendPacket(new ValidateLocation(this));
|
// This was a Fix for avoid front backstab.
|
||||||
sendPacket(new ValidateLocation(((Creature) target)));
|
// Removed for problem with visual char rotation.
|
||||||
|
// ((Creature) target).sendPacket(new ValidateLocation(this));
|
||||||
|
// sendPacket(new ValidateLocation(((Creature) target)));
|
||||||
|
|
||||||
final Creature target1 = (Creature) target;
|
final Creature target1 = (Creature) target;
|
||||||
angleChar = Util.calculateAngleFrom(target1, this);
|
double angleChar = Util.calculateAngleFrom(target1, this);
|
||||||
angleTarget = Util.convertHeadingToDegree(target1.getHeading());
|
double angleTarget = Util.convertHeadingToDegree(target1.getHeading());
|
||||||
angleDiff = angleChar - angleTarget;
|
double angleDiff = angleChar - angleTarget;
|
||||||
|
final double maxAngleDiff = 40;
|
||||||
if (angleDiff <= (-180 + maxAngleDiff))
|
if (angleDiff <= (-180 + maxAngleDiff))
|
||||||
{
|
{
|
||||||
angleDiff += 180;
|
angleDiff += 180;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (angleDiff >= (180 - maxAngleDiff))
|
if (angleDiff >= (180 - maxAngleDiff))
|
||||||
{
|
{
|
||||||
angleDiff -= 180;
|
angleDiff -= 180;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Math.abs(angleDiff) <= maxAngleDiff)
|
if (Math.abs(angleDiff) <= maxAngleDiff)
|
||||||
{
|
{
|
||||||
return !isBehind(_target);
|
return !isBehind(_target);
|
||||||
|
Loading…
Reference in New Issue
Block a user