redsky9 Posted October 14, 2022 Posted October 14, 2022 (edited) I'm looking to make a new passive skill and attach it to an item. The skill sweeps automatically when the creature is dead. I'm not sure how to capture the creature dying from the xml file. Am I missing something or does this need to be done in code not config? Edited January 11, 2023 by Vision Quote
0 arm4729 Posted October 14, 2022 Posted October 14, 2022 long story short you need to edit source files Quote
0 Zake Posted October 15, 2022 Posted October 15, 2022 Would you mind telling us pack and client? Quote
0 eMommy Posted October 15, 2022 Posted October 15, 2022 (edited) package l2s.gameserver.handler.effects.impl.trigger; import l2s.gameserver.handler.effects.EffectHandler; import l2s.gameserver.listener.actor.OnKillListener; import l2s.gameserver.model.Creature; import l2s.gameserver.model.actor.instances.creature.Abnormal; import l2s.gameserver.model.instances.MonsterInstance; import l2s.gameserver.templates.skill.EffectTemplate; public class p_auto_sweeper extends EffectHandler { private final int _minDist; private final int _maxDist; public p_auto_sweeper(EffectTemplate template) { super(template); _minDist = getParams().getInteger("min_dist", -1); _maxDist = getParams().getInteger("max_dist", 400); } private class impl extends EffectHandler { private ImplListener _listener; public impl(EffectTemplate template) { super(template); } @Override public void onStart(Abnormal abnormal, Creature effector, Creature effected) { if (getSkill().isPassive()) return; _listener = new ImplListener(); effected.addListener(_listener); } @Override public void onExit(Abnormal abnormal, Creature effector, Creature effected, boolean cancelled) { if (getSkill().isPassive()) return; effected.removeListener(_listener); _listener = null; } private class ImplListener implements OnKillListener { @Override public void onKill(Creature actor, Creature victim) { if (actor == null || victim == null || !victim.isMonster() || !actor.isPlayer() || actor.isDead() || !victim.isDead()) return; if (!getSkill().isPassive() && !actor.getAbnormalList().contains(p_auto_sweeper.this.getSkill().getId())) { actor.removeListener(_listener); return; } if (actor.getDistance(victim) > _minDist && actor.getDistance(victim) < _maxDist) { final MonsterInstance mob = victim.asMonster(); if (mob != null && !mob.isSweeped() && mob.isSpoiled(actor.getPlayer())) { mob.takeSweep(actor.getPlayer()); mob.endDecayTask(); } } } @Override public boolean ignorePetOrSummon() { return false; } } } @Override public EffectHandler getImpl() { return new impl(getTemplate()); } } <effect name="p_auto_sweeper"> <def name="min_dist" value="-1"/> <def name="max_dist" value="300"/> </effect> i just did this blind (on l2script) so its not tested but this is how i see the logic working Edited October 15, 2022 by eMommy 1 Quote
0 arm4729 Posted October 16, 2022 Posted October 16, 2022 (edited) On 10/15/2022 at 8:40 AM, redsky9 said: wow. what great help. you asked if you can do it from xml files , i answer your question. did you encounter any errors in your code , posted here and no one help you ? i think not. Edited October 22, 2022 by arm4729 Quote
Question
redsky9
I'm looking to make a new passive skill and attach it to an item. The skill sweeps automatically when the creature is dead.
I'm not sure how to capture the creature dying from the xml file. Am I missing something or does this need to be done in code not config?
Edited by Vision5 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.