Przeglądaj źródła

BETA: Added back part of code removed in [5848], due is still needed for some effects like Spoil.
Reported by: Arantir
Tested by: Arantir

MELERIX 12 lat temu
rodzic
commit
2e2016bcbd

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

@@ -1783,12 +1783,6 @@ public final class Formulas
 			}
 		}
 		
-		final L2SkillType effectType = effect.effectType;
-		if (effectType.equals(L2SkillType.CANCEL))
-		{
-			return true;
-		}
-		
 		// Perfect Shield Block.
 		if (shld == SHIELD_DEFENSE_PERFECT_BLOCK)
 		{
@@ -1800,8 +1794,26 @@ public final class Formulas
 			return false;
 		}
 		
-		// Calculate BaseRate.
+		final L2SkillType effectType = effect.effectType;
 		double baseRate = effect.effectPower;
+		if (effectType == null)
+		{
+			if (baseRate > skill.getMaxChance())
+			{
+				return Rnd.get(100) < skill.getMaxChance();
+			}
+			else if (baseRate < skill.getMinChance())
+			{
+				return Rnd.get(100) < skill.getMinChance();
+			}
+			return Rnd.get(100) < baseRate;
+		}
+		else if (effectType.equals(L2SkillType.CANCEL))
+		{
+			return true;
+		}
+		
+		// Calculate BaseRate.
 		double statMod = calcSkillStatMod(skill, target);
 		double rate = (baseRate / statMod);