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

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.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...