Package com.l2jfrozen.gameserver.model.actor.instance

Examples of com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance


    else
    {
      ok = false;
    }

    L2NpcInstance merchant = null;

    if(ok)
    {
      merchant = (L2NpcInstance) target;
    }
    else if(!ok && !player.isGM())
    {
      player.sendMessage("Invalid Target: Seller must be targetted");
      return;
    }

    L2TradeList list = null;

    if(merchant != null)
    {
      List<L2TradeList> lists = TradeController.getInstance().getBuyListByNpcId(merchant.getNpcId());

      if(!player.isGM())
      {
        if(lists == null)
        {
          Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " sent a false BuyList list_id.", Config.DEFAULT_PUNISH);
          return;
        }
        for(L2TradeList tradeList : lists)
        {
          if(tradeList.getListId() == _listId)
          {
            list = tradeList;
          }
        }
      }
      else
      {
        list = TradeController.getInstance().getBuyList(_listId);
      }
    }
    else
    {
      list = TradeController.getInstance().getBuyList(_listId);
    }

    if(list == null)
    {
      Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " sent a false BuyList list_id.", Config.DEFAULT_PUNISH);
      return;
    }

    _listId = list.getListId();

    if(_listId > 1000000) // lease
    {
      if(merchant != null && merchant.getTemplate().npcId != _listId - 1000000)
      {
        sendPacket(ActionFailed.STATIC_PACKET);
        return;
      }
    }

    if(_count < 1)
    {
      sendPacket(ActionFailed.STATIC_PACKET);
      return;
    }

    double taxRate = 0;

    if(merchant != null && merchant.getIsInTown())
    {
      taxRate = merchant.getCastle().getTaxRate();
    }

    long subTotal = 0;
    int tax = 0;

    // Check for buylist validity and calculates summary values
    long slots = 0;
    long weight = 0;
    for(int i = 0; i < _count; i++)
    {
      int itemId = _items[i * 2 + 0];
      int count = _items[i * 2 + 1];
      int price = -1;

      if(!list.containsItemId(itemId))
      {
        Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " sent a false BuyList list_id.", Config.DEFAULT_PUNISH);
        return;
      }

      L2Item template = ItemTable.getInstance().getTemplate(itemId);

      if(template == null)
      {
        continue;
      }

      // Check count
      if(count > Integer.MAX_VALUE || !template.isStackable() && count > 1)
      {
        //Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase invalid quantity of items at the same time.", Config.DEFAULT_PUNISH);
        SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_QUANTITY_THAT_CAN_BE_INPUTTED);
        sendPacket(sm);
        sm = null;
        return;
      }

      if(_listId < 1000000)
      {
        //list = TradeController.getInstance().getBuyList(_listId);
        price = list.getPriceForItemId(itemId);

        if(itemId >= 3960 && itemId <= 4026)
        {
          price *= Config.RATE_SIEGE_GUARDS_PRICE;
        }

      }
      /* TODO: Disabled until Leaseholders are rewritten ;-)
            }
            else
            {
              L2ItemInstance li = merchant.findLeaseItem(itemId, 0);
              if (li == null || li.getCount() < cnt)
              {
                cnt = li.getCount();
                if (cnt <= 0)
                {
                  items.remove(i);
                  continue;
                }
                items.get(i).setCount((int)cnt);
              }
              price = li.getPriceToSell(); // lease holder sells the item
              weight = li.getItem().getWeight();
            }

      */
      if(price < 0)
      {
        _log.warning("ERROR, no price found .. wrong buylist ??");
        sendPacket(ActionFailed.STATIC_PACKET);
        return;
      }

      if(price == 0 && !player.isGM() && Config.ONLY_GM_ITEMS_FREE)
      {
        player.sendMessage("Ohh Cheat dont work? You have a problem now!");
        Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried buy item for 0 adena.", Config.DEFAULT_PUNISH);
        return;
      }

      subTotal += (long) count * price; // Before tax
      tax = (int) (subTotal * taxRate);

      // Check subTotal + tax
      if(subTotal + tax > Integer.MAX_VALUE)
      {
        //Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " adena worth of goods.", Config.DEFAULT_PUNISH);
        SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_QUANTITY_THAT_CAN_BE_INPUTTED);
        sendPacket(sm);
        sm = null;
        return;
      }

      weight += (long) count * template.getWeight();
      if(!template.isStackable())
      {
        slots += count;
      }
      else if(player.getInventory().getItemByItemId(itemId) == null)
      {
        slots++;
      }
    }

    if(weight > Integer.MAX_VALUE || weight < 0 || !player.getInventory().validateWeight((int) weight))
    {
      sendPacket(new SystemMessage(SystemMessageId.WEIGHT_LIMIT_EXCEEDED));
      return;
    }

    if(slots > Integer.MAX_VALUE || slots < 0 || !player.getInventory().validateCapacity((int) slots))
    {
      sendPacket(new SystemMessage(SystemMessageId.SLOTS_FULL));
      return;
    }

    // Charge buyer and add tax to castle treasury if not owned by npc clan
    if(subTotal < 0 || !player.reduceAdena("Buy", (int) (subTotal + tax), player.getLastFolkNPC(), false))
    {
      sendPacket(new SystemMessage(SystemMessageId.YOU_NOT_ENOUGH_ADENA));
      return;
    }

    if(merchant != null && merchant.getIsInTown() && merchant.getCastle().getOwnerId() > 0)
    {
      merchant.getCastle().addToTreasury(tax);
    }

    // Proceed the purchase
    for(int i = 0; i < _count; i++)
    {
      int itemId = _items[i * 2 + 0];
      int count = _items[i * 2 + 1];

      if(count < 0)
      {
        count = 0;
      }

      if(!list.containsItemId(itemId))
      {
        Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " sent a false BuyList list_id.", Config.DEFAULT_PUNISH);
        return;
      }

      if(list.countDecrease(itemId))
      {
        if(!list.decreaseCount(itemId, count)) {
          SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_QUANTITY_THAT_CAN_BE_INPUTTED);
          sendPacket(sm);
          sm = null;
          return;
        }
         
      }
      // Add item to Inventory and adjust update packet
      player.getInventory().addItem("Buy", itemId, count, player, merchant);
      /* TODO: Disabled until Leaseholders are rewritten ;-)
            // Update Leaseholder list
            if (_listId >= 1000000)
            {
              L2ItemInstance li = merchant.findLeaseItem(item.getItemId(), 0);
              if (li == null)
                continue;
              if (li.getCount() < item.getCount())
                item.setCount(li.getCount());
              li.setCount(li.getCount() - item.getCount());
              li.updateDatabase();
              price = item.getCount() + li.getPriceToSell();
              L2ItemInstance la = merchant.getLeaseAdena();
              la.setCount(la.getCount() + price);

              la.updateDatabase();
              player.getInventory().addItem(item);
              item.updateDatabase();
            }
      */
    }

    if(merchant != null)
    {
      String html = HtmCache.getInstance().getHtm("data/html/" + htmlFolder + "/" + merchant.getNpcId() + "-bought.htm");

      if(html != null)
      {
        NpcHtmlMessage boughtMsg = new NpcHtmlMessage(merchant.getObjectId());
        boughtMsg.setHtml(html.replaceAll("%objectId%", String.valueOf(merchant.getObjectId())));
        player.sendPacket(boughtMsg);
      }
    }

    StatusUpdate su = new StatusUpdate(player.getObjectId());
