Package com.l2jfrozen.gameserver.handler.itemhandlers

Source Code of com.l2jfrozen.gameserver.handler.itemhandlers.Seed

/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package com.l2jfrozen.gameserver.handler.itemhandlers;

import com.l2jfrozen.gameserver.datatables.SkillTable;
import com.l2jfrozen.gameserver.datatables.csv.MapRegionTable;
import com.l2jfrozen.gameserver.handler.IItemHandler;
import com.l2jfrozen.gameserver.managers.CastleManorManager;
import com.l2jfrozen.gameserver.model.L2Manor;
import com.l2jfrozen.gameserver.model.L2Object;
import com.l2jfrozen.gameserver.model.L2Skill;
import com.l2jfrozen.gameserver.model.actor.instance.L2ChestInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2GrandBossInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2MonsterInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PlayableInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2RaidBossInstance;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;

/**
* @author l3x
*/
public class Seed implements IItemHandler
{

  private static int[] _itemIds =
  {
      5016,
      5017,
      5018,
      5019,
      5020,
      5021,
      5022,
      5023,
      5024,
      5025,
      5026,
      5027,
      5028,
      5029,
      5030,
      5031,
      5032,
      5033,
      5034,
      5035,
      5036,
      5037,
      5038,
      5039,
      5040,
      5041,
      5042,
      5043,
      5044,
      5045,
      5046,
      5047,
      5048,
      5049,
      5050,
      5051,
      5052,
      5053,
      5054,
      5055,
      5056,
      5057,
      5058,
      5059,
      5060,
      5061,
      5221,
      5222,
      5223,
      5224,
      5225,
      5226,
      5227,
      5650,
      5651,
      5652,
      5653,
      5654,
      5655,
      5656,
      5657,
      5658,
      5659,
      5660,
      5661,
      5662,
      5663,
      5664,
      5665,
      5666,
      5667,
      5668,
      5669,
      5670,
      5671,
      5672,
      5673,
      5674,
      5675,
      5676,
      5677,
      5678,
      5679,
      5680,
      5681,
      5682,
      5683,
      5684,
      5685,
      5686,
      5687,
      5688,
      5689,
      5690,
      5691,
      5692,
      5693,
      5694,
      5695,
      5696,
      5697,
      5698,
      5699,
      5700,
      5701,
      5702,
      6727,
      6728,
      6729,
      6730,
      6731,
      6732,
      6733,
      6734,
      6735,
      6736,
      6737,
      6738,
      6739,
      6740,
      6741,
      6742,
      6743,
      6744,
      6745,
      6746,
      6747,
      6748,
      6749,
      6750,
      6751,
      6752,
      6753,
      6754,
      6755,
      6756,
      6757,
      6758,
      6759,
      6760,
      6761,
      6762,
      6763,
      6764,
      6765,
      6766,
      6767,
      6768,
      6769,
      6770,
      6771,
      6772,
      6773,
      6774,
      6775,
      6776,
      6777,
      6778,
      7016,
      7017,
      7018,
      7019,
      7020,
      7021,
      7022,
      7023,
      7024,
      7025,
      7026,
      7027,
      7028,
      7029,
      7030,
      7031,
      7032,
      7033,
      7034,
      7035,
      7036,
      7037,
      7038,
      7039,
      7040,
      7041,
      7042,
      7043,
      7044,
      7045,
      7046,
      7047,
      7048,
      7049,
      7050,
      7051,
      7052,
      7053,
      7054,
      7055,
      7056,
      7057,
      8223,
      8224,
      8225,
      8226,
      8227,
      8228,
      8229,
      8230,
      8231,
      8232,
      8233,
      8234,
      8235,
      8236,
      8237,
      8238,
      8239,
      8240,
      8241,
      8242,
      8243,
      8244,
      8245,
      8246,
      8247,
      8248,
      8249,
      8250,
      8251,
      8252,
      8253,
      8254,
      8255,
      8256,
      8257,
      8258,
      8259,
      8260,
      8261,
      8262,
      8263,
      8264,
      8265,
      8266,
      8267,
      8268,
      8269,
      8270,
      8271,
      8272,
      8521,
      8522,
      8523,
      8524,
      8525,
      8526
  };

  private int _seedId;
  private L2MonsterInstance _target;
  private L2PcInstance _activeChar;

  @Override
  public void useItem(L2PlayableInstance playable, L2ItemInstance item)
  {
    if(!(playable instanceof L2PcInstance))
      return;

    if(CastleManorManager.getInstance().isDisabled())
      return;

    _activeChar = (L2PcInstance) playable;
    L2Object target = _activeChar.getTarget();

    if(!(target instanceof L2NpcInstance))
    {
      _activeChar.sendPacket(new SystemMessage(SystemMessageId.INCORRECT_TARGET));
      _activeChar.sendPacket(ActionFailed.STATIC_PACKET);
      return;
    }

    if(!(target instanceof L2MonsterInstance) || target instanceof L2ChestInstance || target instanceof L2GrandBossInstance || target instanceof L2RaidBossInstance)
    {
      _activeChar.sendPacket(new SystemMessage(SystemMessageId.THE_TARGET_IS_UNAVAILABLE_FOR_SEEDING));
      _activeChar.sendPacket(ActionFailed.STATIC_PACKET);
      return;
    }

    _target = (L2MonsterInstance) target;
    target = null;

    if(_target == null || _target.isDead())
    {
      _activeChar.sendPacket(new SystemMessage(SystemMessageId.INCORRECT_TARGET));
      _activeChar.sendPacket(ActionFailed.STATIC_PACKET);
      return;
    }

    if(_target.isSeeded())
    {
      _activeChar.sendPacket(ActionFailed.STATIC_PACKET);
      return;
    }

    _seedId = item.getItemId();

    if(areaValid(MapRegionTable.getInstance().getAreaCastle(_activeChar)))
    {
      //TODO: get right skill level
      _target.setSeeded(_seedId, _activeChar);
      L2Skill skill = SkillTable.getInstance().getInfo(2097, 3); //sowing skill
      _activeChar.useMagic(skill, false, false);
      skill = null;
    }
    else
    {
      _activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_SEED_MAY_NOT_BE_SOWN_HERE));
    }
  }

  private boolean areaValid(int castleId)
  {
    return L2Manor.getInstance().getCastleIdForSeed(_seedId) == castleId;
  }

  @Override
  public int[] getItemIds()
  {
    return _itemIds;
  }
}
TOP

Related Classes of com.l2jfrozen.gameserver.handler.itemhandlers.Seed

TOP
Copyright © 2018 www.massapi.com. 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.