Browse Source

Replaced canBeDispeled with irreplaceableBuff inside skills.

Adry85 7 years ago
parent
commit
de65e11a7f

+ 1 - 1
src/main/java/com/l2jserver/gameserver/model/actor/tasks/cubics/CubicAction.java

@@ -98,7 +98,7 @@ public final class CubicAction implements Runnable
 			{
 				for (BuffInfo info : _cubic.getOwner().getEffectList().getDebuffs())
 				{
-					if (info.getSkill().canBeDispeled())
+					if (!info.getSkill().isIrreplaceableBuff())
 					{
 						useCubicCure = true;
 						info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());

+ 9 - 5
src/main/java/com/l2jserver/gameserver/model/skills/Skill.java

@@ -192,7 +192,7 @@ public class Skill implements IIdentifiable
 	private final boolean _isDebuff;
 	
 	private final boolean _isSuicideAttack;
-	private final boolean _canBeDispeled;
+	private final boolean _irreplaceableBuff;
 	
 	private final boolean _isClanSkill;
 	private final boolean _excludedFromCheck;
@@ -347,7 +347,7 @@ public class Skill implements IIdentifiable
 		
 		_flyType = set.getEnum("flyType", FlyType.class, null);
 		
-		_canBeDispeled = set.getBoolean("canBeDispeled", true);
+		_irreplaceableBuff = set.getBoolean("irreplaceableBuff", false);
 		
 		_excludedFromCheck = set.getBoolean("excludedFromCheck", false);
 		_simultaneousCast = set.getBoolean("simultaneousCast", false);
@@ -1595,9 +1595,13 @@ public class Skill implements IIdentifiable
 		_refId = val;
 	}
 	
-	public boolean canBeDispeled()
+	/**
+	 * Verify if the skill can be replaced.
+	 * @return {@code true} if skill can be replaced, {@code false} otherwise
+	 */
+	public boolean isIrreplaceableBuff()
 	{
-		return _canBeDispeled;
+		return _irreplaceableBuff;
 	}
 	
 	/**
@@ -1606,7 +1610,7 @@ public class Skill implements IIdentifiable
 	 */
 	public boolean canBeStolen()
 	{
-		return !isPassive() && !isToggle() && !isDebuff() && !isHeroSkill() && !isGMSkill() && !(isStatic() && (getId() != CommonSkill.CARAVANS_SECRET_MEDICINE.getId())) && canBeDispeled() && (getId() != CommonSkill.SERVITOR_SHARE.getId());
+		return !isPassive() && !isToggle() && !isDebuff() && !isHeroSkill() && !isGMSkill() && !isIrreplaceableBuff() && !(isStatic() && (getId() != CommonSkill.CARAVANS_SECRET_MEDICINE.getId()) && (getMagicLevel() >= 0));
 	}
 	
 	public boolean isClanSkill()

+ 2 - 2
src/main/java/com/l2jserver/gameserver/model/stats/Formulas.java

@@ -2016,7 +2016,7 @@ public final class Formulas
 				for (int i = debuffs.size() - 1; i >= 0; i--)
 				{
 					BuffInfo info = debuffs.get(i);
-					if (info.getSkill().isDebuff() && info.getSkill().canBeDispeled() && (Rnd.get(100) <= rate))
+					if (info.getSkill().isDebuff() && !info.getSkill().isIrreplaceableBuff() && (Rnd.get(100) <= rate))
 					{
 						canceled.add(info);
 						if (canceled.size() >= max)
@@ -2077,7 +2077,7 @@ public final class Formulas
 				for (int i = debuffs.size() - 1; i >= 0; i--)
 				{
 					BuffInfo info = debuffs.get(i);
-					if (info.getSkill().isDebuff() && info.getSkill().canBeDispeled() && (Rnd.get(100) <= rate))
+					if (info.getSkill().isDebuff() && !info.getSkill().isIrreplaceableBuff() && (Rnd.get(100) <= rate))
 					{
 						canceled.add(info);
 						if (canceled.size() >= max)

+ 1 - 1
src/main/java/com/l2jserver/gameserver/network/clientpackets/RequestDispel.java

@@ -60,7 +60,7 @@ public class RequestDispel extends L2GameClientPacket
 		{
 			return;
 		}
-		if (!skill.canBeDispeled() || skill.isStayAfterDeath() || skill.isDebuff())
+		if (skill.isIrreplaceableBuff() || skill.isStayAfterDeath() || skill.isDebuff())
 		{
 			return;
 		}