Attackables should be able to see and move to target.
This commit is contained in:
parent
061bc41de8
commit
94700077b3
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -479,15 +479,12 @@ abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_accessor.moveTo(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
// Mobius: Solves moving to wrong Z when not using geodata,
|
||||
// but probably is not accurate and you should use geodata.
|
||||
// _accessor.moveTo(pawn.getX(), pawn.getY(), _actor.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
_actor.sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// _actor.sendPacket(ActionFailed.STATIC_PACKET);
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn instanceof Creature)
|
||||
|
@ -667,8 +667,8 @@ public class AttackableAI extends CreatureAI
|
||||
}
|
||||
}
|
||||
|
||||
final Creature originalAttackTarget = getAttackTarget();
|
||||
// Check if target is dead or if timeout is expired to stop this attack
|
||||
final Creature originalAttackTarget = getAttackTarget();
|
||||
if ((originalAttackTarget == null) || originalAttackTarget.isAlikeDead() || ((originalAttackTarget instanceof PlayerInstance) && (((PlayerInstance) originalAttackTarget).isInOfflineMode() || !((PlayerInstance) originalAttackTarget).isOnline())) || (_attackTimeout < GameTimeController.getGameTicks()))
|
||||
{
|
||||
// Stop hating this target after the attack timeout or if target is dead
|
||||
@ -684,6 +684,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, originalAttackTarget))
|
||||
{
|
||||
moveTo(originalAttackTarget.getX(), originalAttackTarget.getY(), originalAttackTarget.getZ());
|
||||
return;
|
||||
}
|
||||
|
||||
// Call all WorldObject of its Faction inside the Faction Range
|
||||
if (((NpcInstance) _actor).getFactionId() != null)
|
||||
{
|
||||
|
@ -479,15 +479,12 @@ abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_accessor.moveTo(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
// Mobius: Solves moving to wrong Z when not using geodata,
|
||||
// but probably is not accurate and you should use geodata.
|
||||
// _accessor.moveTo(pawn.getX(), pawn.getY(), _actor.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
_actor.sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// _actor.sendPacket(ActionFailed.STATIC_PACKET);
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn instanceof Creature)
|
||||
|
@ -667,8 +667,8 @@ public class AttackableAI extends CreatureAI
|
||||
}
|
||||
}
|
||||
|
||||
final Creature originalAttackTarget = getAttackTarget();
|
||||
// Check if target is dead or if timeout is expired to stop this attack
|
||||
final Creature originalAttackTarget = getAttackTarget();
|
||||
if ((originalAttackTarget == null) || originalAttackTarget.isAlikeDead() || ((originalAttackTarget instanceof PlayerInstance) && (((PlayerInstance) originalAttackTarget).isInOfflineMode() || !((PlayerInstance) originalAttackTarget).isOnline())) || (_attackTimeout < GameTimeController.getGameTicks()))
|
||||
{
|
||||
// Stop hating this target after the attack timeout or if target is dead
|
||||
@ -684,6 +684,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, originalAttackTarget))
|
||||
{
|
||||
moveTo(originalAttackTarget.getX(), originalAttackTarget.getY(), originalAttackTarget.getZ());
|
||||
return;
|
||||
}
|
||||
|
||||
// Call all WorldObject of its Faction inside the Faction Range
|
||||
if (((NpcInstance) _actor).getFactionId() != null)
|
||||
{
|
||||
|
@ -533,11 +533,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -835,6 +835,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, originalAttackTarget))
|
||||
{
|
||||
moveTo(originalAttackTarget);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -533,11 +533,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -835,6 +835,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, originalAttackTarget))
|
||||
{
|
||||
moveTo(originalAttackTarget);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
@ -470,11 +470,12 @@ public abstract class AbstractAI implements Ctrl
|
||||
// Calculate movement data for a move to location action and add the actor to movingObjects of GameTimeController
|
||||
_actor.moveToLocation(_actor.isPlayable() ? pawn : null, pawn.getX(), pawn.getY(), pawn.getZ(), offset);
|
||||
|
||||
if (!_actor.isMoving())
|
||||
{
|
||||
clientActionFailed();
|
||||
return;
|
||||
}
|
||||
// May result to make monsters stop moving.
|
||||
// if (!_actor.isMoving())
|
||||
// {
|
||||
// clientActionFailed();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Send a Server->Client packet MoveToPawn/CharMoveToLocation to the actor and all PlayerInstance in its _knownPlayers
|
||||
if (pawn.isCreature())
|
||||
|
@ -685,6 +685,13 @@ public class AttackableAI extends CreatureAI
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor should be able to see target.
|
||||
if (!GeoEngine.getInstance().canSeeTarget(_actor, target))
|
||||
{
|
||||
moveTo(target);
|
||||
return;
|
||||
}
|
||||
|
||||
final int collision = npc.getTemplate().getCollisionRadius();
|
||||
|
||||
// Handle all WorldObject of its Faction inside the Faction Range
|
||||
|
Loading…
Reference in New Issue
Block a user