Skill target related improvements.

This commit is contained in:
MobiusDevelopment 2020-08-15 16:46:56 +00:00
parent 08d72b1ec8
commit c67e5f29e2
110 changed files with 957 additions and 980 deletions

View File

@ -17,10 +17,10 @@
package org.l2jmobius.gameserver.handler;
import java.io.IOException;
import java.util.List;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
public interface ISkillHandler
@ -32,7 +32,7 @@ public interface ISkillHandler
* @param targets
* @throws IOException
*/
void useSkill(Creature creature, Skill skill, WorldObject[] targets) throws IOException;
void useSkill(Creature creature, Skill skill, List<Creature> targets) throws IOException;
/**
* this method is called at initialization to register all the item ids automatically

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.handler.SkillHandler;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
@ -37,7 +39,7 @@ public class BalanceLife implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
// check for other effects
try

View File

@ -16,10 +16,11 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -34,14 +35,14 @@ public class BeastFeed implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{
return;
}
final WorldObject[] targetList = skill.getTargetList(creature);
final List<Creature> targetList = skill.getTargetList(creature);
if (targetList == null)
{
return;

View File

@ -16,13 +16,14 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -49,7 +50,7 @@ public class Blow implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (creature.isAlikeDead())
{
@ -61,7 +62,7 @@ public class Blow implements ISkillHandler
final boolean ss = creature.checkSs();
Formulas.getInstance();
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if (target.isAlikeDead())
{

View File

@ -16,6 +16,7 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import java.util.logging.Logger;
import org.l2jmobius.gameserver.handler.ISkillHandler;
@ -36,7 +37,7 @@ public class Charge implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
for (WorldObject target1 : targets)
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
@ -23,7 +25,6 @@ import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.Clan;
@ -40,7 +41,7 @@ public class ClanGate implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
PlayerInstance player = null;
if (creature instanceof PlayerInstance)

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.handler.SkillHandler;
import org.l2jmobius.gameserver.model.Skill;
@ -35,7 +37,7 @@ public class CombatPointHeal implements ISkillHandler
};
@Override
public void useSkill(Creature actChar, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
// check for other effects
try
@ -43,7 +45,7 @@ public class CombatPointHeal implements ISkillHandler
final ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(SkillType.BUFF);
if (handler != null)
{
handler.useSkill(actChar, skill, targets);
handler.useSkill(creature, skill, targets);
}
}
catch (Exception e)

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
//
@ -64,7 +66,7 @@ public class Continuous implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skillValue, WorldObject[] targets)
public void useSkill(Creature creature, Skill skillValue, List<Creature> targets)
{
if (creature == null)
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
@ -36,7 +38,7 @@ public class CpDam implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof Playable))
{

View File

@ -16,11 +16,12 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.RecipeController;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -34,7 +35,7 @@ public class Craft implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,12 +16,12 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import java.util.logging.Logger;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -38,14 +38,14 @@ public class DeluxeKey implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{
return;
}
final WorldObject[] targetList = skill.getTargetList(creature);
final List<Creature> targetList = skill.getTargetList(creature);
if (targetList == null)
{
return;

View File

@ -80,7 +80,7 @@ public class Disablers implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
final SkillType type = skill.getSkillType();
final boolean bss = creature.checkBss();
@ -671,10 +671,10 @@ public class Disablers implements ISkillHandler
LOGGER.warning("Couldn't find skill handler for HEAL.");
continue;
}
final WorldObject[] tgts = new WorldObject[]
{
target
};
final List<Creature> tgts = new ArrayList<>();
tgts.add(target);
try
{
healhandler.useSkill(creature, skill, tgts);

View File

@ -16,12 +16,12 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import java.util.logging.Logger;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -37,14 +37,14 @@ public class DrainSoul implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{
return;
}
final WorldObject[] targetList = skill.getTargetList(creature);
final List<Creature> targetList = skill.getTargetList(creature);
if (targetList == null)
{
return;

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.datatables.xml.ZoneData;
@ -24,7 +26,6 @@ import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
@ -46,7 +47,7 @@ public class Fishing implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,11 +16,12 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Fishing;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.items.Weapon;
@ -39,7 +40,7 @@ public class FishingSkill implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
@ -33,7 +35,7 @@ public class GetPlayer implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (creature.isAlikeDead())
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
@ -33,7 +35,7 @@ public class GiveSp implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
for (WorldObject obj : targets)
{

View File

@ -16,6 +16,7 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import java.util.logging.Logger;
import org.l2jmobius.Config;
@ -49,7 +50,7 @@ public class Harvest implements ISkillHandler
private MonsterInstance _target;
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{
@ -58,7 +59,7 @@ public class Harvest implements ISkillHandler
_player = (PlayerInstance) creature;
final WorldObject[] targetList = skill.getTargetList(creature);
final List<Creature> targetList = skill.getTargetList(creature);
final InventoryUpdate iu = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate();
if (targetList == null)
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.handler.SkillHandler;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
@ -43,7 +45,7 @@ public class Heal implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
PlayerInstance player = null;
if (creature instanceof PlayerInstance)

View File

@ -16,10 +16,11 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.skills.Stat;
@ -37,9 +38,9 @@ public class ManaHeal implements ISkillHandler
};
@Override
public void useSkill(Creature actChar, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if ((target == null) || target.isDead() || target.isInvul())
{
@ -62,10 +63,10 @@ public class ManaHeal implements ISkillHandler
sump.addAttribute(StatusUpdate.CUR_MP, (int) target.getCurrentMp());
target.sendPacket(sump);
if ((actChar instanceof PlayerInstance) && (actChar != target))
if ((creature instanceof PlayerInstance) && (creature != target))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_MP_HAS_BEEN_RESTORED_BY_S1);
sm.addString(actChar.getName());
sm.addString(creature.getName());
sm.addNumber((int) mp);
target.sendPacket(sm);
}
@ -79,20 +80,20 @@ public class ManaHeal implements ISkillHandler
if (skill.isMagic() && skill.useSpiritShot())
{
if (actChar.checkBss())
if (creature.checkBss())
{
actChar.removeBss();
creature.removeBss();
}
if (actChar.checkSps())
if (creature.checkSps())
{
actChar.removeSps();
creature.removeSps();
}
}
else if (skill.useSoulShot())
{
if (actChar.checkSs())
if (creature.checkSs())
{
actChar.removeSs();
creature.removeSs();
}
}
}

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
@ -41,7 +43,7 @@ public class Manadam implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
Creature target = null;
if (creature.isAlikeDead())

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
@ -37,7 +39,7 @@ public class Mdam implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (creature.isAlikeDead())
{

View File

@ -50,7 +50,7 @@ public class Pdam implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (creature.isAlikeDead())
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.enums.TeleportWhereType;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
@ -40,7 +42,7 @@ public class Recall implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
try
{

View File

@ -39,7 +39,7 @@ public class Resurrect implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
PlayerInstance player = null;
if (creature instanceof PlayerInstance)

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.datatables.sql.NpcTable;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
@ -25,7 +27,6 @@ import org.l2jmobius.gameserver.instancemanager.IdManager;
import org.l2jmobius.gameserver.instancemanager.SiegeManager;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.actor.instance.SiegeFlagInstance;
@ -44,7 +45,7 @@ public class SiegeFlag implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,6 +16,7 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import java.util.logging.Logger;
import org.l2jmobius.commons.util.Rnd;
@ -24,7 +25,6 @@ import org.l2jmobius.gameserver.datatables.xml.ManorSeedData;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -50,7 +50,7 @@ public class Sow implements ISkillHandler
private int _seedId;
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{
@ -59,20 +59,21 @@ public class Sow implements ISkillHandler
_player = (PlayerInstance) creature;
final WorldObject[] targetList = skill.getTargetList(creature);
final List<Creature> targetList = skill.getTargetList(creature);
if (targetList == null)
{
return;
}
for (int index = 0; index < targetList.length; index++)
for (@SuppressWarnings("unused")
Creature element : targetList)
{
if (!(targetList[0] instanceof MonsterInstance))
if (!(targetList.get(0) instanceof MonsterInstance))
{
continue;
}
_target = (MonsterInstance) targetList[0];
_target = (MonsterInstance) targetList.get(0);
if (_target.isSeeded())
{
_player.sendPacket(ActionFailed.STATIC_PACKET);
@ -104,6 +105,7 @@ public class Sow implements ISkillHandler
_player.sendPacket(ActionFailed.STATIC_PACKET);
break;
}
// Consuming used seed
_player.destroyItem("Consume", item.getObjectId(), 1, null, false);
SystemMessage sm = null;
@ -126,7 +128,8 @@ public class Sow implements ISkillHandler
{
_player.getParty().broadcastToPartyMembers(sm);
}
// TODO: Mob should not agro on player, this way doesn't work really nice
// TODO: Mob should not aggro on player, this way doesn't work really nice
_target.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
}
}

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
@ -39,7 +41,7 @@ public class Spoil implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
import org.l2jmobius.gameserver.instancemanager.FortManager;
@ -43,7 +45,7 @@ public class StrSiegeAssault implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.Skill;
@ -41,7 +43,7 @@ public class SummonFriend implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,13 +16,13 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import java.util.logging.Logger;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -38,7 +38,7 @@ public class SummonTreasureKey implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
@ -41,7 +43,7 @@ public class Sweep implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,12 +16,13 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
import org.l2jmobius.gameserver.instancemanager.FortManager;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -40,7 +41,7 @@ public class TakeCastle implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{
@ -77,9 +78,9 @@ public class TakeCastle implements ISkillHandler
try
{
if ((castle != null) && (targets[0] instanceof ArtefactInstance))
if ((castle != null) && (targets.get(0) instanceof ArtefactInstance))
{
castle.Engrave(player.getClan(), targets[0].getObjectId());
castle.Engrave(player.getClan(), targets.get(0).getObjectId());
}
else if (fort != null)
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.handler.ISkillHandler;
@ -39,9 +41,9 @@ public class Unlock implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
final WorldObject[] targetList = skill.getTargetList(creature);
final List<Creature> targetList = skill.getTargetList(creature);
if (targetList == null)
{
return;

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
@ -31,7 +33,7 @@ public class ZakenPlayer implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
try
{
@ -41,59 +43,75 @@ public class ZakenPlayer implements ISkillHandler
{
continue;
}
final Creature target = (Creature) target1;
final int ch = (Rnd.get(14) + 1);
if (ch == 1)
switch (Rnd.get(14) + 1)
{
target.teleToLocation(55299, 219120, -2952, true);
}
else if (ch == 2)
{
target.teleToLocation(56363, 218043, -2952, true);
}
else if (ch == 3)
{
target.teleToLocation(54245, 220162, -2952, true);
}
else if (ch == 4)
{
target.teleToLocation(56289, 220126, -2952, true);
}
else if (ch == 5)
{
target.teleToLocation(55299, 219120, -3224, true);
}
else if (ch == 6)
{
target.teleToLocation(56363, 218043, -3224, true);
}
else if (ch == 7)
{
target.teleToLocation(54245, 220162, -3224, true);
}
else if (ch == 8)
{
target.teleToLocation(56289, 220126, -3224, true);
}
else if (ch == 9)
{
target.teleToLocation(55299, 219120, -3496, true);
}
else if (ch == 10)
{
target.teleToLocation(56363, 218043, -3496, true);
}
else if (ch == 11)
{
target.teleToLocation(54245, 220162, -3496, true);
}
else if (ch == 12)
{
target.teleToLocation(56289, 220126, -3496, true);
}
else
{
target.teleToLocation(53930, 217760, -2944, true);
case 1:
{
target.teleToLocation(55299, 219120, -2952, true);
break;
}
case 2:
{
target.teleToLocation(56363, 218043, -2952, true);
break;
}
case 3:
{
target.teleToLocation(54245, 220162, -2952, true);
break;
}
case 4:
{
target.teleToLocation(56289, 220126, -2952, true);
break;
}
case 5:
{
target.teleToLocation(55299, 219120, -3224, true);
break;
}
case 6:
{
target.teleToLocation(56363, 218043, -3224, true);
break;
}
case 7:
{
target.teleToLocation(54245, 220162, -3224, true);
break;
}
case 8:
{
target.teleToLocation(56289, 220126, -3224, true);
break;
}
case 9:
{
target.teleToLocation(55299, 219120, -3496, true);
break;
}
case 10:
{
target.teleToLocation(56363, 218043, -3496, true);
break;
}
case 11:
{
target.teleToLocation(54245, 220162, -3496, true);
break;
}
case 12:
{
target.teleToLocation(56289, 220126, -3496, true);
break;
}
default:
{
target.teleToLocation(53930, 217760, -2944, true);
break;
}
}
}
}

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
@ -31,7 +33,7 @@ public class ZakenSelf implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
try
{
@ -41,59 +43,75 @@ public class ZakenSelf implements ISkillHandler
{
continue;
}
final Creature target = (Creature) target1;
final int ch = (Rnd.get(14) + 1);
if (ch == 1)
switch (Rnd.get(14) + 1)
{
target.teleToLocation(55299, 219120, -2952, true);
}
else if (ch == 2)
{
target.teleToLocation(56363, 218043, -2952, true);
}
else if (ch == 3)
{
target.teleToLocation(54245, 220162, -2952, true);
}
else if (ch == 4)
{
target.teleToLocation(56289, 220126, -2952, true);
}
else if (ch == 5)
{
target.teleToLocation(55299, 219120, -3224, true);
}
else if (ch == 6)
{
target.teleToLocation(56363, 218043, -3224, true);
}
else if (ch == 7)
{
target.teleToLocation(54245, 220162, -3224, true);
}
else if (ch == 8)
{
target.teleToLocation(56289, 220126, -3224, true);
}
else if (ch == 9)
{
target.teleToLocation(55299, 219120, -3496, true);
}
else if (ch == 10)
{
target.teleToLocation(56363, 218043, -3496, true);
}
else if (ch == 11)
{
target.teleToLocation(54245, 220162, -3496, true);
}
else if (ch == 12)
{
target.teleToLocation(56289, 220126, -3496, true);
}
else
{
target.teleToLocation(53930, 217760, -2944, true);
case 1:
{
target.teleToLocation(55299, 219120, -2952, true);
break;
}
case 2:
{
target.teleToLocation(56363, 218043, -2952, true);
break;
}
case 3:
{
target.teleToLocation(54245, 220162, -2952, true);
break;
}
case 4:
{
target.teleToLocation(56289, 220126, -2952, true);
break;
}
case 5:
{
target.teleToLocation(55299, 219120, -3224, true);
break;
}
case 6:
{
target.teleToLocation(56363, 218043, -3224, true);
break;
}
case 7:
{
target.teleToLocation(54245, 220162, -3224, true);
break;
}
case 8:
{
target.teleToLocation(56289, 220126, -3224, true);
break;
}
case 9:
{
target.teleToLocation(55299, 219120, -3496, true);
break;
}
case 10:
{
target.teleToLocation(56363, 218043, -3496, true);
break;
}
case 11:
{
target.teleToLocation(54245, 220162, -3496, true);
break;
}
case 12:
{
target.teleToLocation(56289, 220126, -3496, true);
break;
}
default:
{
target.teleToLocation(53930, 217760, -2944, true);
break;
}
}
}
}

View File

@ -16,6 +16,7 @@
*/
package org.l2jmobius.gameserver.model;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import org.l2jmobius.gameserver.handler.ISkillHandler;
@ -156,9 +157,9 @@ public class ChanceSkillList extends ConcurrentHashMap<Skill, ChanceCondition>
}
final ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(castedSkill.getSkillType());
final WorldObject[] targets = castedSkill.getTargetList(_owner, false, target);
final List<Creature> targets = castedSkill.getTargetList(_owner, false, target);
_owner.broadcastPacket(new MagicSkillLaunched(_owner, castedSkill.getDisplayId(), castedSkill.getLevel(), targets));
_owner.broadcastPacket(new MagicSkillUse(_owner, (Creature) targets[0], castedSkill.getDisplayId(), castedSkill.getLevel(), 0, 0));
_owner.broadcastPacket(new MagicSkillUse(_owner, targets.get(0), castedSkill.getDisplayId(), castedSkill.getLevel(), 0, 0));
// Launch the magic skill and calculate its effects
if (handler != null)

