Package lineage2.gameserver.model

Examples of lineage2.gameserver.model.Creature


   * @param evt CtrlEvent
   * @param args Object[]
   */
  public void notifyEvent(CtrlEvent evt, Object[] args)
  {
    Creature actor = getActor();
    if ((actor == null) || !actor.isVisible())
    {
      return;
    }
    actor.getListeners().onAiEvent(evt, args);
    switch (evt)
    {
      case EVT_THINK:
        onEvtThink();
        break;
View Full Code Here


  /**
   * Method clientActionFailed.
   */
  protected void clientActionFailed()
  {
    Creature actor = getActor();
    if ((actor != null) && actor.isPlayer())
    {
      actor.sendActionFailed();
    }
  }
View Full Code Here

    if (actor.isDead())
    {
      return null;
    }
    final 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

  {
    if (getTemplate()._count <= 1)
    {
      return false;
    }
    Creature effector = getEffector();
    Skill skill = getSkill().getFirstAddedSkill();
    NpcInstance symbol = _symbol;
    double mpConsume = getSkill().getMpConsume();
    if ((effector == null) || (skill == null) || (symbol == null))
    {
      return false;
    }
    if (mpConsume > effector.getCurrentMp())
    {
      effector.sendPacket(Msg.NOT_ENOUGH_MP);
      return false;
    }
    effector.reduceCurrentMp(mpConsume, effector);
    for (Creature cha : World.getAroundCharacters(symbol, getSkill().getSkillRadius(), 200))
    {
      if (!cha.isDoor() && (cha.getEffectList().getEffectsBySkill(skill) == null) && (skill.checkTarget(effector, cha, cha, false, false) == null))
      {
        if (skill.isOffensive() && !GeoEngine.canSeeTarget(symbol, cha, false))
        {
          continue;
        }
        List<Creature> targets = new ArrayList<>(1);
        targets.add(cha);
        effector.callSkill(skill, targets, true);
        effector.broadcastPacket(new MagicSkillLaunched(symbol.getObjectId(), getSkill().getDisplayId(), getSkill().getDisplayLevel(), cha));
      }
    }
    return true;
  }
View Full Code Here

    boolean ss = activeChar.getChargedSoulShot() && isSSPossible();
    if (ss)
    {
      activeChar.unChargeShots(false);
    }
    Creature realTarget;
    boolean reflected;
    for (Creature target : targets)
    {
      if (target != null)
      {
        if (target.isDead())
        {
          continue;
        }
        target.doCounterAttack(this, activeChar, false);
        reflected = target.checkReflectSkill(activeChar, this);
        realTarget = reflected ? activeChar : target;
        if (realTarget.isCurrentCpZero())
        {
          continue;
        }
        double damage = _power * realTarget.getCurrentCp();
        if (damage < 1)
        {
          damage = 1;
        }
        realTarget.reduceCurrentHp(damage, 0, activeChar, this, true, true, false, true, false, false, true);
        getEffects(activeChar, target, getActivateRate() > 0, false, reflected);
      }
    }
  }
View Full Code Here

   * @param delay int
   */
  private static void doHeal(final Player player, CubicTemplate.SkillInfo info, final int delay)
  {
    final Skill skill = info.getSkill();
    Creature target = null;
    if (player.getParty() == null)
    {
      if (!player.isCurrentHpFull() && !player.isDead())
      {
        target = player;
      }
    }
    else
    {
      double currentHp = Integer.MAX_VALUE;
      for (Player member : player.getParty().getPartyMembers())
      {
        if (member == null)
        {
          continue;
        }
        if (player.isInRange(member, info.getSkill().getCastRange()) && !member.isCurrentHpFull() && !member.isDead() && (member.getCurrentHp() < currentHp))
        {
          currentHp = member.getCurrentHp();
          target = member;
        }
      }
    }
    if (target == null)
    {
      return;
    }
    int chance = info.getChance((int) target.getCurrentHpPercents());
    if (!Rnd.chance(chance))
    {
      return;
    }
    final Creature aimTarget = target;
    player.broadcastPacket(new MagicSkillUse(player, aimTarget, skill.getDisplayId(), skill.getDisplayLevel(), skill.getHitTime(), 0));
    player.disableSkill(skill, delay * 1000L);
    ThreadPoolManager.getInstance().schedule(new RunnableImpl()
    {
      @Override
View Full Code Here

    if (!Rnd.chance(info.getChance()))
    {
      return;
    }
    final Skill skill = info.getSkill();
    Creature target = null;
    if (player.isInCombat())
    {
      GameObject object = player.getTarget();
      target = (object != null) && object.isCreature() ? (Creature) object : null;
    }
    if ((target == null) || target.isDead() || (target.isDoor() && !info.isCanAttackDoor()) || !player.isInRangeZ(target, skill.getCastRange()) || !target.isAutoAttackable(player))
    {
      return;
    }
    final Creature aimTarget = target;
    player.broadcastPacket(new MagicSkillUse(player, target, skill.getDisplayId(), skill.getDisplayLevel(), skill.getHitTime(), 0));
    player.disableSkill(skill, delay * 1000L);
    ThreadPoolManager.getInstance().schedule(new RunnableImpl()
    {
      @Override
      public void runImpl()
      {
        final List<Creature> targets = new ArrayList<>(1);
        targets.add(aimTarget);
        player.broadcastPacket(new MagicSkillLaunched(player.getObjectId(), skill.getDisplayId(), skill.getDisplayLevel(), targets));
        player.callSkill(skill, targets, false);
        if (aimTarget.isNpc())
        {
          if (aimTarget.paralizeOnAttack(player))
          {
            if (Config.PARALIZE_ON_RAID_DIFF)
            {
              player.paralizeMe(aimTarget);
            }
          }
          else
          {
            int damage = skill.getEffectPoint() != 0 ? skill.getEffectPoint() : (int) skill.getPower();
            aimTarget.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, player, damage);
          }
        }
      }
    }, skill.getHitTime());
  }
View Full Code Here

    if (!Rnd.chance(info.getChance()))
    {
      return;
    }
    final Skill skill = info.getSkill();
    Creature target = null;
    if (player.isInCombat())
    {
      GameObject object = player.getTarget();
      target = (object != null) && object.isCreature() ? (Creature) object : null;
    }
    if ((target == null) || target.isDead() || (target.isDoor() && !info.isCanAttackDoor()) || !player.isInRangeZ(target, skill.getCastRange()) || !target.isAutoAttackable(player))
    {
      return;
    }
    final Creature aimTarget = target;
    player.broadcastPacket(new MagicSkillUse(player, target, skill.getDisplayId(), skill.getDisplayLevel(), skill.getHitTime(), 0));
    player.disableSkill(skill, delay * 1000L);
    ThreadPoolManager.getInstance().schedule(new RunnableImpl()
    {
      @Override
      public void runImpl()
      {
        final List<Creature> targets = new ArrayList<>(1);
        targets.add(aimTarget);
        player.broadcastPacket(new MagicSkillLaunched(player.getObjectId(), skill.getDisplayId(), skill.getDisplayLevel(), targets));
        final boolean succ = Formulas.calcSkillSuccess(player, aimTarget, skill, info.getChance());
        if (succ)
        {
          player.callSkill(skill, targets, false);
        }
        if (aimTarget.isNpc())
        {
          if (aimTarget.paralizeOnAttack(player))
          {
            if (Config.PARALIZE_ON_RAID_DIFF)
            {
              player.paralizeMe(aimTarget);
            }
          }
          else
          {
            int damage = skill.getEffectPoint() != 0 ? skill.getEffectPoint() : (int) skill.getPower();
            aimTarget.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, player, damage);
          }
        }
      }
    }, skill.getHitTime());
  }
View Full Code Here

    super.onEvtAttacked(attacker, damage);
    if ((PositionUtils.calculateDistance(attacker, actor, false) > 300.) && Rnd.chance(0.13))
    {
      addTaskCast(attacker, DRAIN_SKILL);
    }
    final Creature target = actor.getAggroList().getMostHated();
    if ((target.equals(attacker)) && Rnd.chance(0.3))
    {
      addTaskCast(attacker, DAMAGE_SKILL);
    }
  }
View Full Code Here

  /**
   * Method updateAura.
   */
  void updateAura()
  {
    Creature effector = getEffector();
    Skill forceSkill = SkillTable.getInstance().getInfo(forceSkillId, 1);
    Skill auraSkill = getSkill();
    if ((effector == null) || (forceSkill == null) || (auraSkill == null))
    {
      return;
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.