Jump to content
  • 0

[Adapt] Cancellation Skill


NumL0ck
 Share

Question

Please adapt this to frozen, because i have some errors...

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

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

frozen disablers.java have much more and i fear delete something... so i need good dev who can adapt this code to frozen:)

this is l2jfrozen disablers.java

						if(Rnd.get(100) < landrate)
					{
						L2Effect[] effects = target.getAllEffects();
						int maxfive = 5;
						for(L2Effect e : effects)
						{
							switch(e.getEffectType())
							{
								case SIGNET_GROUND:
								case SIGNET_EFFECT:
									continue;
							}

							if(e.getSkill().getId() != 4082 && e.getSkill().getId() != 4215 && e.getSkill().getId() != 5182 && 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(true);
								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(true);
										maxfive--;
										if(maxfive == 0)
											break;
									}
								}
							}
						}
						effects = null;
					}
					else
					{
						if(activeChar instanceof L2PcInstance)
						{
							SystemMessage sm = new SystemMessage(SystemMessageId.S1_WAS_UNAFFECTED_BY_S2);
							sm.addString(target.getName());
							sm.addSkillName(skill.getDisplayId());
							activeChar.sendPacket(sm);
							sm = null;
						}
					}
					break;
				}

				int landrate = (int) skill.getPower();
				landrate = (int) target.calcStat(Stats.CANCEL_VULN, landrate, target, null);
				if(Rnd.get(100) < landrate)
				{
					L2Effect[] effects = target.getAllEffects();
					int maxdisp = (int) skill.getNegatePower();
					if(maxdisp == 0)
						maxdisp = Config.BUFFS_MAX_AMOUNT + Config.DEBUFFS_MAX_AMOUNT + 6;
					for(L2Effect e : effects)
					{
						switch(e.getEffectType())
						{
							case SIGNET_GROUND:
							case SIGNET_EFFECT:
								continue;
						}

						if(e.getSkill().getId() != 4082 && e.getSkill().getId() != 4215 && e.getSkill().getId() != 5182 && e.getSkill().getId() != 4515 && e.getSkill().getId() != 110 && e.getSkill().getId() != 111 && e.getSkill().getId() != 1323 && e.getSkill().getId() != 1325)
						{
							if(e.getSkill().getSkillType() == SkillType.BUFF)
							{
								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(true);
									maxdisp--;
									if(maxdisp == 0)
										break;
								}
							}
						}
					}
					//effects = null;
				}
				else
				{
					if(activeChar instanceof L2PcInstance)
					{
						SystemMessage sm = new SystemMessage(SystemMessageId.S1_WAS_UNAFFECTED_BY_S2);
						sm.addString(target.getName());
						sm.addSkillName(skill.getDisplayId());
						activeChar.sendPacket(sm);
						sm = null;
					}
				}
				break;

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share



×
×
  • 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