Package lineage2.gameserver.model

Examples of lineage2.gameserver.model.Creature


   */
  void spawnMobs()
  {
    final NpcInstance actor = getActor();
    Location pos;
    Creature hated;
    for (int i = 0; i < 9; i++)
    {
      try
      {
        pos = Location.findPointToStay(144298, 154420, -11854, 300, 320, actor.getGeoIndex());
View Full Code Here


  /**
   * Method clientStopMoving.
   */
  public void clientStopMoving()
  {
    Creature actor = getActor();
    actor.stopMove();
  }
View Full Code Here

   * @param damage int
   */
  @Override
  protected void onEvtAttacked(Creature attacker, int damage)
  {
    Creature actor;
    if ((attacker == null) || ((actor = getActor()) == null))
    {
      return;
    }
    Player player = attacker.getPlayer();
    if (player == null)
    {
      return;
    }
    SiegeEvent<?, ?> siegeEvent1 = player.getEvent(SiegeEvent.class);
    SiegeEvent<?, ?> siegeEvent2 = actor.getEvent(SiegeEvent.class);
    if ((siegeEvent1 == null) || ((siegeEvent1 == siegeEvent2) && (siegeEvent1.getSiegeClan(SiegeEvent.ATTACKERS, player.getClan()) != null)))
    {
      for (NpcInstance npc : actor.getAroundNpc(900, 200))
      {
        if (!npc.isSiegeGuard())
        {
          continue;
        }
View Full Code Here

   * Method thinkFollow.
   */
  protected void thinkFollow()
  {
    final NpcInstance actor = getActor();
    final Creature target = actor.getFollowTarget();
    if ((target == null) || target.isAlikeDead() || (actor.getDistance(target) > 4000) || actor.isMovementDisabled())
    {
      clientActionFailed();
      return;
    }
    if (actor.isFollow && (actor.getFollowTarget().equals(target)))
View Full Code Here

      final NpcInstance actor = getActor();
      if (actor == null)
      {
        return;
      }
      final Creature target = actor.getFollowTarget();
      if ((target == null) || target.isAlikeDead() || (actor.getDistance(target) > 4000))
      {
        setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
        return;
      }
      if (!actor.isInRange(target, Config.FOLLOW_RANGE + 20) && (!actor.isFollow || (!actor.getFollowTarget().equals(target))))
      {
        final Location loc = new Location(target.getX() + Rnd.get(-60, 60), target.getY() + Rnd.get(-60, 60), target.getZ());
        actor.followToCharacter(loc, target, Config.FOLLOW_RANGE, false);
      }
      _followTask = ThreadPoolManager.getInstance().schedule(this, 250L);
    }
View Full Code Here

        }
      }
        break;
      case ATTACK:
      {
        Creature target = currentTask.target.get();
        if (!checkTarget(target, MAX_PURSUE_RANGE))
        {
          return true;
        }
        setAttackTarget(target);
        if (actor.isMoving)
        {
          return Rnd.chance(25);
        }
        if ((actor.getRealDistance3D(target) <= (actor.getPhysicalAttackRange() + 40)) && GeoEngine.canSeeTarget(actor, target, false))
        {
          clientStopMoving();
          _pathfindFails = 0;
          setAttackTimeout(getMaxAttackTimeout() + System.currentTimeMillis());
          actor.doAttack(target);
          return maybeNextTask(currentTask);
        }
        if (actor.isMovementDisabled() || !getIsMobile())
        {
          return true;
        }
        tryMoveToTarget(target);
      }
        break;
      case CAST:
      {
        Creature target = currentTask.target.get();
        if (actor.isMuted(currentTask.skill) || actor.isSkillDisabled(currentTask.skill) || actor.isUnActiveSkill(currentTask.skill.getId()))
        {
          return true;
        }
        boolean isAoE = currentTask.skill.getTargetType() == Skill.SkillTargetType.TARGET_AURA;
        int castRange = currentTask.skill.getAOECastRange();
        if (!checkTarget(target, MAX_PURSUE_RANGE + castRange))
        {
          return true;
        }
        setAttackTarget(target);
        if ((actor.getRealDistance3D(target) <= (castRange + 60)) && GeoEngine.canSeeTarget(actor, target, false))
        {
          clientStopMoving();
          _pathfindFails = 0;
          setAttackTimeout(getMaxAttackTimeout() + System.currentTimeMillis());
          actor.doCast(currentTask.skill, isAoE ? actor : target, !target.isPlayable());
          return maybeNextTask(currentTask);
        }
        if (actor.isMoving)
        {
          return Rnd.chance(10);
        }
        if (actor.isMovementDisabled() || !getIsMobile())
        {
          return true;
        }
        tryMoveToTarget(target, castRange);
      }
        break;
      case BUFF:
      {
        Creature target = currentTask.target.get();
        if (actor.isMuted(currentTask.skill) || actor.isSkillDisabled(currentTask.skill) || actor.isUnActiveSkill(currentTask.skill.getId()))
        {
          return true;
        }
        if ((target == null) || target.isAlikeDead() || !actor.isInRange(target, 2000))
        {
          return true;
        }
        boolean isAoE = currentTask.skill.getTargetType() == Skill.SkillTargetType.TARGET_AURA;
        int castRange = currentTask.skill.getAOECastRange();
        if (actor.isMoving)
        {
          return Rnd.chance(10);
        }
        if ((actor.getRealDistance3D(target) <= (castRange + 60)) && GeoEngine.canSeeTarget(actor, target, false))
        {
          clientStopMoving();
          _pathfindFails = 0;
          actor.doCast(currentTask.skill, isAoE ? actor : target, !target.isPlayable());
          return maybeNextTask(currentTask);
        }
        if (actor.isMovementDisabled() || !getIsMobile())
        {
          return true;
View Full Code Here

   */
  private boolean findHelp()
  {
    isSearching = false;
    final NpcInstance actor = getActor();
    final Creature attacker = _attackerRef.get();
    if (attacker == null)
    {
      return false;
    }
    for (final NpcInstance npc : actor.getAroundNpc(1000, 150))
View Full Code Here

  protected void onEvtArrived()
  {
    final NpcInstance actor = getActor();
    if (isSearching)
    {
      final Creature attacker = _attackerRef.get();
      if (attacker != null)
      {
        Functions.npcSay(actor, flood2[Rnd.get(flood2.length)]);
        notifyFriends(attacker, 100);
      }
View Full Code Here

   */
  protected boolean defaultNewTask()
  {
    clearTasks();
    NpcInstance actor = getActor();
    Creature target;
    if ((actor == null) || ((target = prepareTarget()) == null))
    {
      return false;
    }
    double distance = actor.getDistance(target);
View Full Code Here

    {
      return getAttackTarget();
    }
    if (Rnd.chance(actor.getParameter("isMadness", 0)))
    {
      Creature randomHated = actor.getAggroList().getRandomHated();
      if (randomHated != null)
      {
        setAttackTarget(randomHated);
        if ((_madnessTask == null) && !actor.isConfused())
        {
          actor.startConfused();
          _madnessTask = ThreadPoolManager.getInstance().schedule(new MadnessTask(), 10000);
        }
        return randomHated;
      }
    }
    List<Creature> hateList = actor.getAggroList().getHateList();
    Creature hated = null;
    for (Creature cha : hateList)
    {
      if (!checkTarget(cha, MAX_PURSUE_RANGE))
      {
        actor.getAggroList().remove(cha, true);
View Full Code Here

TOP

Related Classes of lineage2.gameserver.model.Creature

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.