Update player run calculations (#108)

* Update player run calculations

* add regen calculations
This commit is contained in:
Danial
2019-10-28 07:22:08 +13:00
committed by Daniel Ginovker
parent df62d7efcf
commit 43713164cc
9 changed files with 1395 additions and 1419 deletions
@@ -297,7 +297,7 @@ public class Potions {
if (c.playerEnergy > 100) { if (c.playerEnergy > 100) {
c.playerEnergy = 100; c.playerEnergy = 100;
} }
c.getPlayerAssistant().sendFrame126(c.playerEnergy + "%", 149); c.getPlayerAssistant().sendFrame126((int) Math.ceil(c.playerEnergy) + "%", 149);
} }
public void drinkAntiPoison(int itemId, int replaceItem, int slot, public void drinkAntiPoison(int itemId, int replaceItem, int slot,
@@ -695,8 +695,4 @@ public class Agility {
changeObjectTimer = 10; changeObjectTimer = 10;
} }
} }
public static double getAgilityRunRestore(Client c) {
return 2260 - c.playerLevel[Constants.AGILITY] * 10;
}
} }
@@ -52,6 +52,7 @@ public class Weight extends ItemDefinitions {
public static void updateWeight(Client c) { public static void updateWeight(Client c) {
if (c != null) { if (c != null) {
c.getActionSender().writeWeight((int) c.weight); c.getActionSender().writeWeight((int) c.weight);
// Inventory items
for (int playerItem : c.playerItems) { for (int playerItem : c.playerItems) {
if (playerItem > -1) {// inventory if (playerItem > -1) {// inventory
for (ItemList i1 : Server.itemHandler.ItemList) { for (ItemList i1 : Server.itemHandler.ItemList) {
@@ -62,7 +63,8 @@ public class Weight extends ItemDefinitions {
} }
} }
} }
} // equipment }
// Equiped items
for (int element : c.playerEquipment) { for (int element : c.playerEquipment) {
if (element > -1) {// equipment if (element > -1) {// equipment
for (ItemList i1 : Server.itemHandler.ItemList) { for (ItemList i1 : Server.itemHandler.ItemList) {
File diff suppressed because it is too large Load Diff
@@ -112,12 +112,14 @@ public abstract class Player {
teleGrabItem, teleGrabX, teleGrabY, duelCount, underAttackBy, teleGrabItem, teleGrabX, teleGrabY, duelCount, underAttackBy,
underAttackBy2, wildLevel, teleTimer, respawnTimer, saveTimer = 0, underAttackBy2, wildLevel, teleTimer, respawnTimer, saveTimer = 0,
teleBlockLength, poisonDelay, slayerPoints, blackMarks, teleBlockLength, poisonDelay, slayerPoints, blackMarks,
playerEnergy = 100, SlayerMaster, teleOtherTimer = 0, SlayerMaster, teleOtherTimer = 0,
teleOtherSlot = -1, tutorialProgress, Cookstage1 = 1, teleOtherSlot = -1, tutorialProgress, Cookstage1 = 1,
woodcuttingTree, smeltAmount, knightS, otherDirection, woodcuttingTree, smeltAmount, knightS, otherDirection,
brightness = 3, recoilHits, droppedItem = -1, brightness = 3, recoilHits, droppedItem = -1,
spawnedHealers, cannonX = 0, cannonY = 0; spawnedHealers, cannonX = 0, cannonY = 0;
public double playerEnergy = 100;
public Pets getSummon() { public Pets getSummon() {
return pets; return pets;
} }
@@ -1161,15 +1163,14 @@ public abstract class Player {
str.writeBits(1, 0); str.writeBits(1, 0);
} }
if (playerEnergy > 0 && playerRights < 2) { if (playerEnergy > 0 && playerRights < 2) {
if (weight > 0.0) { // calculations from https://oldschool.runescape.wiki/w/Energy
playerEnergy -= 1 + Misc.random(1); playerEnergy -= 0.64;
} else { if (weight > 0.0)
playerEnergy -= 1; playerEnergy -= Math.min(weight, 64) / 100;
}
} else if (playerRights >= 2) { } else if (playerRights >= 2) {
playerEnergy = 100; playerEnergy = 100;
isRunning2 = true; isRunning2 = true;
} else if (playerEnergy < 1) { } else if (playerEnergy <= 0) {
playerEnergy = 0; playerEnergy = 0;
isRunning2 = false; isRunning2 = false;
} }
@@ -431,38 +431,16 @@ public class PlayerAssistant {
public void writeEnergy() { public void writeEnergy() {
if (player.playerEnergy > 0) { if (player.playerEnergy > 0) {
sendFrame126(player.playerEnergy + "%", 149); sendFrame126((int) Math.ceil(player.playerEnergy) + "%", 149);
} else { } else {
sendFrame126("0%", 149); sendFrame126("0%", 149);
} }
} }
public int raiseTimer() { public int raiseTimer() {
if (player.playerLevel[16] >= 2 && player.playerLevel[16] < 10) { // calculations from https://oldschool.runescape.wiki/w/Energy
return 6500; double seconds = 60 / (8 + Math.floor(player.playerLevel[player.playerAgility] / 6));
} return (int) Math.floor(seconds * 1000);
if (player.playerLevel[16] >= 10 && player.playerLevel[16] < 25) {
return 6000;
}
if (player.playerLevel[16] >= 25 && player.playerLevel[16] < 40) {
return 5500;
}
if (player.playerLevel[16] >= 40 && player.playerLevel[16] < 55) {
return 5000;
}
if (player.playerLevel[16] >= 55 && player.playerLevel[16] < 70) {
return 4500;
}
if (player.playerLevel[16] >= 70 && player.playerLevel[16] < 85) {
return 4000;
}
if (player.playerLevel[16] >= 85 && player.playerLevel[16] < 99) {
return 3500;
}
if (player.playerLevel[16] == 99) {
return 3000;
}
return 7000;
} }
public void handleTiara() { public void handleTiara() {
@@ -2056,7 +2034,7 @@ public class PlayerAssistant {
frame1(); frame1();
resetTb(); resetTb();
player.playerEnergy = 100; player.playerEnergy = 100;
player.getPlayerAssistant().sendFrame126(player.playerEnergy + "%", 149); player.getPlayerAssistant().sendFrame126((int) Math.ceil(player.playerEnergy) + "%", 149);
player.isSkulled = false; player.isSkulled = false;
player.attackedPlayers.clear(); player.attackedPlayers.clear();
player.headIconPk = -1; player.headIconPk = -1;
@@ -696,8 +696,8 @@ public class PlayerSave {
.toString(player.strongHold).length()); .toString(player.strongHold).length());
characterfile.newLine(); characterfile.newLine();
characterfile.write("character-energy = ", 0, 19); characterfile.write("character-energy = ", 0, 19);
characterfile.write(Integer.toString(player.playerEnergy), 0, characterfile.write(Integer.toString((int) Math.ceil(player.playerEnergy)), 0,
Integer.toString(player.playerEnergy).length()); Integer.toString((int) Math.ceil(player.playerEnergy)).length());
characterfile.newLine(); characterfile.newLine();
characterfile.write("crystal-bow-shots = ", 0, 20); characterfile.write("crystal-bow-shots = ", 0, 20);
characterfile.write(Integer.toString(player.crystalBowArrowCount), characterfile.write(Integer.toString(player.crystalBowArrowCount),