Jump to content

Recommended Posts

Posted

Εχω βαρεθει να βλεπω σε servers να ανεβαζουνε το hit time του cancel σε 2000000 δευτερολεπτα και το delay να το βαζουν 100 λεπτα. Και χαλαει τον spell singer και ειναι μουφα.

 

Tested

 

Λοιπον με αυτο εδω πιστευω ο spell singer παιρνει την αξια του αλλα και ειναι και balance.

Οταν ο spell singer κανει το cancel , ο αντιπαλος χανει απο 1 μεχρι 6 buffs(τυχαιο) , μετα απο 15 δευτερολεπτα τα ξαναπαιρνει αυτοματα. Πιστευω ειναι το τελειο balance για το Cancel skill  8)

 


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

Posted

αυτο το καταλαβα :P το πως εννοω.

θα κοιτάξω και θα σου απαντήσω,έτσι όπως το είδα δεν μου φάνηκε ο μοναδικός τρόπος.

δεν έχω κάτι συγκεκριμένο να σου πω,αλλά θα το δώ!

Posted

θα κοιτάξω και θα σου απαντήσω,έτσι όπως το είδα δεν μου φάνηκε ο μοναδικός τρόπος.

δεν έχω κάτι συγκεκριμένο να σου πω,αλλά θα το δώ!

Ok

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