Browse Source

BETA: Core part for [DP10310].
Reviewed by: UnAfraid

Adry_85 11 years ago
parent
commit
b0cc85824b

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

@@ -612,9 +612,9 @@ public final class Formulas
 		double baseMod = ((77 * (power + (attacker.getPAtk(target) * ssboost))) / defence);
 		// Critical
 		double criticalMod = (attacker.calcStat(Stats.CRITICAL_DAMAGE, 1, target, skill));
-		double criticalVulnMod = (target.calcStat(Stats.CRIT_VULN, 1, target, skill));
+		double criticalVulnMod = (target.calcStat(Stats.DEFENCE_CRITICAL_DAMAGE, 1, target, skill));
 		double criticalAddMod = ((attacker.getStat().calcStat(Stats.CRITICAL_DAMAGE_ADD, 0) * 6.1 * 77) / defence);
-		double criticalAddVuln = target.calcStat(Stats.CRIT_ADD_VULN, 0, target, skill);
+		double criticalAddVuln = target.calcStat(Stats.DEFENCE_CRITICAL_DAMAGE_ADD, 0, target, skill);
 		// Trait, elements
 		double weaponTraitMod = calcWeaponTraitBonus(attacker, target);
 		double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), false);
@@ -702,9 +702,9 @@ public final class Formulas
 		double baseMod = ((77 * (skill.getPower(isPvP, isPvE) + attacker.getPAtk(target))) / defence) * ssboost;
 		// Critical
 		double criticalMod = (attacker.calcStat(Stats.CRITICAL_DAMAGE, 1, target, skill));
-		double criticalVulnMod = (target.calcStat(Stats.CRIT_VULN, 1, target, skill));
+		double criticalVulnMod = (target.calcStat(Stats.DEFENCE_CRITICAL_DAMAGE, 1, target, skill));
 		double criticalAddMod = ((attacker.calcStat(Stats.CRITICAL_DAMAGE_ADD, 0, target, skill) * 6.1 * 77) / defence);
-		double criticalAddVuln = target.calcStat(Stats.CRIT_ADD_VULN, 0, target, skill);
+		double criticalAddVuln = target.calcStat(Stats.DEFENCE_CRITICAL_DAMAGE_ADD, 0, target, skill);
 		// Trait, elements
 		double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), false);
 		double attributeMod = calcAttributeBonus(attacker, target, skill);
@@ -800,10 +800,10 @@ public final class Formulas
 		if (crit)
 		{
 			// Finally retail like formula
-			damage = 2 * attacker.calcStat(Stats.CRITICAL_DAMAGE, 1, target, skill) * target.calcStat(Stats.CRIT_VULN, 1, target, null) * ((70 * damage) / defence);
+			damage = 2 * attacker.calcStat(Stats.CRITICAL_DAMAGE, 1, target, skill) * target.calcStat(Stats.DEFENCE_CRITICAL_DAMAGE, 1, target, null) * ((70 * damage) / defence);
 			// Crit dmg add is almost useless in normal hits...
 			damage += ((attacker.calcStat(Stats.CRITICAL_DAMAGE_ADD, 0, target, skill) * 70) / defence);
-			damage += target.calcStat(Stats.CRIT_ADD_VULN, 0, target, skill);
+			damage += target.calcStat(Stats.DEFENCE_CRITICAL_DAMAGE_ADD, 0, target, skill);
 		}
 		else
 		{
@@ -1119,18 +1119,8 @@ public final class Formulas
 	 */
 	public static final boolean calcCrit(double rate, boolean skill, L2Character target)
 	{
-		// support for critical damage evade
-		if (rate > Rnd.get(1000))
-		{
-			if ((target == null) || skill)
-			{
-				return true; // no effect
-			}
-			
-			// little weird, but remember what CRIT_DAMAGE_EVASION > 1 increase chances to _evade_ crit hits
-			return Rnd.get((int) target.getStat().calcStat(Stats.CRIT_DAMAGE_EVASION, 100, null, null)) < 100;
-		}
-		return false;
+		double finalRate = target.getStat().calcStat(Stats.DEFENCE_CRITICAL_RATE, rate, null, null) + target.getStat().calcStat(Stats.DEFENCE_CRITICAL_RATE_ADD, 0, null, null);
+		return finalRate > Rnd.get(1000);
 	}
 	
 	public static final boolean calcMCrit(double mRate)

+ 4 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/model/stats/Stats.java

@@ -76,7 +76,10 @@ public enum Stats
 	// ATTACK & DEFENCE RATES
 	EVASION_RATE("rEvas"),
 	P_SKILL_EVASION("pSkillEvas"),
-	CRIT_DAMAGE_EVASION("critDamEvas"),
+	DEFENCE_CRITICAL_RATE("defCritRate"),
+	DEFENCE_CRITICAL_RATE_ADD("defCritRateAdd"),
+	DEFENCE_CRITICAL_DAMAGE("defCritDamage"),
+	DEFENCE_CRITICAL_DAMAGE_ADD("defCritDamageAdd"), // Resistance to critical damage in value (Example: +100 will be 100 more critical damage, NOT 100% more).
 	SHIELD_RATE("rShld"),
 	CRITICAL_RATE("rCrit"),
 	BLOW_RATE("blowRate"),
@@ -115,8 +118,6 @@ public enum Stats
 	CANCEL_VULN("cancelVuln"), // Resistance for cancel type skills
 	DEBUFF_VULN("debuffVuln"),
 	BUFF_VULN("buffVuln"),
-	CRIT_VULN("critVuln"), // Resistance to critical damage in percent.
-	CRIT_ADD_VULN("critAddVuln"), // Resistance to critical damage in value (Example: +100 will be 100 more critical damage, NOT 100% more).
 	MAGIC_DAMAGE_VULN("magicDamVul"),
 	
 	// RESISTANCES
@@ -139,9 +140,7 @@ public enum Stats
 	DARK_POWER("darkPower"),
 	
 	// PROFICIENCY
-	PROF("movementProf"),
 	CANCEL_PROF("cancelProf"),
-	DEBUFF_PROF("debuffProf"),
 	
 	REFLECT_DAMAGE_PERCENT("reflectDam"),
 	REFLECT_SKILL_MAGIC("reflectSkillMagic"),