TargetClan.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. /**
  2. *
  3. */
  4. package handlers.targethandlers;
  5. import java.util.Collection;
  6. import java.util.List;
  7. import javolution.util.FastList;
  8. import com.l2jserver.gameserver.handler.ISkillTargetTypeHandler;
  9. import com.l2jserver.gameserver.model.L2Clan;
  10. import com.l2jserver.gameserver.model.L2ClanMember;
  11. import com.l2jserver.gameserver.model.L2Object;
  12. import com.l2jserver.gameserver.model.L2Skill;
  13. import com.l2jserver.gameserver.model.L2Skill.SkillTargetType;
  14. import com.l2jserver.gameserver.model.actor.L2Character;
  15. import com.l2jserver.gameserver.model.actor.L2Npc;
  16. import com.l2jserver.gameserver.model.actor.L2Playable;
  17. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  18. import com.l2jserver.gameserver.model.entity.TvTEvent;
  19. import com.l2jserver.gameserver.util.Util;
  20. /**
  21. * @author UnAfraid
  22. *
  23. */
  24. public class TargetClan implements ISkillTargetTypeHandler
  25. {
  26. @Override
  27. public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
  28. {
  29. List<L2Character> targetList = new FastList<L2Character>();
  30. if (activeChar instanceof L2Playable)
  31. {
  32. final L2PcInstance player = activeChar.getActingPlayer();
  33. if (player == null)
  34. return _emptyTargetList;
  35. if (player.isInOlympiadMode())
  36. return new L2Character[] { player };
  37. if (onlyFirst)
  38. return new L2Character[] { player };
  39. targetList.add(player);
  40. final int radius = skill.getSkillRadius();
  41. final L2Clan clan = player.getClan();
  42. if (L2Skill.addSummon(activeChar, player, radius, false))
  43. targetList.add(player.getPet());
  44. if (clan != null)
  45. {
  46. L2PcInstance obj;
  47. for (L2ClanMember member : clan.getMembers())
  48. {
  49. obj = member.getPlayerInstance();
  50. if (obj == null || obj == player)
  51. continue;
  52. if (player.isInDuel())
  53. {
  54. if (player.getDuelId() != obj.getDuelId())
  55. continue;
  56. if (player.isInParty() && obj.isInParty() && player.getParty().getPartyLeaderOID() != obj.getParty().getPartyLeaderOID())
  57. continue;
  58. }
  59. // Don't add this target if this is a Pc->Pc pvp casting and pvp condition not met
  60. if (!player.checkPvpSkill(obj, skill))
  61. continue;
  62. if (!TvTEvent.checkForTvTSkill(player, obj, skill))
  63. continue;
  64. if (!onlyFirst && L2Skill.addSummon(activeChar, obj, radius, false))
  65. targetList.add(obj.getPet());
  66. if (!L2Skill.addCharacter(activeChar, obj, radius, false))
  67. continue;
  68. if (onlyFirst)
  69. return new L2Character[] { obj };
  70. if (skill.getMaxTargets() > -1 && targetList.size() >= skill.getMaxTargets())
  71. break;
  72. targetList.add(obj);
  73. }
  74. }
  75. }
  76. else if (activeChar instanceof L2Npc)
  77. {
  78. // for buff purposes, returns friendly mobs nearby and mob itself
  79. final L2Npc npc = (L2Npc) activeChar;
  80. if (npc.getFactionId() == null || npc.getFactionId().isEmpty())
  81. {
  82. return new L2Character[] { activeChar };
  83. }
  84. targetList.add(activeChar);
  85. final Collection<L2Object> objs = activeChar.getKnownList().getKnownObjects().values();
  86. for (L2Object newTarget : objs)
  87. {
  88. if (newTarget instanceof L2Npc && npc.getFactionId().equals(((L2Npc) newTarget).getFactionId()))
  89. {
  90. if (!Util.checkIfInRange(skill.getCastRange(), activeChar, newTarget, true))
  91. continue;
  92. if (skill.getMaxTargets() > -1 && targetList.size() >= skill.getMaxTargets())
  93. break;
  94. targetList.add((L2Npc) newTarget);
  95. }
  96. }
  97. }
  98. return targetList.toArray(new L2Character[targetList.size()]);
  99. }
  100. @Override
  101. public Enum<SkillTargetType> getTargetType()
  102. {
  103. return SkillTargetType.TARGET_CLAN;
  104. }
  105. }