Package lineage2.gameserver.model.entity.residence

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


        return;
      }
     
      if (clan.getCastle() > 0)
      {
        Castle relatedCastle = null;
        for (Castle castle : fortress.getRelatedCastles())
        {
          if (castle.getId() == clan.getCastle())
          {
            relatedCastle = castle;
          }
        }
       
        if (relatedCastle != null)
        {
          if (fortress.getContractState() == Fortress.CONTRACT_WITH_CASTLE)
          {
            showChatWindow(player, "residence2/fortress/fortress_ordery022.htm");
            return;
          }
         
          if (relatedCastle.getSiegeEvent().isRegistrationOver())
          {
            showChatWindow(player, "residence2/fortress/fortress_ordery022.htm");
            return;
          }
        }
View Full Code Here


  private long[] _cropData; // data to send, size:_count*14

  public ExShowCropSetting(int manorId)
  {
    _manorId = manorId;
    Castle c = ResidenceHolder.getInstance().getResidence(Castle.class, _manorId);
    List<Integer> crops = Manor.getInstance().getCropsForCastle(_manorId);
    _count = crops.size();
    _cropData = new long[_count * 14];
    int i = 0;
    for (int cr : crops)
    {
      _cropData[i * 14 + 0] = cr;
      _cropData[i * 14 + 1] = Manor.getInstance().getSeedLevelByCrop(cr);
      _cropData[i * 14 + 2] = Manor.getInstance().getRewardItem(cr, 1);
      _cropData[i * 14 + 3] = Manor.getInstance().getRewardItem(cr, 2);
      _cropData[i * 14 + 4] = Manor.getInstance().getCropPuchaseLimit(cr);
      _cropData[i * 14 + 5] = 0; // Looks like not used
      _cropData[i * 14 + 6] = Manor.getInstance().getCropBasicPrice(cr) * 60 / 100;
      _cropData[i * 14 + 7] = Manor.getInstance().getCropBasicPrice(cr) * 10;
      CropProcure cropPr = c.getCrop(cr, CastleManorManager.PERIOD_CURRENT);
      if (cropPr != null)
      {
        _cropData[i * 14 + 8] = cropPr.getStartAmount();
        _cropData[i * 14 + 9] = cropPr.getPrice();
        _cropData[i * 14 + 10] = cropPr.getReward();
      }
      else
      {
        _cropData[i * 14 + 8] = 0;
        _cropData[i * 14 + 9] = 0;
        _cropData[i * 14 + 10] = 0;
      }
      cropPr = c.getCrop(cr, CastleManorManager.PERIOD_NEXT);
      if (cropPr != null)
      {
        _cropData[i * 14 + 11] = cropPr.getStartAmount();
        _cropData[i * 14 + 12] = cropPr.getPrice();
        _cropData[i * 14 + 13] = cropPr.getReward();
View Full Code Here

  private long[] _seedData; // data to send, size:_count*12

  public ExShowSeedSetting(int manorId)
  {
    _manorId = manorId;
    Castle c = ResidenceHolder.getInstance().getResidence(Castle.class, _manorId);
    List<Integer> seeds = Manor.getInstance().getSeedsForCastle(_manorId);
    _count = seeds.size();
    _seedData = new long[_count * 12];
    int i = 0;
    for (int s : seeds)
    {
      _seedData[i * 12 + 0] = s;
      _seedData[i * 12 + 1] = Manor.getInstance().getSeedLevel(s);
      _seedData[i * 12 + 2] = Manor.getInstance().getRewardItemBySeed(s, 1);
      _seedData[i * 12 + 3] = Manor.getInstance().getRewardItemBySeed(s, 2);
      _seedData[i * 12 + 4] = Manor.getInstance().getSeedSaleLimit(s);
      _seedData[i * 12 + 5] = Manor.getInstance().getSeedBuyPrice(s);
      _seedData[i * 12 + 6] = Manor.getInstance().getSeedBasicPrice(s) * 60 / 100;
      _seedData[i * 12 + 7] = Manor.getInstance().getSeedBasicPrice(s) * 10;
      SeedProduction seedPr = c.getSeed(s, CastleManorManager.PERIOD_CURRENT);
      if (seedPr != null)
      {
        _seedData[i * 12 + 8] = seedPr.getStartProduce();
        _seedData[i * 12 + 9] = seedPr.getPrice();
      }
      else
      {
        _seedData[i * 12 + 8] = 0;
        _seedData[i * 12 + 9] = 0;
      }
      seedPr = c.getSeed(s, CastleManorManager.PERIOD_NEXT);
      if (seedPr != null)
      {
        _seedData[i * 12 + 10] = seedPr.getStartProduce();
        _seedData[i * 12 + 11] = seedPr.getPrice();
      }
View Full Code Here

        ItemInstance item = activeChar.getInventory().getItemByObjectId(objId);
        if ((item == null) || (item.getCount() < count) || (item.getItemId() != cropId))
        {
          return;
        }
        Castle castle = ResidenceHolder.getInstance().getResidence(Castle.class, manorId);
        if (castle == null)
        {
          return;
        }
        CropProcure crop = castle.getCrop(cropId, CastleManorManager.PERIOD_CURRENT);
        if ((crop == null) || (crop.getId() == 0) || (crop.getPrice() == 0))
        {
          return;
        }
        if (count > crop.getAmount())
        {
          return;
        }
        long price = SafeMath.mulAndCheck(count, crop.getPrice());
        long fee = 0;
        if ((currentManorId != 0) && (manorId != currentManorId))
        {
          fee = (price * 5) / 100;
        }
        totalFee = SafeMath.addAndCheck(totalFee, fee);
        int rewardItemId = Manor.getInstance().getRewardItem(cropId, crop.getReward());
        ItemTemplate template = ItemHolder.getInstance().getTemplate(rewardItemId);
        if (template == null)
        {
          return;
        }
        weight = SafeMath.addAndCheck(weight, SafeMath.mulAndCheck(count, template.getWeight()));
        if (!template.isStackable() || (activeChar.getInventory().getItemByItemId(cropId) == 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;
      }
      if (activeChar.getInventory().getAdena() < totalFee)
      {
        activeChar.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_ADENA);
        return;
      }
      for (int i = 0; i < _count; i++)
      {
        int objId = _items[i];
        int cropId = _crop[i];
        int manorId = _manor[i];
        long count = _itemQ[i];
        ItemInstance item = activeChar.getInventory().getItemByObjectId(objId);
        if ((item == null) || (item.getCount() < count) || (item.getItemId() != cropId))
        {
          continue;
        }
        Castle castle = ResidenceHolder.getInstance().getResidence(Castle.class, manorId);
        if (castle == null)
        {
          continue;
        }
        CropProcure crop = castle.getCrop(cropId, CastleManorManager.PERIOD_CURRENT);
        if ((crop == null) || (crop.getId() == 0) || (crop.getPrice() == 0))
        {
          continue;
        }
        if (count > crop.getAmount())
        {
          continue;
        }
        int rewardItemId = Manor.getInstance().getRewardItem(cropId, crop.getReward());
        long sellPrice = count * crop.getPrice();
        long rewardPrice = ItemHolder.getInstance().getTemplate(rewardItemId).getReferencePrice();
        if (rewardPrice == 0)
        {
          continue;
        }
        double reward = (double) sellPrice / rewardPrice;
        long rewardItemCount = (long) reward + (Rnd.nextDouble() <= (reward % 1) ? 1 : 0);
        if (rewardItemCount < 1)
        {
          SystemMessage sm = new SystemMessage(SystemMessage.FAILED_IN_TRADING_S2_OF_CROP_S1);
          sm.addItemName(cropId);
          sm.addNumber(count);
          activeChar.sendPacket(sm);
          continue;
        }
        long fee = 0;
        if ((currentManorId != 0) && (manorId != currentManorId))
        {
          fee = (sellPrice * 5) / 100;
        }
        if (!activeChar.getInventory().destroyItemByObjectId(objId, count))
        {
          continue;
        }
        if (!activeChar.reduceAdena(fee, false))
        {
          SystemMessage sm = new SystemMessage(SystemMessage.FAILED_IN_TRADING_S2_OF_CROP_S1);
          sm.addItemName(cropId);
          sm.addNumber(count);
          activeChar.sendPacket(sm, Msg.YOU_DO_NOT_HAVE_ENOUGH_ADENA);
          continue;
        }
        crop.setAmount(crop.getAmount() - count);
        castle.updateCrop(crop.getId(), crop.getAmount(), CastleManorManager.PERIOD_CURRENT);
        castle.addToTreasuryNoTax(fee, false, false);
        if (activeChar.getInventory().addItem(rewardItemId, rewardItemCount) == null)
        {
          continue;
        }
        activeChar.sendPacket(new SystemMessage(SystemMessage.TRADED_S2_OF_CROP_S1).addItemName(cropId).addNumber(count), SystemMessage2.removeItems(cropId, count), SystemMessage2.obtainItems(rewardItemId, rewardItemCount, 0));
View Full Code Here

        }
        break;
      case TO_CASTLE:
        if ((clan != null) && (clan.getCastle() != 0))
        {
          Castle castle = activeChar.getCastle();
          loc = TeleportUtils.getRestartLocation(activeChar, RestartType.TO_CASTLE);
          if (castle.getFunction(ResidenceFunction.RESTORE_EXP) != null)
          {
            activeChar.restoreExp(castle.getFunction(ResidenceFunction.RESTORE_EXP).getLevel());
          }
        }
        break;
      case TO_FORTRESS:
        if ((clan != null) && (clan.getHasFortress() != 0))
View Full Code Here

    {
      player.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_THE_AUTHORITY_TO_POSITION_MERCENARIES, ActionFail.STATIC);
      return;
    }
   
    final Castle castle = player.getCastle();
    final MerchantGuard guard = castle.getMerchantGuard(item.getItemId());
    if ((guard == null) || !castle.checkIfInZone(loc, ReflectionManager.DEFAULT) || player.isActionBlocked(Zone.BLOCKED_ACTION_DROP_MERCHANT_GUARD))
    {
      player.sendPacket(SystemMsg.YOU_CANNOT_POSITION_MERCENARIES_HERE, ActionFail.STATIC);
      return;
    }
   
    if (castle.getSiegeEvent().isInProgress())
    {
      player.sendPacket(SystemMsg.A_MERCENARY_CAN_BE_ASSIGNED_TO_A_POSITION_FROM_THE_BEGINNING_OF_THE_SEAL_VALIDATION_PERIOD_UNTIL_THE_TIME_WHEN_A_SIEGE_STARTS, ActionFail.STATIC);
      return;
    }
   
    int countOfGuard = 0;
    for (ItemInstance $item : castle.getSpawnMerchantTickets())
    {
      if (PositionUtils.getDistance($item.getLoc(), loc) < 200)
      {
        player.sendPacket(SystemMsg.POSITIONING_CANNOT_BE_DONE_HERE_BECAUSE_THE_DISTANCE_BETWEEN_MERCENARIES_IS_TOO_SHORT, ActionFail.STATIC);
        return;
      }
      if ($item.getItemId() == guard.getItemId())
      {
        countOfGuard++;
      }
    }
   
    if (countOfGuard >= guard.getMax())
    {
      player.sendPacket(SystemMsg.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE, ActionFail.STATIC);
      return;
    }
   
    item = player.getInventory().removeItemByObjectId(item.getObjectId(), 1);
    if (item == null)
    {
      player.sendActionFailed();
      return;
    }
   
    Log.LogItem(player, Log.Drop, item);
   
    item.dropToTheGround(player, loc);
    player.disableDrop(1000);
   
    player.sendChanges();
   
    item.delete();
    item.setJdbcState(JdbcEntityState.STORED);
   
    castle.getSpawnMerchantTickets().add(item);
    CastleHiredGuardDAO.getInstance().insert(castle, item.getItemId(), item.getLoc());
  }
View Full Code Here

    {
      player.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_THE_AUTHORITY_TO_CANCEL_MERCENARY_POSITIONING);
      return false;
    }
   
    final Castle castle = player.getCastle();
    if (!castle.getSpawnMerchantTickets().contains(item))
    {
      player.sendPacket(SystemMsg.THIS_IS_NOT_A_MERCENARY_OF_A_CASTLE_THAT_YOU_OWN_AND_SO_YOU_CANNOT_CANCEL_ITS_POSITIONING);
      return false;
    }
   
    if (castle.getSiegeEvent().isInProgress())
    {
      player.sendPacket(SystemMsg.A_MERCENARY_CAN_BE_ASSIGNED_TO_A_POSITION_FROM_THE_BEGINNING_OF_THE_SEAL_VALIDATION_PERIOD_UNTIL_THE_TIME_WHEN_A_SIEGE_STARTS, ActionFail.STATIC);
      return false;
    }
    castle.getSpawnMerchantTickets().remove(item);
    CastleHiredGuardDAO.getInstance().delete(castle, item);
    return true;
  }
View Full Code Here

    if (!player.isClanLeader())
    {
      player.sendPacket(SystemMsg.ONLY_THE_CLAN_LEADER_MAY_ISSUE_COMMANDS);
      return false;
    }
    Castle castle = player.getCastle();
    if (castle == null)
    {
      return false;
    }
    if (castle.getSiegeEvent().isInProgress())
    {
      if (!player.isNoble())
      {
        player.sendPacket(SystemMsg.ONLY_A_CLAN_LEADER_THAT_IS_A_NOBLESSE_CAN_VIEW_THE_SIEGE_WAR_STATUS_WINDOW_DURING_A_SIEGE_WAR);
        return false;
View Full Code Here

    int slots = 0;
    long weight = 0;
    long totalPrice = 0;
    long tax = 0;
    double taxRate = 0;
    Castle castle = null;
    if (merchant != null)
    {
      castle = merchant.getCastle(activeChar);
      if (castle != null)
      {
        taxRate = castle.getTaxRate();
      }
    }
    List<TradeItem> buyList = new ArrayList<TradeItem>(_count);
    List<TradeItem> tradeList = list.getItems();
    try
    {
      loop:
      for (int i = 0; i < _count; i++)
      {
        int itemId = _items[i];
        long count = _itemQ[i];
        long price = 0;
        for (TradeItem ti : tradeList)
        {
          if (ti.getItemId() == itemId)
          {
            if (ti.isCountLimited() && (ti.getCurrentValue() < count))
            {
              continue loop;
            }
            price = ti.getOwnersPrice();
          }
        }
        if ((price == 0) && (!activeChar.isGM() || !activeChar.getPlayerAccess().UseGMShop))
        {
          activeChar.sendActionFailed();
          return;
        }
        totalPrice = SafeMath.addAndCheck(totalPrice, SafeMath.mulAndCheck(count, price));
        TradeItem ti = new TradeItem();
        ti.setItemId(itemId);
        ti.setCount(count);
        ti.setOwnersPrice(price);
        weight = SafeMath.addAndCheck(weight, SafeMath.mulAndCheck(count, ti.getItem().getWeight()));
        if (!ti.getItem().isStackable() || (activeChar.getInventory().getItemByItemId(itemId) == null))
        {
          slots++;
        }
        buyList.add(ti);
      }
      tax = (long) (totalPrice * taxRate);
      totalPrice = SafeMath.addAndCheck(totalPrice, tax);
      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;
      }
      if (!activeChar.reduceAdena(totalPrice))
      {
        activeChar.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_ADENA);
        return;
      }
      for (TradeItem ti : buyList)
      {
        activeChar.getInventory().addItem(ti.getItemId(), ti.getCount());
      }
      list.updateItems(buyList);
      if (castle != null)
      {
        if ((tax > 0) && (castle.getOwnerId() > 0) && (activeChar.getReflection() == ReflectionManager.DEFAULT))
        {
          castle.addToTreasury(tax, true, false);
        }
      }
    }
    catch (ArithmeticException ae)
    {
View Full Code Here

        break;
      }
      case admin_domain:
      {
        DomainArea domain = MapRegionManager.getInstance().getRegionData(DomainArea.class, activeChar);
        Castle castle = domain != null ? ResidenceHolder.getInstance().getResidence(Castle.class, domain.getId()) : null;
        if (castle != null)
        {
          activeChar.sendMessage("Domain: " + castle.getName());
        }
        else
        {
          activeChar.sendMessage("Domain: Unknown");
        }
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.