Jump to content
  • 0

[Adapt] Cancellation Skill


Question

Posted

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;

6 answers to this question

Recommended Posts

  • 0
Posted

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;

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..