Просмотр исходного кода

BETA: Restored min/maxChance skill parameters, some servers use it to customize skills individually instead of globally by configs.

MELERIX 12 лет назад
Родитель
Сommit
d77fc17d85

+ 22 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/skills/L2Skill.java

@@ -156,6 +156,8 @@ public abstract class L2Skill implements IChanceSkillTrigger
 	private final int _magicLevel;
 	private final int _levelDepend;
 	private final boolean _ignoreResists;
+	private final int _minChance;
+	private final int _maxChance;
 	private final int _blowChance;
 	
 	private final boolean _isNeutral;
@@ -411,6 +413,8 @@ public abstract class L2Skill implements IChanceSkillTrigger
 		_magicLevel = set.getInteger("magicLvl", 0);
 		_levelDepend = set.getInteger("lvlDepend", 0);
 		_ignoreResists = set.getBool("ignoreResists", false);
+		_minChance = set.getInteger("minChance", Config.MIN_DEBUFF_CHANCE);
+		_maxChance = set.getInteger("maxChance", Config.MAX_DEBUFF_CHANCE);
 		_stat = set.getEnum("stat", Stats.class, null);
 		_ignoreShield = set.getBool("ignoreShld", false);
 		_skillType = set.getEnum("skillType", L2SkillType.class, L2SkillType.DUMMY);
@@ -681,6 +685,24 @@ public abstract class L2Skill implements IChanceSkillTrigger
 		return _ignoreResists;
 	}
 	
+	/**
+	 * Return custom minimum skill/effect chance.
+	 * @return
+	 */
+	public final int getMinChance()
+	{
+		return _minChance;
+	}
+	
+	/**
+	 * Return custom maximum skill/effect chance.
+	 * @return
+	 */
+	public final int getMaxChance()
+	{
+		return _maxChance;
+	}
+	
 	/**
 	 * Return true if skill effects should be removed on any action except movement
 	 * @return

+ 16 - 16
L2J_Server_BETA/java/com/l2jserver/gameserver/model/stats/Formulas.java

@@ -2050,13 +2050,13 @@ public final class Formulas
 		int deltamod = calcLvlDependModifier(attacker, target, skill);
 		rate += deltamod;
 		
-		if (rate > Config.MAX_DEBUFF_CHANCE)
+		if (rate > skill.getMaxChance())
 		{
-			rate = Config.MAX_DEBUFF_CHANCE;
+			rate = skill.getMaxChance();
 		}
-		else if (rate < Config.MIN_DEBUFF_CHANCE)
+		else if (rate < skill.getMinChance())
 		{
-			rate = Config.MIN_DEBUFF_CHANCE;
+			rate = skill.getMinChance();
 		}
 		
 		if (attacker.isDebug() || Config.DEVELOPER)
@@ -2172,13 +2172,13 @@ public final class Formulas
 		int deltamod = calcLvlDependModifier(attacker, target, skill);
 		rate += deltamod;
 		
-		if (rate > Config.MAX_DEBUFF_CHANCE)
+		if (rate > skill.getMaxChance())
 		{
-			rate = Config.MAX_DEBUFF_CHANCE;
+			rate = skill.getMaxChance();
 		}
-		else if (rate < Config.MIN_DEBUFF_CHANCE)
+		else if (rate < skill.getMinChance())
 		{
-			rate = Config.MIN_DEBUFF_CHANCE;
+			rate = skill.getMinChance();
 		}
 		
 		if (attacker.isDebug() || Config.DEVELOPER)
@@ -2269,13 +2269,13 @@ public final class Formulas
 		int deltamod = calcLvlDependModifier(attacker.getOwner(), target, skill);
 		rate += deltamod;
 		
-		if (rate > Config.MAX_DEBUFF_CHANCE)
+		if (rate > skill.getMaxChance())
 		{
-			rate = Config.MAX_DEBUFF_CHANCE;
+			rate = skill.getMaxChance();
 		}
-		else if (rate < Config.MIN_DEBUFF_CHANCE)
+		else if (rate < skill.getMinChance())
 		{
-			rate = Config.MIN_DEBUFF_CHANCE;
+			rate = skill.getMinChance();
 		}
 		
 		if (attacker.getOwner().isDebug() || Config.DEVELOPER)
@@ -2324,13 +2324,13 @@ public final class Formulas
 		final double failureModifier = attacker.calcStat(Stats.MAGIC_FAILURE_RATE, 1, target, skill);
 		int rate = 100 - Math.round((float) (lvlModifier * targetModifier * resModifier * failureModifier));
 		
-		if (rate > Config.MAX_DEBUFF_CHANCE)
+		if (rate > skill.getMaxChance())
 		{
-			rate = Config.MAX_DEBUFF_CHANCE;
+			rate = skill.getMaxChance();
 		}
-		else if (rate < Config.MIN_DEBUFF_CHANCE)
+		else if (rate < skill.getMinChance())
 		{
-			rate = Config.MIN_DEBUFF_CHANCE;
+			rate = skill.getMinChance();
 		}
 		
 		if (attacker.isDebug() || Config.DEVELOPER)