PoRnosJH Posted May 27, 2012 Share Posted May 27, 2012 ### Eclipse Workspace Patch 1.0 #P Chr.6GMS Index: java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java =================================================================== --- java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java (revision 5263) +++ java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java (working copy) @@ -22,9 +22,13 @@ import java.util.logging.Level; import java.util.logging.Logger; +import javolution.util.FastList; + +import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.ai.CtrlEvent; import net.sf.l2j.gameserver.ai.CtrlIntention; import net.sf.l2j.gameserver.ai.L2AttackableAI; +import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.handler.ISkillHandler; import net.sf.l2j.gameserver.handler.SkillHandler; import net.sf.l2j.gameserver.model.L2Attackable; @@ -66,6 +70,28 @@ private float _negatePower=0.f; private int _negateId=0; + public class Canc implements Runnable{ + L2PcInstance j; + FastList<L2Effect> l; + + public Canc(L2PcInstance p,FastList<L2Effect> f){ + j = p; + l = f; + } + + public void run(){ + if(l.isEmpty()) + return; + for(L2Effect b : l) + { + L2Skill k = SkillTable.getInstance().getInfo(b.getSkill().getId(), b.getLevel()); + if(k != null) + k.getEffects(j, j); + } + l.clear(); + } + } + @Override public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets) { @@ -454,31 +480,30 @@ if(Rnd.get(100) < landrate) { - L2Effect[] effects = target.getAllEffects(); - int maxfive = 5; - for (L2Effect e : effects) - { - if (e.getSkill().getId() != 4082 && e.getSkill().getId() != 4215 && - e.getSkill().getId() != 4515 && e.getSkill().getId() != 110 && e.getSkill().getId() != 111 && - e.getSkill().getId() != 1323 && e.getSkill().getId() != 1325) // Cannot cancel skills 4082, 4215, 4515, 110, 111, 1323, 1325 - { - if(e.getSkill().getSkillType() != SkillType.BUFF) //sleep, slow, surrenders etc - e.exit(); - else - { - int rate = 100; - int level = e.getLevel(); - if (level > 0) rate = Integer.valueOf(150/(1 + level)); - if (rate > 95) rate = 95; - else if (rate < 5) rate = 5; - if(Rnd.get(100) < rate) { - e.exit(); - maxfive--; - if(maxfive == 0) break; - } - } + L2PcInstance p = null; + if(target instanceof L2PcInstance) + p = (L2PcInstance) target; + + if(p != null){ + L2Effect[] l = p.getAllEffects(); + int r = Rnd.get(6); + if(l.length < r){} + int i = 0; + for(L2Effect h : l){ + int id = h.getSkill().getId(); + if(id == 4082 || id == 4515 || id == 110 || id == 111 || id == 1323 || id == 1325) + continue; + if(i == r) + break; + + i++; + p.addRemovedBuff(h); + h.exit(); } + ThreadPoolManager.getInstance().scheduleGeneral(new Canc(p,p.getRemovedBuffs()), 6000); } + // Cannot cancel skills 4082, 4215, 4515, 110, 111, 1323, 1325 + else { if (activeChar instanceof L2PcInstance) Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 5263) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -408,6 +408,8 @@ /** True if the L2PcInstance is using the relax skill */ private boolean _relax; + + private FastList<L2Effect> removedBuffs = new FastList<L2Effect>(); /** Location before entering Observer Mode */ private int _obsX; @@ -8215,6 +8217,19 @@ return true; } + + public FastList<L2Effect> getRemovedBuffs(){ + return removedBuffs; + } + + public void addRemovedBuff(L2Effect j){ + removedBuffs.add(j); + } + public boolean isNoble() { return _noble; Code : Cancel Lasts For 15sec...after all lost buffs return Author/Credits : iRat Shared from him in MXC Quote Link to comment Share on other sites More sharing options...
Question
PoRnosJH
Code : Cancel Lasts For 15sec...after all lost buffs return
Author/Credits : iRat
Shared from him in MXC
Link to comment
Share on other sites
0 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.