rendered paste bodySOE SKILL:(SCROLL|XML):
<skill id="2013" levels="1" name="Scroll of escape">
<set name="power" val="0.0"/>
<set name="target" val="TARGET_SELF"/>
<set name="hitTime" val="20000"/>
<set name="skillTime" val="20000"/>
<set name="skillType" val="RECALL"/>
<set name="operateType" val="OP_ACTIVE"/>
<set name="castRange" val="-1"/>
<for>
</for>
</skill>
====================================================
HANDLER
--------------
package net.sf.l2j.gameserver.handler.skillhandlers;
import net.sf.l2j.gameserver.MapRegionTable;
import net.sf.l2j.gameserver.handler.ISkillHandler;
import net.sf.l2j.gameserver.model.L2Character;
import net.sf.l2j.gameserver.model.L2Object;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.L2Skill.SkillType;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.serverpackets.SystemMessage;
public class Recall implements ISkillHandler
{
//private static Logger _log = Logger.getLogger(Recall.class.getName());
protected SkillType[] _skillIds = {SkillType.RECALL};
public void useSkill(@SuppressWarnings("unused") L2Character activeChar, @SuppressWarnings("unused") L2Skill skill, L2Object[] targets)
{
try {
for (int index = 0; index < targets.length; index++)
{
// if (!(targets[index] instanceof L2PcInstance))
// continue;
L2Character target = (L2Character) targets[index];
// Check to see if the current player target is in a festival.
L2PcInstance targetChar = (L2PcInstance)target;
if (targetChar.isFestivalParticipant()) {
targetChar.sendPacket(SystemMessage.sendString("You may not use an escape skill in a festival."));
break;
}
target.teleToLocation(MapRegionTable.TeleportWhereType.Town);
}
} catch (Throwable e) {
e.printStackTrace();
}
}
public SkillType[] getSkillIds()
{
return _skillIds;
}
}