123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- /*
- * 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
- */
- package handlers.itemhandlers;
- import com.l2jserver.gameserver.datatables.SkillTable;
- import com.l2jserver.gameserver.handler.IItemHandler;
- import com.l2jserver.gameserver.instancemanager.CastleManager;
- import com.l2jserver.gameserver.model.L2Skill;
- import com.l2jserver.gameserver.model.actor.L2Character;
- import com.l2jserver.gameserver.model.actor.L2Playable;
- import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
- import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;
- import com.l2jserver.gameserver.model.entity.Castle;
- import com.l2jserver.gameserver.model.entity.TvTEvent;
- import com.l2jserver.gameserver.model.item.instance.L2ItemInstance;
- import com.l2jserver.gameserver.network.SystemMessageId;
- import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
- import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
- /**
- * This class ...
- *
- * @version $Revision: 1.1.2.2.2.7 $ $Date: 2005/04/05 19:41:13 $
- */
- public class ScrollOfResurrection implements IItemHandler
- {
- /**
- *
- * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.L2ItemInstance, boolean)
- */
- public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
- {
- if (!(playable instanceof L2PcInstance))
- return;
-
- L2PcInstance activeChar = (L2PcInstance) playable;
-
- if (!TvTEvent.onScrollUse(playable.getObjectId()))
- {
- playable.sendPacket(ActionFailed.STATIC_PACKET);
- return;
- }
-
- if (activeChar.isSitting())
- {
- activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.CANT_MOVE_SITTING));
- return;
- }
- if (activeChar.isMovementDisabled())
- return;
-
- int itemId = item.getItemId();
- //boolean blessedScroll = (itemId != 737);
- boolean petScroll = (itemId == 6387);
-
- // SoR Animation section
- L2Character target = (L2Character) activeChar.getTarget();
-
- if (target != null && target.isDead())
- {
- L2PcInstance targetPlayer = null;
-
- if (target instanceof L2PcInstance)
- targetPlayer = (L2PcInstance) target;
-
- L2PetInstance targetPet = null;
-
- if (target instanceof L2PetInstance)
- targetPet = (L2PetInstance) target;
-
- if (targetPlayer != null || targetPet != null)
- {
- boolean condGood = true;
-
- //check target is not in a active siege zone
- Castle castle = null;
-
- if (targetPlayer != null)
- castle = CastleManager.getInstance().getCastle(targetPlayer.getX(), targetPlayer.getY(), targetPlayer.getZ());
- else
- castle = CastleManager.getInstance().getCastle(targetPet.getOwner().getX(), targetPet.getOwner().getY(), targetPet.getOwner().getZ());
-
- if (castle != null && castle.getSiege().getIsInProgress())
- {
- condGood = false;
- activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.CANNOT_BE_RESURRECTED_DURING_SIEGE));
- }
-
- if (targetPet != null)
- {
- if (targetPet.getOwner() != activeChar)
- {
- if (targetPet.getOwner().isReviveRequested())
- {
- if (targetPet.getOwner().isRevivingPet())
- activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.RES_HAS_ALREADY_BEEN_PROPOSED)); // Resurrection is already been proposed.
- else
- activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.CANNOT_RES_PET2)); // A pet cannot be resurrected while it's owner is in the process of resurrecting.
- condGood = false;
- }
- }
- }
- else
- {
- if (targetPlayer.isFestivalParticipant()) // Check to see if the current player target is in a festival.
- {
- condGood = false;
- activeChar.sendMessage("You may not resurrect participants in a festival.");
- }
- if (targetPlayer.isReviveRequested())
- {
- if (targetPlayer.isRevivingPet())
- activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.MASTER_CANNOT_RES)); // While a pet is attempting to resurrect, it cannot help in resurrecting its master.
- else
- activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.RES_HAS_ALREADY_BEEN_PROPOSED)); // Resurrection is already been proposed.
- condGood = false;
- }
- else if (petScroll)
- {
- condGood = false;
- activeChar.sendMessage("You do not have the correct scroll");
- }
- }
-
- if (condGood)
- {
- if (!activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false))
- return;
-
- int skillId = 0;
- int skillLevel = 1;
-
- switch (itemId)
- {
- case 737:
- skillId = 2014;
- break; // Scroll of Resurrection
- case 3936:
- skillId = 2049;
- break; // Blessed Scroll of Resurrection
- case 3959:
- skillId = 2062;
- break; // L2Day - Blessed Scroll of Resurrection
- case 6387:
- skillId = 2179;
- break; // Blessed Scroll of Resurrection: For Pets
- case 9157:
- skillId = 2321;
- break; // Blessed Scroll of Resurrection Event
- case 10150:
- skillId = 2393;
- break; // Blessed Scroll of Battlefield Resurrection
- case 13259:
- skillId = 2596;
- break; // Gran Kain's Blessed Scroll of Resurrection
- }
-
- if (skillId != 0)
- {
- L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel);
- activeChar.useMagic(skill, true, true);
-
- SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
- sm.addItemName(item);
- activeChar.sendPacket(sm);
- }
- }
- }
- }
- else
- {
- activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.INCORRECT_TARGET));
- }
- }
- }
|