View File

@ -648,7 +648,7 @@ public abstract class Skill
_isDebuff = set.getBoolean("isDebuff", false);
}
public abstract void useSkill(Creature caster, WorldObject[] targets);
public abstract void useSkill(Creature caster, List<Creature> targets);
public boolean isSingleEffect()
{
@ -1373,7 +1373,7 @@ public abstract class Skill
return true;
}
public WorldObject[] getTargetList(Creature creature, boolean onlyFirst)
public List<Creature> getTargetList(Creature creature, boolean onlyFirst)
{
// Init to null the target of the skill
Creature target = null;
@ -1408,7 +1408,7 @@ public abstract class Skill
* @param targetCreature
* @return
*/
public WorldObject[] getTargetList(Creature creature, boolean onlyFirst, Creature targetCreature)
public List<Creature> getTargetList(Creature creature, boolean onlyFirst, Creature targetCreature)
{
// to avoid attacks during oly start period
if ((creature instanceof PlayerInstance) && _isOffensive && (((PlayerInstance) creature).isInOlympiadMode() && !((PlayerInstance) creature).isOlympiadStart()))
@ -1420,10 +1420,8 @@ public abstract class Skill
final List<Creature> targetList = new ArrayList<>();
if (_ispotion)
{
return new Creature[]
{
creature
};
targetList.add(creature);
return targetList;
}
Creature target = targetCreature;
@ -1528,27 +1526,21 @@ public abstract class Skill
}
// If a target is found, return it in a table else send a system message TARGET_IS_INCORRECT
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
case TARGET_SELF:
case TARGET_GROUND:
{
return new Creature[]
{
creature
};
targetList.add(creature);
return targetList;
}
case TARGET_HOLY:
{
if ((creature instanceof PlayerInstance) && (creature.getTarget() instanceof ArtefactInstance))
{
return new Creature[]
{
(ArtefactInstance) creature.getTarget()
};
targetList.add((ArtefactInstance) creature.getTarget());
return targetList;
}
return null;
}
@ -1558,10 +1550,8 @@ public abstract class Skill
target = creature.getPet();
if ((target != null) && !target.isDead())
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
return null;
}
@ -1572,10 +1562,8 @@ public abstract class Skill
target = ((Summon) creature).getOwner();
if ((target != null) && !target.isDead())
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
}
return null;
@ -1587,10 +1575,8 @@ public abstract class Skill
target = creature.getPet();
if ((target != null) && target.isDead())
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
}
return null;
@ -1694,19 +1680,14 @@ public abstract class Skill
{
continue;
}
if (!onlyFirst)
targetList.add(nearby);
if (onlyFirst)
{
targetList.add(nearby);
}
else
{
return new Creature[]
{
nearby
};
return targetList;
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_AREA:
{
@ -1717,27 +1698,22 @@ public abstract class Skill
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
}
Creature cha;
if (_castRange >= 0)
{
cha = target;
if (!onlyFirst)
targetList.add(cha);
if (onlyFirst)
{
targetList.add(cha); // Add target to target list
}
else
{
return new Creature[]
{
cha
};
return targetList;
}
}
else
{
cha = creature;
}
final boolean effectOriginIsPlayableInstance = cha instanceof Playable;
PlayerInstance src = null;
if (creature instanceof PlayerInstance)
{
@ -1747,6 +1723,7 @@ public abstract class Skill
{
src = ((Summon) creature).getOwner();
}
final int radius = _skillRadius;
final boolean srcInArena = creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE);
for (WorldObject obj : creature.getKnownList().getKnownObjects().values())
@ -1767,22 +1744,24 @@ public abstract class Skill
{
continue;
}
if (_isOffensive && Creature.isInsidePeaceZone(creature, obj))
{
continue;
}
if (!GeoEngine.getInstance().canSeeTarget(creature, obj))
{
continue;
}
target = (Creature) obj;
if (!GeoEngine.getInstance().canSeeTarget(creature, target))
{
continue;
}
if (_isOffensive && Creature.isInsidePeaceZone(creature, target))
{
continue;
}
if (!target.isAlikeDead() && (target != creature))
{
if (!Util.checkIfInRange(radius, obj, cha, true))
{
continue;
}
if (src != null) // caster is l2playableinstance and exists
if (src != null) // caster is a playable instance and exists
{
// check for Events
if (obj instanceof PlayerInstance)
@ -1813,6 +1792,13 @@ public abstract class Skill
continue;
}
}
// Summon AOE skills should not target non attackable players.
if (obj.isPlayable() && !creature.isPlayer() && !obj.isAutoAttackable(creature))
{
continue;
}
if (obj instanceof PlayerInstance)
{
final PlayerInstance trg = (PlayerInstance) obj;
@ -1844,7 +1830,7 @@ public abstract class Skill
}
}
}
if (obj instanceof Summon)
else if (obj instanceof Summon)
{
final PlayerInstance trg = ((Summon) obj).getOwner();
if (trg == null)
@ -1876,11 +1862,7 @@ public abstract class Skill
}
}
}
else if (effectOriginIsPlayableInstance && // If effect starts at PlayableInstance and
!(obj instanceof Playable))
{
continue;
}
targetList.add((Creature) obj);
}
}
@ -1888,7 +1870,7 @@ public abstract class Skill
{
return null;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_MULTIFACE:
{
@ -1897,17 +1879,13 @@ public abstract class Skill
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
}
if (!onlyFirst)
targetList.add(target);
if (onlyFirst)
{
targetList.add(target);
}
else
{
return new Creature[]
{
target
};
return targetList;
}
final int radius = _skillRadius;
PlayerInstance src = null;
if (creature instanceof PlayerInstance)
@ -1970,26 +1948,22 @@ public abstract class Skill
return null;
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
// TODO multiface targets all around right now. need it to just get targets the character is facing.
}
case TARGET_PARTY:
{
targetList.add(creature);
if (onlyFirst)
{
return new Creature[]
{
creature
};
return targetList;
}
targetList.add(creature);
final PlayerInstance player = creature.getActingPlayer();
if (player == null)
{
return new Creature[]
{
creature
};
targetList.add(creature);
return targetList;
}
if (creature instanceof Summon)
{
@ -2059,17 +2033,15 @@ public abstract class Skill
}
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_PARTY_MEMBER:
{
if ((target != null) && !target.isDead() && ((target == creature) || ((creature.getParty() != null) && (target.getParty() != null) && (creature.getParty().getPartyLeaderOID() == target.getParty().getPartyLeaderOID())) || (creature.getPet() == target) || (creature == target.getPet())))
{
// If a target is found, return it in a table else send a system message TARGET_IS_INCORRECT
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
@ -2079,10 +2051,8 @@ public abstract class Skill
if ((target != creature) && (target != null) && !target.isDead() && (creature.getParty() != null) && (target.getParty() != null) && (creature.getParty().getPartyLeaderOID() == target.getParty().getPartyLeaderOID()))
{
// If a target is found, return it in a table else send a system message TARGET_IS_INCORRECT
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
@ -2098,22 +2068,15 @@ public abstract class Skill
if (_targetType != SkillTargetType.TARGET_CORPSE_ALLY) // if corpose, the caster is not included
{
if (player.isInOlympiadMode())
{
return new Creature[]
{
player
};
}
if (!onlyFirst)
{
targetList.add(player);
return targetList;
}
else
targetList.add(player);
if (onlyFirst)
{
return new Creature[]
{
player
};
return targetList;
}
}
PlayerInstance src = null;
@ -2191,21 +2154,16 @@ public abstract class Skill
{
continue;
}
if (!onlyFirst)
targetList.add((Creature) newTarget);
if (onlyFirst)
{
targetList.add((Creature) newTarget);
}
else
{
return new Creature[]
{
(Creature) newTarget
};
return targetList;
}
}
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_CORPSE_CLAN:
case TARGET_CLAN:
@ -2218,22 +2176,15 @@ public abstract class Skill
if (_targetType != SkillTargetType.TARGET_CORPSE_CLAN)
{
if (player.isInOlympiadMode())
{
return new Creature[]
{
player
};
}
if (!onlyFirst)
{
targetList.add(player);
return targetList;
}
else
targetList.add(player);
if (onlyFirst)
{
return new Creature[]
{
player
};
return targetList;
}
}
if (clan != null)
@ -2286,16 +2237,11 @@ public abstract class Skill
{
continue;
}
if (!onlyFirst)
targetList.add(newTarget);
if (onlyFirst)
{
targetList.add(newTarget);
}
else
{
return new Creature[]
{
newTarget
};
return targetList;
}
}
}
@ -2306,10 +2252,8 @@ public abstract class Skill
final NpcInstance npc = (NpcInstance) creature;
if ((npc.getFactionId() == null) || npc.getFactionId().isEmpty())
{
return new Creature[]
{
creature
};
targetList.add(creature);
return targetList;
}
targetList.add(creature);
final Collection<WorldObject> objs = creature.getKnownList().getKnownObjects().values();
@ -2328,7 +2272,7 @@ public abstract class Skill
}
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_CORPSE_PLAYER:
{
@ -2386,15 +2330,8 @@ public abstract class Skill
}
if (condGood)
{
if (!onlyFirst)
{
targetList.add(target);
return targetList.toArray(new WorldObject[targetList.size()]);
}
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
}
}
@ -2408,15 +2345,9 @@ public abstract class Skill
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
}
if (!onlyFirst)
{
targetList.add(target);
return targetList.toArray(new WorldObject[targetList.size()]);
}
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
case TARGET_AREA_CORPSE_MOB:
{
@ -2425,17 +2356,13 @@ public abstract class Skill
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
}
if (!onlyFirst)
targetList.add(target);
if (onlyFirst)
{
targetList.add(target);
}
else
{
return new Creature[]
{
target
};
return targetList;
}
final boolean srcInArena = creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE);
PlayerInstance src = null;
if (creature instanceof PlayerInstance)
@ -2536,7 +2463,7 @@ public abstract class Skill
{
return null;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_UNLOCKABLE:
{
@ -2546,15 +2473,9 @@ public abstract class Skill
creature.sendPacket(new SystemMessage(SystemMessageId.INVALID_TARGET));
return null;
}
if (!onlyFirst)
{
targetList.add(target);
return targetList.toArray(new WorldObject[targetList.size()]);
}
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
case TARGET_ITEM:
{
@ -2570,18 +2491,9 @@ public abstract class Skill
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
}
if (!onlyFirst)
{
targetList.add(target);
}
else
{
return new Creature[]
{
target
};
}
return targetList.toArray(new WorldObject[targetList.size()]);
targetList.add(target);
return targetList;
}
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
@ -2593,16 +2505,10 @@ public abstract class Skill
if ((_castRange >= 0) && ((target instanceof NpcInstance) || (target instanceof SummonInstance)) && target.isUndead() && !target.isAlikeDead())
{
cha = target;
if (!onlyFirst)
targetList.add(cha);
if (onlyFirst)
{
targetList.add(cha); // Add target to target list
}
else
{
return new Creature[]
{
cha
};
return targetList;
}
}
else
@ -2643,16 +2549,11 @@ public abstract class Skill
{
continue;
}
if (!onlyFirst)
targetList.add((Creature) obj);
if (onlyFirst)
{
targetList.add((Creature) obj); // Add obj to target lists
}
else
{
return new Creature[]
{
(Creature) obj
};
return targetList;
}
}
}
@ -2661,7 +2562,7 @@ public abstract class Skill
{
return null;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_ENEMY_SUMMON:
{
@ -2670,10 +2571,8 @@ public abstract class Skill
final Summon targetSummon = (Summon) target;
if (((creature instanceof PlayerInstance) && (creature.getPet() != targetSummon) && !targetSummon.isDead() && ((targetSummon.getOwner().getPvpFlag() != 0) || (targetSummon.getOwner().getKarma() > 0))) || (targetSummon.getOwner().isInsideZone(ZoneId.PVP) && ((PlayerInstance) creature).isInsideZone(ZoneId.PVP)))
{
return new Creature[]
{
targetSummon
};
targetList.add(targetSummon);
return targetList;
}
}
return null;
@ -2682,10 +2581,8 @@ public abstract class Skill
{
if ((target != null) && !target.isDead() && ((target instanceof DoorInstance) || (target instanceof ControlTowerInstance)))
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
return null;
}
@ -2698,10 +2595,8 @@ public abstract class Skill
}
if ((target instanceof MonsterInstance) && ((((MonsterInstance) target).getNpcId() == 22217) || (((MonsterInstance) target).getNpcId() == 22216) || (((MonsterInstance) target).getNpcId() == 22215)))
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
return null;
}
@ -2709,10 +2604,8 @@ public abstract class Skill
{
if ((target != null) && target.isDead())
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
return null;
}
@ -2725,10 +2618,8 @@ public abstract class Skill
final NpcInstance npc = (NpcInstance) creature;
if ((npc.getFactionId() == null) || npc.getFactionId().isEmpty())
{
return new Creature[]
{
creature
};
targetList.add(creature);
return targetList;
}
final Collection<WorldObject> objs = creature.getKnownList().getKnownObjects().values();
for (WorldObject newTarget : objs)
@ -2762,20 +2653,19 @@ public abstract class Skill
}
}
public WorldObject[] getTargetList(Creature creature)
public List<Creature> getTargetList(Creature creature)
{
return getTargetList(creature, false);
}
public WorldObject getFirstOfTargetList(Creature creature)
{
WorldObject[] targets;
targets = getTargetList(creature, true);
if ((targets == null) || (targets.length == 0))
final List<Creature> targets = getTargetList(creature, true);
if ((targets == null) || (targets.isEmpty()))
{
return null;
}
return targets[0];
return targets.get(0);
}
public Func[] getStatFuncs(Effect effect, Creature creature)

