package ai.DimensionalWarp;
import java.util.ArrayList;
import java.util.List;
import l2p.commons.util.Rnd;
import l2p.gameserver.ai.DefaultAI;
import l2p.gameserver.data.holder.SkillHolder;
import l2p.gameserver.model.Creature;
import l2p.gameserver.model.Playable;
import l2p.gameserver.model.World;
import l2p.gameserver.model.instances.NpcInstance;
import l2p.gameserver.model.skills.Skill;
import l2p.gameserver.stats.formulas.SkillSuccess;
public class Trap extends DefaultAI
{
private static final Skill[][] _skill = {{ SkillHolder.getInstance().getSkill(16409, 1), SkillHolder.getInstance().getSkill(16410, 1), SkillHolder.getInstance().getSkill(16411, 1), SkillHolder.getInstance().getSkill(16412, 1) }, { SkillHolder.getInstance().getSkill(16413, 1) }};
private int _type;
private int _power;
private long _nextSkillUse;
public Trap(NpcInstance actor)
{
super(actor);
AI_TASK_ACTIVE_DELAY = 1000;
_type = actor.getParameter("trapType", -1);
_power = actor.getParameter("trapPower", 1);
_nextSkillUse = System.currentTimeMillis() + 5000;
}
@Override
protected void onEvtSpawn()
{
super.onEvtSpawn();
getActor().setNpcState(_type * 3 + _power);
}
@Override
protected boolean thinkActive()
{
if (_type >= 0 && _nextSkillUse <= System.currentTimeMillis())
{
NpcInstance actor = getActor();
_nextSkillUse = System.currentTimeMillis() + 10000;
Skill skill = _skill[_type][Rnd.get(_skill[_type].length)];
List<Creature> targets = new ArrayList<Creature>();
for (Playable target : World.getAroundPlayables(actor, _power * 100, 200))
if (target != null && !target.isDead() && SkillSuccess.calc(actor, target, skill, skill.getActivateRate()))
targets.add(target);
if (!targets.isEmpty())
skill.useSkill(actor, targets);
}
return super.thinkActive();
}
}