Prevent converting skill targets to arrays.
This commit is contained in:
parent
15e8e6842e
commit
e28b5bce65
@ -17,6 +17,7 @@
|
||||
package ai.areas.BeastFarm;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@ -512,11 +513,11 @@ public class FeedableBeasts extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
// this behavior is only run when the target of skill is the passed npc (chest)
|
||||
// i.e. when the player is attempting to open the chest using a skill
|
||||
if (!CommonUtil.contains(targets, npc))
|
||||
if (!targets.contains(npc))
|
||||
{
|
||||
return super.onSkillSee(npc, caster, skill, targets, isSummon);
|
||||
}
|
||||
|
@ -16,7 +16,8 @@
|
||||
*/
|
||||
package ai.areas.MonasteryOfSilence;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.commons.util.CommonUtil;
|
||||
import org.l2jmobius.commons.util.Rnd;
|
||||
@ -103,11 +104,11 @@ public class MonasteryOfSilence extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (CommonUtil.contains(mobs2, npc.getId()))
|
||||
{
|
||||
if (skill.hasEffectType(EffectType.AGGRESSION) && (targets.length != 0))
|
||||
if (skill.hasEffectType(EffectType.AGGRESSION) && !targets.isEmpty())
|
||||
{
|
||||
for (WorldObject obj : targets)
|
||||
{
|
||||
@ -129,7 +130,7 @@ public class MonasteryOfSilence extends AbstractNpcAI
|
||||
{
|
||||
if (CommonUtil.contains(mobs1, npc.getId()))
|
||||
{
|
||||
final ArrayList<Playable> result = new ArrayList<>();
|
||||
final List<Playable> result = new LinkedList<>();
|
||||
for (WorldObject obj : World.getInstance().getVisibleObjects(npc, WorldObject.class))
|
||||
{
|
||||
if ((obj instanceof Player) || (obj instanceof Pet))
|
||||
@ -140,12 +141,12 @@ public class MonasteryOfSilence extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!result.isEmpty() && (result.size() != 0))
|
||||
|
||||
if (!result.isEmpty())
|
||||
{
|
||||
final Object[] characters = result.toArray();
|
||||
for (Object obj : characters)
|
||||
for (Playable obj : result)
|
||||
{
|
||||
final Playable target = (Playable) (obj instanceof Player ? obj : ((Summon) obj).getOwner());
|
||||
final Playable target = obj instanceof Player ? obj : ((Summon) obj).getOwner();
|
||||
if ((target.getActiveWeaponInstance() != null) && !npc.isInCombat() && (npc.getTarget() == null))
|
||||
{
|
||||
npc.setTarget(target);
|
||||
|
@ -17,6 +17,7 @@
|
||||
package ai.bosses.Orfen;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
@ -235,7 +236,7 @@ public class Orfen extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (npc.getId() == ORFEN)
|
||||
{
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package ai.others;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -60,7 +62,7 @@ public class Chests extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (npc instanceof Chest)
|
||||
{
|
||||
|
@ -16,6 +16,7 @@
|
||||
*/
|
||||
package custom.SellBuff;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
@ -407,7 +408,7 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
|
||||
AbstractScript.takeItems(player, Config.SELLBUFF_PAYMENT_ID, holder.getPrice());
|
||||
AbstractScript.giveItems(seller, Config.SELLBUFF_PAYMENT_ID, holder.getPrice());
|
||||
seller.reduceCurrentMp(skillToBuy.getMpConsume() * Config.SELLBUFF_MP_MULTIPLER);
|
||||
skillToBuy.activateSkill(seller, player);
|
||||
skillToBuy.activateSkill(seller, Collections.singletonList(player));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -16,7 +16,6 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.commons.util.Rnd;
|
||||
@ -78,11 +77,10 @@ public class Confuse extends AbstractEffect
|
||||
{
|
||||
info.getEffected().getAI().notifyEvent(CtrlEvent.EVT_CONFUSED);
|
||||
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
// Getting the possible targets
|
||||
World.getInstance().forEachVisibleObject(info.getEffected(), Creature.class, targetList::add);
|
||||
final List<Creature> targetList = World.getInstance().getVisibleObjects(info.getEffected(), Creature.class);
|
||||
|
||||
// if there is no target, exit function
|
||||
// If there is no target, exit function
|
||||
if (!targetList.isEmpty())
|
||||
{
|
||||
// Choosing randomly a new target
|
||||
|
@ -140,8 +140,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
||||
}
|
||||
|
||||
final Skill triggerSkill = _skill.getSkill();
|
||||
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getAttacker(), false, event.getTarget());
|
||||
for (WorldObject triggerTarget : targets)
|
||||
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getAttacker(), false, event.getTarget()))
|
||||
{
|
||||
if ((triggerTarget == null) || !triggerTarget.isCreature())
|
||||
{
|
||||
|
@ -78,8 +78,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
||||
}
|
||||
|
||||
final Skill triggerSkill = _skill.getSkill();
|
||||
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker());
|
||||
for (WorldObject triggerTarget : targets)
|
||||
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker()))
|
||||
{
|
||||
if ((triggerTarget == null) || !triggerTarget.isCreature())
|
||||
{
|
||||
|
@ -95,8 +95,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
||||
}
|
||||
|
||||
final Skill triggerSkill = _skill.getSkill();
|
||||
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker());
|
||||
for (WorldObject triggerTarget : targets)
|
||||
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker()))
|
||||
{
|
||||
if ((triggerTarget == null) || !triggerTarget.isCreature())
|
||||
{
|
||||
|
@ -85,8 +85,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
||||
}
|
||||
|
||||
final Skill triggerSkill = _skill.getSkill();
|
||||
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getCaster(), false, event.getTarget());
|
||||
for (WorldObject triggerTarget : targets)
|
||||
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getCaster(), false, event.getTarget()))
|
||||
{
|
||||
if ((triggerTarget == null) || !triggerTarget.isCreature())
|
||||
{
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -35,13 +35,13 @@ import org.l2jmobius.gameserver.util.Util;
|
||||
public class Area implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if ((target == null) || (((target == creature) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isAttackable() || target.isPlayable())))
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final Creature origin;
|
||||
@ -50,15 +50,13 @@ public class Area implements ITargetTypeHandler
|
||||
{
|
||||
if (!Skill.checkForAreaOffensiveSkills(creature, target, skill, srcInArena))
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
targetList.add(target);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
origin = target;
|
||||
@ -93,12 +91,7 @@ public class Area implements ITargetTypeHandler
|
||||
}
|
||||
});
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -35,25 +35,22 @@ import org.l2jmobius.gameserver.util.Util;
|
||||
public class AreaCorpseMob implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if ((target == null) || !target.isAttackable() || !target.isDead())
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(target);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
targetList.add(target);
|
||||
|
||||
final boolean srcInArena = creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE);
|
||||
World.getInstance().forEachVisibleObject(creature, Creature.class, obj ->
|
||||
{
|
||||
@ -70,11 +67,7 @@ public class AreaCorpseMob implements ITargetTypeHandler
|
||||
targetList.add(obj);
|
||||
});
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,8 +16,8 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
@ -38,31 +38,28 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
public class AreaFriendly implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final Player player = creature.getActingPlayer();
|
||||
if (!checkTarget(player, target) && (skill.getCastRange() >= 0))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
targetList.add(target);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (player.getActingPlayer().isInOlympiadMode())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
player
|
||||
};
|
||||
targetList.add(player);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(target); // Add target to target list
|
||||
if (target != null)
|
||||
{
|
||||
@ -83,11 +80,7 @@ public class AreaFriendly implements ITargetTypeHandler
|
||||
});
|
||||
}
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
private boolean checkTarget(Player player, Creature target)
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,21 +33,19 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class AreaSummon implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final Creature targetCreature = creature.getSummon();
|
||||
if ((targetCreature == null) || !targetCreature.isServitor() || targetCreature.isDead())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
targetCreature
|
||||
};
|
||||
targetList.add(targetCreature);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
|
||||
@ -77,12 +75,7 @@ public class AreaSummon implements ITargetTypeHandler
|
||||
targetList.add(obj);
|
||||
});
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -35,9 +35,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class Aura implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
|
||||
for (Creature obj : World.getInstance().getVisibleObjectsInRange(creature, Creature.class, skill.getAffectRange()))
|
||||
{
|
||||
@ -63,18 +63,16 @@ public class Aura implements ITargetTypeHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
obj
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
}
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,32 +33,29 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class AuraCorpseMob implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
// Go through the Creature _knownList
|
||||
final int maxTargets = skill.getAffectLimit();
|
||||
for (Attackable obj : World.getInstance().getVisibleObjectsInRange(creature, Attackable.class, skill.getAffectRange()))
|
||||
{
|
||||
if (obj.isDead())
|
||||
{
|
||||
targetList.add(obj);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
obj
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
}
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
@ -37,9 +37,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class AuraFriendly implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final Player player = creature.getActingPlayer();
|
||||
final int maxTargets = skill.getAffectLimit();
|
||||
World.getInstance().forEachVisibleObject(player, Creature.class, obj ->
|
||||
@ -57,12 +57,7 @@ public class AuraFriendly implements ITargetTypeHandler
|
||||
targetList.add(obj);
|
||||
});
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
private boolean checkTarget(Player player, Creature target)
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -35,13 +35,13 @@ import org.l2jmobius.gameserver.util.Util;
|
||||
public class BehindArea implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if ((target == null) || (((target == creature) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isAttackable() || target.isPlayable())))
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final Creature origin;
|
||||
@ -50,19 +50,16 @@ public class BehindArea implements ITargetTypeHandler
|
||||
{
|
||||
if (!Skill.checkForAreaOffensiveSkills(creature, target, skill, srcInArena))
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
origin = target;
|
||||
targetList.add(origin); // Add target to target list
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return targetList;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -103,12 +100,7 @@ public class BehindArea implements ITargetTypeHandler
|
||||
}
|
||||
});
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,9 +33,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class BehindAura implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
|
||||
final int maxTargets = skill.getAffectLimit();
|
||||
for (Creature obj : World.getInstance().getVisibleObjectsInRange(creature, Creature.class, skill.getAffectRange()))
|
||||
@ -52,23 +52,20 @@ public class BehindAura implements ITargetTypeHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
obj
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
}
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -35,31 +35,27 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class Clan implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if (creature.isPlayable())
|
||||
{
|
||||
final Player player = creature.getActingPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (player.isInOlympiadMode())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
player
|
||||
};
|
||||
targetList.add(player);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
player
|
||||
};
|
||||
targetList.add(player);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(player);
|
||||
@ -115,32 +111,25 @@ public class Clan implements ITargetTypeHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
obj
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (creature.isNpc())
|
||||
{
|
||||
// for buff purposes, returns friendly mobs nearby and mob itself
|
||||
targetList.add(creature);
|
||||
final Npc npc = (Npc) creature;
|
||||
if ((npc.getTemplate().getClans() == null) || npc.getTemplate().getClans().isEmpty())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
creature
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(creature);
|
||||
|
||||
for (Npc newTarget : World.getInstance().getVisibleObjectsInRange(creature, Npc.class, skill.getCastRange()))
|
||||
{
|
||||
if (newTarget.isNpc() && npc.isInMyClan(newTarget))
|
||||
@ -156,7 +145,7 @@ public class Clan implements ITargetTypeHandler
|
||||
}
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,20 +33,19 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class ClanMember implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if (creature.isNpc())
|
||||
{
|
||||
// for buff purposes, returns friendly mobs nearby and mob itself
|
||||
final Npc npc = (Npc) creature;
|
||||
if ((npc.getTemplate().getClans() == null) || npc.getTemplate().getClans().isEmpty())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
creature
|
||||
};
|
||||
targetList.add(creature);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
for (Npc newTarget : World.getInstance().getVisibleObjectsInRange(creature, Npc.class, skill.getCastRange()))
|
||||
{
|
||||
if (newTarget.isNpc() && npc.isInMyClan(newTarget))
|
||||
@ -55,16 +54,14 @@ public class ClanMember implements ITargetTypeHandler
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
targetList.add(npc);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,13 +33,13 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class CommandChannel implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final Player player = creature.getActingPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(player);
|
||||
@ -55,7 +55,7 @@ public class CommandChannel implements ITargetTypeHandler
|
||||
// if player in not in party
|
||||
if (party == null)
|
||||
{
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
// Get all visible objects in a spherical area near the Creature
|
||||
@ -78,7 +78,7 @@ public class CommandChannel implements ITargetTypeHandler
|
||||
}
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -37,7 +37,7 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class CorpseClan implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<WorldObject> targetList = new ArrayList<>();
|
||||
if (creature.isPlayable())
|
||||
@ -45,15 +45,13 @@ public class CorpseClan implements ITargetTypeHandler
|
||||
final Player player = creature.getActingPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (player.isInOlympiadMode())
|
||||
{
|
||||
return new WorldObject[]
|
||||
{
|
||||
player
|
||||
};
|
||||
targetList.add(player);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final Clan clan = player.getClan();
|
||||
@ -103,37 +101,30 @@ public class CorpseClan implements ITargetTypeHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new WorldObject[]
|
||||
{
|
||||
obj
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (creature.isNpc())
|
||||
{
|
||||
// for buff purposes, returns friendly mobs nearby and mob itself
|
||||
targetList.add(creature);
|
||||
final Npc npc = (Npc) creature;
|
||||
if ((npc.getTemplate().getClans() == null) || npc.getTemplate().getClans().isEmpty())
|
||||
{
|
||||
return new WorldObject[]
|
||||
{
|
||||
creature
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(creature);
|
||||
|
||||
for (Npc newTarget : World.getInstance().getVisibleObjectsInRange(creature, Npc.class, skill.getCastRange()))
|
||||
{
|
||||
if (npc.isInMyClan(newTarget))
|
||||
@ -148,7 +139,7 @@ public class CorpseClan implements ITargetTypeHandler
|
||||
}
|
||||
}
|
||||
|
||||
return targetList.toArray(new WorldObject[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
@ -33,28 +36,25 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
public class CorpseMob implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
if ((target == null) || !target.isAttackable() || !target.isDead())
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
if (skill.hasEffectType(EffectType.SUMMON) && target.isServitor() && (target.getActingPlayer() != null) && (target.getActingPlayer().getObjectId() == creature.getObjectId()))
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
if (skill.hasEffectType(EffectType.HP_DRAIN) && ((Attackable) target).isOldCorpse(creature.getActingPlayer(), Config.CORPSE_CONSUME_SKILL_ALLOWED_TIME_BEFORE_DECAY, true))
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
return Collections.singletonList(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -30,20 +33,18 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class EnemySummon implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
if ((target != null) && target.isSummon())
|
||||
{
|
||||
final Summon targetSummon = (Summon) target;
|
||||
if ((creature.isPlayer() && (creature.getSummon() != targetSummon) && !targetSummon.isDead() && ((targetSummon.getOwner().getPvpFlag() != 0) || (targetSummon.getOwner().getKarma() > 0))) || (targetSummon.getOwner().isInsideZone(ZoneId.PVP) && creature.getActingPlayer().isInsideZone(ZoneId.PVP)) || (targetSummon.getOwner().isInDuel() && creature.getActingPlayer().isInDuel() && (targetSummon.getOwner().getDuelId() == creature.getActingPlayer().getDuelId())))
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
targetSummon
|
||||
};
|
||||
return Collections.singletonList(targetSummon);
|
||||
}
|
||||
}
|
||||
return EMPTY_TARGET_LIST;
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -28,16 +31,14 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class FlagPole implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
if (!creature.isPlayer())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return new WorldObject[]
|
||||
{
|
||||
target
|
||||
};
|
||||
|
||||
return Collections.singletonList(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -35,13 +35,13 @@ import org.l2jmobius.gameserver.util.Util;
|
||||
public class FrontArea implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if ((target == null) || (((target == creature) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isAttackable() || target.isPlayable())))
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final Creature origin;
|
||||
@ -50,19 +50,16 @@ public class FrontArea implements ITargetTypeHandler
|
||||
{
|
||||
if (!Skill.checkForAreaOffensiveSkills(creature, target, skill, srcInArena))
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
origin = target;
|
||||
targetList.add(origin); // Add target to target list
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return targetList;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -109,12 +106,7 @@ public class FrontArea implements ITargetTypeHandler
|
||||
}
|
||||
});
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,9 +33,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class FrontAura implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
|
||||
final int maxTargets = skill.getAffectLimit();
|
||||
for (Creature obj : World.getInstance().getVisibleObjectsInRange(creature, Creature.class, skill.getAffectRange()))
|
||||
@ -52,23 +52,21 @@ public class FrontAura implements ITargetTypeHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
obj
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
}
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -35,9 +35,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class Ground implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final Player player = (Player) creature;
|
||||
final int maxTargets = skill.getAffectLimit();
|
||||
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
|
||||
@ -55,11 +55,12 @@ public class Ground implements ITargetTypeHandler
|
||||
return;
|
||||
}
|
||||
|
||||
targetList.add(character);
|
||||
|
||||
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
|
||||
{
|
||||
return;
|
||||
}
|
||||
targetList.add(character);
|
||||
}
|
||||
});
|
||||
|
||||
@ -67,7 +68,8 @@ public class Ground implements ITargetTypeHandler
|
||||
{
|
||||
targetList.add(creature);
|
||||
}
|
||||
return targetList.isEmpty() ? EMPTY_TARGET_LIST : targetList.toArray(new Creature[targetList.size()]);
|
||||
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -28,16 +31,14 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class Holy implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
if ((target == null) || !target.isArtefact())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return new WorldObject[]
|
||||
{
|
||||
target
|
||||
};
|
||||
|
||||
return Collections.singletonList(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -29,20 +32,17 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
public class One implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
// Check for null target or any other invalid target
|
||||
if ((target == null) || target.isDead() || ((target == creature) && skill.isBad()))
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// If a target is found, return it in a table else send a system message TARGET_IS_INCORRECT
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
return Collections.singletonList(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -30,20 +33,18 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class OwnerPet implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
if (creature.isSummon())
|
||||
{
|
||||
final Player owner = ((Summon) creature).getOwner();
|
||||
if ((owner != null) && !owner.isDead())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
owner
|
||||
};
|
||||
return Collections.singletonList(owner);
|
||||
}
|
||||
}
|
||||
return EMPTY_TARGET_LIST;
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -32,19 +32,15 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class Party implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
targetList.add(creature);
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
creature
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(creature);
|
||||
|
||||
final int radius = skill.getAffectRange();
|
||||
final Player player = creature.getActingPlayer();
|
||||
if (creature.isSummon())
|
||||
@ -83,7 +79,8 @@ public class Party implements ITargetTypeHandler
|
||||
}
|
||||
}
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,25 +33,22 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class PartyClan implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
creature
|
||||
};
|
||||
}
|
||||
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final Player player = creature.getActingPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(player);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final int radius = skill.getAffectRange();
|
||||
final boolean hasClan = player.getClan() != null;
|
||||
final boolean hasParty = player.isInParty();
|
||||
@ -63,7 +60,7 @@ public class PartyClan implements ITargetTypeHandler
|
||||
// if player in clan and not in party
|
||||
if (!(hasClan || hasParty))
|
||||
{
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
// Get all visible objects in a spherical area near the Creature
|
||||
@ -132,22 +129,20 @@ public class PartyClan implements ITargetTypeHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
obj
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -29,21 +32,20 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
public class PartyMember implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
if (target == null)
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
if (!target.isDead() && ((target == creature) || (creature.isInParty() && target.isInParty() && (creature.getParty().getLeaderObjectId() == target.getParty().getLeaderObjectId())) || (creature.isPlayer() && target.isSummon() && (creature.getSummon() == target)) || (creature.isSummon() && target.isPlayer() && (creature == target.getSummon()))))
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
return Collections.singletonList(target);
|
||||
}
|
||||
return EMPTY_TARGET_LIST;
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
@ -34,9 +34,9 @@ import org.l2jmobius.gameserver.util.Util;
|
||||
public class PartyNotMe implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if (creature.getParty() != null)
|
||||
{
|
||||
final List<Player> partyList = creature.getParty().getMembers();
|
||||
@ -52,7 +52,7 @@ public class PartyNotMe implements ITargetTypeHandler
|
||||
}
|
||||
}
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -29,7 +32,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
public class PartyOther implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
if ((target != null) && (target != creature) && creature.isInParty() && target.isInParty() && (creature.getParty().getLeaderObjectId() == target.getParty().getLeaderObjectId()))
|
||||
{
|
||||
@ -44,35 +47,27 @@ public class PartyOther implements ITargetTypeHandler
|
||||
{
|
||||
if (!target.getActingPlayer().isMageClass())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
return Collections.singletonList(target);
|
||||
}
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
case 427:
|
||||
{
|
||||
if (target.getActingPlayer().isMageClass())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
return Collections.singletonList(target);
|
||||
}
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
}
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
return Collections.singletonList(target);
|
||||
}
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -36,9 +36,9 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
public class PcBody implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if ((target != null) && target.isDead())
|
||||
{
|
||||
final Player player;
|
||||
@ -92,20 +92,14 @@ public class PcBody implements ITargetTypeHandler
|
||||
|
||||
if (condGood)
|
||||
{
|
||||
if (!onlyFirst)
|
||||
{
|
||||
targetList.add(target);
|
||||
return targetList.toArray(new WorldObject[targetList.size()]);
|
||||
}
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
targetList.add(target);
|
||||
return targetList;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -29,16 +32,14 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class Pet implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
if (creature.hasPet())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
creature.getSummon()
|
||||
};
|
||||
return Collections.singletonList(creature.getSummon());
|
||||
}
|
||||
return EMPTY_TARGET_LIST;
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -28,12 +31,9 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class Self implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
creature
|
||||
};
|
||||
return Collections.singletonList(creature);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -29,16 +32,14 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class Servitor implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
if (creature.hasServitor())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
creature.getSummon()
|
||||
};
|
||||
return Collections.singletonList(creature.getSummon());
|
||||
}
|
||||
return EMPTY_TARGET_LIST;
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -29,16 +32,14 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class Summon implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
if (creature.hasSummon())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
creature.getSummon()
|
||||
};
|
||||
return Collections.singletonList(creature.getSummon());
|
||||
}
|
||||
return EMPTY_TARGET_LIST;
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,15 +33,15 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
public class TargetParty implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
|
||||
// Check for null target or any other invalid target
|
||||
if ((target == null) || target.isDead() || (target == creature))
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final int radius = skill.getAffectRange();
|
||||
@ -70,7 +70,8 @@ public class TargetParty implements ITargetTypeHandler
|
||||
{
|
||||
targetList.add(target);
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -29,16 +32,14 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class Unlockable implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
if ((target == null) || (!target.isDoor() && !(target instanceof Chest)))
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
|
||||
return Collections.singletonList(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -762,7 +762,7 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player player, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player player, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (SPAWN_LIST.containsKey(npc) && (SPAWN_LIST.get(npc) != player.getObjectId()))
|
||||
{
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package quests.Q00120_PavelsLastResearch;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.QuestSound;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
@ -1105,7 +1107,7 @@ public class Q00120_PavelsLastResearch extends Quest
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player player, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player player, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isStarted())
|
||||
|
@ -185,7 +185,7 @@ public class Q00350_EnhanceYourWeapon extends Quest
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
super.onSkillSee(npc, caster, skill, targets, isSummon);
|
||||
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.handler;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||
@ -26,9 +28,7 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
*/
|
||||
public interface ITargetTypeHandler
|
||||
{
|
||||
WorldObject[] EMPTY_TARGET_LIST = new WorldObject[0];
|
||||
|
||||
WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target);
|
||||
List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target);
|
||||
|
||||
Enum<TargetType> getTargetType();
|
||||
}
|
||||
|
@ -21,6 +21,8 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Queue;
|
||||
@ -37,7 +39,6 @@ import java.util.logging.Logger;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.commons.util.CommonUtil;
|
||||
import org.l2jmobius.commons.util.EmptyQueue;
|
||||
import org.l2jmobius.commons.util.Rnd;
|
||||
import org.l2jmobius.gameserver.ai.AttackableAI;
|
||||
@ -1485,7 +1486,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
beginCast(skill, true);
|
||||
}
|
||||
|
||||
public void doCast(Skill skill, Creature target, WorldObject[] targets)
|
||||
public void doCast(Skill skill, Creature target, List<WorldObject> targets)
|
||||
{
|
||||
if (!checkDoCastConditions(skill))
|
||||
{
|
||||
@ -1507,7 +1508,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
beginCast(skill, false, target, targets);
|
||||
}
|
||||
|
||||
public void doSimultaneousCast(Skill skill, Creature target, WorldObject[] targets)
|
||||
public void doSimultaneousCast(Skill skill, Creature target, List<WorldObject> targets)
|
||||
{
|
||||
if (!checkDoCastConditions(skill))
|
||||
{
|
||||
@ -1550,7 +1551,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
// Set the target of the skill in function of Skill Type and Target Type
|
||||
Creature target = null;
|
||||
// Get all possible targets of the skill in a table in function of the skill target type
|
||||
final WorldObject[] targets = skill.getTargetList(this);
|
||||
final List<WorldObject> targets = skill.getTargetList(this);
|
||||
boolean doit = false;
|
||||
|
||||
// AURA skills should always be using caster as target
|
||||
@ -1586,7 +1587,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
}
|
||||
default:
|
||||
{
|
||||
if (targets.length == 0)
|
||||
if (targets.isEmpty())
|
||||
{
|
||||
if (simultaneously)
|
||||
{
|
||||
@ -1612,7 +1613,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
|
||||
if (doit)
|
||||
{
|
||||
target = (Creature) targets[0];
|
||||
target = (Creature) targets.get(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1624,7 +1625,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
beginCast(skill, simultaneously, target, targets);
|
||||
}
|
||||
|
||||
private void beginCast(Skill skill, boolean simultaneously, Creature target, WorldObject[] targets)
|
||||
private void beginCast(Skill skill, boolean simultaneously, Creature target, List<WorldObject> targets)
|
||||
{
|
||||
if (target == null)
|
||||
{
|
||||
@ -5228,14 +5229,14 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
public void onMagicLaunchedTimer(MagicUseTask mut)
|
||||
{
|
||||
final Skill skill = mut.getSkill();
|
||||
final WorldObject[] targets = mut.getTargets();
|
||||
final List<WorldObject> targets = mut.getTargets();
|
||||
if ((skill == null) || (targets == null))
|
||||
{
|
||||
abortCast();
|
||||
return;
|
||||
}
|
||||
|
||||
if (targets.length == 0)
|
||||
if (targets.isEmpty())
|
||||
{
|
||||
switch (skill.getTargetType())
|
||||
{
|
||||
@ -5267,12 +5268,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
escapeRange = skill.getAffectRange();
|
||||
}
|
||||
|
||||
if ((targets.length > 0) && (escapeRange > 0))
|
||||
if (!targets.isEmpty() && (escapeRange > 0))
|
||||
{
|
||||
int skipRange = 0;
|
||||
int skipLOS = 0;
|
||||
int skipPeaceZone = 0;
|
||||
final List<WorldObject> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
for (WorldObject target : targets)
|
||||
{
|
||||
if (target.isCreature())
|
||||
@ -5333,7 +5334,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
abortCast();
|
||||
return;
|
||||
}
|
||||
mut.setTargets(targetList.toArray(new WorldObject[targetList.size()]));
|
||||
mut.setTargets(targetList);
|
||||
}
|
||||
|
||||
// Ensure that a cast is in progress
|
||||
@ -5361,7 +5362,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
public void onMagicHitTimer(MagicUseTask mut)
|
||||
{
|
||||
final Skill skill = mut.getSkill();
|
||||
final WorldObject[] targets = mut.getTargets();
|
||||
final List<WorldObject> targets = mut.getTargets();
|
||||
if ((skill == null) || (targets == null))
|
||||
{
|
||||
abortCast();
|
||||
@ -5499,7 +5500,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
setCastingSimultaneouslyNow(false);
|
||||
|
||||
final Skill skill = mut.getSkill();
|
||||
final WorldObject target = mut.getTargets().length > 0 ? mut.getTargets()[0] : null;
|
||||
final WorldObject target = !mut.getTargets().isEmpty() ? mut.getTargets().get(0) : null;
|
||||
|
||||
// Attack target after skill use
|
||||
if ((skill.nextActionIsAttack()) && (_target != this) && (target != null) && (_target == target) && _target.isCreature() && target.canBeAttacked())
|
||||
@ -5567,7 +5568,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
* @param skill The Skill to use
|
||||
* @param targets The table of WorldObject targets
|
||||
*/
|
||||
public void callSkill(Skill skill, WorldObject[] targets)
|
||||
public void callSkill(Skill skill, List<WorldObject> targets)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -5739,7 +5740,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
{
|
||||
final Attackable attackable = (Attackable) npcMob;
|
||||
int skillEffectPoint = skill.getEffectPoint();
|
||||
if (player.hasSummon() && (targets.length == 1) && CommonUtil.contains(targets, player.getSummon()))
|
||||
if (player.hasSummon() && (targets.size() == 1) && targets.contains(player.getSummon()))
|
||||
{
|
||||
skillEffectPoint = 0;
|
||||
}
|
||||
@ -6321,10 +6322,8 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
||||
disableSkill(skill, skill.getReuseDelay());
|
||||
}
|
||||
|
||||
// @formatter:off
|
||||
final WorldObject[] targets = !ignoreTargetType ? skill.getTargetList(this, false, target) : new Creature[]{ target };
|
||||
// @formatter:on
|
||||
if (targets.length == 0)
|
||||
final List<WorldObject> targets = !ignoreTargetType ? skill.getTargetList(this, false, target) : Collections.singletonList(target);
|
||||
if (targets.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -468,9 +468,9 @@ public class Cubic implements IIdentifiable
|
||||
}
|
||||
}
|
||||
|
||||
public void useCubicContinuous(Skill skill, WorldObject[] targets)
|
||||
public void useCubicContinuous(Skill skill, List<Creature> targets)
|
||||
{
|
||||
for (Creature target : (Creature[]) targets)
|
||||
for (Creature target : targets)
|
||||
{
|
||||
if ((target == null) || target.isDead())
|
||||
{
|
||||
@ -503,9 +503,9 @@ public class Cubic implements IIdentifiable
|
||||
* @param skill
|
||||
* @param targets
|
||||
*/
|
||||
public void useCubicMdam(Skill skill, WorldObject[] targets)
|
||||
public void useCubicMdam(Skill skill, List<Creature> targets)
|
||||
{
|
||||
for (Creature target : (Creature[]) targets)
|
||||
for (Creature target : targets)
|
||||
{
|
||||
if (target == null)
|
||||
{
|
||||
@ -550,9 +550,9 @@ public class Cubic implements IIdentifiable
|
||||
}
|
||||
}
|
||||
|
||||
public void useCubicDrain(Skill skill, WorldObject[] targets)
|
||||
public void useCubicDrain(Skill skill, List<Creature> targets)
|
||||
{
|
||||
for (Creature target : (Creature[]) targets)
|
||||
for (Creature target : targets)
|
||||
{
|
||||
if (target.isAlikeDead())
|
||||
{
|
||||
@ -585,9 +585,9 @@ public class Cubic implements IIdentifiable
|
||||
}
|
||||
}
|
||||
|
||||
public void useCubicDisabler(Skill skill, WorldObject[] targets)
|
||||
public void useCubicDisabler(Skill skill, List<Creature> targets)
|
||||
{
|
||||
for (Creature target : (Creature[]) targets)
|
||||
for (Creature target : targets)
|
||||
{
|
||||
if ((target == null) || target.isDead())
|
||||
{
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.actor.instance;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
@ -194,7 +196,7 @@ public class Monster extends Attackable
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doCast(Skill skill, Creature target, WorldObject[] targets)
|
||||
public void doCast(Skill skill, Creature target, List<WorldObject> targets)
|
||||
{
|
||||
// Might need some exceptions here, but it will prevent the monster buffing player bug.
|
||||
if (!skill.isBad() && (getTarget() != null) && getTarget().isPlayer())
|
||||
@ -203,6 +205,7 @@ public class Monster extends Attackable
|
||||
setCastingSimultaneouslyNow(false);
|
||||
return;
|
||||
}
|
||||
|
||||
super.doCast(skill, target, targets);
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.model.actor.instance;
|
||||
import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
@ -456,14 +457,10 @@ public class TamedBeast extends FeedableBeast
|
||||
{
|
||||
final WorldObject oldTarget = owner.getTarget();
|
||||
owner.setTarget(_tamedBeast);
|
||||
final WorldObject[] targets =
|
||||
{
|
||||
_tamedBeast
|
||||
};
|
||||
|
||||
// emulate a call to the owner using food, but bypass all checks for range, etc
|
||||
// this also causes a call to the AI tasks handling feeding, which may call onReceiveFood as required.
|
||||
owner.callSkill(SkillData.getInstance().getSkill(foodTypeSkillId, 1), targets);
|
||||
owner.callSkill(SkillData.getInstance().getSkill(foodTypeSkillId, 1), Collections.singletonList(_tamedBeast));
|
||||
owner.setTarget(oldTarget);
|
||||
}
|
||||
else
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.actor.tasks.creature;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||
@ -27,17 +29,17 @@ import org.l2jmobius.gameserver.model.skill.Skill;
|
||||
public class MagicUseTask implements Runnable
|
||||
{
|
||||
private final Creature _creature;
|
||||
private WorldObject[] _targets;
|
||||
private List<WorldObject> _targets;
|
||||
private final Skill _skill;
|
||||
private int _count;
|
||||
private int _skillTime;
|
||||
private int _phase;
|
||||
private final boolean _simultaneously;
|
||||
|
||||
public MagicUseTask(Creature creature, WorldObject[] tgts, Skill s, int hit, boolean simultaneous)
|
||||
public MagicUseTask(Creature creature, List<WorldObject> targets, Skill s, int hit, boolean simultaneous)
|
||||
{
|
||||
_creature = creature;
|
||||
_targets = tgts;
|
||||
_targets = targets;
|
||||
_skill = s;
|
||||
_count = 0;
|
||||
_phase = 1;
|
||||
@ -92,7 +94,7 @@ public class MagicUseTask implements Runnable
|
||||
return _skillTime;
|
||||
}
|
||||
|
||||
public WorldObject[] getTargets()
|
||||
public List<WorldObject> getTargets()
|
||||
{
|
||||
return _targets;
|
||||
}
|
||||
@ -117,7 +119,7 @@ public class MagicUseTask implements Runnable
|
||||
_skillTime = skillTime;
|
||||
}
|
||||
|
||||
public void setTargets(WorldObject[] targets)
|
||||
public void setTargets(List<WorldObject> targets)
|
||||
{
|
||||
_targets = targets;
|
||||
}
|
||||
|
@ -16,6 +16,7 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.actor.tasks.cubics;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
@ -139,39 +140,34 @@ public class CubicAction implements Runnable
|
||||
{
|
||||
_cubic.getOwner().broadcastPacket(new MagicSkillUse(_cubic.getOwner(), target, skill.getId(), skill.getLevel(), 0, 0));
|
||||
|
||||
final Creature[] targets =
|
||||
{
|
||||
target
|
||||
};
|
||||
|
||||
if (skill.isContinuous())
|
||||
{
|
||||
_cubic.useCubicContinuous(skill, targets);
|
||||
_cubic.useCubicContinuous(skill, Collections.singletonList(target));
|
||||
}
|
||||
else
|
||||
{
|
||||
skill.activateSkill(_cubic, targets);
|
||||
skill.activateSkill(_cubic, Collections.singletonList(target));
|
||||
}
|
||||
|
||||
if (skill.hasEffectType(EffectType.MAGICAL_ATTACK))
|
||||
{
|
||||
_cubic.useCubicMdam(skill, targets);
|
||||
_cubic.useCubicMdam(skill, Collections.singletonList(target));
|
||||
}
|
||||
else if (skill.hasEffectType(EffectType.HP_DRAIN))
|
||||
{
|
||||
_cubic.useCubicDrain(skill, targets);
|
||||
_cubic.useCubicDrain(skill, Collections.singletonList(target));
|
||||
}
|
||||
else if (skill.hasEffectType(EffectType.STUN, EffectType.ROOT, EffectType.PARALYZE))
|
||||
{
|
||||
_cubic.useCubicDisabler(skill, targets);
|
||||
_cubic.useCubicDisabler(skill, Collections.singletonList(target));
|
||||
}
|
||||
else if (skill.hasEffectType(EffectType.DMG_OVER_TIME, EffectType.DMG_OVER_TIME_PERCENT))
|
||||
{
|
||||
_cubic.useCubicContinuous(skill, targets);
|
||||
_cubic.useCubicContinuous(skill, Collections.singletonList(target));
|
||||
}
|
||||
else if (skill.hasEffectType(EffectType.AGGRESSION))
|
||||
{
|
||||
_cubic.useCubicDisabler(skill, targets);
|
||||
_cubic.useCubicDisabler(skill, Collections.singletonList(target));
|
||||
}
|
||||
|
||||
// The cubic has done an action, increase the current count
|
||||
|
@ -16,6 +16,7 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.actor.tasks.cubics;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@ -75,7 +76,7 @@ public class CubicHeal implements Runnable
|
||||
final Creature target = _cubic.getTarget();
|
||||
if ((target != null) && !target.isDead() && ((target.getMaxHp() - target.getCurrentHp()) > skill.getPower()))
|
||||
{
|
||||
skill.activateSkill(_cubic, target);
|
||||
skill.activateSkill(_cubic, Collections.singletonList(target));
|
||||
_cubic.getOwner().broadcastPacket(new MagicSkillUse(_cubic.getOwner(), target, skill.getId(), skill.getLevel(), 0, 0));
|
||||
}
|
||||
}
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.conditions;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||
@ -55,7 +57,7 @@ public class ConditionPlayerCanSweep extends Condition
|
||||
final Player sweeper = effector.getActingPlayer();
|
||||
if (skill != null)
|
||||
{
|
||||
final WorldObject[] targets = skill.getTargetList(sweeper);
|
||||
final List<WorldObject> targets = skill.getTargetList(sweeper);
|
||||
if (targets != null)
|
||||
{
|
||||
Attackable target;
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.events.impl.creature;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
@ -32,7 +34,7 @@ public class OnCreatureSkillUse implements IBaseEvent
|
||||
private Skill _skill;
|
||||
private boolean _simultaneously;
|
||||
private Creature _target;
|
||||
private WorldObject[] _targets;
|
||||
private Collection<WorldObject> _targets;
|
||||
|
||||
public OnCreatureSkillUse()
|
||||
{
|
||||
@ -78,12 +80,12 @@ public class OnCreatureSkillUse implements IBaseEvent
|
||||
_target = target;
|
||||
}
|
||||
|
||||
public WorldObject[] getTargets()
|
||||
public Collection<WorldObject> getTargets()
|
||||
{
|
||||
return _targets;
|
||||
}
|
||||
|
||||
public synchronized void setTargets(WorldObject[] targets)
|
||||
public synchronized void setTargets(Collection<WorldObject> targets)
|
||||
{
|
||||
_targets = targets;
|
||||
}
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.events.impl.creature.npc;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
@ -31,10 +33,10 @@ public class OnNpcSkillSee implements IBaseEvent
|
||||
private final Npc _npc;
|
||||
private final Player _caster;
|
||||
private final Skill _skill;
|
||||
private final WorldObject[] _targets;
|
||||
private final List<WorldObject> _targets;
|
||||
private final boolean _isSummon;
|
||||
|
||||
public OnNpcSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public OnNpcSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
_npc = npc;
|
||||
_caster = caster;
|
||||
@ -58,7 +60,7 @@ public class OnNpcSkillSee implements IBaseEvent
|
||||
return _skill;
|
||||
}
|
||||
|
||||
public WorldObject[] getTargets()
|
||||
public List<WorldObject> getTargets()
|
||||
{
|
||||
return _targets;
|
||||
}
|
||||
|
@ -16,8 +16,12 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.item;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.conditions.Condition;
|
||||
@ -365,7 +369,7 @@ public class Weapon extends ItemTemplate
|
||||
return;
|
||||
}
|
||||
|
||||
onCritSkill.activateSkill(caster, target);
|
||||
onCritSkill.activateSkill(caster, Collections.singletonList(target));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -423,16 +427,12 @@ public class Weapon extends ItemTemplate
|
||||
|
||||
// Launch the magic skill and calculate its effects
|
||||
// Get the skill handler corresponding to the skill type
|
||||
onMagicSkill.activateSkill(caster, target);
|
||||
onMagicSkill.activateSkill(caster, Collections.singletonList(target));
|
||||
|
||||
// notify quests of a skill use
|
||||
if (caster.isPlayer())
|
||||
{
|
||||
final Creature[] targets =
|
||||
{
|
||||
target
|
||||
};
|
||||
|
||||
final List<WorldObject> targets = Collections.singletonList(target);
|
||||
World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc ->
|
||||
{
|
||||
if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc))
|
||||
|
@ -21,6 +21,7 @@ import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
@ -334,7 +335,7 @@ public abstract class Inventory extends ItemContainer
|
||||
final Skill unequipSkill = it.getUnequipSkill();
|
||||
if (unequipSkill != null)
|
||||
{
|
||||
unequipSkill.activateSkill(player, player);
|
||||
unequipSkill.activateSkill(player, Collections.singletonList(player));
|
||||
}
|
||||
|
||||
if (update)
|
||||
|
@ -705,7 +705,7 @@ public class Quest extends AbstractScript implements IIdentifiable
|
||||
* @param targets
|
||||
* @param isSummon
|
||||
*/
|
||||
public void notifySkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public void notifySkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
String res = null;
|
||||
try
|
||||
@ -1142,7 +1142,7 @@ public class Quest extends AbstractScript implements IIdentifiable
|
||||
* @param isSummon if {@code true}, the skill was actually cast by the player's summon, not the player himself
|
||||
* @return
|
||||
*/
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.model.skill;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumMap;
|
||||
import java.util.HashSet;
|
||||
@ -64,8 +65,6 @@ public class Skill implements IIdentifiable
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(Skill.class.getName());
|
||||
|
||||
private static final WorldObject[] EMPTY_TARGET_LIST = new WorldObject[0];
|
||||
|
||||
/** Skill ID. */
|
||||
private final int _id;
|
||||
/** Skill level. */
|
||||
@ -950,7 +949,7 @@ public class Skill implements IIdentifiable
|
||||
return true;
|
||||
}
|
||||
|
||||
public WorldObject[] getTargetList(Creature creature, boolean onlyFirst)
|
||||
public List<WorldObject> getTargetList(Creature creature, boolean onlyFirst)
|
||||
{
|
||||
// Init to null the target of the skill
|
||||
Creature target = null;
|
||||
@ -987,7 +986,7 @@ public class Skill implements IIdentifiable
|
||||
* @param target
|
||||
* @return
|
||||
*/
|
||||
public WorldObject[] getTargetList(Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final ITargetTypeHandler handler = TargetHandler.getInstance().getHandler(getTargetType());
|
||||
if (handler != null)
|
||||
@ -1001,23 +1000,25 @@ public class Skill implements IIdentifiable
|
||||
LOGGER.log(Level.WARNING, "Exception in Skill.getTargetList(): " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
creature.sendMessage("Target type of skill is not currently handled.");
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
public WorldObject[] getTargetList(Creature creature)
|
||||
public List<WorldObject> getTargetList(Creature creature)
|
||||
{
|
||||
return getTargetList(creature, false);
|
||||
}
|
||||
|
||||
public WorldObject getFirstOfTargetList(Creature creature)
|
||||
{
|
||||
final WorldObject[] targets = getTargetList(creature, true);
|
||||
if (targets.length == 0)
|
||||
final List<WorldObject> targets = getTargetList(creature, true);
|
||||
if (targets.isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return targets[0];
|
||||
|
||||
return targets.get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1321,7 +1322,7 @@ public class Skill implements IIdentifiable
|
||||
* @param caster the caster
|
||||
* @param targets the targets
|
||||
*/
|
||||
public void activateSkill(Creature caster, WorldObject... targets)
|
||||
public void activateSkill(Creature caster, Collection<WorldObject> targets)
|
||||
{
|
||||
activateSkill(caster, null, targets);
|
||||
}
|
||||
@ -1331,7 +1332,7 @@ public class Skill implements IIdentifiable
|
||||
* @param cubic the cubic
|
||||
* @param targets the targets
|
||||
*/
|
||||
public void activateSkill(Cubic cubic, WorldObject... targets)
|
||||
public void activateSkill(Cubic cubic, Collection<WorldObject> targets)
|
||||
{
|
||||
activateSkill(cubic.getOwner(), cubic, targets);
|
||||
}
|
||||
@ -1342,7 +1343,7 @@ public class Skill implements IIdentifiable
|
||||
* @param cubic the cubic, can be {@code null}
|
||||
* @param targets the targets
|
||||
*/
|
||||
private void activateSkill(Creature caster, Cubic cubic, WorldObject... targets)
|
||||
private void activateSkill(Creature caster, Cubic cubic, Collection<WorldObject> targets)
|
||||
{
|
||||
for (WorldObject obj : targets)
|
||||
{
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.skill;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.logging.Level;
|
||||
@ -162,8 +162,7 @@ public class SkillChannelizer implements Runnable
|
||||
return;
|
||||
}
|
||||
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
|
||||
final List<Creature> targetList = new LinkedList<>();
|
||||
for (WorldObject chars : skill.getTargetList(_channelizer))
|
||||
{
|
||||
if (chars.isCreature())
|
||||
|
@ -16,9 +16,8 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.network.serverpackets;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -33,9 +32,9 @@ public class MagicSkillLaunched extends ServerPacket
|
||||
private final int _objectId;
|
||||
private final int _skillId;
|
||||
private final int _skillLevel;
|
||||
private final List<WorldObject> _targets;
|
||||
private final Collection<WorldObject> _targets;
|
||||
|
||||
public MagicSkillLaunched(Creature creature, int skillId, int skillLevel, WorldObject... targets)
|
||||
public MagicSkillLaunched(Creature creature, int skillId, int skillLevel, Collection<WorldObject> targets)
|
||||
{
|
||||
_objectId = creature.getObjectId();
|
||||
_skillId = skillId;
|
||||
@ -45,12 +44,17 @@ public class MagicSkillLaunched extends ServerPacket
|
||||
_targets = Collections.singletonList(creature);
|
||||
return;
|
||||
}
|
||||
_targets = Arrays.asList(targets);
|
||||
_targets = targets;
|
||||
}
|
||||
|
||||
public MagicSkillLaunched(Creature creature, int skillId, int skillLevel, WorldObject target)
|
||||
{
|
||||
this(creature, skillId, skillLevel, Collections.singletonList(target == null ? creature : target));
|
||||
}
|
||||
|
||||
public MagicSkillLaunched(Creature creature, int skillId, int skillLevel)
|
||||
{
|
||||
this(creature, skillId, skillLevel, creature);
|
||||
this(creature, skillId, skillLevel, Collections.singletonList(creature));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -17,6 +17,7 @@
|
||||
package ai.areas.BeastFarm;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@ -512,11 +513,11 @@ public class FeedableBeasts extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
// this behavior is only run when the target of skill is the passed npc (chest)
|
||||
// i.e. when the player is attempting to open the chest using a skill
|
||||
if (!CommonUtil.contains(targets, npc))
|
||||
if (!targets.contains(npc))
|
||||
{
|
||||
return super.onSkillSee(npc, caster, skill, targets, isSummon);
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.commons.util.CommonUtil;
|
||||
import org.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
import org.l2jmobius.gameserver.data.xml.DoorData;
|
||||
import org.l2jmobius.gameserver.data.xml.NpcData;
|
||||
@ -310,9 +309,9 @@ public class EnergySeeds extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (!CommonUtil.contains(targets, npc) || (skill.getId() != 5780))
|
||||
if (!targets.contains(npc) || (skill.getId() != 5780))
|
||||
{
|
||||
return super.onSkillSee(npc, caster, skill, targets, isSummon);
|
||||
}
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package ai.areas.Gracia.AI;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
@ -45,7 +47,7 @@ public class StarStones extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (skill.getId() == 932)
|
||||
{
|
||||
|
@ -18,6 +18,7 @@ package ai.areas.Gracia.instances.HallOfSufferingAttack;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.l2jmobius.gameserver.ai.CtrlEvent;
|
||||
@ -353,7 +354,7 @@ public class HallOfSufferingAttack extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (skill.hasEffectType(EffectType.REBALANCE_HP, EffectType.HEAL))
|
||||
{
|
||||
|
@ -18,6 +18,7 @@ package ai.areas.Gracia.instances.HallOfSufferingDefence;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.l2jmobius.gameserver.ai.CtrlEvent;
|
||||
@ -353,7 +354,7 @@ public class HallOfSufferingDefence extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (skill.hasEffectType(EffectType.REBALANCE_HP, EffectType.HEAL))
|
||||
{
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package ai.areas.Hellbound.AI;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
@ -82,10 +84,10 @@ public class Chimeras extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (((skill.getId() == BOTTLE) && !npc.isDead()) //
|
||||
&& ((targets.length > 0) && (targets[0] == npc)) //
|
||||
&& ((!targets.isEmpty()) && (targets.get(0) == npc)) //
|
||||
&& (npc.getCurrentHp() < (npc.getMaxHp() * 0.1)))
|
||||
{
|
||||
if (HellboundEngine.getInstance().getLevel() == 7)
|
||||
|
@ -16,7 +16,8 @@
|
||||
*/
|
||||
package ai.areas.MonasteryOfSilence;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.commons.util.CommonUtil;
|
||||
import org.l2jmobius.commons.util.Rnd;
|
||||
@ -103,11 +104,11 @@ public class MonasteryOfSilence extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (CommonUtil.contains(mobs2, npc.getId()))
|
||||
{
|
||||
if (skill.hasEffectType(EffectType.AGGRESSION) && (targets.length != 0))
|
||||
if (skill.hasEffectType(EffectType.AGGRESSION) && !targets.isEmpty())
|
||||
{
|
||||
for (WorldObject obj : targets)
|
||||
{
|
||||
@ -129,7 +130,7 @@ public class MonasteryOfSilence extends AbstractNpcAI
|
||||
{
|
||||
if (CommonUtil.contains(mobs1, npc.getId()))
|
||||
{
|
||||
final ArrayList<Playable> result = new ArrayList<>();
|
||||
final List<Playable> result = new LinkedList<>();
|
||||
for (WorldObject obj : World.getInstance().getVisibleObjects(npc, WorldObject.class))
|
||||
{
|
||||
if ((obj instanceof Player) || (obj instanceof Pet))
|
||||
@ -140,12 +141,12 @@ public class MonasteryOfSilence extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!result.isEmpty() && (result.size() != 0))
|
||||
|
||||
if (!result.isEmpty())
|
||||
{
|
||||
final Object[] characters = result.toArray();
|
||||
for (Object obj : characters)
|
||||
for (Playable obj : result)
|
||||
{
|
||||
final Playable target = (Playable) (obj instanceof Player ? obj : ((Summon) obj).getOwner());
|
||||
final Playable target = obj instanceof Player ? obj : ((Summon) obj).getOwner();
|
||||
if ((target.getActiveWeaponInstance() != null) && !npc.isInCombat() && (npc.getTarget() == null))
|
||||
{
|
||||
npc.setTarget(target);
|
||||
|
@ -184,9 +184,9 @@ public class StakatoNest extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (CommonUtil.contains(COCOONS, npc.getId()) && CommonUtil.contains(targets, npc) && (skill.getId() == GROWTH_ACCELERATOR))
|
||||
if (CommonUtil.contains(COCOONS, npc.getId()) && targets.contains(npc) && (skill.getId() == GROWTH_ACCELERATOR))
|
||||
{
|
||||
npc.doDie(caster);
|
||||
final Npc spawned = addSpawn(STAKATO_CHIEF, npc.getX(), npc.getY(), npc.getZ(), Util.calculateHeadingFrom(npc, caster), false, 0, true);
|
||||
|
@ -559,7 +559,7 @@ public class Beleth extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player player, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player player, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (!npc.isDead() && (npc.getId() == REAL_BELETH) && !npc.isCastingNow() && skill.hasEffectType(EffectType.HEAL) && (getRandom(100) < 80))
|
||||
{
|
||||
|
@ -17,6 +17,7 @@
|
||||
package ai.bosses.Orfen;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
@ -235,7 +236,7 @@ public class Orfen extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (npc.getId() == ORFEN)
|
||||
{
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package ai.others;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
@ -69,7 +71,7 @@ public class Ballista extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if ((skill != null) && (caster.getTarget() == npc) && (getRandom(100) < 40) && (skill == BOMB.getSkill()))
|
||||
{
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package ai.others;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
@ -60,7 +62,7 @@ public class Chests extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (npc instanceof Chest)
|
||||
{
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package ai.others;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||
@ -104,7 +106,7 @@ public class PrisonGuards extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (!caster.isAffectedBySkill(TIMER))
|
||||
{
|
||||
|
@ -16,6 +16,8 @@
|
||||
*/
|
||||
package ai.others;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
@ -55,9 +57,9 @@ public class Remnants extends AbstractNpcAI
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if ((skill.getId() == SKILL_HOLY_WATER) && !npc.isDead() && (targets.length > 0) && (targets[0] == npc) && (npc.getCurrentHp() < (npc.getMaxHp() * 0.02)))
|
||||
if ((skill.getId() == SKILL_HOLY_WATER) && !npc.isDead() && !targets.isEmpty() && (targets.get(0) == npc) && (npc.getCurrentHp() < (npc.getMaxHp() * 0.02)))
|
||||
{
|
||||
npc.doDie(caster);
|
||||
//@formatter:off
|
||||
|
@ -16,6 +16,7 @@
|
||||
*/
|
||||
package custom.SellBuff;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
@ -407,7 +408,7 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
|
||||
AbstractScript.takeItems(player, Config.SELLBUFF_PAYMENT_ID, holder.getPrice());
|
||||
AbstractScript.giveItems(seller, Config.SELLBUFF_PAYMENT_ID, holder.getPrice());
|
||||
seller.reduceCurrentMp(skillToBuy.getMpConsume() * Config.SELLBUFF_MP_MULTIPLER);
|
||||
skillToBuy.activateSkill(seller, player);
|
||||
skillToBuy.activateSkill(seller, Collections.singletonList(player));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -22,7 +22,6 @@ import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.util.CommonUtil;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
@ -197,11 +196,11 @@ public class Rabbits extends Event
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (skill.getId() == RABBIT_TORNADO.getSkillId())
|
||||
{
|
||||
if (!npc.isInvisible() && CommonUtil.contains(targets, npc))
|
||||
if (!npc.isInvisible() && targets.contains(npc))
|
||||
{
|
||||
dropItem(npc, caster, DROPLIST);
|
||||
npc.deleteMe();
|
||||
|
@ -170,7 +170,7 @@ public class SavingSanta extends LongTimeEvent
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
|
||||
{
|
||||
if (_isWaitingForPlayerSkill && (skill.getId() > 21013) && (skill.getId() < 21017))
|
||||
{
|
||||
|
@ -16,7 +16,6 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.commons.util.Rnd;
|
||||
@ -78,11 +77,10 @@ public class Confuse extends AbstractEffect
|
||||
{
|
||||
info.getEffected().getAI().notifyEvent(CtrlEvent.EVT_CONFUSED);
|
||||
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
// Getting the possible targets
|
||||
World.getInstance().forEachVisibleObject(info.getEffected(), Creature.class, targetList::add);
|
||||
final List<Creature> targetList = World.getInstance().getVisibleObjects(info.getEffected(), Creature.class);
|
||||
|
||||
// if there is no target, exit function
|
||||
// If there is no target, exit function
|
||||
if (!targetList.isEmpty())
|
||||
{
|
||||
// Choosing randomly a new target
|
||||
|
@ -140,8 +140,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
||||
}
|
||||
|
||||
final Skill triggerSkill = _skill.getSkill();
|
||||
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getAttacker(), false, event.getTarget());
|
||||
for (WorldObject triggerTarget : targets)
|
||||
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getAttacker(), false, event.getTarget()))
|
||||
{
|
||||
if ((triggerTarget == null) || !triggerTarget.isCreature())
|
||||
{
|
||||
|
@ -78,8 +78,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
||||
}
|
||||
|
||||
final Skill triggerSkill = _skill.getSkill();
|
||||
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker());
|
||||
for (WorldObject triggerTarget : targets)
|
||||
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker()))
|
||||
{
|
||||
if ((triggerTarget == null) || !triggerTarget.isCreature())
|
||||
{
|
||||
|
@ -95,8 +95,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
||||
}
|
||||
|
||||
final Skill triggerSkill = _skill.getSkill();
|
||||
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker());
|
||||
for (WorldObject triggerTarget : targets)
|
||||
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker()))
|
||||
{
|
||||
if ((triggerTarget == null) || !triggerTarget.isCreature())
|
||||
{
|
||||
|
@ -85,8 +85,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
||||
}
|
||||
|
||||
final Skill triggerSkill = _skill.getSkill();
|
||||
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getCaster(), false, event.getTarget());
|
||||
for (WorldObject triggerTarget : targets)
|
||||
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getCaster(), false, event.getTarget()))
|
||||
{
|
||||
if ((triggerTarget == null) || !triggerTarget.isCreature())
|
||||
{
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -35,13 +35,13 @@ import org.l2jmobius.gameserver.util.Util;
|
||||
public class Area implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if ((target == null) || (((target == creature) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isAttackable() || target.isPlayable())))
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final Creature origin;
|
||||
@ -50,15 +50,13 @@ public class Area implements ITargetTypeHandler
|
||||
{
|
||||
if (!Skill.checkForAreaOffensiveSkills(creature, target, skill, srcInArena))
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
targetList.add(target);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
origin = target;
|
||||
@ -93,12 +91,7 @@ public class Area implements ITargetTypeHandler
|
||||
}
|
||||
});
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -35,25 +35,22 @@ import org.l2jmobius.gameserver.util.Util;
|
||||
public class AreaCorpseMob implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if ((target == null) || !target.isAttackable() || !target.isDead())
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(target);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
targetList.add(target);
|
||||
|
||||
final boolean srcInArena = creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE);
|
||||
World.getInstance().forEachVisibleObject(creature, Creature.class, obj ->
|
||||
{
|
||||
@ -70,11 +67,7 @@ public class AreaCorpseMob implements ITargetTypeHandler
|
||||
targetList.add(obj);
|
||||
});
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,8 +16,8 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
@ -38,31 +38,28 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
public class AreaFriendly implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final Player player = creature.getActingPlayer();
|
||||
if (!checkTarget(player, target) && (skill.getCastRange() >= 0))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
targetList.add(target);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (player.getActingPlayer().isInOlympiadMode())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
player
|
||||
};
|
||||
targetList.add(player);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(target); // Add target to target list
|
||||
if (target != null)
|
||||
{
|
||||
@ -83,11 +80,7 @@ public class AreaFriendly implements ITargetTypeHandler
|
||||
});
|
||||
}
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
private boolean checkTarget(Player player, Creature target)
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,21 +33,19 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class AreaSummon implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final Creature targetCreature = creature.getSummon();
|
||||
if ((targetCreature == null) || !targetCreature.isServitor() || targetCreature.isDead())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
targetCreature
|
||||
};
|
||||
targetList.add(targetCreature);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
|
||||
@ -77,12 +75,7 @@ public class AreaSummon implements ITargetTypeHandler
|
||||
targetList.add(obj);
|
||||
});
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -35,9 +35,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class Aura implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
|
||||
for (Creature obj : World.getInstance().getVisibleObjectsInRange(creature, Creature.class, skill.getAffectRange()))
|
||||
{
|
||||
@ -63,18 +63,16 @@ public class Aura implements ITargetTypeHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
obj
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
}
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,32 +33,29 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class AuraCorpseMob implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
// Go through the Creature _knownList
|
||||
final int maxTargets = skill.getAffectLimit();
|
||||
for (Attackable obj : World.getInstance().getVisibleObjectsInRange(creature, Attackable.class, skill.getAffectRange()))
|
||||
{
|
||||
if (obj.isDead())
|
||||
{
|
||||
targetList.add(obj);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
obj
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
}
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
@ -37,9 +37,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class AuraFriendly implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final Player player = creature.getActingPlayer();
|
||||
final int maxTargets = skill.getAffectLimit();
|
||||
World.getInstance().forEachVisibleObject(player, Creature.class, obj ->
|
||||
@ -57,12 +57,7 @@ public class AuraFriendly implements ITargetTypeHandler
|
||||
targetList.add(obj);
|
||||
});
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
private boolean checkTarget(Player player, Creature target)
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -35,13 +35,13 @@ import org.l2jmobius.gameserver.util.Util;
|
||||
public class BehindArea implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if ((target == null) || (((target == creature) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isAttackable() || target.isPlayable())))
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final Creature origin;
|
||||
@ -50,19 +50,16 @@ public class BehindArea implements ITargetTypeHandler
|
||||
{
|
||||
if (!Skill.checkForAreaOffensiveSkills(creature, target, skill, srcInArena))
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
origin = target;
|
||||
targetList.add(origin); // Add target to target list
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return targetList;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -103,12 +100,7 @@ public class BehindArea implements ITargetTypeHandler
|
||||
}
|
||||
});
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,9 +33,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class BehindAura implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
|
||||
final int maxTargets = skill.getAffectLimit();
|
||||
for (Creature obj : World.getInstance().getVisibleObjectsInRange(creature, Creature.class, skill.getAffectRange()))
|
||||
@ -52,23 +52,20 @@ public class BehindAura implements ITargetTypeHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
obj
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
}
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -35,31 +35,27 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class Clan implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if (creature.isPlayable())
|
||||
{
|
||||
final Player player = creature.getActingPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (player.isInOlympiadMode())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
player
|
||||
};
|
||||
targetList.add(player);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
player
|
||||
};
|
||||
targetList.add(player);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(player);
|
||||
@ -115,32 +111,25 @@ public class Clan implements ITargetTypeHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
obj
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (creature.isNpc())
|
||||
{
|
||||
// for buff purposes, returns friendly mobs nearby and mob itself
|
||||
targetList.add(creature);
|
||||
final Npc npc = (Npc) creature;
|
||||
if ((npc.getTemplate().getClans() == null) || npc.getTemplate().getClans().isEmpty())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
creature
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(creature);
|
||||
|
||||
for (Npc newTarget : World.getInstance().getVisibleObjectsInRange(creature, Npc.class, skill.getCastRange()))
|
||||
{
|
||||
if (newTarget.isNpc() && npc.isInMyClan(newTarget))
|
||||
@ -156,7 +145,7 @@ public class Clan implements ITargetTypeHandler
|
||||
}
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,20 +33,19 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class ClanMember implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
if (creature.isNpc())
|
||||
{
|
||||
// for buff purposes, returns friendly mobs nearby and mob itself
|
||||
final Npc npc = (Npc) creature;
|
||||
if ((npc.getTemplate().getClans() == null) || npc.getTemplate().getClans().isEmpty())
|
||||
{
|
||||
return new Creature[]
|
||||
{
|
||||
creature
|
||||
};
|
||||
targetList.add(creature);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
for (Npc newTarget : World.getInstance().getVisibleObjectsInRange(creature, Npc.class, skill.getCastRange()))
|
||||
{
|
||||
if (newTarget.isNpc() && npc.isInMyClan(newTarget))
|
||||
@ -55,16 +54,14 @@ public class ClanMember implements ITargetTypeHandler
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (targetList.isEmpty())
|
||||
{
|
||||
targetList.add(npc);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
@ -33,13 +33,13 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||
public class CommandChannel implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<Creature> targetList = new ArrayList<>();
|
||||
final List<WorldObject> targetList = new LinkedList<>();
|
||||
final Player player = creature.getActingPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(player);
|
||||
@ -55,7 +55,7 @@ public class CommandChannel implements ITargetTypeHandler
|
||||
// if player in not in party
|
||||
if (party == null)
|
||||
{
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
// Get all visible objects in a spherical area near the Creature
|
||||
@ -78,7 +78,7 @@ public class CommandChannel implements ITargetTypeHandler
|
||||
}
|
||||
}
|
||||
|
||||
return targetList.toArray(new Creature[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -37,7 +37,7 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
public class CorpseClan implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
final List<WorldObject> targetList = new ArrayList<>();
|
||||
if (creature.isPlayable())
|
||||
@ -45,15 +45,13 @@ public class CorpseClan implements ITargetTypeHandler
|
||||
final Player player = creature.getActingPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if (player.isInOlympiadMode())
|
||||
{
|
||||
return new WorldObject[]
|
||||
{
|
||||
player
|
||||
};
|
||||
targetList.add(player);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
final Clan clan = player.getClan();
|
||||
@ -103,37 +101,30 @@ public class CorpseClan implements ITargetTypeHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
|
||||
if (onlyFirst)
|
||||
{
|
||||
return new WorldObject[]
|
||||
{
|
||||
obj
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
targetList.add(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (creature.isNpc())
|
||||
{
|
||||
// for buff purposes, returns friendly mobs nearby and mob itself
|
||||
targetList.add(creature);
|
||||
final Npc npc = (Npc) creature;
|
||||
if ((npc.getTemplate().getClans() == null) || npc.getTemplate().getClans().isEmpty())
|
||||
{
|
||||
return new WorldObject[]
|
||||
{
|
||||
creature
|
||||
};
|
||||
return targetList;
|
||||
}
|
||||
|
||||
targetList.add(creature);
|
||||
|
||||
for (Npc newTarget : World.getInstance().getVisibleObjectsInRange(creature, Npc.class, skill.getCastRange()))
|
||||
{
|
||||
if (npc.isInMyClan(newTarget))
|
||||
@ -148,7 +139,7 @@ public class CorpseClan implements ITargetTypeHandler
|
||||
}
|
||||
}
|
||||
|
||||
return targetList.toArray(new WorldObject[targetList.size()]);
|
||||
return targetList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.targethandlers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
@ -33,28 +36,25 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
public class CorpseMob implements ITargetTypeHandler
|
||||
{
|
||||
@Override
|
||||
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
|
||||
{
|
||||
if ((target == null) || !target.isAttackable() || !target.isDead())
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
if (skill.hasEffectType(EffectType.SUMMON) && target.isServitor() && (target.getActingPlayer() != null) && (target.getActingPlayer().getObjectId() == creature.getObjectId()))
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
if (skill.hasEffectType(EffectType.HP_DRAIN) && ((Attackable) target).isOldCorpse(creature.getActingPlayer(), Config.CORPSE_CONSUME_SKILL_ALLOWED_TIME_BEFORE_DECAY, true))
|
||||
{
|
||||
return EMPTY_TARGET_LIST;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
return new Creature[]
|
||||
{
|
||||
target
|
||||
};
|
||||
return Collections.singletonList(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user