Нужно было реализовать проверку на ид монстра в таргете при использовании предмета, т.к в XML указания ID НПС ничего не произошло...
Код:
<skill id="2905" levels="1" name="Growth Accelerator">
<set name="itemConsumeId" val="14832"/>
<set name="itemConsumeCount" val="1"/>
<set name="target" val="TARGET_ONE" />
<set name="skillType" val="DEBUFF" />
<set name="isDebuff" val="true" />
<set name="operateType" val="OP_ACTIVE" />
<set name="hitTime" val="4000" />
<set name="staticHitTime" val="true" />
<set name="reuseDelay" val="2000" />
<cond msgId="113" addName="1">
<and>
<not>
<target mindistance="200" />
</not>
<target npcId="18793,18794,18795,18796,18797,18798" />
</and>
</cond>
</skill>
Решил создать хандлер
Код:
package handlers.itemhandlers;
import com.l2dc.gameserver.datatables.SkillTable;
import com.l2dc.gameserver.handler.IItemHandler;
import com.l2dc.gameserver.model.L2ItemInstance;
import com.l2dc.gameserver.model.L2Object;
import com.l2dc.gameserver.model.actor.L2Character;
import com.l2dc.gameserver.model.actor.L2Npc;
import com.l2dc.gameserver.model.actor.L2Playable;
import com.l2dc.gameserver.model.actor.instance.L2ChestInstance;
import com.l2dc.gameserver.model.actor.instance.L2MonsterInstance;
import com.l2dc.gameserver.model.actor.instance.L2PcInstance;
import com.l2dc.gameserver.network.SystemMessageId;
import com.l2dc.gameserver.network.serverpackets.ActionFailed;
/**
* @author z00m
*/
public class UseItemByNpcId implements IItemHandler
{
private static final int GROW_ACCELERATOR = 14832;
private static final int[] _cocoons = { 18793, 18794, 18795, 18796, 18797, 18798 };
public void useItem(L2Playable playable, L2ItemInstance item)
{
if (playable == null || item == null || !(playable instanceof L2PcInstance))
return;
L2PcInstance activeChar = (L2PcInstance) playable;
int itemId = item.getItemId();
L2Object tgt = playable.getTarget();
L2Npc target = (L2Npc)tgt;
if (tgt instanceof L2PcInstance || tgt instanceof L2MonsterInstance || tgt instanceof L2ChestInstance || ((L2Character)tgt).isRaid())
{
playable.sendPacket(SystemMessageId.INCORRECT_TARGET);
playable.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
for(int c : _cocoons)
{
if (itemId == GROW_ACCELERATOR && target.getNpcId() == c)
{
activeChar.useMagic(SkillTable.getInstance().getInfo(2905, 1), false, false);
}
}
}
}
Теперь хоть и при том если в таргете находится моб\сундук или прочая ерис (не НПС) пишет что неправильная цель...
А когда в таргете нужное НПС с нужным ID ничего не происходит... следовательно target.getNpcId() не отображает ID НПС в таргете... (да простят меня за тафтологию). Отсюда вопрос, какую процедуру прописать, чтобы отображало ID NPC в таргете именно НПС, так как эти долбаные коканы не должны быть монстрами.
PS. с меня спасибки