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) {
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,
@@ -695,8 +695,4 @@ public class Agility {
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) {
if (c != null) {
c.getActionSender().writeWeight((int) c.weight);
// Inventory items
for (int playerItem : c.playerItems) {
if (playerItem > -1) {// inventory
for (ItemList i1 : Server.itemHandler.ItemList) {
@@ -62,7 +63,8 @@ public class Weight extends ItemDefinitions {
}
}
}
} // equipment
}
// Equiped items
for (int element : c.playerEquipment) {
if (element > -1) {// equipment
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,
underAttackBy2, wildLevel, teleTimer, respawnTimer, saveTimer = 0,
teleBlockLength, poisonDelay, slayerPoints, blackMarks,
playerEnergy = 100, SlayerMaster, teleOtherTimer = 0,
SlayerMaster, teleOtherTimer = 0,
teleOtherSlot = -1, tutorialProgress, Cookstage1 = 1,
woodcuttingTree, smeltAmount, knightS, otherDirection,
brightness = 3, recoilHits, droppedItem = -1,
spawnedHealers, cannonX = 0, cannonY = 0;
public double playerEnergy = 100;
public Pets getSummon() {
return pets;
}
@@ -1161,15 +1163,14 @@ public abstract class Player {
str.writeBits(1, 0);
}
if (playerEnergy > 0 && playerRights < 2) {
if (weight > 0.0) {
playerEnergy -= 1 + Misc.random(1);
} else {
playerEnergy -= 1;
}
// calculations from https://oldschool.runescape.wiki/w/Energy
playerEnergy -= 0.64;
if (weight > 0.0)
playerEnergy -= Math.min(weight, 64) / 100;
} else if (playerRights >= 2) {
playerEnergy = 100;
isRunning2 = true;
} else if (playerEnergy < 1) {
} else if (playerEnergy <= 0) {
playerEnergy = 0;
isRunning2 = false;
}
@@ -431,38 +431,16 @@ public class PlayerAssistant {
public void writeEnergy() {
if (player.playerEnergy > 0) {
sendFrame126(player.playerEnergy + "%", 149);
sendFrame126((int) Math.ceil(player.playerEnergy) + "%", 149);
} else {
sendFrame126("0%", 149);
}
}
public int raiseTimer() {
if (player.playerLevel[16] >= 2 && player.playerLevel[16] < 10) {
return 6500;
}
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;
// calculations from https://oldschool.runescape.wiki/w/Energy
double seconds = 60 / (8 + Math.floor(player.playerLevel[player.playerAgility] / 6));
return (int) Math.floor(seconds * 1000);
}
public void handleTiara() {
@@ -2056,7 +2034,7 @@ public class PlayerAssistant {
frame1();
resetTb();
player.playerEnergy = 100;
player.getPlayerAssistant().sendFrame126(player.playerEnergy + "%", 149);
player.getPlayerAssistant().sendFrame126((int) Math.ceil(player.playerEnergy) + "%", 149);
player.isSkulled = false;
player.attackedPlayers.clear();
player.headIconPk = -1;
@@ -696,8 +696,8 @@ public class PlayerSave {
.toString(player.strongHold).length());
characterfile.newLine();
characterfile.write("character-energy = ", 0, 19);
characterfile.write(Integer.toString(player.playerEnergy), 0,
Integer.toString(player.playerEnergy).length());
characterfile.write(Integer.toString((int) Math.ceil(player.playerEnergy)), 0,
Integer.toString((int) Math.ceil(player.playerEnergy)).length());
characterfile.newLine();
characterfile.write("crystal-bow-shots = ", 0, 20);
characterfile.write(Integer.toString(player.crystalBowArrowCount),