Package l2p.gameserver.model

Examples of l2p.gameserver.model.L2Character


              return;
            }
          }
          else if(skill.getSkillType() == SkillType.HEAL)
          {
            L2Character target = owner;
            if(owner.getParty() != null)
            {
              for(L2Playable member : owner.getParty().getPartyMembersWithPets())
              {
                if(member != null && !member.isDead() && member.getCurrentHpRatio() < target.getCurrentHpRatio() && owner.isInRangeZ(member, skill.getCastRange()))
                {
                  target = member;
                }
              }
            }
            else if(owner.getPet() != null && !owner.getPet().isDead() && owner.getPet().getCurrentHpRatio() < owner.getCurrentHpRatio())
            {
              target = owner.getPet();
            }
            double hpp = target.getCurrentHpPercents();
            if(hpp < 95 && Rnd.chance(hpp > 60 ? 44 : hpp > 30 ? 66 : 100))
            {
              owner.altUseSkill(skill, target);
              return;
            }
          }
        }
        if(targetStoreId != 0)
        {
          L2Character target = L2ObjectsStorage.getAsCharacter(targetStoreId);
          if(target == null || target.isDead() || !owner.isInRangeZ(target, 900))
          {
            stopAttackAction();
            return;
          }
          L2Skill skill = _offensiveSkills.get(Rnd.get(_offensiveSkills.size()));
View Full Code Here


  }

  public void calculateRewards(L2Character lastAttacker)
  {
    HashMap<L2Playable, AggroInfo> aggroList = getAggroMap();
    L2Character topDamager = getTopDamager(aggroList.values());
    if(lastAttacker == null && topDamager != null)
    {
      lastAttacker = topDamager;
    }
    if(lastAttacker == null || aggroList.isEmpty())
    {
      return;
    }
    L2Player killer = lastAttacker.getPlayer();
    if(killer == null)
    {
      return;
    }
    if(topDamager == null)
    {
      topDamager = lastAttacker;
    }
    // Notify the Quest Engine of the L2NpcInstance death if necessary
    try
    {
      if(Config.KILL_COUNTER)
      {
        killer.incrementKillsCounter(getNpcId());
      }
      getTemplate().killscount++;
      if(getTemplate().hasQuestEvents())
      {
        GArray<L2Player> players = null; // массив с игроками, которые могут быть заинтересованы в квестах
        if(isRaid() && Config.ALT_NO_LASTHIT) // Для альта на ластхит берем всех игроков вокруг
        {
          players = new GArray<L2Player>();
          for(L2Playable pl : aggroList.keySet())
          {
            if(pl.isPlayer() && !pl.isDead() && pl.getReflectionId() == getReflectionId() && (pl.isInRange(this, Config.ALT_PARTY_DISTRIBUTION_RANGE) || pl.isInRange(killer, Config.ALT_PARTY_DISTRIBUTION_RANGE)) && Math.abs(pl.getZ() - getZ()) < 400)
            {
              players.add((L2Player) pl);
            }
          }
        }
        else if(killer.getParty() != null) // если пати то собираем всех кто подходит
        {
          players = new GArray<L2Player>(killer.getParty().getMemberCount());
          for(L2Player pl : killer.getParty().getPartyMembers())
          {
            if(!pl.isDead() && pl.getReflectionId() == getReflectionId() && (pl.isInRange(this, Config.ALT_PARTY_DISTRIBUTION_RANGE) || pl.isInRange(killer, Config.ALT_PARTY_DISTRIBUTION_RANGE)) && Math.abs(pl.getZ() - getZ()) < 400)
            {
              players.add(pl);
            }
          }
        }
        if(getTemplate().getEventQuests(QuestEventType.MOBKILLED) != null)
        {
          for(Quest quest : getTemplate().getEventQuests(QuestEventType.MOBKILLED))
          {
            L2Player toReward = killer;
            if(quest.getParty() != Quest.PARTY_NONE && players != null)
            {
              if(isRaid() || quest.getParty() == Quest.PARTY_ALL) // если цель рейд или квест для всей пати награждаем всех участников
              {
                for(L2Player pl : players)
                {
                  QuestState qs = pl.getQuestState(quest.getName());
                  if(qs != null && !qs.isCompleted())
                  {
                    quest.notifyKill(this, qs);
                  }
                }
                toReward = null;
              }
              else
              { // иначе выбираем одного
                GArray<L2Player> interested = new GArray<L2Player>(players.size());
                for(L2Player pl : players)
                {
                  QuestState qs = pl.getQuestState(quest.getName());
                  if(qs != null && !qs.isCompleted()) // из тех, у кого взят квест
                  {
                    interested.add(pl);
                  }
                }
                if(interested.isEmpty())
                {
                  continue;
                }
                toReward = interested.get(Rnd.get(interested.size()));
                if(toReward == null)
                {
                  toReward = killer;
                }
              }
            }
            if(toReward != null)
            {
              QuestState qs = toReward.getQuestState(quest.getName());
              if(qs != null && !qs.isCompleted())
              {
                quest.notifyKill(this, qs);
              }
            }
          }
        }
      }
    }
    catch(final Exception e)
    {
      e.printStackTrace();
    }
    // Distribute Exp and SP rewards to L2Player (including Summon owner) that hit the L2NpcInstance and to their Party members
    FastMap<L2Player, RewardInfo> rewards = new FastMap<L2Player, RewardInfo>().setShared(true);
    for(AggroInfo info : aggroList.values())
    {
      if(info.damage <= 1)
      {
        continue;
      }
      L2Character attacker = info.attacker;
      if(attacker == null || !attacker.isPlayer())
      {
        continue;
      }
      L2Player player = attacker.getPlayer();
      if(player != null)
      {
        RewardInfo reward = rewards.get(player);
        if(reward == null)
        {
          rewards.put(player, new RewardInfo(player, info.damage));
        }
        else
        {
          reward.addDamage(info.damage);
        }
      }
    }
    for(FastMap.Entry<L2Player, RewardInfo> e = rewards.head(), end = rewards.tail(); e != null && (e = e.getNext()) != end && e != null;)
    {
      L2Player attacker = e.getKey();
      RewardInfo reward = e.getValue();
      if(attacker == null || attacker.isDead() || reward == null)
      {
        continue;
      }
      L2Party party = attacker.getParty();
      int maxHp = getMaxHp();
      if(party == null)
      {
        int damage = Math.min(reward._dmg, maxHp);
        if(damage > 0)
        {
          double[] xpsp = calculateExpAndSp(attacker, attacker.getLevel(), damage);
          double neededExp = attacker.calcStat(Stats.SOULS_CONSUME_EXP, 0, this, null); // Начисление душ камаэлянам
          if(neededExp > 0 && xpsp[0] > neededExp)
          {
            broadcastPacket(new SpawnEmitter(this, attacker));
            ThreadPoolManager.getInstance().scheduleGeneral(new SoulConsumeTask(attacker), 1000);
          }
          xpsp[0] = applyOverhit(killer, xpsp[0]);
          xpsp = attacker.applyVitality(this, xpsp[0], xpsp[1], 1.0);
          attacker.addExpAndSp((long) xpsp[0], (long) xpsp[1], false, true);
        }
        rewards.remove(attacker);
      }
      else
      {
View Full Code Here

        return;
      }
    }
    if(obj != null && obj.isCharacter())
    {
      L2Character target = (L2Character) obj;
      target.reduceCurrentHp(target.getMaxHp() + target.getMaxCp() + 1, activeChar, null, true, true, false, false);
    }
    else
    {
      activeChar.sendPacket(Msg.INVALID_TARGET);
    }
View Full Code Here

  @Override
  protected boolean createNewTask()
  {
    clearTasks();
    L2Character target;
    if((target = prepareTarget()) == null)
    {
      return false;
    }
    L2NpcInstance actor = getActor();
View Full Code Here

    if(actor == null)
    {
      return;
    }
    Location pos;
    L2Character hated;
    // Спавним 9 копий
    for(int i = 0; i < 9; i++)
    {
      try
      {
View Full Code Here

          npc.setSpawnedLoc(Rnd.coordsRandomize(actor.getLoc(), 400, 1000));
          npc.setReflection(actor.getReflection());
          npc.onSpawn();
          npc.spawnMe(npc.getSpawnedLoc());
          r.addSpawn(npc.getSpawn());
          L2Character randomHated = actor.getRandomHated();
          npc.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, randomHated != null ? randomHated : attacker, Rnd.get(1, 100));
        }
      }
    }
    super.onEvtAttacked(attacker, damage);
