EventItem.java 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /**
  2. *
  3. */
  4. package handlers.itemhandlers;
  5. import java.util.logging.Logger;
  6. import com.l2jserver.gameserver.handler.IItemHandler;
  7. import com.l2jserver.gameserver.instancemanager.HandysBlockCheckerManager;
  8. import com.l2jserver.gameserver.instancemanager.HandysBlockCheckerManager.ArenaParticipantsHolder;
  9. import com.l2jserver.gameserver.model.L2Skill;
  10. import com.l2jserver.gameserver.model.actor.L2Playable;
  11. import com.l2jserver.gameserver.model.actor.instance.L2BlockInstance;
  12. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  13. import com.l2jserver.gameserver.model.item.instance.L2ItemInstance;
  14. import com.l2jserver.gameserver.network.SystemMessageId;
  15. import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
  16. public class EventItem implements IItemHandler
  17. {
  18. private static final Logger _log = Logger.getLogger(EventItem.class.getName());
  19. /* (non-Javadoc)
  20. * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.L2ItemInstance, boolean)
  21. */
  22. @Override
  23. public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
  24. {
  25. if(!(playable instanceof L2PcInstance))
  26. return;
  27. final L2PcInstance activeChar = (L2PcInstance)playable;
  28. final int itemId = item.getItemId();
  29. switch(itemId)
  30. {
  31. case 13787: // Handy's Block Checker Bond
  32. useBlockCheckerItem(activeChar, item);
  33. break;
  34. case 13788: // Handy's Block Checker Land Mine
  35. useBlockCheckerItem(activeChar, item);
  36. break;
  37. default:
  38. _log.warning("EventItemHandler: Item with id: "+itemId+" is not handled");
  39. }
  40. }
  41. private final void useBlockCheckerItem(final L2PcInstance castor, L2ItemInstance item)
  42. {
  43. final int blockCheckerArena = castor.getBlockCheckerArena();
  44. if(blockCheckerArena == -1)
  45. {
  46. SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
  47. msg.addItemName(item);
  48. castor.sendPacket(msg);
  49. return;
  50. }
  51. final L2Skill sk = item.getEtcItem().getSkills()[0].getSkill();
  52. if(sk == null)
  53. return;
  54. if(!castor.destroyItem("Consume", item, 1, castor, true))
  55. return;
  56. final L2BlockInstance block = (L2BlockInstance) castor.getTarget();
  57. final ArenaParticipantsHolder holder = HandysBlockCheckerManager.getInstance().getHolder(blockCheckerArena);
  58. if(holder != null)
  59. {
  60. final int team = holder.getPlayerTeam(castor);
  61. for(final L2PcInstance pc : block.getKnownList().getKnownPlayersInRadius(sk.getEffectRange()))
  62. {
  63. final int enemyTeam = holder.getPlayerTeam(pc);
  64. if(enemyTeam != -1 && enemyTeam != team)
  65. sk.getEffects(castor, pc);
  66. }
  67. }
  68. else
  69. _log.warning("Char: "+castor.getName()+"["+castor.getObjectId()+"] has unknown block checker arena");
  70. }
  71. }