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,69 +1317,59 @@ 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);
sp = Math.max(0, (getSpReward() * damage) / totalDamage);
if ((charLevel > 84) && (levelDiff <= -3))
{ {
double mul; double mul;
switch (levelDiff) switch (levelDiff)
{ {
case -3: case 3:
{ {
mul = 0.97; mul = 0.97;
break; break;
} }
case -4: case 4:
{ {
mul = 0.67; mul = 0.80;
break; break;
} }
case -5: case 5:
{ {
mul = 0.42; mul = 0.61;
break; break;
} }
case -6: case 6:
{ {
mul = 0.25; mul = 0.37;
break; break;
} }
case -7: case 7:
{ {
mul = 0.15; mul = 0.22;
break; break;
} }
case -8: case 8:
{ {
mul = 0.09; mul = 0.13;
break; break;
} }
case -9: case 9:
{ {
mul = 0.05; mul = 0.08;
break;
}
case -10:
{
mul = 0.03;
break; break;
} }
default: default:
{ {
mul = 1.; mul = 0.05;
break; break;
} }
} }
xp *= mul; xp *= mul;
sp *= mul; sp *= mul;
} }
}
return new double[] return new double[]
{ {

View File

@@ -1317,69 +1317,59 @@ 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);
sp = Math.max(0, (getSpReward() * damage) / totalDamage);
if ((charLevel > 84) && (levelDiff <= -3))
{ {
double mul; double mul;
switch (levelDiff) switch (levelDiff)
{ {
case -3: case 3:
{ {
mul = 0.97; mul = 0.97;
break; break;
} }
case -4: case 4:
{ {
mul = 0.67; mul = 0.80;
break; break;
} }
case -5: case 5:
{ {
mul = 0.42; mul = 0.61;
break; break;
} }
case -6: case 6:
{ {
mul = 0.25; mul = 0.37;
break; break;
} }
case -7: case 7:
{ {
mul = 0.15; mul = 0.22;
break; break;
} }
case -8: case 8:
{ {
mul = 0.09; mul = 0.13;
break; break;
} }
case -9: case 9:
{ {
mul = 0.05; mul = 0.08;
break;
}
case -10:
{
mul = 0.03;
break; break;
} }
default: default:
{ {
mul = 1.; mul = 0.05;
break; break;
} }
} }
xp *= mul; xp *= mul;
sp *= mul; sp *= mul;
} }
}
return new double[] return new double[]
{ {

View File

@@ -1317,69 +1317,59 @@ 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);
sp = Math.max(0, (getSpReward() * damage) / totalDamage);
if ((charLevel > 84) && (levelDiff <= -3))
{ {
double mul; double mul;
switch (levelDiff) switch (levelDiff)
{ {
case -3: case 3:
{ {
mul = 0.97; mul = 0.97;
break; break;
} }
case -4: case 4:
{ {
mul = 0.67; mul = 0.80;
break; break;
} }
case -5: case 5:
{ {
mul = 0.42; mul = 0.61;
break; break;
} }
case -6: case 6:
{ {
mul = 0.25; mul = 0.37;
break; break;
} }
case -7: case 7:
{ {
mul = 0.15; mul = 0.22;
break; break;
} }
case -8: case 8:
{ {
mul = 0.09; mul = 0.13;
break; break;
} }
case -9: case 9:
{ {
mul = 0.05; mul = 0.08;
break;
}
case -10:
{
mul = 0.03;
break; break;
} }
default: default:
{ {
mul = 1.; mul = 0.05;
break; break;
} }
} }
xp *= mul; xp *= mul;
sp *= mul; sp *= mul;
} }
}
return new double[] return new double[]
{ {