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