View Full Code Here


        || !(target instanceof L2MerchantInstance) // Target not a merchant and not mercmanager
    || !player.isInsideRadius(target, L2NpcInstance.INTERACTION_DISTANCE, false, false)))
      return; // Distance is too far
   
    String htmlFolder = "";
    L2NpcInstance merchant = null;
    if(target instanceof L2MerchantInstance)
    {
      htmlFolder = "merchant";
      merchant = (L2NpcInstance) target;
    }
    else if(target instanceof L2FishermanInstance)
    {
      htmlFolder = "fisherman";
      merchant = (L2NpcInstance) target;
    }
    else
    {
      return;
    }
   
    if(_listId > 1000000) // lease
    {
      if(merchant.getTemplate().npcId != _listId - 1000000)
      {
        sendPacket(ActionFailed.STATIC_PACKET);
        return;
      }
    }

    long totalPrice = 0;
    // Proceed the sell
    for(int i = 0; i < _count; i++)
    {
      int objectId = _items[i * 3 + 0];
      @SuppressWarnings("unused")
      int itemId = _items[i * 3 + 1];
      int count = _items[i * 3 + 2];

      // Check count
      if(count <= 0 || count > Integer.MAX_VALUE)
      {
        //Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " items at the same time.", Config.DEFAULT_PUNISH);
        SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_QUANTITY_THAT_CAN_BE_INPUTTED);
        sendPacket(sm);
        sm = null;
        return;
      }

      L2ItemInstance item = player.checkItemManipulation(objectId, count, "sell");
     
      // Check Item
      if(item == null || !item.getItem().isSellable())
      {
        continue;
      }
     
      long price = item.getReferencePrice() / 2;
      totalPrice += price * count;
     
      // Fix exploit during Sell
      if ((Integer.MAX_VALUE / count) < price || totalPrice > Integer.MAX_VALUE)
      {
        //Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + MAX_ADENA + " adena worth of goods.", Config.DEFAULT_PUNISH);
        SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_QUANTITY_THAT_CAN_BE_INPUTTED);
        sendPacket(sm);
        sm = null;
        return;
      }
     
      // Check totalPrice
      if(totalPrice <= 0)
      {
        //Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " adena worth of goods.", Config.DEFAULT_PUNISH);
        SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_QUANTITY_THAT_CAN_BE_INPUTTED);
        sendPacket(sm);
        sm = null;
        return;
      }
     
      item = player.getInventory().destroyItem("Sell", objectId, count, player, null);

      /* TODO: Disabled until Leaseholders are rewritten ;-)
            int price = item.getReferencePrice()*(int)count/2;
            L2ItemInstance li = null;
            L2ItemInstance la = null;
            if (_listId > 1000000)
            {
              li = merchant.findLeaseItem(item.getItemId(),item.getEnchantLevel());
              la = merchant.getLeaseAdena();
              if (li == null || la == null) continue;
              price = li.getPriceToBuy()*(int)count; // player sells, thus merchant buys.
              if (price > la.getCount()) continue;
            }
      */
      /* TODO: Disabled until Leaseholders are rewritten ;-)
              if (item != null && _listId > 1000000)
              {
                li.setCount(li.getCount()+(int)count);
                li.updateDatabase();
                la.setCount(la.getCount()-price);
                la.updateDatabase();
              }
      */
    }
    player.addAdena("Sell", (int) totalPrice, merchant, false);

    String html = HtmCache.getInstance().getHtm("data/html/" + htmlFolder + "/" + merchant.getNpcId() + "-sold.htm");

    if(html != null)
    {
      NpcHtmlMessage soldMsg = new NpcHtmlMessage(merchant.getObjectId());
      soldMsg.setHtml(html.replaceAll("%objectId%", String.valueOf(merchant.getObjectId())));
      player.sendPacket(soldMsg);
    }

    // Update current load as well
    StatusUpdate su = new StatusUpdate(player.getObjectId());
