Ver código fonte

Temporary fix for #2776 . Thank you Joac and Torrelavega team (code) and Aikimaniac, _DS_ (tests)

DrHouse 17 anos atrás
pai
commit
2b7ca28fba

+ 24 - 29
L2_GameServer/java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java

@@ -506,7 +506,8 @@ public class Disablers implements ISkillHandler
                 		if (e.getSkill().isDebuff() && count < skill.getMaxNegatedEffects())
                 		{
                 			e.exit();
-                			count++;
+                			if (count > -1)
+                				count++;
                 		}
                 	}
 
@@ -621,40 +622,29 @@ public class Disablers implements ISkillHandler
                             	if(Rnd.get(100) < landrate)
                             		removedBuffs += negateEffect(target,SkillType.BUFF,-1, skill.getMaxNegatedEffects());
                         	 }
-	                    	 if (stat == "debuff" && removedBuffs < skill.getMaxNegatedEffects())
+                        	 else if (stat == "debuff" && removedBuffs < skill.getMaxNegatedEffects())
 	                    		 removedBuffs += negateEffect(target,SkillType.DEBUFF,-1, skill.getMaxNegatedEffects());
-	                    	 else break;
-	                    	 if (stat == "weakness" && removedBuffs < skill.getMaxNegatedEffects())
+                        	 else if (stat == "weakness" && removedBuffs < skill.getMaxNegatedEffects())
 	                    		 removedBuffs += negateEffect(target,SkillType.WEAKNESS,-1, skill.getMaxNegatedEffects());
-	                    	 else break;
-	                    	 if (stat == "stun" && removedBuffs < skill.getMaxNegatedEffects())
+                        	 else if (stat == "stun" && removedBuffs < skill.getMaxNegatedEffects())
 	                    		 removedBuffs += negateEffect(target,SkillType.STUN,-1, skill.getMaxNegatedEffects());
-	                    	 else break;
-	                    	 if (stat == "sleep" && removedBuffs < skill.getMaxNegatedEffects())
+                        	 else if (stat == "sleep" && removedBuffs < skill.getMaxNegatedEffects())
 	                    		 removedBuffs += negateEffect(target,SkillType.SLEEP,-1, skill.getMaxNegatedEffects());
-	                    	 else break;
-	                    	 if (stat == "confusion" && removedBuffs < skill.getMaxNegatedEffects())
+                        	 else if (stat == "confusion" && removedBuffs < skill.getMaxNegatedEffects())
 	                    		 removedBuffs += negateEffect(target,SkillType.CONFUSION,-1, skill.getMaxNegatedEffects());
-	                    	 else break;
-	                    	 if (stat == "mute" && removedBuffs < skill.getMaxNegatedEffects())
+                        	 else if (stat == "mute" && removedBuffs < skill.getMaxNegatedEffects())
 	                    		 removedBuffs += negateEffect(target,SkillType.MUTE,-1, skill.getMaxNegatedEffects());
-	                    	 else break;
-	                    	 if (stat == "fear" && removedBuffs < skill.getMaxNegatedEffects())
+                        	 else if (stat == "fear" && removedBuffs < skill.getMaxNegatedEffects())
 	                    		 removedBuffs += negateEffect(target,SkillType.FEAR,-1, skill.getMaxNegatedEffects());
-	                    	 else break;
-	                    	 if (stat == "poison" && removedBuffs < skill.getMaxNegatedEffects())
+                        	 else if (stat == "poison" && removedBuffs < skill.getMaxNegatedEffects())
 	                    		 removedBuffs += negateEffect(target,SkillType.POISON,_negatePower, skill.getMaxNegatedEffects());
-	                    	 else break;
-	                    	 if (stat == "bleed" && removedBuffs < skill.getMaxNegatedEffects())
+                        	 else if (stat == "bleed" && removedBuffs < skill.getMaxNegatedEffects())
 	                    		 removedBuffs += negateEffect(target,SkillType.BLEED,_negatePower, skill.getMaxNegatedEffects());
-	                    	 else break;
-	                    	 if (stat == "paralyze" && removedBuffs < skill.getMaxNegatedEffects())
+                        	 else if (stat == "paralyze" && removedBuffs < skill.getMaxNegatedEffects())
 	                    		 removedBuffs += negateEffect(target,SkillType.PARALYZE,-1, skill.getMaxNegatedEffects());
-	                    	 else break;
-	                    	 if (stat == "root" && removedBuffs < skill.getMaxNegatedEffects())
+                        	 else if (stat == "root" && removedBuffs < skill.getMaxNegatedEffects())
 	                    		 removedBuffs += negateEffect(target,SkillType.ROOT,-1, skill.getMaxNegatedEffects());
-	                    	 else break;
-	                    	 if (stat == "heal" && removedBuffs < skill.getMaxNegatedEffects())
+                        	 else if (stat == "heal" && removedBuffs < skill.getMaxNegatedEffects())
 	                    	 {
 	                    		 ISkillHandler Healhandler = SkillHandler.getInstance().getSkillHandler(SkillType.HEAL);
 	                    		 if (Healhandler == null)
@@ -768,7 +758,8 @@ public class Disablers implements ISkillHandler
                 		if (e.getSkill().isDebuff() && count < skill.getMaxNegatedEffects())
                 		{
                 			e.exit();
-                			count++;
+                			if (count > -1)
+                				count++;
                 		}
                 	}
 
@@ -796,13 +787,15 @@ public class Disablers implements ISkillHandler
         				if (skillId == e.getSkill().getId() && count < maxRemoved)
         				{
         					e.exit();
-        					count++;
+        					if (count > -1)
+        						count++;
         				}
         			}
         			else if (count < maxRemoved)
         			{
         				e.exit();
-        				count++;
+        				if (count > -1)
+        					count++;
         			}
         		}
         	}
@@ -813,13 +806,15 @@ public class Disablers implements ISkillHandler
     				if (skillId == e.getSkill().getId() && count < maxRemoved)
     				{
     					e.exit();
-    					count++;
+    					if (count > -1)
+    						count++;
     				}
     			}
     			else if (count < maxRemoved)
     			{
     				e.exit();
-    				count++;
+    				if (count > -1)
+    					count++;
     			}
         	}
         }