Jump to content
  • 0

[Help] Adapt to Freya ! (Disablers.java)


Question

Posted

 
### 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

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock