Fixed stackoverflow errors from movement.
Contributed by Sahar.
This commit is contained in:
parent
67fffe36d7
commit
8bdf70c0e1
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -694,11 +694,10 @@ abstract class AbstractAI implements Ctrl
|
||||
{
|
||||
if (_clientMoving)
|
||||
{
|
||||
final Creature follow = getFollowTarget();
|
||||
if ((_clientMovingToPawnOffset != 0) && (follow != null))
|
||||
if ((_clientMovingToPawnOffset != 0) && isFollowing())
|
||||
{
|
||||
// Send a Server->Client packet MoveToPawn to the actor and all PlayerInstance in its _knownPlayers
|
||||
player.sendPacket(new MoveToPawn(_actor, follow, _clientMovingToPawnOffset));
|
||||
player.sendPacket(new MoveToPawn(_actor, _followTarget, _clientMovingToPawnOffset));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -708,6 +707,11 @@ abstract class AbstractAI implements Ctrl
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_followTarget != null) && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and Launch an AI Follow Task to execute every 1s.
|
||||
* @param target The Creature to follow
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -694,11 +694,10 @@ abstract class AbstractAI implements Ctrl
|
||||
{
|
||||
if (_clientMoving)
|
||||
{
|
||||
final Creature follow = getFollowTarget();
|
||||
if ((_clientMovingToPawnOffset != 0) && (follow != null))
|
||||
if ((_clientMovingToPawnOffset != 0) && isFollowing())
|
||||
{
|
||||
// Send a Server->Client packet MoveToPawn to the actor and all PlayerInstance in its _knownPlayers
|
||||
player.sendPacket(new MoveToPawn(_actor, follow, _clientMovingToPawnOffset));
|
||||
player.sendPacket(new MoveToPawn(_actor, _followTarget, _clientMovingToPawnOffset));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -708,6 +707,11 @@ abstract class AbstractAI implements Ctrl
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_followTarget != null) && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and Launch an AI Follow Task to execute every 1s.
|
||||
* @param target The Creature to follow
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -744,7 +744,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
{
|
||||
if (_actor.isVisibleFor(player) && _clientMoving)
|
||||
{
|
||||
if ((_clientMovingToPawnOffset != 0) && (_followTarget != null))
|
||||
if ((_clientMovingToPawnOffset != 0) && isFollowing())
|
||||
{
|
||||
// Send a Server->Client packet MoveToPawn to the actor and all PlayerInstance in its _knownPlayers
|
||||
player.sendPacket(new MoveToPawn(_actor, _followTarget, _clientMovingToPawnOffset));
|
||||
@ -757,6 +757,11 @@ public abstract class AbstractAI implements Ctrl
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_followTarget != null) && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and Launch an AI Follow Task to execute every 1s.
|
||||
* @param target The Creature to follow
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -744,7 +744,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
{
|
||||
if (_actor.isVisibleFor(player) && _clientMoving)
|
||||
{
|
||||
if ((_clientMovingToPawnOffset != 0) && (_followTarget != null))
|
||||
if ((_clientMovingToPawnOffset != 0) && isFollowing())
|
||||
{
|
||||
// Send a Server->Client packet MoveToPawn to the actor and all PlayerInstance in its _knownPlayers
|
||||
player.sendPacket(new MoveToPawn(_actor, _followTarget, _clientMovingToPawnOffset));
|
||||
@ -757,6 +757,11 @@ public abstract class AbstractAI implements Ctrl
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_followTarget != null) && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and Launch an AI Follow Task to execute every 1s.
|
||||
* @param target The Creature to follow
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
@ -692,7 +692,7 @@ public abstract class AbstractAI implements Ctrl
|
||||
|
||||
public boolean isFollowing()
|
||||
{
|
||||
return (_target != null) && _target.isCreature() && (_intention == AI_INTENTION_FOLLOW);
|
||||
return (_target != null) && _target.isCreature() && ((_intention == AI_INTENTION_FOLLOW) || CreatureFollowTaskManager.getInstance().isFollowing(_actor));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,16 +126,21 @@ public class CreatureFollowTaskManager
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFollowing(Creature creature)
|
||||
{
|
||||
return NORMAL_FOLLOW_CREATURES.containsKey(creature) || ATTACK_FOLLOW_CREATURES.containsKey(creature);
|
||||
}
|
||||
|
||||
public void addNormalFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
NORMAL_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void addAttackFollow(Creature creature, int range)
|
||||
{
|
||||
follow(creature, range);
|
||||
ATTACK_FOLLOW_CREATURES.putIfAbsent(creature, range);
|
||||
follow(creature, range);
|
||||
}
|
||||
|
||||
public void remove(Creature creature)
|
||||
|
Loading…
Reference in New Issue
Block a user