ソースを参照

BETA/STABLE: Missing from [4602] thanks UnAfraid.

MELERIX 14 年 前
コミット
8067619a83

+ 10 - 13
L2J_Server_BETA/java/com/l2jserver/gameserver/skills/Formulas.java

@@ -1351,8 +1351,9 @@ public final class Formulas
 				return 1;
 				return 1;
 		}
 		}
 		
 		
-		double power =  skill.getPower();
-		//TODO: target instanceof L2Playable && skill.getPvpPower() != 0 ? skill.getPvpPower() : skill.getPower();
+		boolean isPvP = (attacker instanceof L2Playable) && (target instanceof L2PcInstance);
+		boolean isPvE = (attacker instanceof L2Playable) && (target instanceof L2Attackable);
+		double power =  skill.getPower(isPvP, isPvE);
 		double damage = 0;
 		double damage = 0;
 		double proximityBonus = 1;
 		double proximityBonus = 1;
 		double graciaPhysSkillBonus = skill.isMagic() ? 1 : 1.10113; // Gracia final physical skill bonus 10.113%
 		double graciaPhysSkillBonus = skill.isMagic() ? 1 : 1.10113; // Gracia final physical skill bonus 10.113%
@@ -1371,7 +1372,7 @@ public final class Formulas
 			proximityBonus = 1.2; // +20% crit dmg when back stabbed
 			proximityBonus = 1.2; // +20% crit dmg when back stabbed
 		else if (isInFrontOf(attacker, target))
 		else if (isInFrontOf(attacker, target))
 			proximityBonus = 1.1; // +10% crit dmg when side stabbed
 			proximityBonus = 1.1; // +10% crit dmg when side stabbed
-		
+			
 		damage += Formulas.calcValakasAttribute(attacker, target, skill);
 		damage += Formulas.calcValakasAttribute(attacker, target, skill);
 		
 		
 		double element = calcElemental(attacker, target, skill);
 		double element = calcElemental(attacker, target, skill);
@@ -1379,18 +1380,14 @@ public final class Formulas
 		// SSBoost > 0 have different calculation
 		// SSBoost > 0 have different calculation
 		if (skill.getSSBoost() > 0)
 		if (skill.getSSBoost() > 0)
 			damage += 70. * graciaPhysSkillBonus * (attacker.getPAtk(target) + power) / defence * (attacker.calcStat(Stats.CRITICAL_DAMAGE, 1, target, skill))
 			damage += 70. * graciaPhysSkillBonus * (attacker.getPAtk(target) + power) / defence * (attacker.calcStat(Stats.CRITICAL_DAMAGE, 1, target, skill))
-			* (target.calcStat(Stats.CRIT_VULN, 1, target, skill)) * ssboost * proximityBonus * element * pvpBonus
-			+ (attacker.calcStat(Stats.CRITICAL_DAMAGE_ADD, 0, target, skill) * 6.1 * 70 / defence * graciaPhysSkillBonus);
+					* (target.calcStat(Stats.CRIT_VULN, 1, target, skill)) * ssboost * proximityBonus * element * pvpBonus
+					+ (attacker.calcStat(Stats.CRITICAL_DAMAGE_ADD, 0, target, skill) * 6.1 * 70 / defence * graciaPhysSkillBonus);
 		else
 		else
 			damage += 70. * graciaPhysSkillBonus * (power + (attacker.getPAtk(target) * ssboost)) / defence * (attacker.calcStat(Stats.CRITICAL_DAMAGE, 1, target, skill))
 			damage += 70. * graciaPhysSkillBonus * (power + (attacker.getPAtk(target) * ssboost)) / defence * (attacker.calcStat(Stats.CRITICAL_DAMAGE, 1, target, skill))
-			* (target.calcStat(Stats.CRIT_VULN, 1, target, skill)) * proximityBonus * element * pvpBonus
-			+ (attacker.calcStat(Stats.CRITICAL_DAMAGE_ADD, 0, target, skill) * 6.1 * 70 / defence * graciaPhysSkillBonus);
-		
-		// get the natural vulnerability for the template
-		/*if (target instanceof L2Npc)
-		{
-			damage *= ((L2Npc) target).getTemplate().getVulnerability(Stats.DAGGER_WPN_VULN);
-		}*/
+					* (target.calcStat(Stats.CRIT_VULN, 1, target, skill)) * proximityBonus * element * pvpBonus
+					+ (attacker.calcStat(Stats.CRITICAL_DAMAGE_ADD, 0, target, skill) * 6.1 * 70 / defence * graciaPhysSkillBonus);
+
+		damage += target.calcStat(Stats.CRIT_ADD_VULN, 0, target, skill) * 6.1;
 		
 		
 		// get the vulnerability for the instance due to skills (buffs, passives, toggles, etc)
 		// get the vulnerability for the instance due to skills (buffs, passives, toggles, etc)
 		damage = target.calcStat(Stats.DAGGER_WPN_VULN, damage, target, null);
 		damage = target.calcStat(Stats.DAGGER_WPN_VULN, damage, target, null);