Changed calculateExpAndSp method according to retail forums.

This commit is contained in:
MobiusDev
2018-09-03 12:55:36 +00:00
parent 91a0b8afec
commit 65b8374a32
3 changed files with 138 additions and 168 deletions

View File

@@ -1317,68 +1317,58 @@ public class L2Attackable extends L2Npc
private double[] calculateExpAndSp(int charLevel, long damage, long totalDamage) private double[] calculateExpAndSp(int charLevel, long damage, long totalDamage)
{ {
final int levelDiff = charLevel - getLevel(); final int levelDiff = charLevel - getLevel();
double xp = 0; double xp = Math.max(0, (getExpReward() * damage) / totalDamage);
double sp = 0; double sp = Math.max(0, (getSpReward() * damage) / totalDamage);
if ((levelDiff < 11) && (levelDiff > -11)) // According to https://4gameforum.com/threads/483941/
if (levelDiff > 2)
{ {
xp = Math.max(0, (getExpReward() * damage) / totalDamage); double mul;
sp = Math.max(0, (getSpReward() * damage) / totalDamage); switch (levelDiff)
if ((charLevel > 84) && (levelDiff <= -3))
{ {
double mul; case 3:
switch (levelDiff)
{ {
case -3: mul = 0.97;
{ break;
mul = 0.97; }
break; case 4:
} {
case -4: mul = 0.80;
{ break;
mul = 0.67; }
break; case 5:
} {
case -5: mul = 0.61;
{ break;
mul = 0.42; }
break; case 6:
} {
case -6: mul = 0.37;
{ break;
mul = 0.25; }
break; case 7:
} {
case -7: mul = 0.22;
{ break;
mul = 0.15; }
break; case 8:
} {
case -8: mul = 0.13;
{ break;
mul = 0.09; }
break; case 9:
} {
case -9: mul = 0.08;
{ break;
mul = 0.05; }
break; default:
} {
case -10: mul = 0.05;
{ break;
mul = 0.03;
break;
}
default:
{
mul = 1.;
break;
}
} }
xp *= mul;
sp *= mul;
} }
xp *= mul;
sp *= mul;
} }
return new double[] return new double[]

View File

@@ -1317,68 +1317,58 @@ public class L2Attackable extends L2Npc
private double[] calculateExpAndSp(int charLevel, long damage, long totalDamage) private double[] calculateExpAndSp(int charLevel, long damage, long totalDamage)
{ {
final int levelDiff = charLevel - getLevel(); final int levelDiff = charLevel - getLevel();
double xp = 0; double xp = Math.max(0, (getExpReward() * damage) / totalDamage);
double sp = 0; double sp = Math.max(0, (getSpReward() * damage) / totalDamage);
if ((levelDiff < 11) && (levelDiff > -11)) // According to https://4gameforum.com/threads/483941/
if (levelDiff > 2)
{ {
xp = Math.max(0, (getExpReward() * damage) / totalDamage); double mul;
sp = Math.max(0, (getSpReward() * damage) / totalDamage); switch (levelDiff)
if ((charLevel > 84) && (levelDiff <= -3))
{ {
double mul; case 3:
switch (levelDiff)
{ {
case -3: mul = 0.97;
{ break;
mul = 0.97; }
break; case 4:
} {
case -4: mul = 0.80;
{ break;
mul = 0.67; }
break; case 5:
} {
case -5: mul = 0.61;
{ break;
mul = 0.42; }
break; case 6:
} {
case -6: mul = 0.37;
{ break;
mul = 0.25; }
break; case 7:
} {
case -7: mul = 0.22;
{ break;
mul = 0.15; }
break; case 8:
} {
case -8: mul = 0.13;
{ break;
mul = 0.09; }
break; case 9:
} {
case -9: mul = 0.08;
{ break;
mul = 0.05; }
break; default:
} {
case -10: mul = 0.05;
{ break;
mul = 0.03;
break;
}
default:
{
mul = 1.;
break;
}
} }
xp *= mul;
sp *= mul;
} }
xp *= mul;
sp *= mul;
} }
return new double[] return new double[]

View File

@@ -1317,68 +1317,58 @@ public class L2Attackable extends L2Npc
private double[] calculateExpAndSp(int charLevel, long damage, long totalDamage) private double[] calculateExpAndSp(int charLevel, long damage, long totalDamage)
{ {
final int levelDiff = charLevel - getLevel(); final int levelDiff = charLevel - getLevel();
double xp = 0; double xp = Math.max(0, (getExpReward() * damage) / totalDamage);
double sp = 0; double sp = Math.max(0, (getSpReward() * damage) / totalDamage);
if ((levelDiff < 11) && (levelDiff > -11)) // According to https://4gameforum.com/threads/483941/
if (levelDiff > 2)
{ {
xp = Math.max(0, (getExpReward() * damage) / totalDamage); double mul;
sp = Math.max(0, (getSpReward() * damage) / totalDamage); switch (levelDiff)
if ((charLevel > 84) && (levelDiff <= -3))
{ {
double mul; case 3:
switch (levelDiff)
{ {
case -3: mul = 0.97;
{ break;
mul = 0.97; }
break; case 4:
} {
case -4: mul = 0.80;
{ break;
mul = 0.67; }
break; case 5:
} {
case -5: mul = 0.61;
{ break;
mul = 0.42; }
break; case 6:
} {
case -6: mul = 0.37;
{ break;
mul = 0.25; }
break; case 7:
} {
case -7: mul = 0.22;
{ break;
mul = 0.15; }
break; case 8:
} {
case -8: mul = 0.13;
{ break;
mul = 0.09; }
break; case 9:
} {
case -9: mul = 0.08;
{ break;
mul = 0.05; }
break; default:
} {
case -10: mul = 0.05;
{ break;
mul = 0.03;
break;
}
default:
{
mul = 1.;
break;
}
} }
xp *= mul;
sp *= mul;
} }
xp *= mul;
sp *= mul;
} }
return new double[] return new double[]