runelite-api: add combat level formula to Experience
This commit is contained in:
@@ -88,4 +88,27 @@ public class Experience
|
||||
|
||||
return high + 2;
|
||||
}
|
||||
|
||||
public static double getCombatLevelPrecise(int attackLevel, int strengthLevel,
|
||||
int defenceLevel, int hitpointsLevel, int magicLevel,
|
||||
int rangeLevel, int prayerLevel)
|
||||
{
|
||||
double melee = 0.25 * (defenceLevel + hitpointsLevel + Math.floor(prayerLevel / 2))
|
||||
+ 0.325 * (attackLevel + strengthLevel);
|
||||
|
||||
double range = 0.25 * (defenceLevel + hitpointsLevel + Math.floor(prayerLevel / 2))
|
||||
+ 0.325 * (Math.floor(rangeLevel / 2));
|
||||
|
||||
double magic = 0.25 * (defenceLevel + hitpointsLevel + Math.floor(prayerLevel / 2))
|
||||
+ 0.325 * (Math.floor(magicLevel / 2));
|
||||
|
||||
return Math.max(melee, Math.max(range, magic));
|
||||
}
|
||||
|
||||
public static int getCombatLevel(int attackLevel, int strengthLevel,
|
||||
int defenceLevel, int hitpointsLevel, int magicLevel,
|
||||
int rangeLevel, int prayerLevel)
|
||||
{
|
||||
return (int) getCombatLevelPrecise(attackLevel, strengthLevel, defenceLevel, hitpointsLevel, magicLevel, rangeLevel, prayerLevel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,8 +54,14 @@ public class ExperienceTest
|
||||
|
||||
level = Experience.getLevelForXp(0);
|
||||
Assert.assertEquals(1, level);
|
||||
|
||||
|
||||
level = Experience.getLevelForXp(200_000_000);
|
||||
Assert.assertEquals(126, level);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetCombatLevel()
|
||||
{
|
||||
Assert.assertEquals(126, Experience.getCombatLevel(99, 99, 99, 99, 70, 42, 98));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user