View File

@ -1500,21 +1500,21 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
}
// Get all possible targets of the skill in a table in function of the skill target type
final WorldObject[] targets = skill.getTargetList(creature);
final List<Creature> targets = skill.getTargetList(creature);
// Set the target of the skill in function of Skill Type and Target Type
Creature target = null;
if ((skill.getTargetType() == SkillTargetType.TARGET_AURA) || (skill.getTargetType() == SkillTargetType.TARGET_GROUND) || skill.isPotion())
{
target = this;
}
else if ((targets == null) || (targets.length == 0))
else if ((targets == null) || targets.isEmpty())
{
getAI().notifyEvent(CtrlEvent.EVT_CANCEL);
return;
}
else if (((skill.getSkillType() == SkillType.BUFF) || (skill.getSkillType() == SkillType.HEAL) || (skill.getSkillType() == SkillType.COMBATPOINTHEAL) || (skill.getSkillType() == SkillType.COMBATPOINTPERCENTHEAL) || (skill.getSkillType() == SkillType.MANAHEAL) || (skill.getSkillType() == SkillType.REFLECT) || (skill.getSkillType() == SkillType.SEED) || (skill.getTargetType() == SkillTargetType.TARGET_SELF) || (skill.getTargetType() == SkillTargetType.TARGET_PET) || (skill.getTargetType() == SkillTargetType.TARGET_PARTY) || (skill.getTargetType() == SkillTargetType.TARGET_CLAN) || (skill.getTargetType() == SkillTargetType.TARGET_ALLY)) && !skill.isPotion())
{
target = (Creature) targets[0];
target = targets.get(0);
}
else
{
@ -2910,7 +2910,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
*/
class MagicUseTask implements Runnable
{
WorldObject[] _targets;
List<Creature> _targets;
Skill _skill;
int _coolTime;
int _phase;
@ -2922,7 +2922,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
* @param coolTime the cool time
* @param phase the phase
*/
public MagicUseTask(WorldObject[] targets, Skill skill, int coolTime, int phase)
public MagicUseTask(List<Creature> targets, Skill skill, int coolTime, int phase)
{
_targets = targets;
_skill = skill;
@ -7261,9 +7261,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
* @param coolTime the cool time
* @param instant the instant
*/
public void onMagicLaunchedTimer(WorldObject[] targets, Skill skill, int coolTime, boolean instant)
public void onMagicLaunchedTimer(List<Creature> targets, Skill skill, int coolTime, boolean instant)
{
if ((skill == null) || (((targets == null) || (targets.length <= 0)) && (skill.getTargetType() != SkillTargetType.TARGET_AURA)))
if ((skill == null) || (((targets == null) || targets.isEmpty()) && (skill.getTargetType() != SkillTargetType.TARGET_AURA)))
{
_skillCast = null;
enableAllSkills();
@ -7282,22 +7282,22 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
escapeRange = skill.getSkillRadius();
}
WorldObject[] finalTargets = null;
List<Creature> finalTargets = null;
int skipped = 0;
if (escapeRange > 0)
{
final List<Creature> targetList = new ArrayList<>();
for (int i = 0; (targets != null) && (i < targets.length); i++)
if (targets != null)
{
if (targets[i] instanceof Creature)
for (Creature target : targets)
{
if (!Util.checkIfInRange(escapeRange, this, targets[i], true))
if (!Util.checkIfInRange(escapeRange, this, target, true))
{
continue;
}
// Check if the target is behind a wall
if ((skill.getSkillRadius() > 0) && skill.isOffensive() && Config.PATHFINDING && !GeoEngine.getInstance().canSeeTarget(this, targets[i]))
if ((skill.getSkillRadius() > 0) && skill.isOffensive() && Config.PATHFINDING && !GeoEngine.getInstance().canSeeTarget(this, target))
{
skipped++;
continue;
@ -7307,19 +7307,20 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
{
if (this instanceof PlayerInstance)
{
if (((Creature) targets[i]).isInsidePeaceZone((PlayerInstance) this))
if (target.isInsidePeaceZone((PlayerInstance) this))
{
continue;
}
}
else if (isInsidePeaceZone(this, targets[i]))
else if (isInsidePeaceZone(this, target))
{
continue;
}
}
targetList.add((Creature) targets[i]);
targetList.add(target);
}
}
if (targetList.isEmpty() && (skill.getTargetType() != SkillTargetType.TARGET_AURA))
{
if (this instanceof PlayerInstance)
@ -7333,7 +7334,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
abortCast();
return;
}
finalTargets = targetList.toArray(new Creature[targetList.size()]);
finalTargets = targetList;
}
else
{
@ -7389,9 +7390,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
* @param coolTime the cool time
* @param instant the instant
*/
public void onMagicHitTimer(WorldObject[] targets, Skill skill, int coolTime, boolean instant)
public void onMagicHitTimer(List<Creature> targets, Skill skill, int coolTime, boolean instant)
{
if ((skill == null) || (((targets == null) || (targets.length <= 0)) && (skill.getTargetType() != SkillTargetType.TARGET_AURA)))
if ((skill == null) || (((targets == null) || targets.isEmpty()) && (skill.getTargetType() != SkillTargetType.TARGET_AURA)))
{
_skillCast = null;
enableAllSkills();
@ -7422,7 +7423,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
mog.exit(true);
}
final WorldObject target = targets == null ? null : targets[0];
final WorldObject target = targets == null ? null : targets.get(0);
if (target != null)
{
notifyQuestEventSkillFinished(skill, target);
@ -7430,10 +7431,10 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
return;
}
final WorldObject[] targets2 = targets;
final List<Creature> targets2 = targets;
try
{
if ((targets2 != null) && (targets2.length != 0))
if ((targets2 != null) && !targets2.isEmpty())
{
// Go through targets table
for (WorldObject target2 : targets2)
@ -7561,7 +7562,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
* @param targets the targets
* @param skill the skill
*/
public void onMagicFinalizer(WorldObject[] targets, Skill skill)
public void onMagicFinalizer(List<Creature> targets, Skill skill)
{
if (skill.isPotion())
{
@ -7660,7 +7661,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
{
try
{
if ((targets != null) && (targets.length > 0))
if (targets != null)
{
for (WorldObject target : targets)
{
@ -7851,7 +7852,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
* @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<Creature> targets)
{
try
{
@ -7860,7 +7861,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
return;
}
if ((targets == null) || (targets.length == 0))
if ((targets == null) || targets.isEmpty())
{
getAI().notifyEvent(CtrlEvent.EVT_CANCEL);
return;

View File

@ -573,10 +573,8 @@ public class CubicInstance
final SkillType type = skill.getSkillType();
final ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(skill.getSkillType());
final Creature[] targets =
{
target
};
final List<Creature> targets = new ArrayList<>();
targets.add(target);
if ((type == SkillType.PARALYZE) || (type == SkillType.STUN) || (type == SkillType.ROOT) || (type == SkillType.AGGDAMAGE))
{
@ -615,9 +613,9 @@ public class CubicInstance
* @param skill the skill
* @param targets the targets
*/
public void useCubicContinuous(CubicInstance activeCubic, Skill skill, WorldObject[] targets)
public void useCubicContinuous(CubicInstance activeCubic, Skill skill, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if ((target == null) || target.isDead())
{
@ -644,9 +642,9 @@ public class CubicInstance
* @param skill the skill
* @param targets the targets
*/
public void useCubicMdam(CubicInstance activeCubic, Skill skill, WorldObject[] targets)
public void useCubicMdam(CubicInstance activeCubic, Skill skill, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if (target == null)
{
@ -703,9 +701,9 @@ public class CubicInstance
* @param skill the skill
* @param targets the targets
*/
public void useCubicDisabler(SkillType type, CubicInstance activeCubic, Skill skill, WorldObject[] targets)
public void useCubicDisabler(SkillType type, CubicInstance activeCubic, Skill skill, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if ((target == null) || target.isDead())
{
@ -905,10 +903,9 @@ public class CubicInstance
final Creature target = _target;
if ((target != null) && !target.isDead() && ((target.getMaxHp() - target.getCurrentHp()) > skill.getPower()))
{
final Creature[] targets =
{
target
};
final List<Creature> targets = new ArrayList<>();
targets.add(target);
final ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(skill.getSkillType());
if (handler != null)
{

View File

@ -18,6 +18,8 @@ package org.l2jmobius.gameserver.model.actor.instance;
import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;
import org.l2jmobius.commons.concurrent.ThreadPool;
@ -424,10 +426,8 @@ public class TamedBeastInstance extends FeedableBeastInstance
{
final WorldObject oldTarget = owner.getTarget();
owner.setTarget(_tamedBeast);
final WorldObject[] targets =
{
_tamedBeast
};
final List<Creature> targets = new ArrayList<>();
targets.add(_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.

View File

@ -408,8 +408,8 @@ public class Weapon extends Item
{
// Get the skill handler corresponding to the skill type
final ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(skill.getSkillType());
final Creature[] targets = new Creature[1];
targets[0] = target;
final List<Creature> targets = new ArrayList<>();
targets.add(target);
// Launch the magic skill and calculate its effects
if (handler != null)

View File

@ -143,7 +143,7 @@ public class EffectSignetMDam extends Effect
if (!targets.isEmpty())
{
caster.broadcastPacket(new MagicSkillLaunched(caster, getSkill().getDisplayId(), getSkill().getLevel(), targets.toArray(new Creature[targets.size()])));
caster.broadcastPacket(new MagicSkillLaunched(caster, getSkill().getDisplayId(), getSkill().getLevel(), targets));
for (Creature target : targets)
{
final boolean mcrit = Formulas.calcMCrit(caster.getMCriticalHit(target, getSkill()));

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.WorldObject;
@ -51,7 +53,7 @@ public class SkillCharge extends Skill
}
@Override
public void useSkill(Creature caster, WorldObject[] targets)
public void useSkill(Creature caster, List<Creature> targets)
{
if (caster.isAlikeDead())
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatSet;
@ -59,7 +61,7 @@ public class SkillChargeDmg extends Skill
}
@Override
public void useSkill(Creature caster, WorldObject[] targets)
public void useSkill(Creature caster, List<Creature> targets)
{
if (caster.isAlikeDead())
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.WorldObject;
@ -54,7 +56,7 @@ public class SkillChargeEffect extends Skill
}
@Override
public void useSkill(Creature creature, WorldObject[] targets)
public void useSkill(Creature creature, List<Creature> targets)
{
if (creature.isAlikeDead())
{

View File

@ -16,10 +16,11 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
/**
@ -40,7 +41,7 @@ public class SkillCreateItem extends Skill
}
@Override
public void useSkill(Creature creature, WorldObject[] targets)
public void useSkill(Creature creature, List<Creature> targets)
{
if (creature.isAlikeDead() || (_createItemId == 0) || (_createItemCount == 0))
{

View File

@ -16,9 +16,10 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
@ -30,7 +31,7 @@ public class SkillDefault extends Skill
}
@Override
public void useSkill(Creature caster, WorldObject[] targets)
public void useSkill(Creature caster, List<Creature> targets)
{
caster.sendPacket(ActionFailed.STATIC_PACKET);
caster.sendMessage("Skill not implemented. Skill ID: " + getId() + " " + getSkillType());

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatSet;
@ -43,7 +45,7 @@ public class SkillDrain extends Skill
}
@Override
public void useSkill(Creature creature, WorldObject[] targets)
public void useSkill(Creature creature, List<Creature> targets)
{
if (creature.isAlikeDead())
{
@ -168,9 +170,9 @@ public class SkillDrain extends Skill
getEffectsSelf(creature);
}
public void useCubicSkill(CubicInstance activeCubic, WorldObject[] targets)
public void useCubicSkill(CubicInstance activeCubic, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if (target.isAlikeDead() && (getTargetType() != SkillTargetType.TARGET_CORPSE_MOB))
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatSet;
@ -47,7 +49,7 @@ public class SkillElemental extends Skill
}
@Override
public void useSkill(Creature creature, WorldObject[] targets)
public void useSkill(Creature creature, List<Creature> targets)
{
if (creature.isAlikeDead())
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatSet;
@ -31,7 +33,7 @@ public class SkillSeed extends Skill
}
@Override
public void useSkill(Creature caster, WorldObject[] targets)
public void useSkill(Creature caster, List<Creature> targets)
{
if (caster.isAlikeDead())
{

View File

@ -16,13 +16,14 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.gameserver.datatables.sql.NpcTable;
import org.l2jmobius.gameserver.instancemanager.IdManager;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.Skill;
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.instance.EffectPointInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -41,7 +42,7 @@ public class SkillSignet extends Skill
}
@Override
public void useSkill(Creature caster, WorldObject[] targets)
public void useSkill(Creature caster, List<Creature> targets)
{
if (caster.isAlikeDead())
{

View File

@ -16,9 +16,10 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
public class SkillSignetCasttime extends Skill
@ -34,7 +35,7 @@ public class SkillSignetCasttime extends Skill
}
@Override
public void useSkill(Creature caster, WorldObject[] targets)
public void useSkill(Creature caster, List<Creature> targets)
{
if (caster.isAlikeDead())
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.datatables.sql.NpcTable;
import org.l2jmobius.gameserver.datatables.xml.ExperienceData;
@ -106,7 +108,7 @@ public class SkillSummon extends Skill
}
@Override
public void useSkill(Creature caster, WorldObject[] targets)
public void useSkill(Creature caster, List<Creature> targets)
{
if (caster.isAlikeDead() || !(caster instanceof PlayerInstance))
{
@ -141,7 +143,7 @@ public class SkillSummon extends Skill
cubicSkillLevel = ((getLevel() - 100) / 7) + 8;
}
if (targets.length > 1) // Mass cubic skill
if (targets.size() > 1) // Mass cubic skill
{
for (WorldObject obj : targets)
{
@ -236,7 +238,7 @@ public class SkillSummon extends Skill
// Check to see if we should do the decay right after the cast
if (getTargetType() == SkillTargetType.TARGET_CORPSE_MOB)
{
final Creature target = (Creature) targets[0];
final Creature target = targets.get(0);
if (target.isDead() && (target instanceof NpcInstance))
{
summon.spawnMe(target.getX(), target.getY(), target.getZ() + 5);

View File

@ -16,6 +16,9 @@
*/
package org.l2jmobius.gameserver.network.serverpackets;
import java.util.ArrayList;
import java.util.List;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -29,27 +32,25 @@ public class MagicSkillLaunched extends GameServerPacket
private final int _skillId;
private final int _skillLevel;
private int _numberOfTargets;
private WorldObject[] _targets;
private List<Creature> _targets;
private final int _singleTargetId;
public MagicSkillLaunched(Creature creature, int skillId, int skillLevel, WorldObject[] targets)
public MagicSkillLaunched(Creature creature, int skillId, int skillLevel, List<Creature> targets)
{
_objectId = creature.getObjectId();
_skillId = skillId;
_skillLevel = skillLevel;
if (targets != null)
{
_numberOfTargets = targets.length;
_numberOfTargets = targets.size();
_targets = targets;
}
else
{
_numberOfTargets = 1;
final WorldObject[] objs =
{
creature
};
_targets = objs;
_targets = new ArrayList<>();
_targets.add(creature);
}
_singleTargetId = 0;

View File

@ -17,10 +17,10 @@
package org.l2jmobius.gameserver.handler;
import java.io.IOException;
import java.util.List;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
public interface ISkillHandler
@ -32,7 +32,7 @@ public interface ISkillHandler
* @param targets
* @throws IOException
*/
void useSkill(Creature creature, Skill skill, WorldObject[] targets) throws IOException;
void useSkill(Creature creature, Skill skill, List<Creature> targets) throws IOException;
/**
* this method is called at initialization to register all the item ids automatically

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.handler.SkillHandler;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
@ -38,7 +40,7 @@ public class BalanceLife implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
// check for other effects
try

View File

@ -16,10 +16,11 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -34,14 +35,14 @@ public class BeastFeed implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{
return;
}
final WorldObject[] targetList = skill.getTargetList(creature);
final List<Creature> targetList = skill.getTargetList(creature);
if (targetList == null)
{
return;

View File

@ -16,13 +16,14 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -49,7 +50,7 @@ public class Blow implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (creature.isAlikeDead())
{
@ -61,7 +62,7 @@ public class Blow implements ISkillHandler
final boolean ss = creature.checkSs();
Formulas.getInstance();
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if (target.isAlikeDead())
{

View File

@ -16,6 +16,7 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import java.util.logging.Logger;
import org.l2jmobius.gameserver.handler.ISkillHandler;
@ -36,7 +37,7 @@ public class Charge implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
for (WorldObject target1 : targets)
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
@ -23,7 +25,6 @@ import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.Clan;
@ -40,7 +41,7 @@ public class ClanGate implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
PlayerInstance player = null;
if (creature instanceof PlayerInstance)

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.handler.SkillHandler;
import org.l2jmobius.gameserver.model.Skill;
@ -35,7 +37,7 @@ public class CombatPointHeal implements ISkillHandler
};
@Override
public void useSkill(Creature actChar, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
// check for other effects
try
@ -43,7 +45,7 @@ public class CombatPointHeal implements ISkillHandler
final ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(SkillType.BUFF);
if (handler != null)
{
handler.useSkill(actChar, skill, targets);
handler.useSkill(creature, skill, targets);
}
}
catch (Exception e)

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
//
@ -65,7 +67,7 @@ public class Continuous implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skillValue, WorldObject[] targets)
public void useSkill(Creature creature, Skill skillValue, List<Creature> targets)
{
if (creature == null)
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
@ -36,7 +38,7 @@ public class CpDam implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof Playable))
{

View File

@ -16,11 +16,12 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.RecipeController;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -34,7 +35,7 @@ public class Craft implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,12 +16,12 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import java.util.logging.Logger;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -38,14 +38,14 @@ public class DeluxeKey implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{
return;
}
final WorldObject[] targetList = skill.getTargetList(creature);
final List<Creature> targetList = skill.getTargetList(creature);
if (targetList == null)
{
return;

View File

@ -80,7 +80,7 @@ public class Disablers implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
final SkillType type = skill.getSkillType();
final boolean bss = creature.checkBss();
@ -671,10 +671,10 @@ public class Disablers implements ISkillHandler
LOGGER.warning("Couldn't find skill handler for HEAL.");
continue;
}
final WorldObject[] tgts = new WorldObject[]
{
target
};
final List<Creature> tgts = new ArrayList<>();
tgts.add(target);
try
{
healhandler.useSkill(creature, skill, tgts);

View File

@ -16,12 +16,12 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import java.util.logging.Logger;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -37,14 +37,14 @@ public class DrainSoul implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{
return;
}
final WorldObject[] targetList = skill.getTargetList(creature);
final List<Creature> targetList = skill.getTargetList(creature);
if (targetList == null)
{
return;

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.datatables.xml.ZoneData;
@ -24,7 +26,6 @@ import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
@ -46,7 +47,7 @@ public class Fishing implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,11 +16,12 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Fishing;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.items.Weapon;
@ -39,7 +40,7 @@ public class FishingSkill implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
@ -33,7 +35,7 @@ public class GetPlayer implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (creature.isAlikeDead())
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
@ -33,7 +35,7 @@ public class GiveSp implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
for (WorldObject obj : targets)
{

View File

@ -16,6 +16,7 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import java.util.logging.Logger;
import org.l2jmobius.Config;
@ -49,7 +50,7 @@ public class Harvest implements ISkillHandler
private MonsterInstance _target;
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{
@ -58,7 +59,7 @@ public class Harvest implements ISkillHandler
_player = (PlayerInstance) creature;
final WorldObject[] targetList = skill.getTargetList(creature);
final List<Creature> targetList = skill.getTargetList(creature);
final InventoryUpdate iu = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate();
if (targetList == null)
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.handler.SkillHandler;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
@ -43,7 +45,7 @@ public class Heal implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
PlayerInstance player = null;
if (creature instanceof PlayerInstance)

View File

@ -16,10 +16,11 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.skills.Stat;
@ -37,9 +38,9 @@ public class ManaHeal implements ISkillHandler
};
@Override
public void useSkill(Creature actChar, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if ((target == null) || target.isDead() || target.isInvul())
{
@ -62,10 +63,10 @@ public class ManaHeal implements ISkillHandler
sump.addAttribute(StatusUpdate.CUR_MP, (int) target.getCurrentMp());
target.sendPacket(sump);
if ((actChar instanceof PlayerInstance) && (actChar != target))
if ((creature instanceof PlayerInstance) && (creature != target))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_MP_HAS_BEEN_RESTORED_BY_S1);
sm.addString(actChar.getName());
sm.addString(creature.getName());
sm.addNumber((int) mp);
target.sendPacket(sm);
}
@ -79,20 +80,20 @@ public class ManaHeal implements ISkillHandler
if (skill.isMagic() && skill.useSpiritShot())
{
if (actChar.checkBss())
if (creature.checkBss())
{
actChar.removeBss();
creature.removeBss();
}
if (actChar.checkSps())
if (creature.checkSps())
{
actChar.removeSps();
creature.removeSps();
}
}
else if (skill.useSoulShot())
{
if (actChar.checkSs())
if (creature.checkSs())
{
actChar.removeSs();
creature.removeSs();
}
}
}

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
@ -41,7 +43,7 @@ public class Manadam implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
Creature target = null;
if (creature.isAlikeDead())

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
@ -37,7 +39,7 @@ public class Mdam implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (creature.isAlikeDead())
{

View File

@ -51,7 +51,7 @@ public class Pdam implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (creature.isAlikeDead())
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.enums.TeleportWhereType;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
@ -40,7 +42,7 @@ public class Recall implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
try
{

View File

@ -39,7 +39,7 @@ public class Resurrect implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
PlayerInstance player = null;
if (creature instanceof PlayerInstance)

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.datatables.sql.NpcTable;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
@ -25,7 +27,6 @@ import org.l2jmobius.gameserver.instancemanager.IdManager;
import org.l2jmobius.gameserver.instancemanager.SiegeManager;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.actor.instance.SiegeFlagInstance;
@ -44,7 +45,7 @@ public class SiegeFlag implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,6 +16,7 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import java.util.logging.Logger;
import org.l2jmobius.commons.util.Rnd;
@ -24,7 +25,6 @@ import org.l2jmobius.gameserver.datatables.xml.ManorSeedData;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -50,7 +50,7 @@ public class Sow implements ISkillHandler
private int _seedId;
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{
@ -59,20 +59,21 @@ public class Sow implements ISkillHandler
_player = (PlayerInstance) creature;
final WorldObject[] targetList = skill.getTargetList(creature);
final List<Creature> targetList = skill.getTargetList(creature);
if (targetList == null)
{
return;
}
for (int index = 0; index < targetList.length; index++)
for (@SuppressWarnings("unused")
Creature element : targetList)
{
if (!(targetList[0] instanceof MonsterInstance))
if (!(targetList.get(0) instanceof MonsterInstance))
{
continue;
}
_target = (MonsterInstance) targetList[0];
_target = (MonsterInstance) targetList.get(0);
if (_target.isSeeded())
{
_player.sendPacket(ActionFailed.STATIC_PACKET);
@ -104,6 +105,7 @@ public class Sow implements ISkillHandler
_player.sendPacket(ActionFailed.STATIC_PACKET);
break;
}
// Consuming used seed
_player.destroyItem("Consume", item.getObjectId(), 1, null, false);
SystemMessage sm = null;
@ -126,7 +128,8 @@ public class Sow implements ISkillHandler
{
_player.getParty().broadcastToPartyMembers(sm);
}
// TODO: Mob should not agro on player, this way doesn't work really nice
// TODO: Mob should not aggro on player, this way doesn't work really nice
_target.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
}
}

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.ai.CtrlEvent;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
@ -39,7 +41,7 @@ public class Spoil implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
import org.l2jmobius.gameserver.instancemanager.FortManager;
@ -43,7 +45,7 @@ public class StrSiegeAssault implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.Skill;
@ -41,7 +43,7 @@ public class SummonFriend implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,13 +16,13 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import java.util.logging.Logger;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -38,7 +38,7 @@ public class SummonTreasureKey implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
@ -41,7 +43,7 @@ public class Sweep implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{

View File

@ -16,12 +16,13 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
import org.l2jmobius.gameserver.instancemanager.FortManager;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -40,7 +41,7 @@ public class TakeCastle implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
if (!(creature instanceof PlayerInstance))
{
@ -77,9 +78,9 @@ public class TakeCastle implements ISkillHandler
try
{
if ((castle != null) && (targets[0] instanceof ArtefactInstance))
if ((castle != null) && (targets.get(0) instanceof ArtefactInstance))
{
castle.Engrave(player.getClan(), targets[0].getObjectId());
castle.Engrave(player.getClan(), targets.get(0).getObjectId());
}
else if (fort != null)
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.handler.ISkillHandler;
@ -39,9 +41,9 @@ public class Unlock implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
final WorldObject[] targetList = skill.getTargetList(creature);
final List<Creature> targetList = skill.getTargetList(creature);
if (targetList == null)
{
return;

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
@ -31,7 +33,7 @@ public class ZakenPlayer implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
try
{
@ -41,59 +43,75 @@ public class ZakenPlayer implements ISkillHandler
{
continue;
}
final Creature target = (Creature) target1;
final int ch = (Rnd.get(14) + 1);
if (ch == 1)
switch (Rnd.get(14) + 1)
{
target.teleToLocation(55299, 219120, -2952, true);
}
else if (ch == 2)
{
target.teleToLocation(56363, 218043, -2952, true);
}
else if (ch == 3)
{
target.teleToLocation(54245, 220162, -2952, true);
}
else if (ch == 4)
{
target.teleToLocation(56289, 220126, -2952, true);
}
else if (ch == 5)
{
target.teleToLocation(55299, 219120, -3224, true);
}
else if (ch == 6)
{
target.teleToLocation(56363, 218043, -3224, true);
}
else if (ch == 7)
{
target.teleToLocation(54245, 220162, -3224, true);
}
else if (ch == 8)
{
target.teleToLocation(56289, 220126, -3224, true);
}
else if (ch == 9)
{
target.teleToLocation(55299, 219120, -3496, true);
}
else if (ch == 10)
{
target.teleToLocation(56363, 218043, -3496, true);
}
else if (ch == 11)
{
target.teleToLocation(54245, 220162, -3496, true);
}
else if (ch == 12)
{
target.teleToLocation(56289, 220126, -3496, true);
}
else
{
target.teleToLocation(53930, 217760, -2944, true);
case 1:
{
target.teleToLocation(55299, 219120, -2952, true);
break;
}
case 2:
{
target.teleToLocation(56363, 218043, -2952, true);
break;
}
case 3:
{
target.teleToLocation(54245, 220162, -2952, true);
break;
}
case 4:
{
target.teleToLocation(56289, 220126, -2952, true);
break;
}
case 5:
{
target.teleToLocation(55299, 219120, -3224, true);
break;
}
case 6:
{
target.teleToLocation(56363, 218043, -3224, true);
break;
}
case 7:
{
target.teleToLocation(54245, 220162, -3224, true);
break;
}
case 8:
{
target.teleToLocation(56289, 220126, -3224, true);
break;
}
case 9:
{
target.teleToLocation(55299, 219120, -3496, true);
break;
}
case 10:
{
target.teleToLocation(56363, 218043, -3496, true);
break;
}
case 11:
{
target.teleToLocation(54245, 220162, -3496, true);
break;
}
case 12:
{
target.teleToLocation(56289, 220126, -3496, true);
break;
}
default:
{
target.teleToLocation(53930, 217760, -2944, true);
break;
}
}
}
}

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler.skillhandlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.handler.ISkillHandler;
import org.l2jmobius.gameserver.model.Skill;
@ -31,7 +33,7 @@ public class ZakenSelf implements ISkillHandler
};
@Override
public void useSkill(Creature creature, Skill skill, WorldObject[] targets)
public void useSkill(Creature creature, Skill skill, List<Creature> targets)
{
try
{
@ -41,59 +43,75 @@ public class ZakenSelf implements ISkillHandler
{
continue;
}
final Creature target = (Creature) target1;
final int ch = (Rnd.get(14) + 1);
if (ch == 1)
switch (Rnd.get(14) + 1)
{
target.teleToLocation(55299, 219120, -2952, true);
}
else if (ch == 2)
{
target.teleToLocation(56363, 218043, -2952, true);
}
else if (ch == 3)
{
target.teleToLocation(54245, 220162, -2952, true);
}
else if (ch == 4)
{
target.teleToLocation(56289, 220126, -2952, true);
}
else if (ch == 5)
{
target.teleToLocation(55299, 219120, -3224, true);
}
else if (ch == 6)
{
target.teleToLocation(56363, 218043, -3224, true);
}
else if (ch == 7)
{
target.teleToLocation(54245, 220162, -3224, true);
}
else if (ch == 8)
{
target.teleToLocation(56289, 220126, -3224, true);
}
else if (ch == 9)
{
target.teleToLocation(55299, 219120, -3496, true);
}
else if (ch == 10)
{
target.teleToLocation(56363, 218043, -3496, true);
}
else if (ch == 11)
{
target.teleToLocation(54245, 220162, -3496, true);
}
else if (ch == 12)
{
target.teleToLocation(56289, 220126, -3496, true);
}
else
{
target.teleToLocation(53930, 217760, -2944, true);
case 1:
{
target.teleToLocation(55299, 219120, -2952, true);
break;
}
case 2:
{
target.teleToLocation(56363, 218043, -2952, true);
break;
}
case 3:
{
target.teleToLocation(54245, 220162, -2952, true);
break;
}
case 4:
{
target.teleToLocation(56289, 220126, -2952, true);
break;
}
case 5:
{
target.teleToLocation(55299, 219120, -3224, true);
break;
}
case 6:
{
target.teleToLocation(56363, 218043, -3224, true);
break;
}
case 7:
{
target.teleToLocation(54245, 220162, -3224, true);
break;
}
case 8:
{
target.teleToLocation(56289, 220126, -3224, true);
break;
}
case 9:
{
target.teleToLocation(55299, 219120, -3496, true);
break;
}
case 10:
{
target.teleToLocation(56363, 218043, -3496, true);
break;
}
case 11:
{
target.teleToLocation(54245, 220162, -3496, true);
break;
}
case 12:
{
target.teleToLocation(56289, 220126, -3496, true);
break;
}
default:
{
target.teleToLocation(53930, 217760, -2944, true);
break;
}
}
}
}

View File

@ -16,6 +16,7 @@
*/
package org.l2jmobius.gameserver.model;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import org.l2jmobius.gameserver.handler.ISkillHandler;
@ -156,9 +157,9 @@ public class ChanceSkillList extends ConcurrentHashMap<Skill, ChanceCondition>
}
final ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(castedSkill.getSkillType());
final WorldObject[] targets = castedSkill.getTargetList(_owner, false, target);
final List<Creature> targets = castedSkill.getTargetList(_owner, false, target);
_owner.broadcastPacket(new MagicSkillLaunched(_owner, castedSkill.getDisplayId(), castedSkill.getLevel(), targets));
_owner.broadcastPacket(new MagicSkillUse(_owner, (Creature) targets[0], castedSkill.getDisplayId(), castedSkill.getLevel(), 0, 0));
_owner.broadcastPacket(new MagicSkillUse(_owner, targets.get(0), castedSkill.getDisplayId(), castedSkill.getLevel(), 0, 0));
// Launch the magic skill and calculate its effects
if (handler != null)

View File

@ -649,7 +649,7 @@ public abstract class Skill
_isDebuff = set.getBoolean("isDebuff", false);
}
public abstract void useSkill(Creature caster, WorldObject[] targets);
public abstract void useSkill(Creature caster, List<Creature> targets);
public boolean isSingleEffect()
{
@ -1374,7 +1374,7 @@ public abstract class Skill
return true;
}
public WorldObject[] getTargetList(Creature creature, boolean onlyFirst)
public List<Creature> getTargetList(Creature creature, boolean onlyFirst)
{
// Init to null the target of the skill
Creature target = null;
@ -1409,7 +1409,7 @@ public abstract class Skill
* @param targetCreature
* @return
*/
public WorldObject[] getTargetList(Creature creature, boolean onlyFirst, Creature targetCreature)
public List<Creature> getTargetList(Creature creature, boolean onlyFirst, Creature targetCreature)
{
// to avoid attacks during oly start period
if ((creature instanceof PlayerInstance) && _isOffensive && (((PlayerInstance) creature).isInOlympiadMode() && !((PlayerInstance) creature).isOlympiadStart()))
@ -1421,10 +1421,8 @@ public abstract class Skill
final List<Creature> targetList = new ArrayList<>();
if (_ispotion)
{
return new Creature[]
{
creature
};
targetList.add(creature);
return targetList;
}
Creature target = targetCreature;
@ -1529,27 +1527,21 @@ public abstract class Skill
}
// If a target is found, return it in a table else send a system message TARGET_IS_INCORRECT
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
case TARGET_SELF:
case TARGET_GROUND:
{
return new Creature[]
{
creature
};
targetList.add(creature);
return targetList;
}
case TARGET_HOLY:
{
if ((creature instanceof PlayerInstance) && (creature.getTarget() instanceof ArtefactInstance))
{
return new Creature[]
{
(ArtefactInstance) creature.getTarget()
};
targetList.add((ArtefactInstance) creature.getTarget());
return targetList;
}
return null;
}
@ -1559,10 +1551,8 @@ public abstract class Skill
target = creature.getPet();
if ((target != null) && !target.isDead())
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
return null;
}
@ -1573,10 +1563,8 @@ public abstract class Skill
target = ((Summon) creature).getOwner();
if ((target != null) && !target.isDead())
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
}
return null;
@ -1588,10 +1576,8 @@ public abstract class Skill
target = creature.getPet();
if ((target != null) && target.isDead())
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
}
return null;
@ -1695,19 +1681,14 @@ public abstract class Skill
{
continue;
}
if (!onlyFirst)
targetList.add(nearby);
if (onlyFirst)
{
targetList.add(nearby);
}
else
{
return new Creature[]
{
nearby
};
return targetList;
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_AREA:
{
@ -1718,27 +1699,22 @@ public abstract class Skill
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
}
Creature cha;
if (_castRange >= 0)
{
cha = target;
if (!onlyFirst)
targetList.add(cha);
if (onlyFirst)
{
targetList.add(cha); // Add target to target list
}
else
{
return new Creature[]
{
cha
};
return targetList;
}
}
else
{
cha = creature;
}
final boolean effectOriginIsPlayableInstance = cha instanceof Playable;
PlayerInstance src = null;
if (creature instanceof PlayerInstance)
{
@ -1748,6 +1724,7 @@ public abstract class Skill
{
src = ((Summon) creature).getOwner();
}
final int radius = _skillRadius;
final boolean srcInArena = creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE);
for (WorldObject obj : creature.getKnownList().getKnownObjects().values())
@ -1768,22 +1745,24 @@ public abstract class Skill
{
continue;
}
if (_isOffensive && Creature.isInsidePeaceZone(creature, obj))
{
continue;
}
if (!GeoEngine.getInstance().canSeeTarget(creature, obj))
{
continue;
}
target = (Creature) obj;
if (!GeoEngine.getInstance().canSeeTarget(creature, target))
{
continue;
}
if (_isOffensive && Creature.isInsidePeaceZone(creature, target))
{
continue;
}
if (!target.isAlikeDead() && (target != creature))
{
if (!Util.checkIfInRange(radius, obj, cha, true))
{
continue;
}
if (src != null) // caster is l2playableinstance and exists
if (src != null) // caster is a playable instance and exists
{
// check for Events
if (obj instanceof PlayerInstance)
@ -1814,6 +1793,13 @@ public abstract class Skill
continue;
}
}
// Summon AOE skills should not target non attackable players.
if (obj.isPlayable() && !creature.isPlayer() && !obj.isAutoAttackable(creature))
{
continue;
}
if (obj instanceof PlayerInstance)
{
final PlayerInstance trg = (PlayerInstance) obj;
@ -1845,7 +1831,7 @@ public abstract class Skill
}
}
}
if (obj instanceof Summon)
else if (obj instanceof Summon)
{
final PlayerInstance trg = ((Summon) obj).getOwner();
if (trg == null)
@ -1877,11 +1863,7 @@ public abstract class Skill
}
}
}
else if (effectOriginIsPlayableInstance && // If effect starts at PlayableInstance and
!(obj instanceof Playable))
{
continue;
}
targetList.add((Creature) obj);
}
}
@ -1889,7 +1871,7 @@ public abstract class Skill
{
return null;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_MULTIFACE:
{
@ -1898,17 +1880,13 @@ public abstract class Skill
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
}
if (!onlyFirst)
targetList.add(target);
if (onlyFirst)
{
targetList.add(target);
}
else
{
return new Creature[]
{
target
};
return targetList;
}
final int radius = _skillRadius;
PlayerInstance src = null;
if (creature instanceof PlayerInstance)
@ -1971,26 +1949,22 @@ public abstract class Skill
return null;
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
// TODO multiface targets all around right now. need it to just get targets the character is facing.
}
case TARGET_PARTY:
{
targetList.add(creature);
if (onlyFirst)
{
return new Creature[]
{
creature
};
return targetList;
}
targetList.add(creature);
final PlayerInstance player = creature.getActingPlayer();
if (player == null)
{
return new Creature[]
{
creature
};
targetList.add(creature);
return targetList;
}
if (creature instanceof Summon)
{
@ -2060,17 +2034,15 @@ public abstract class Skill
}
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_PARTY_MEMBER:
{
if ((target != null) && !target.isDead() && ((target == creature) || ((creature.getParty() != null) && (target.getParty() != null) && (creature.getParty().getPartyLeaderOID() == target.getParty().getPartyLeaderOID())) || (creature.getPet() == target) || (creature == target.getPet())))
{
// If a target is found, return it in a table else send a system message TARGET_IS_INCORRECT
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
@ -2080,10 +2052,8 @@ public abstract class Skill
if ((target != creature) && (target != null) && !target.isDead() && (creature.getParty() != null) && (target.getParty() != null) && (creature.getParty().getPartyLeaderOID() == target.getParty().getPartyLeaderOID()))
{
// If a target is found, return it in a table else send a system message TARGET_IS_INCORRECT
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
@ -2099,22 +2069,15 @@ public abstract class Skill
if (_targetType != SkillTargetType.TARGET_CORPSE_ALLY) // if corpose, the caster is not included
{
if (player.isInOlympiadMode())
{
return new Creature[]
{
player
};
}
if (!onlyFirst)
{
targetList.add(player);
return targetList;
}
else
targetList.add(player);
if (onlyFirst)
{
return new Creature[]
{
player
};
return targetList;
}
}
PlayerInstance src = null;
@ -2192,21 +2155,16 @@ public abstract class Skill
{
continue;
}
if (!onlyFirst)
targetList.add((Creature) newTarget);
if (onlyFirst)
{
targetList.add((Creature) newTarget);
}
else
{
return new Creature[]
{
(Creature) newTarget
};
return targetList;
}
}
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_CORPSE_CLAN:
case TARGET_CLAN:
@ -2219,22 +2177,15 @@ public abstract class Skill
if (_targetType != SkillTargetType.TARGET_CORPSE_CLAN)
{
if (player.isInOlympiadMode())
{
return new Creature[]
{
player
};
}
if (!onlyFirst)
{
targetList.add(player);
return targetList;
}
else
targetList.add(player);
if (onlyFirst)
{
return new Creature[]
{
player
};
return targetList;
}
}
if (clan != null)
@ -2252,6 +2203,7 @@ public abstract class Skill
{
continue;
}
final PlayerInstance trg = newTarget;
final PlayerInstance src = player;
// if src is in event and trg not OR viceversa:
@ -2290,16 +2242,11 @@ public abstract class Skill
{
continue;
}
if (!onlyFirst)
targetList.add(newTarget);
if (onlyFirst)
{
targetList.add(newTarget);
}
else
{
return new Creature[]
{
newTarget
};
return targetList;
}
}
}
@ -2310,10 +2257,8 @@ public abstract class Skill
final NpcInstance npc = (NpcInstance) creature;
if ((npc.getFactionId() == null) || npc.getFactionId().isEmpty())
{
return new Creature[]
{
creature
};
targetList.add(creature);
return targetList;
}
targetList.add(creature);
final Collection<WorldObject> objs = creature.getKnownList().getKnownObjects().values();
@ -2332,7 +2277,7 @@ public abstract class Skill
}
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_CORPSE_PLAYER:
{
@ -2390,15 +2335,8 @@ public abstract class Skill
}
if (condGood)
{
if (!onlyFirst)
{
targetList.add(target);
return targetList.toArray(new WorldObject[targetList.size()]);
}
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
}
}
@ -2412,15 +2350,9 @@ public abstract class Skill
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
}
if (!onlyFirst)
{
targetList.add(target);
return targetList.toArray(new WorldObject[targetList.size()]);
}
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
case TARGET_AREA_CORPSE_MOB:
{
@ -2429,17 +2361,13 @@ public abstract class Skill
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
}
if (!onlyFirst)
targetList.add(target);
if (onlyFirst)
{
targetList.add(target);
}
else
{
return new Creature[]
{
target
};
return targetList;
}
final boolean srcInArena = creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE);
PlayerInstance src = null;
if (creature instanceof PlayerInstance)
@ -2540,7 +2468,7 @@ public abstract class Skill
{
return null;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_UNLOCKABLE:
{
@ -2550,15 +2478,9 @@ public abstract class Skill
creature.sendPacket(new SystemMessage(SystemMessageId.INVALID_TARGET));
return null;
}
if (!onlyFirst)
{
targetList.add(target);
return targetList.toArray(new WorldObject[targetList.size()]);
}
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
case TARGET_ITEM:
{
@ -2574,18 +2496,9 @@ public abstract class Skill
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
}
if (!onlyFirst)
{
targetList.add(target);
}
else
{
return new Creature[]
{
target
};
}
return targetList.toArray(new WorldObject[targetList.size()]);
targetList.add(target);
return targetList;
}
creature.sendPacket(new SystemMessage(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET));
return null;
@ -2597,16 +2510,10 @@ public abstract class Skill
if ((_castRange >= 0) && ((target instanceof NpcInstance) || (target instanceof SummonInstance)) && target.isUndead() && !target.isAlikeDead())
{
cha = target;
if (!onlyFirst)
targetList.add(cha);
if (onlyFirst)
{
targetList.add(cha); // Add target to target list
}
else
{
return new Creature[]
{
cha
};
return targetList;
}
}
else
@ -2647,16 +2554,11 @@ public abstract class Skill
{
continue;
}
if (!onlyFirst)
targetList.add((Creature) obj);
if (onlyFirst)
{
targetList.add((Creature) obj); // Add obj to target lists
}
else
{
return new Creature[]
{
(Creature) obj
};
return targetList;
}
}
}
@ -2665,7 +2567,7 @@ public abstract class Skill
{
return null;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
case TARGET_ENEMY_SUMMON:
{
@ -2674,10 +2576,8 @@ public abstract class Skill
final Summon targetSummon = (Summon) target;
if (((creature instanceof PlayerInstance) && (creature.getPet() != targetSummon) && !targetSummon.isDead() && ((targetSummon.getOwner().getPvpFlag() != 0) || (targetSummon.getOwner().getKarma() > 0) || targetSummon.getOwner().isInDuel())) || (targetSummon.getOwner().isInsideZone(ZoneId.PVP) && ((PlayerInstance) creature).isInsideZone(ZoneId.PVP)))
{
return new Creature[]
{
targetSummon
};
targetList.add(targetSummon);
return targetList;
}
}
return null;
@ -2686,10 +2586,8 @@ public abstract class Skill
{
if ((target != null) && !target.isDead() && ((target instanceof DoorInstance) || (target instanceof ControlTowerInstance)))
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
return null;
}
@ -2702,10 +2600,8 @@ public abstract class Skill
}
if ((target instanceof MonsterInstance) && ((((MonsterInstance) target).getNpcId() == 22217) || (((MonsterInstance) target).getNpcId() == 22216) || (((MonsterInstance) target).getNpcId() == 22215)))
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
return null;
}
@ -2713,10 +2609,8 @@ public abstract class Skill
{
if ((target != null) && target.isDead())
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
return null;
}
@ -2729,10 +2623,8 @@ public abstract class Skill
final NpcInstance npc = (NpcInstance) creature;
if ((npc.getFactionId() == null) || npc.getFactionId().isEmpty())
{
return new Creature[]
{
creature
};
targetList.add(creature);
return targetList;
}
final Collection<WorldObject> objs = creature.getKnownList().getKnownObjects().values();
for (WorldObject newTarget : objs)
@ -2766,20 +2658,19 @@ public abstract class Skill
}
}
public WorldObject[] getTargetList(Creature creature)
public List<Creature> getTargetList(Creature creature)
{
return getTargetList(creature, false);
}
public WorldObject getFirstOfTargetList(Creature creature)
{
WorldObject[] targets;
targets = getTargetList(creature, true);
if ((targets == null) || (targets.length == 0))
final List<Creature> targets = getTargetList(creature, true);
if ((targets == null) || (targets.isEmpty()))
{
return null;
}
return targets[0];
return targets.get(0);
}
public Func[] getStatFuncs(Effect effect, Creature creature)

View File

@ -1545,21 +1545,21 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
}
// Get all possible targets of the skill in a table in function of the skill target type
final WorldObject[] targets = skill.getTargetList(creature);
final List<Creature> targets = skill.getTargetList(creature);
// Set the target of the skill in function of Skill Type and Target Type
Creature target = null;
if ((skill.getTargetType() == SkillTargetType.TARGET_AURA) || (skill.getTargetType() == SkillTargetType.TARGET_GROUND) || skill.isPotion())
{
target = this;
}
else if ((targets == null) || (targets.length == 0))
else if ((targets == null) || targets.isEmpty())
{
getAI().notifyEvent(CtrlEvent.EVT_CANCEL);
return;
}
else if (((skill.getSkillType() == SkillType.BUFF) || (skill.getSkillType() == SkillType.HEAL) || (skill.getSkillType() == SkillType.COMBATPOINTHEAL) || (skill.getSkillType() == SkillType.COMBATPOINTPERCENTHEAL) || (skill.getSkillType() == SkillType.MANAHEAL) || (skill.getSkillType() == SkillType.REFLECT) || (skill.getSkillType() == SkillType.SEED) || (skill.getTargetType() == SkillTargetType.TARGET_SELF) || (skill.getTargetType() == SkillTargetType.TARGET_PET) || (skill.getTargetType() == SkillTargetType.TARGET_PARTY) || (skill.getTargetType() == SkillTargetType.TARGET_CLAN) || (skill.getTargetType() == SkillTargetType.TARGET_ALLY)) && !skill.isPotion())
{
target = (Creature) targets[0];
target = targets.get(0);
}
else
{
@ -2955,7 +2955,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
*/
class MagicUseTask implements Runnable
{
WorldObject[] _targets;
List<Creature> _targets;
Skill _skill;
int _coolTime;
int _phase;
@ -2967,7 +2967,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
* @param coolTime the cool time
* @param phase the phase
*/
public MagicUseTask(WorldObject[] targets, Skill skill, int coolTime, int phase)
public MagicUseTask(List<Creature> targets, Skill skill, int coolTime, int phase)
{
_targets = targets;
_skill = skill;
@ -7310,9 +7310,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
* @param coolTime the cool time
* @param instant the instant
*/
public void onMagicLaunchedTimer(WorldObject[] targets, Skill skill, int coolTime, boolean instant)
public void onMagicLaunchedTimer(List<Creature> targets, Skill skill, int coolTime, boolean instant)
{
if ((skill == null) || (((targets == null) || (targets.length <= 0)) && (skill.getTargetType() != SkillTargetType.TARGET_AURA)))
if ((skill == null) || (((targets == null) || targets.isEmpty()) && (skill.getTargetType() != SkillTargetType.TARGET_AURA)))
{
_skillCast = null;
enableAllSkills();
@ -7331,22 +7331,22 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
escapeRange = skill.getSkillRadius();
}
WorldObject[] finalTargets = null;
List<Creature> finalTargets = null;
int skipped = 0;
if (escapeRange > 0)
{
final List<Creature> targetList = new ArrayList<>();
for (int i = 0; (targets != null) && (i < targets.length); i++)
if (targets != null)
{
if (targets[i] instanceof Creature)
for (Creature target : targets)
{
if (!Util.checkIfInRange(escapeRange, this, targets[i], true))
if (!Util.checkIfInRange(escapeRange, this, target, true))
{
continue;
}
// Check if the target is behind a wall
if ((skill.getSkillRadius() > 0) && skill.isOffensive() && Config.PATHFINDING && !GeoEngine.getInstance().canSeeTarget(this, targets[i]))
if ((skill.getSkillRadius() > 0) && skill.isOffensive() && Config.PATHFINDING && !GeoEngine.getInstance().canSeeTarget(this, target))
{
skipped++;
continue;
@ -7356,19 +7356,20 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
{
if (this instanceof PlayerInstance)
{
if (((Creature) targets[i]).isInsidePeaceZone((PlayerInstance) this))
if (target.isInsidePeaceZone((PlayerInstance) this))
{
continue;
}
}
else if (isInsidePeaceZone(this, targets[i]))
else if (isInsidePeaceZone(this, target))
{
continue;
}
}
targetList.add((Creature) targets[i]);
targetList.add(target);
}
}
if (targetList.isEmpty() && (skill.getTargetType() != SkillTargetType.TARGET_AURA))
{
if (this instanceof PlayerInstance)
@ -7382,7 +7383,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
abortCast();
return;
}
finalTargets = targetList.toArray(new Creature[targetList.size()]);
finalTargets = targetList;
}
else
{
@ -7438,9 +7439,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
* @param coolTime the cool time
* @param instant the instant
*/
public void onMagicHitTimer(WorldObject[] targets, Skill skill, int coolTime, boolean instant)
public void onMagicHitTimer(List<Creature> targets, Skill skill, int coolTime, boolean instant)
{
if ((skill == null) || (((targets == null) || (targets.length <= 0)) && (skill.getTargetType() != SkillTargetType.TARGET_AURA)))
if ((skill == null) || (((targets == null) || targets.isEmpty()) && (skill.getTargetType() != SkillTargetType.TARGET_AURA)))
{
_skillCast = null;
enableAllSkills();
@ -7471,7 +7472,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
mog.exit(true);
}
final WorldObject target = targets == null ? null : targets[0];
final WorldObject target = targets == null ? null : targets.get(0);
if (target != null)
{
notifyQuestEventSkillFinished(skill, target);
@ -7479,10 +7480,10 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
return;
}
final WorldObject[] targets2 = targets;
final List<Creature> targets2 = targets;
try
{
if ((targets2 != null) && (targets2.length != 0))
if ((targets2 != null) && !targets2.isEmpty())
{
// Go through targets table
for (WorldObject target2 : targets2)
@ -7610,7 +7611,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
* @param targets the targets
* @param skill the skill
*/
public void onMagicFinalizer(WorldObject[] targets, Skill skill)
public void onMagicFinalizer(List<Creature> targets, Skill skill)
{
if (skill.isPotion())
{
@ -7709,7 +7710,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
{
try
{
if ((targets != null) && (targets.length > 0))
if (targets != null)
{
for (WorldObject target : targets)
{
@ -7900,7 +7901,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
* @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<Creature> targets)
{
try
{
@ -7909,7 +7910,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
return;
}
if ((targets == null) || (targets.length == 0))
if ((targets == null) || targets.isEmpty())
{
getAI().notifyEvent(CtrlEvent.EVT_CANCEL);
return;

View File

@ -644,10 +644,8 @@ public class CubicInstance
final SkillType type = skill.getSkillType();
final ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(skill.getSkillType());
final Creature[] targets =
{
target
};
final List<Creature> targets = new ArrayList<>();
targets.add(target);
if ((type == SkillType.PARALYZE) || (type == SkillType.STUN) || (type == SkillType.ROOT) || (type == SkillType.AGGDAMAGE))
{
@ -686,9 +684,9 @@ public class CubicInstance
* @param skill the skill
* @param targets the targets
*/
public void useCubicContinuous(CubicInstance activeCubic, Skill skill, WorldObject[] targets)
public void useCubicContinuous(CubicInstance activeCubic, Skill skill, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if ((target == null) || target.isDead())
{
@ -730,9 +728,9 @@ public class CubicInstance
* @param skill the skill
* @param targets the targets
*/
public void useCubicMdam(CubicInstance activeCubic, Skill skill, WorldObject[] targets)
public void useCubicMdam(CubicInstance activeCubic, Skill skill, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if (target == null)
{
@ -789,9 +787,9 @@ public class CubicInstance
* @param skill the skill
* @param targets the targets
*/
public void useCubicDisabler(SkillType type, CubicInstance activeCubic, Skill skill, WorldObject[] targets)
public void useCubicDisabler(SkillType type, CubicInstance activeCubic, Skill skill, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if ((target == null) || target.isDead())
{
@ -1042,10 +1040,9 @@ public class CubicInstance
final Creature target = _target;
if ((target != null) && !target.isDead() && ((target.getMaxHp() - target.getCurrentHp()) > skill.getPower()))
{
final Creature[] targets =
{
target
};
final List<Creature> targets = new ArrayList<>();
targets.add(target);
final ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(skill.getSkillType());
if (handler != null)
{

View File

@ -18,6 +18,8 @@ package org.l2jmobius.gameserver.model.actor.instance;
import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;
import org.l2jmobius.commons.concurrent.ThreadPool;
@ -424,10 +426,8 @@ public class TamedBeastInstance extends FeedableBeastInstance
{
final WorldObject oldTarget = owner.getTarget();
owner.setTarget(_tamedBeast);
final WorldObject[] targets =
{
_tamedBeast
};
final List<Creature> targets = new ArrayList<>();
targets.add(_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.

View File

@ -408,8 +408,8 @@ public class Weapon extends Item
{
// Get the skill handler corresponding to the skill type
final ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(skill.getSkillType());
final Creature[] targets = new Creature[1];
targets[0] = target;
final List<Creature> targets = new ArrayList<>();
targets.add(target);
// Launch the magic skill and calculate its effects
if (handler != null)

View File

@ -143,7 +143,7 @@ public class EffectSignetMDam extends Effect
if (!targets.isEmpty())
{
caster.broadcastPacket(new MagicSkillLaunched(caster, getSkill().getDisplayId(), getSkill().getLevel(), targets.toArray(new Creature[targets.size()])));
caster.broadcastPacket(new MagicSkillLaunched(caster, getSkill().getDisplayId(), getSkill().getLevel(), targets));
for (Creature target : targets)
{
final boolean mcrit = Formulas.calcMCrit(caster.getMCriticalHit(target, getSkill()));

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.WorldObject;
@ -52,7 +54,7 @@ public class SkillCharge extends Skill
}
@Override
public void useSkill(Creature caster, WorldObject[] targets)
public void useSkill(Creature caster, List<Creature> targets)
{
if (caster.isAlikeDead())
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.skills.handlers;
import java.util.List;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatSet;
@ -60,7 +62,7 @@ public class SkillChargeDmg extends Skill
}
@Override
public void useSkill(Creature caster, WorldObject[] targets)
public void useSkill(Creature caster, List<Creature> targets)
{
if (caster.isAlikeDead())
{

Some files were not shown because too many files have changed in this diff Show More