2
0
Эх сурвалжийг харах

Core support for TARGET_PARTY_NOTME. Thx janiii.

JIV 15 жил өмнө
parent
commit
09dba37f4d

+ 45 - 1
L2_GameServer/java/com/l2jserver/gameserver/model/L2Skill.java

@@ -114,7 +114,8 @@ public abstract class L2Skill implements IChanceSkillTrigger
         TARGET_PARTY_CLAN,
         TARGET_ENEMY_SUMMON,
         TARGET_OWNER_PET,
-        TARGET_GROUND
+        TARGET_GROUND,
+        TARGET_PARTY_NOTME
     }
     
     //conditional values
@@ -2118,6 +2119,49 @@ public abstract class L2Skill implements IChanceSkillTrigger
                 }
                 return _emptyTargetList;
             }
+			case TARGET_PARTY_NOTME:
+			{
+				//target all party members except yourself
+				if (onlyFirst)
+					return new L2Character[] { activeChar };
+				
+				L2PcInstance player = null;
+				
+				if (activeChar instanceof L2Summon)
+				{
+					player = ((L2Summon) activeChar).getOwner();
+					targetList.add(player);
+				}
+				else if (activeChar instanceof L2PcInstance)
+				{
+					player = (L2PcInstance) activeChar;
+					if (activeChar.getPet() != null)
+						targetList.add(activeChar.getPet());
+				}
+				
+				if (activeChar.getParty() != null)
+				{
+					List<L2PcInstance> partyList = activeChar.getParty().getPartyMembers();
+					
+					for (L2PcInstance partyMember : partyList)
+					{
+						if (partyMember == null)
+							continue;
+						if (partyMember == player)
+							continue;
+						if (!partyMember.isDead() && Util.checkIfInRange(getSkillRadius(), activeChar, partyMember, true))
+						{
+							targetList.add(partyMember);
+							
+							if (partyMember.getPet() != null && !partyMember.getPet().isDead())
+							{
+								targetList.add(partyMember.getPet());
+							}
+						}
+					}
+				}
+				return targetList.toArray(new L2Character[targetList.size()]);
+			}
             default:
             {
                 activeChar.sendMessage("Target type of skill is not currently handled");