View Full Code Here

    if(obj == null)
      return;

    if(obj instanceof L2NpcInstance)
    {
      L2NpcInstance temp = (L2NpcInstance) obj;
      temp.setTarget(activeChar);
      temp.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(activeChar.getX(), activeChar.getY(), activeChar.getZ(), 0));
      //      temp.moveTo(player.getX(),player.getY(), player.getZ(), 0 );
    }

  }
View Full Code Here

        L2PcInstance caster = this instanceof L2PcInstance ? (L2PcInstance) this : ((L2Summon) this).getOwner();
        for (L2Object target : targets)
        {
          if (target instanceof L2NpcInstance)
          {
            L2NpcInstance npc = (L2NpcInstance) target;
           
            for (Quest quest : npc.getTemplate().getEventQuests(Quest.QuestEventType.ON_SKILL_USE))
            {
              quest.notifySkillUse(npc, caster, skill);
            }
           
            npc = null;
          }
        }
       
        if (skill.getAggroPoints() > 0)
        {
          for (L2Object spMob : caster.getKnownList().getKnownObjects().values())
            if (spMob instanceof L2NpcInstance)
            {
              L2NpcInstance npcMob = (L2NpcInstance) spMob;
             
              if (npcMob.isInsideRadius(caster, 1000, true, true) && npcMob.hasAI() && npcMob.getAI().getIntention() == AI_INTENTION_ATTACK)
              {
                L2Object npcTarget = npcMob.getTarget();
               
                for (L2Object target : targets)
                  if (npcTarget == target || npcMob == target)
                  {
                    npcMob.seeSpell(caster, target, skill);
                  }
               
                npcTarget = null;
              }
             
View Full Code Here

      return;

    if(!checkAllowed(player))
      return;

    L2NpcInstance buffer = null;
   
    if(!PowerPakConfig.BUFFER_USEBBS && !PowerPakConfig.BUFFER_USECOMMAND){
     
      if(player.getTarget()!=null)
        if(player.getTarget() instanceof L2NpcInstance)
        {
          buffer = (L2NpcInstance)player.getTarget();
          if(buffer.getTemplate().getNpcId()!=PowerPakConfig.BUFFER_NPC)
            buffer=null;
        }
     
      //Possible fix to Buffer - 1
      if (buffer == null)
        return;

      //Possible fix to Buffer - 2
      if (!player.isInsideRadius(buffer, L2NpcInstance.INTERACTION_DISTANCE, false, false))
        return;
     
    }//if buffer is null means that buffer will be applied directly (voice and bbs)
   
    if(parameters.contains("Pet")){
      if(player.getPet()==null){
        return;
      }
    }
   
    StringTokenizer st = new StringTokenizer(parameters, " ");
   
    String currentCommand = st.nextToken();
   
    if(parameters.compareTo("ClearBuffs")==0)
    {
      getOwnBuffs(player.getObjectId()).clear();
      player.sendMessage("Buff set cleared");
    }
    else if(parameters.compareTo("ClearPetBuffs")==0)
    {
      getOwnBuffs(player.getPet().getObjectId()).clear();
      player.sendMessage("Pet Buff set cleared");
    }
    else if(parameters.compareTo("RemoveAll")==0)
    {
      final L2Effect[] effects = player.getAllEffects();
     
      for(L2Effect e : effects)
      {
        if(e.getEffectType()==L2Effect.EffectType.BUFF)
          player.removeEffect(e);
      }
    }
    else if(parameters.compareTo("RemovePetAll")==0)
    {
     
      final L2Effect[] effects = player.getPet().getAllEffects();
     
      for(L2Effect e : effects)
      {
        if(e.getEffectType()==L2Effect.EffectType.BUFF)
          player.getPet().removeEffect(e);
      }
    }
    else if(parameters.startsWith("Chat"))
    {
      String chatIndex = parameters.substring(4).trim();
      synchronized(_visitedPages)
      {
        _visitedPages.put(player.getObjectId(), chatIndex);
      }
     
      chatIndex = "-" + chatIndex;
      String text = HtmCache.getInstance().getHtm("data/html/buffer/buffer" + chatIndex + ".htm");
     
      if(command.startsWith("bbsbuff"))
      {
        text = text.replace("-h custom_do", "bbs_bbs");
        BaseBBSManager.separateAndSend(text, player);
      }
      else
      {
        NpcHtmlMessage htm = new NpcHtmlMessage(player.getLastQuestNpcObject());
        htm.setHtml(text);
        player.sendPacket(htm);
      }
    }
    else if(parameters.startsWith("RestoreAll")) {
      if(player.getAdena()<PowerPakConfig.BUFFER_PRICE*3) {
        player.sendMessage("You don't have enough adena");
        return;
      }
      player.getStatus().setCurrentCp(player.getMaxCp());
      player.getStatus().setCurrentMp(player.getMaxMp());
      player.getStatus().setCurrentHp(player.getMaxHp());
      player.reduceAdena("Buff", PowerPakConfig.BUFFER_PRICE*3, null, true);
    }
    else if(parameters.startsWith("RestorePetAll")) {
      if(player.getAdena()<PowerPakConfig.BUFFER_PRICE*3) {
        player.sendMessage("You don't have enough adena");
        return;
      }
      player.getPet().getStatus().setCurrentMp(player.getPet().getMaxMp());
      player.getPet().getStatus().setCurrentHp(player.getPet().getMaxHp());
      player.reduceAdena("Buff", PowerPakConfig.BUFFER_PRICE*3, null, true);
    }
    else if(parameters.startsWith("RestoreCP")) {
      if(player.getAdena()<PowerPakConfig.BUFFER_PRICE) {
        player.sendMessage("You don't have enough adena");
        return;
      }
      player.getStatus().setCurrentCp(player.getMaxCp());
      player.reduceAdena("Buff", PowerPakConfig.BUFFER_PRICE, null, true);
    }
    else if(parameters.startsWith("RestoreMP")) {
      if(player.getAdena()<PowerPakConfig.BUFFER_PRICE) {
        player.sendMessage("You don't have enough adena");
        return;
      }
      player.getStatus().setCurrentMp(player.getMaxMp());
      player.reduceAdena("Buff", PowerPakConfig.BUFFER_PRICE, null, true);
    }
    else if(parameters.startsWith("RestorePetMP")) {
      if(player.getAdena()<PowerPakConfig.BUFFER_PRICE) {
        player.sendMessage("You don't have enough adena");
        return;
      }
      player.getPet().getStatus().setCurrentMp(player.getPet().getMaxMp());
      player.reduceAdena("Buff", PowerPakConfig.BUFFER_PRICE, null, true);
    }
    else if(parameters.startsWith("RestoreHP")) {
      if(player.getAdena()<PowerPakConfig.BUFFER_PRICE) {
        player.sendMessage("You don't have enough adena");
        return;
      }
      player.getStatus().setCurrentHp(player.getMaxHp());
      player.reduceAdena("Buff", PowerPakConfig.BUFFER_PRICE, null, true);
    }
    else if(parameters.startsWith("RestorePetHP")) {
      if(player.getAdena()<PowerPakConfig.BUFFER_PRICE) {
        player.sendMessage("You don't have enough adena");
        return;
      }
      player.getPet().getStatus().setCurrentHp(player.getPet().getMaxHp());
      player.reduceAdena("Buff", PowerPakConfig.BUFFER_PRICE, null, true);
    }
    else if(parameters.startsWith("MakeBuffs") || parameters.startsWith("RestoreBuffs"))
    {
      String buffName = parameters.substring(9).trim();
      int totaladena = 0;
      ArrayList<Buff> buffs = null;
      if(parameters.startsWith("RestoreBuffs"))
        buffs = getOwnBuffs(player.getObjectId());
      else 
        buffs = BuffTable.getInstance().getBuffsForName(buffName);
      if(buffs!=null && buffs.size()==1)
      {
        if(!getOwnBuffs(player.getObjectId()).contains(buffs.get(0)))
          getOwnBuffs(player.getObjectId()).add(buffs.get(0));
      }
      if(buffs==null || buffs.size()==0){
        player.sendMessage("Your buff set is missing");
        return;
      }
      for(Buff buff: buffs)
      {
       
        L2Skill skill = SkillTable.getInstance().getInfo(buff._skillId, buff._skillLevel);
        if(skill!=null)
        {
          if(player.getLevel()>= buff._minLevel && player.getLevel()<=buff._maxLevel)
          {
            if(buff._price>0)
            {
              totaladena+=buff._price;
              if(player.getAdena()<totaladena)
              {
                player.sendMessage("You don't have enough adena");
                break;
              }
            }
            if(!buff._force && buffer!=null)
            {
              buffer.setBusy(true);
              buffer.setCurrentMp(buffer.getMaxMp());
              buffer.setTarget(player);
              //buffer.doCast(skill);
              skill.getEffects(buffer, player,false,false,false);
              buffer.setBusy(false);
            } else
              skill.getEffects(player, player,false,false,false);
          }
          try
          {
            Thread.sleep(100); // Delay for the packet...
          }
          catch(InterruptedException e)
          {
            if(Config.ENABLE_ALL_EXCEPTIONS)
              e.printStackTrace();
          }
        }
      }
      if(totaladena>0)
        player.reduceAdena("Buff", totaladena, null, true);
      if(_visitedPages.get(player.getObjectId())!=null)
        handleCommand(command,player,"Chat "+_visitedPages.get(player.getObjectId()));
      else
        useVoicedCommand(PowerPakConfig.BUFFER_COMMAND, player, "");
    }else if(parameters.startsWith("MakePetBuffs") || parameters.startsWith("RestorePetBuffs"))
    {
      if(player.getPet()==null){
        player.sendMessage("You have not a summoned pet");
        return;
      }
     
      String buffName = parameters.substring(12).trim();
     
      int totaladena = 0;
      ArrayList<Buff> buffs = null;
      if(parameters.startsWith("RestorePetBuffs"))
        buffs = getOwnBuffs(player.getPet().getObjectId());
      else 
        buffs = BuffTable.getInstance().getBuffsForName(buffName);
     
      if(buffs!=null && buffs.size()==1)
      {
       
        if(!getOwnBuffs(player.getPet().getObjectId()).contains(buffs.get(0))){
          getOwnBuffs(player.getPet().getObjectId()).add(buffs.get(0));
        }
      }
      if(buffs==null || buffs.size()==0){
        player.sendMessage("Your pet buff set is missing");
        return;
      }
      for(Buff buff: buffs)
      {
       
        L2Skill skill = SkillTable.getInstance().getInfo(buff._skillId, buff._skillLevel);
        if(skill!=null)
        {
          if(player.getLevel()>= buff._minLevel && player.getLevel()<=buff._maxLevel)
          {
            if(buff._price>0)
            {
              totaladena+=buff._price;
              if(player.getAdena()<totaladena)
              {
                player.sendMessage("You don't have enough adena");
                break;
              }
            }
            if(!buff._force && buffer!=null)
            {
              buffer.setBusy(true);
              buffer.setCurrentMp(buffer.getMaxMp());
              buffer.setTarget(player.getPet());
              skill.getEffects(buffer, player.getPet(),false,false,false);
              //buffer.doCast(skill);
              buffer.setBusy(false);
            } else
              skill.getEffects(player, player.getPet(),false,false,false);
          }
          try
          {
            Thread.sleep(100); // Delay for the packet...
          }
          catch(InterruptedException e)
          {
            if(Config.ENABLE_ALL_EXCEPTIONS)
              e.printStackTrace();
          }
        }
      }
      if(totaladena>0)
        player.reduceAdena("Buff", totaladena, null, true);
      if(_visitedPages.get(player.getObjectId())!=null)
        handleCommand(command,player,"Chat "+_visitedPages.get(player.getObjectId()));
      else
        useVoicedCommand(PowerPakConfig.BUFFER_COMMAND, player, "");
     
     
    //SCHEMAS
    }else if (currentCommand.startsWith("menu"))
    {
      NpcHtmlMessage html = new NpcHtmlMessage(1);
      html.setFile(PARENT_DIR + "menu.htm");
      sendHtmlMessage(player, html);
    }
    // handles giving effects {support player, support pet, givebuffs}
    else if (currentCommand.startsWith("support"))
    {
      String targettype = st.nextToken();
      showGiveBuffsWindow(player, targettype);
    }
    else if (currentCommand.startsWith("givebuffs"))
    {
      String targettype = st.nextToken();
      String scheme_key = st.nextToken();
      int cost = Integer.parseInt(st.nextToken());
      if (cost == 0 || cost <= player.getInventory().getAdena())
      {
        L2Character target = player;
        if (targettype.equalsIgnoreCase("pet"))
          target = player.getPet();
       
        if (target != null)
        {
          for (L2Skill sk : CharSchemesTable.getInstance().getScheme(player.getObjectId(), scheme_key))
            if(buffer!=null)
            {
              buffer.setBusy(true);
              buffer.setCurrentMp(buffer.getMaxMp());
              buffer.setTarget(target);
              //buffer.doCast(skill);
              sk.getEffects(buffer, target,false,false,false);
              buffer.setBusy(false);
            } else
              sk.getEffects(target, target,false,false,false);
         
            //sk.getEffects(buffer, target);
         
View Full Code Here

            // Check if player's clan is attacker
            List<L2NpcInstance> flags = castle.getSiege().getFlag(player.getClan());
            if(flags != null && !flags.isEmpty())
            {
              // Spawn to flag - Need more work to get player to the nearest flag
              L2NpcInstance flag = flags.get(0);
              return new Location(flag.getX(), flag.getY(), flag.getZ());
            }
            flags = null;
          }
        }

        else if(fort != null && fort.getFortId() > 0)
        {
          // teleporting to castle or fortress
          // is on caslte with siege and player's clan is defender
          if(teleportWhere == TeleportWhereType.Fortress || teleportWhere == TeleportWhereType.Fortress && fort.getSiege().getIsInProgress() && fort.getSiege().getDefenderClan(player.getClan()) != null)
          {
            coord = fort.getZone().getSpawn();
            return new Location(coord[0], coord[1], coord[2]);
          }

          if(teleportWhere == TeleportWhereType.SiegeFlag && fort.getSiege().getIsInProgress())
          {
            // check if player's clan is attacker
            List<L2NpcInstance> flags = fort.getSiege().getFlag(player.getClan());

            if(flags != null && !flags.isEmpty())
            {
              // spawn to flag
              L2NpcInstance flag = flags.get(0);
              return new Location(flag.getX(), flag.getY(), flag.getZ());
            }

            flags = null;
          }
        }
View Full Code Here

    if (player == null)
    {
      return;
    }
   
    L2NpcInstance buffer = null;
    if (player.getTarget() != null)
    {
      if (player.getTarget() instanceof L2NpcInstance)
      {
        buffer = (L2NpcInstance) getbufferType(efector);
      }
    }
   
    if (buffer == null)
    {
      return;
    }
   
    buffer.setTarget(player);
   
    ArrayList<Buff> _templateBuffs = new ArrayList<Buff>();
    _templateBuffs = BuffTable.getInstance().getBuffsForID(_templateId);
    if ((_templateBuffs == null) || (_templateBuffs.size() == 0))
    {
      return;
    }
    int _priceTotal = 0;
    for (Buff _buff : _templateBuffs)
    {
      if (paymentRequired)
      {
        if (!_buff.checkPrice(player))
        {
          player.sendMessage("Not enough Adena");
          return;
        }
        _priceTotal += _buff._price;
      }
     
      if (_buff._force || (player.getFirstEffect(_buff._skill) == null))
      {
        buffer.setBusy(true);
        buffer.setCurrentMp(buffer.getMaxMp());
        buffer.setTarget(player);
        buffer.doCast(_buff._skill);
        buffer.setBusy(false);
      }
      else
      {
        _buff._skill.getEffects(player, player, false, false, false);
      }
View Full Code Here

   * <BR>
   * @return
   */
  public L2NpcInstance doSpawn()
  {
    L2NpcInstance mob = null;
    try
    {
      // Check if the L2Spawn is not a L2Pet or L2Minion spawn
      if(_template.type.equalsIgnoreCase("L2Pet") || _template.type.equalsIgnoreCase("L2Minion"))
      {
View Full Code Here

        }

        // Add the new spawn information to the spawn table, but do not
        // store it.
        SpawnTable.getInstance().addNewSpawn(newSpawn, false);
        L2NpcInstance npcInst = null;

        if(spawnInst._spawnCount == 1)
        {
          npcInst = newSpawn.doSpawn();
          npcInst.setXYZ(npcInst.getX(), npcInst.getY(), npcInst.getZ());
          spawnInst.addNpcInstance(npcInst);
        }
        else
        {
          for(int i = 0; i < spawnInst._spawnCount; i++)
          {
            npcInst = newSpawn.doSpawn();

            // To prevent spawning of more than one NPC in the exact
            // same spot,
            // move it slightly by a small random offset.
            npcInst.setXYZ(npcInst.getX() + Rnd.nextInt(50), npcInst.getY() + Rnd.nextInt(50), npcInst.getZ());

            // Add the NPC instance to the list of managed
            // instances.
            spawnInst.addNpcInstance(npcInst);
          }
        }

        String nearestTown = MapRegionTable.getInstance().getClosestTownName(npcInst);

        // Announce to all players that the spawn has taken place, with
        // the nearest town location.
        if(spawnInst.isBroadcasting() && (npcInst != null))
        {
          Announcements.getInstance().announceToAll("The " + npcInst.getName() + " has spawned near " + nearestTown + "!");
        }

        if(Config.DEBUG)
        {
          _log.info("AutoSpawnHandler: Spawned NPC ID " + spawnInst.getNpcId() + " at " + x + ", " + y + ", " + z + " (Near " + nearestTown + ") for " + spawnInst.getRespawnDelay() / 60000 + " minute(s).");
View Full Code Here

  {
    if (event.equalsIgnoreCase("room1_spawn"))
    {
      for (int i = 0; i <= 5; i++)
      {
        L2NpcInstance mob = addSpawn(_mobLoc[i][0],_mobLoc[i][1],_mobLoc[i][2],_mobLoc[i][3],_mobLoc[i][4],false,0);
        synchronized(_Room1Mobs){
          _Room1Mobs.add(mob);
        }
       
      }
    }
    else if (event.equalsIgnoreCase("room2_spawn"))
    {
      for (int i = 6; i <= 6; i++)
      {
        L2NpcInstance mob = addSpawn(_mobLoc[i][0],_mobLoc[i][1],_mobLoc[i][2],_mobLoc[i][3],_mobLoc[i][4],false,0);
        synchronized(_Room2Mobs){
          _Room2Mobs.add(mob);
        }
       
      }
    }
    else if (event.equalsIgnoreCase("room1_del"))
    {
      synchronized(_Room1Mobs){
        for (L2NpcInstance mob : _Room1Mobs)
        {
          if (mob != null)
            mob.deleteMe();
        }
        _Room1Mobs.clear();
      }     
    }
    else if (event.equalsIgnoreCase("room2_del"))
    {
      synchronized(_Room2Mobs){
        for (L2NpcInstance mob : _Room2Mobs)
        {
          if (mob != null)
            mob.deleteMe();
        }
        _Room2Mobs.clear();
      }   
    }
    else if (event.equalsIgnoreCase("kama_spawn"))
    {
      L2NpcInstance mob = addSpawn(Config.K3_FINALBOSS_ID,Config.K3_FINALBOSS_X,Config.K3_FINALBOSS_Y,Config.K3_FINALBOSS_Z,50177,false,0);
      synchronized(_KamaMob){
        _KamaMob.add(mob)
      }
    }
    else if (event.equalsIgnoreCase("kama_del"))
    {
      synchronized(_KamaMob){
        for (L2NpcInstance mob : _KamaMob)
        {
          if (mob != null)
            mob.deleteMe();
        }
        _KamaMob.clear();
      }   
    }
    else if (event.equalsIgnoreCase("clean"))
    {
      _KilMinion = 0;
      _KilMinion2 = 0;
      _KilMinion3 = 0;
    }
    /*else if (event.equalsIgnoreCase("close_room12"))
    {
      for (int i = 7; i <= 9; i++)
      {
        L2NpcInstance mob = addSpawn(_mobLoc[i][0],_mobLoc[i][1],_mobLoc[i][2],_mobLoc[i][3],_mobLoc[i][4],false,0);
        synchronized(_Doors12Mobs){
        _Doors12Mobs.add(mob);
        }
      }
    }
    else if (event.equalsIgnoreCase("open_room12"))
    {
      synchronized(_Doors12Mobs){
        for (L2NpcInstance mob : _Doors12Mobs)
        {
          if (mob != null)
            mob.deleteMe();
        }
        _Doors12Mobs.clear();
      }
    }*/
    else if (event.equalsIgnoreCase("minions_death"))
    {   
      cancelQuestTimer("room1_spawn", npc, null);
      cancelQuestTimer("room2_spawn", npc, null);
      startQuestTimer("room1_del", 1000, npc, null);
      startQuestTimer("room2_del", 1000, npc, null);
    }
    else if (event.equalsIgnoreCase("port_out"))
    {   
      portOutAllPlayers();
    }
    else if (event.equalsIgnoreCase("kama_death"))
    {
      cancelQuestTimers("timelimit");
      startQuestTimer("kama_del", 1000, npc, null);
      // startQuestTimer("open_room12", 1000, npc, null);
      startQuestTimer("spawn_cubes", 1000, npc, null);
      startQuestTimer("clean", 1000, npc, null);
     
      startQuestTimer("port_out", 25000, npc, null);
      startQuestTimer("despawn_cubes", 26250, npc, null);
      startQuestTimer("kamaloka_unlock", 26500, npc, null);
    }
    else if (event.equalsIgnoreCase("spawn_cubes"))
    {
      L2NpcInstance cubes = addSpawn(CUBE,Config.K3_FINALBOSS_X,Config.K3_FINALBOSS_Y,Config.K3_FINALBOSS_Z,16384,false,900000); //cube out spawn
      synchronized(_Cubes){
        _Cubes.add(cubes)
      }
    }
    else if (event.equalsIgnoreCase("despawn_cubes"))
    {
      synchronized(_Cubes){
        for (L2NpcInstance cubes : _Cubes)
        {
          if (cubes != null)
            cubes.deleteMe();
        }
        _Cubes.clear();
      }
    }
    else if (event.equalsIgnoreCase("kamaloka_unlock"))
View Full Code Here

TOP

Related Classes of com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance

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.