TargetOne.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * This program is free software: you can redistribute it and/or modify it under
  3. * the terms of the GNU General Public License as published by the Free Software
  4. * Foundation, either version 3 of the License, or (at your option) any later
  5. * version.
  6. *
  7. * This program is distributed in the hope that it will be useful, but WITHOUT
  8. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  9. * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  10. * details.
  11. *
  12. * You should have received a copy of the GNU General Public License along with
  13. * this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. package handlers.targethandlers;
  16. import com.l2jserver.gameserver.handler.ITargetTypeHandler;
  17. import com.l2jserver.gameserver.model.L2Object;
  18. import com.l2jserver.gameserver.model.actor.L2Character;
  19. import com.l2jserver.gameserver.model.skills.L2Skill;
  20. import com.l2jserver.gameserver.model.skills.targets.L2TargetType;
  21. import com.l2jserver.gameserver.network.SystemMessageId;
  22. /**
  23. * @author UnAfraid
  24. */
  25. public class TargetOne implements ITargetTypeHandler
  26. {
  27. @Override
  28. public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
  29. {
  30. boolean canTargetSelf = false;
  31. switch (skill.getSkillType())
  32. {
  33. case BUFF:
  34. case HEAL:
  35. case HOT:
  36. case HEAL_PERCENT:
  37. case MANARECHARGE:
  38. case MANA_BY_LEVEL:
  39. case MANAHEAL:
  40. case NEGATE:
  41. case CANCEL_DEBUFF:
  42. case COMBATPOINTHEAL:
  43. case BALANCE_LIFE:
  44. case HPMPCPHEAL_PERCENT:
  45. case HPMPHEAL_PERCENT:
  46. case HPCPHEAL_PERCENT:
  47. case DUMMY:
  48. canTargetSelf = true;
  49. break;
  50. }
  51. // Check for null target or any other invalid target
  52. if (target == null || target.isDead() || (target == activeChar && !canTargetSelf))
  53. {
  54. activeChar.sendPacket(SystemMessageId.TARGET_IS_INCORRECT);
  55. return _emptyTargetList;
  56. }
  57. // If a target is found, return it in a table else send a system message TARGET_IS_INCORRECT
  58. return new L2Character[] { target };
  59. }
  60. @Override
  61. public Enum<L2TargetType> getTargetType()
  62. {
  63. return L2TargetType.TARGET_ONE;
  64. }
  65. }