Package lineage2.gameserver.model.entity.residence

Examples of lineage2.gameserver.model.entity.residence.Castle


    @Override
    public void runImpl()
    {
      for (String element : ZONES)
      {
        Zone zone = ReflectionUtils.getZone(element);
        NpcInstance npc = getKasha(zone);
        if ((npc != null) && (zone != null))
        {
          int curseLvl = 0;
          int yearningLvl = 0;
          int despairLvl = 0;
          for (Creature c : zone.getObjects())
          {
            if (c.isMonster() && !c.isDead())
            {
              if (getRealNpcId((NpcInstance) c) == mobs[0])
              {
                curseLvl++;
              }
              else if (getRealNpcId((NpcInstance) c) == mobs[1])
              {
                yearningLvl++;
              }
              else if (getRealNpcId((NpcInstance) c) == mobs[2])
              {
                despairLvl++;
              }
            }
          }
          if ((yearningLvl > 0) || (curseLvl > 0) || (despairLvl > 0))
          {
            for (Creature cha : zone.getInsidePlayables())
            {
              boolean casted = false;
              if (curseLvl > 0)
              {
                addEffect(npc, cha.getPlayer(), SkillTable.getInstance().getInfo(_buffs[0], curseLvl), true);
View Full Code Here


    final int y = Integer.parseInt(param[1]);
    final int z = Integer.parseInt(param[2]);
    final int castleId = (param.length > 4) ? Integer.parseInt(param[3]) : 0;
    if (player.getReflection().isDefault())
    {
      final Castle castle = (castleId > 0) ? ResidenceHolder.getInstance().getResidence(Castle.class, castleId) : null;
      if ((castle != null) && castle.getSiegeEvent().isInProgress())
      {
        player.sendPacket(Msg.YOU_CANNOT_TELEPORT_TO_A_VILLAGE_THAT_IS_IN_A_SIEGE);
        return;
      }
    }
View Full Code Here

    public void onZoneEnter(Zone zone, Creature cha)
    {
      if (zone.getParams() == null || !cha.isPlayer())
        return;

      Castle castle = ResidenceHolder.getInstance().getResidence(zone.getTemplate().getIndex());

      if (castle != null)
      { 
        if(_side.ordinal()==1 || _side.ordinal()==0)
        {
View Full Code Here

    public void onZoneEnter(Zone zone, Creature cha)
    {
      if (zone.getParams() == null || !cha.isPlayer())
        return;

      Castle castle = ResidenceHolder.getInstance().getResidence(zone.getTemplate().getIndex());

      if (castle != null)
      {
        if(_side.ordinal()==1 || _side.ordinal()==0)
        {
View Full Code Here

    PcInventory inventory = activeChar.getInventory();
   
    long totalPrice = 0;
   
    NpcInstance merchant = activeChar.getLastNpc();
    Castle castle = merchant != null ? merchant.getCastle(activeChar) : null;
   
    inventory.writeLock();
    try
    {
      long tax = SafeMath.mulAndCheck(entry.getTax(), _amount);
     
      long slots = 0;
      long weight = 0;
      for (MultiSellIngredient i : entry.getProduction())
      {
        if (i.getItemId() <= 0)
        {
          continue;
        }
        ItemTemplate item = ItemHolder.getInstance().getTemplate(i.getItemId());
       
        weight = SafeMath.addAndCheck(weight, SafeMath.mulAndCheck(SafeMath.mulAndCheck(i.getItemCount(), _amount), item.getWeight()));
        if (item.isStackable())
        {
          if (inventory.getItemByItemId(i.getItemId()) == null)
          {
            slots++;
          }
        }
        else
        {
          slots = SafeMath.addAndCheck(slots, _amount);
        }
      }
     
      if (!inventory.validateWeight(weight))
      {
        activeChar.sendPacket(Msg.YOU_HAVE_EXCEEDED_THE_WEIGHT_LIMIT);
        activeChar.sendActionFailed();
        return;
      }
     
      if (!inventory.validateCapacity(slots))
      {
        activeChar.sendPacket(Msg.YOUR_INVENTORY_IS_FULL);
        activeChar.sendActionFailed();
        return;
      }
     
      if (entry.getIngredients().size() == 0)
      {
        activeChar.sendActionFailed();
        activeChar.setMultisell(null);
        return;
      }
     
      for (MultiSellIngredient ingridient : entry.getIngredients())
      {
        int ingridientItemId = ingridient.getItemId();
        long ingridientItemCount = ingridient.getItemCount();
        int ingridientEnchant = ingridient.getItemEnchant();
        long totalAmount = !ingridient.getMantainIngredient() ? SafeMath.mulAndCheck(ingridientItemCount, _amount) : ingridientItemCount;
       
        if (ingridientItemId == ItemTemplate.ITEM_ID_CLAN_REPUTATION_SCORE)
        {
          if (activeChar.getClan() == null)
          {
            activeChar.sendPacket(Msg.YOU_ARE_NOT_A_CLAN_MEMBER);
            return;
          }
         
          if (activeChar.getClan().getReputationScore() < totalAmount)
          {
            activeChar.sendPacket(Msg.THE_CLAN_REPUTATION_SCORE_IS_TOO_LOW);
            return;
          }
         
          if (activeChar.getClan().getLeaderId() != activeChar.getObjectId())
          {
            activeChar.sendPacket(new SystemMessage(SystemMessage.S1_IS_NOT_A_CLAN_LEADER).addString(activeChar.getName()));
            return;
          }
          if (!ingridient.getMantainIngredient())
          {
            items.add(new ItemData(ingridientItemId, totalAmount, null));
          }
        }
        else if (ingridientItemId == ItemTemplate.ITEM_ID_PC_BANG_POINTS)
        {
          if (activeChar.getPcBangPoints() < totalAmount)
          {
            activeChar.sendPacket(Msg.YOU_ARE_SHORT_OF_ACCUMULATED_POINTS);
            return;
          }
          if (!ingridient.getMantainIngredient())
          {
            items.add(new ItemData(ingridientItemId, totalAmount, null));
          }
        }
        else if (ingridientItemId == ItemTemplate.ITEM_ID_FAME)
        {
          if (activeChar.getFame() < totalAmount)
          {
            activeChar.sendPacket(Msg.NOT_ENOUGH_FAME_POINTS);
            return;
          }
          if (!ingridient.getMantainIngredient())
          {
            items.add(new ItemData(ingridientItemId, totalAmount, null));
          }
        }
        else
        {
          ItemTemplate template = ItemHolder.getInstance().getTemplate(ingridientItemId);
         
          if (!template.isStackable())
          {
            for (int i = 0; i < (ingridientItemCount * _amount); i++)
            {
              List<ItemInstance> list = inventory.getItemsByItemId(ingridientItemId);
              if (keepenchant)
              {
                ItemInstance itemToTake = null;
                for (ItemInstance item : list)
                {
                  ItemData itmd = new ItemData(item.getItemId(), item.getCount(), item);
                  if (((item.getEnchantLevel() == ingridientEnchant) || !item.getTemplate().isEquipment()) && !items.contains(itmd) && item.canBeExchanged(activeChar))
                  {
                    itemToTake = item;
                    break;
                  }
                }
               
                if (itemToTake == null)
                {
                  activeChar.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
                  return;
                }
               
                if (!ingridient.getMantainIngredient())
                {
                  items.add(new ItemData(itemToTake.getItemId(), 1, itemToTake));
                }
              }
              else
              {
                ItemInstance itemToTake = null;
                for (ItemInstance item : list)
                {
                  if (!items.contains(new ItemData(item.getItemId(), item.getCount(), item)) && ((itemToTake == null) || (item.getEnchantLevel() < itemToTake.getEnchantLevel())) && !item.isShadowItem() && !item.isTemporalItem() && (!item.isAugmented() || Config.ALT_ALLOW_DROP_AUGMENTED) && ItemFunctions.checkIfCanDiscard(activeChar, item))
                  {
                    itemToTake = item;
                    if (itemToTake.getEnchantLevel() == 0)
                    {
                      break;
                    }
                  }
                }
               
                if (itemToTake == null)
                {
                  activeChar.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
                  return;
                }
               
                if (!ingridient.getMantainIngredient())
                {
                  items.add(new ItemData(itemToTake.getItemId(), 1, itemToTake));
                }
              }
            }
          }
          else
          {
            if (ingridientItemId == 57)
            {
              totalPrice = SafeMath.addAndCheck(totalPrice, SafeMath.mulAndCheck(ingridientItemCount, _amount));
            }
            ItemInstance item = inventory.getItemByItemId(ingridientItemId);
           
            if ((item == null) || (item.getCount() < totalAmount))
            {
              activeChar.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
              return;
            }
           
            if (!ingridient.getMantainIngredient())
            {
              items.add(new ItemData(item.getItemId(), totalAmount, item));
            }
          }
        }
       
        if (activeChar.getAdena() < totalPrice)
        {
          activeChar.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_ADENA);
          return;
        }
      }
     
      int enchantLevel = 0;
      ItemAttributes attributes = null;
      int augmentationId = 0;
      for (ItemData id : items)
      {
        long count = id.getCount();
        if (count > 0)
        {
          if (id.getId() == ItemTemplate.ITEM_ID_CLAN_REPUTATION_SCORE)
          {
            activeChar.getClan().incReputation((int) -count, false, "MultiSell");
            activeChar.sendPacket(new SystemMessage(SystemMessage.S1_POINTS_HAVE_BEEN_DEDUCTED_FROM_THE_CLAN_REPUTATION_SCORE).addNumber(count));
          }
          else if (id.getId() == ItemTemplate.ITEM_ID_PC_BANG_POINTS)
          {
            activeChar.reducePcBangPoints((int) count);
          }
          else if (id.getId() == ItemTemplate.ITEM_ID_FAME)
          {
            activeChar.setFame(activeChar.getFame() - (int) count, "MultiSell");
            activeChar.sendPacket(new SystemMessage(SystemMessage.S2_S1_HAS_DISAPPEARED).addNumber(count).addString("Fame"));
          }
          else
          {
            if (inventory.destroyItem(id.getItem(), count))
            {
              if (keepenchant && id.getItem().canBeEnchanted())
              {
                enchantLevel = id.getItem().getEnchantLevel();
                attributes = id.getItem().getAttributes();
                augmentationId = id.getItem().getAugmentationId();
              }
             
              activeChar.sendPacket(SystemMessage2.removeItems(id.getId(), count));
              continue;
            }
            return;
          }
        }
      }
     
      if ((tax > 0) && !notax)
      {
        if (castle != null)
        {
          activeChar.sendMessage(new CustomMessage("trade.HavePaidTax", activeChar).addNumber(tax));
          if ((merchant != null) && (merchant.getReflection() == ReflectionManager.DEFAULT))
          {
            castle.addToTreasury(tax, true, false);
          }
        }
      }
      double rndNum = 100.0D * Rnd.nextDouble();
      double chance = 0.0D;
      double chanceFrom = 0.0D;
      cycle1 :
      for (MultiSellIngredient in : entry.getProduction())
      {
        if (in.getItemId() <= 0)
        {
          if (in.getItemId() == ItemTemplate.ITEM_ID_CLAN_REPUTATION_SCORE)
          {
            activeChar.getClan().incReputation((int) (in.getItemCount() * _amount), false, "MultiSell");
            activeChar.sendPacket(new SystemMessage(SystemMessage.YOUR_CLAN_HAS_ADDED_1S_POINTS_TO_ITS_CLAN_REPUTATION_SCORE).addNumber(in.getItemCount() * _amount));
          }
          else if (in.getItemId() == ItemTemplate.ITEM_ID_PC_BANG_POINTS)
          {
            activeChar.addPcBangPoints((int) (in.getItemCount() * _amount), false);
          }
          else if (in.getItemId() == ItemTemplate.ITEM_ID_FAME)
          {
            activeChar.setFame(activeChar.getFame() + (int) (in.getItemCount() * _amount), "MultiSell");
          }
        }
        else if (ItemHolder.getInstance().getTemplate(in.getItemId()).isStackable())
        {
         
          long total = SafeMath.mulAndLimit(in.getItemCount(), _amount);
          if (in.getChance() >= 0)
          {
            chance = in.getChance();
           
            if ((rndNum >= chanceFrom) && (rndNum <= (chance + chanceFrom)))
            {
              ItemFunctions.addItem(activeChar, in.getItemId(), total, true);
              break;
            }
            chanceFrom += chance;
          }
          else
          {
            ItemFunctions.addItem(activeChar, in.getItemId(), total, true);
          }
         
        }
        else
        {
          for (int i = 0; i < _amount; i++)
          {
            ItemInstance product = ItemFunctions.createItem(in.getItemId());
           
            if (keepenchant && product.canBeEnchanted())
            {
              if (in.getChance() >= 0)
              {
                chance = in.getChance();             
               
                if ((rndNum >= chanceFrom) && (rndNum <= (chance + chanceFrom)))
                {
                  product.setEnchantLevel(enchantLevel);
                  if (attributes != null)
                  {
                    product.setAttributes(attributes.clone());
                  }
                  if (augmentationId != 0)
                  {
                    product.setAugmentationId(augmentationId);
                  }
                  inventory.addItem(product);
                  activeChar.sendPacket(SystemMessage2.obtainItems(product));
                  break cycle1;
                 
                }
                chanceFrom += chance;
              }
              else
              {
                product.setEnchantLevel(enchantLevel);
                if (attributes != null)
                {
                  product.setAttributes(attributes.clone());
                }
                if (augmentationId != 0)
                {
                  product.setAugmentationId(augmentationId);
                }
                inventory.addItem(product);
                activeChar.sendPacket(SystemMessage2.obtainItems(product));
              }
            }
            else
            {
              product.setEnchantLevel(in.getItemEnchant());
              product.setAttributes(in.getItemAttributes().clone());
              if (in.getChance() >= 0)
              {
                chance = in.getChance();
               
                if ((rndNum >= chanceFrom) && (rndNum <= (chance + chanceFrom)))
                {
                  ItemFunctions.addItem(activeChar, in.getItemId(), in.getItemCount(), true);
                  break;
                }
                chanceFrom += chance;
              }
              else
              {
                inventory.addItem(product);
                activeChar.sendPacket(SystemMessage2.obtainItems(product));
              }
            }
          }
        }
      }
    }
    catch (ArithmeticException ae)
    {
      sendPacket(Msg.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED);
      return;
    }
    finally
    {
      inventory.writeUnlock();
    }
   
    activeChar.sendChanges();
   
    if (!list1.isShowAll())
    {
      MultiSellHolder.getInstance().SeparateAndSend(list1, activeChar, castle == null ? 0 : castle.getTaxRate());
    }
  }
View Full Code Here

    return null;
  }
 
  private boolean check(Player player)
  {
    Castle castle = ResidenceHolder.getInstance().getResidenceByObject(Castle.class, player);
    if (castle == null)
    {
      return false;
    }
    Clan clan = player.getClan();
    if (clan == null)
    {
      return false;
    }
    if (clan.getClanId() != castle.getOwnerId())
    {
      return false;
    }
    return true;
  }
View Full Code Here

    return true;
  }
 
  private String enterPrison(Player player)
  {
    Castle castle = ResidenceHolder.getInstance().getResidenceByObject(Castle.class, player);
    if ((castle == null) || (castle.getOwner() != player.getClan()))
    {
      return "gludio_prison_keeper_q0512_01a.htm";
    }
    if (!areMembersSameClan(player))
    {
      return "gludio_prison_keeper_q0512_01a.htm";
    }
    if (player.canEnterInstance(INSTANCE_ZONE_ID))
    {
      InstantZone iz = InstantZoneHolder.getInstance().getInstantZone(INSTANCE_ZONE_ID);
      Prison prison = null;
      if (!_prisons.isEmpty())
      {
        prison = _prisons.get(castle.getId());
        if ((prison != null) && prison.isLocked())
        {
          player.sendPacket(new SystemMessage(SystemMessage.C1_MAY_NOT_RE_ENTER_YET).addName(player));
          return null;
        }
      }
      prison = new Prison(castle.getId(), iz);
      _prisons.put(prison.getCastleId(), prison);
      Reflection r = ReflectionManager.getInstance().get(prison.getReflectionId());
      r.setReturnLoc(player.getLoc());
      for (Player member : player.getParty().getPartyMembers())
      {
View Full Code Here

    }
    if (player.getClan() == null)
    {
      return;
    }
    Castle castle = ResidenceHolder.getInstance().getResidence(Castle.class, _unitId);
    if ((castle == null) || (player.getClan().getCastle() != castle.getId()))
    {
      player.sendActionFailed();
      return;
    }
    CastleSiegeEvent siegeEvent = castle.getSiegeEvent();
    SiegeClanObject siegeClan = siegeEvent.getSiegeClan(CastleSiegeEvent.DEFENDERS_WAITING, _clanId);
    if (siegeClan == null)
    {
      siegeClan = siegeEvent.getSiegeClan(SiegeEvent.DEFENDERS, _clanId);
    }
View Full Code Here

    return true;
  }
 
  private boolean check(Player player)
  {
    Castle castle = ResidenceHolder.getInstance().getResidenceByObject(Castle.class, player);
    if (castle == null)
    {
      return false;
    }
    Clan clan = player.getClan();
    if (clan == null)
    {
      return false;
    }
    if (clan.getClanId() != castle.getOwnerId())
    {
      return false;
    }
    return true;
  }
View Full Code Here

    if (!activeChar.isGM() && ((manor == null) || !activeChar.isInRange(manor, Creature.INTERACTION_DISTANCE)))
    {
      activeChar.sendActionFailed();
      return;
    }
    Castle castle = ResidenceHolder.getInstance().getResidence(Castle.class, _manorId);
    if (castle == null)
    {
      return;
    }
    int slots = 0;
    long weight = 0;
    try
    {
      for (int i = 0; i < _count; i++)
      {
        int itemId = _items[i];
        long count = _itemQ[i];
        CropProcure crop = castle.getCrop(itemId, CastleManorManager.PERIOD_CURRENT);
        if (crop == null)
        {
          return;
        }
        int rewradItemId = Manor.getInstance().getRewardItem(itemId, castle.getCrop(itemId, CastleManorManager.PERIOD_CURRENT).getReward());
        long rewradItemCount = Manor.getInstance().getRewardAmountPerCrop(castle.getId(), itemId, castle.getCropRewardType(itemId));
        rewradItemCount = SafeMath.mulAndCheck(count, rewradItemCount);
        ItemTemplate template = ItemHolder.getInstance().getTemplate(rewradItemId);
        if (template == null)
        {
          return;
        }
        weight = SafeMath.addAndCheck(weight, SafeMath.mulAndCheck(count, template.getWeight()));
        if (!template.isStackable() || (activeChar.getInventory().getItemByItemId(itemId) == null))
        {
          slots++;
        }
      }
    }
    catch (ArithmeticException ae)
    {
      sendPacket(Msg.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED);
      return;
    }
    activeChar.getInventory().writeLock();
    try
    {
      if (!activeChar.getInventory().validateWeight(weight))
      {
        sendPacket(Msg.YOU_HAVE_EXCEEDED_THE_WEIGHT_LIMIT);
        return;
      }
      if (!activeChar.getInventory().validateCapacity(slots))
      {
        sendPacket(Msg.YOUR_INVENTORY_IS_FULL);
        return;
      }
      _procureList = castle.getCropProcure(CastleManorManager.PERIOD_CURRENT);
      for (int i = 0; i < _count; i++)
      {
        int itemId = _items[i];
        long count = _itemQ[i];
        int rewradItemId = Manor.getInstance().getRewardItem(itemId, castle.getCrop(itemId, CastleManorManager.PERIOD_CURRENT).getReward());
        long rewradItemCount = Manor.getInstance().getRewardAmountPerCrop(castle.getId(), itemId, castle.getCropRewardType(itemId));
        rewradItemCount = SafeMath.mulAndCheck(count, rewradItemCount);
        if (!activeChar.getInventory().destroyItemByItemId(itemId, count))
        {
          continue;
        }
View Full Code Here

TOP

Related Classes of lineage2.gameserver.model.entity.residence.Castle

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.