View Full Code Here

  private boolean findHelp()
  {
    isSearching = false;
    final L2NpcInstance actor = getActor();
    L2Character attacker = L2ObjectsStorage.getAsCharacter(_attacker);
    if(actor == null || attacker == null)
    {
      return false;
    }
    for(final L2NpcInstance npc : actor.getAroundNpc(1000, 150))
View Full Code Here

    {
      return;
    }
    if(isSearching)
    {
      L2Character attacker = L2ObjectsStorage.getAsCharacter(_attacker);
      if(attacker != null)
      {
        Functions.npcSay(actor, flood2[Rnd.get(flood2.length)]);
        actor.callFriends(attacker, 100);
        ThreadPoolManager.getInstance().executeAi(new NotifyFactionTask(actor, attacker, 100), false);
View Full Code Here

        if(skill == null)
        {
          activeChar.sendMessage("USAGE: //callskill skillid skilllevel");
          return false;
        }
        L2Character target = null;
        L2Object obj = activeChar.getTarget();
        if(obj != null && obj.isCharacter())
        {
          target = (L2Character) obj;
        }
View Full Code Here

    if(!target_obj.isCharacter())
    {
      activeChar.sendPacket(Msg.INVALID_TARGET);
      return;
    }
    L2Character target = (L2Character) target_obj;
    Calculator[] calculators = target.getCalculators();
    String log_str = "--- Debug for " + target.getName() + " ---\r\n";
    for(Calculator calculator : calculators)
    {
      if(calculator == null || calculator.getBase() == null)
      {
        continue;
View Full Code Here

TOP

Related Classes of l2p.gameserver.model.L2Character

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.