package ai; import com.aionemu.gameserver.ai.AIName; import com.aionemu.gameserver.ai.AIState; import com.aionemu.gameserver.ai.event.AIEventType; import com.aionemu.gameserver.ai.handler.FollowEventHandler; import com.aionemu.gameserver.model.gameobjects.Creature; import com.aionemu.gameserver.model.gameobjects.Npc; /** * @author ATracer */ @AIName("following") public class FollowingNpcAI extends GeneralNpcAI { public FollowingNpcAI(Npc owner) { super(owner); } @Override protected void handleFollowMe(Creature creature) { FollowEventHandler.follow(this, creature); } @Override protected boolean canHandleEvent(AIEventType eventType) { switch (eventType) { case CREATURE_MOVED: return getState() == AIState.FOLLOWING; case DIALOG_START: case DIALOG_FINISH: return getState() == AIState.FOLLOWING || super.canHandleEvent(eventType); } return super.canHandleEvent(eventType); } @Override protected void handleCreatureMoved(Creature creature) { if (creature.equals(getOwner().getTarget())) { FollowEventHandler.creatureMoved(this, creature); } else if (getOwner().getTarget() == null) { FollowEventHandler.stopFollow(this, creature); } } @Override protected void handleStopFollowMe(Creature creature) { FollowEventHandler.stopFollow(this, creature); } }