Fixed saving of prayer points & hitpoints, dynamic level is now tracked separately to current hit/prayer points
This commit is contained in:
@@ -566,12 +566,12 @@ class PlayerSaver (val player: Player){
|
||||
val skill = JSONObject()
|
||||
skill.put("id",i.toString())
|
||||
skill.put("static",player.skills.staticLevels[i].toString())
|
||||
if(i == Skills.HITPOINTS){
|
||||
skill.put("dynamic",player.skills.lifepoints.toString())
|
||||
} else if (i == Skills.PRAYER){
|
||||
skill.put("dynamic",ceil(player.skills.prayerPoints).toInt().toString())
|
||||
} else {
|
||||
skill.put("dynamic",player.skills.dynamicLevels[i].toString())
|
||||
skill.put("dynamic",player.skills.dynamicLevels[i].toString())
|
||||
if (i == Skills.HITPOINTS) {
|
||||
skill.put("lifepoints",player.skills.lifepoints.toString())
|
||||
}
|
||||
if (i == Skills.PRAYER) {
|
||||
skill.put("prayerPoints",player.skills.prayerPoints.toString())
|
||||
}
|
||||
skill.put("experience",player.skills.getExperience(i).toString())
|
||||
skills.add(skill)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package core.game.node.entity.skill;
|
||||
|
||||
import content.global.skill.skillcapeperks.SkillcapePerks;
|
||||
import core.ServerConstants;
|
||||
import core.game.event.DynamicSkillLevelChangeEvent;
|
||||
import core.game.event.XPGainEvent;
|
||||
import content.global.handlers.item.equipment.brawling_gloves.BrawlingGloves;
|
||||
@@ -369,36 +370,30 @@ public final class Skills {
|
||||
rechargePrayerPoints();
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the skill data from the buffer.
|
||||
* @param buffer The byte buffer.
|
||||
*/
|
||||
public void parse(ByteBuffer buffer) {
|
||||
for (int i = 0; i < 24; i++) {
|
||||
experience[i] = ((double) buffer.getInt() / 10D);
|
||||
dynamicLevels[i] = buffer.get() & 0xFF;
|
||||
if (i == HITPOINTS) {
|
||||
lifepoints = dynamicLevels[i];
|
||||
} else if (i == PRAYER) {
|
||||
prayerPoints = dynamicLevels[i];
|
||||
}
|
||||
staticLevels[i] = buffer.get() & 0xFF;
|
||||
}
|
||||
experienceGained = buffer.getInt();
|
||||
}
|
||||
|
||||
public void parse(JSONArray skillData){
|
||||
for(int i = 0; i < skillData.size(); i++){
|
||||
JSONObject skill = (JSONObject) skillData.get(i);
|
||||
int id = Integer.parseInt( skill.get("id").toString());
|
||||
dynamicLevels[id] = Integer.parseInt( skill.get("dynamic").toString());
|
||||
if (id == HITPOINTS) {
|
||||
lifepoints = dynamicLevels[i];
|
||||
} else if (id == PRAYER) {
|
||||
prayerPoints = dynamicLevels[i];
|
||||
}
|
||||
staticLevels[id] = Integer.parseInt( skill.get("static").toString());
|
||||
dynamicLevels[id] = Integer.parseInt(skill.get("dynamic").toString());
|
||||
staticLevels[id] = Integer.parseInt(skill.get("static").toString());
|
||||
experience[id] = Double.parseDouble(skill.get("experience").toString());
|
||||
int version = entity instanceof Player ? entity.asPlayer().version : ServerConstants.CURRENT_SAVEFILE_VERSION;
|
||||
if (i == HITPOINTS) {
|
||||
if (version < 3 && !skill.containsKey("lifepoints")) { //!1881
|
||||
lifepoints = dynamicLevels[id];
|
||||
dynamicLevels[id] = staticLevels[id];
|
||||
} else {
|
||||
lifepoints = Integer.parseInt(skill.get("lifepoints").toString());
|
||||
}
|
||||
}
|
||||
if (i == PRAYER) {
|
||||
if (version < 3 && !skill.containsKey("prayerPoints")) { //!1881
|
||||
prayerPoints = dynamicLevels[id];
|
||||
dynamicLevels[id] = staticLevels[id];
|
||||
} else {
|
||||
prayerPoints = Double.parseDouble(skill.get("prayerPoints").toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -432,13 +427,7 @@ public final class Skills {
|
||||
public void save(ByteBuffer buffer) {
|
||||
for (int i = 0; i < 24; i++) {
|
||||
buffer.putInt((int) (experience[i] * 10));
|
||||
if (i == HITPOINTS) {
|
||||
buffer.put((byte) lifepoints);
|
||||
} else if (i == PRAYER) {
|
||||
buffer.put((byte) Math.ceil(prayerPoints));
|
||||
} else {
|
||||
buffer.put((byte) dynamicLevels[i]);
|
||||
}
|
||||
buffer.put((byte) dynamicLevels[i]);
|
||||
buffer.put((byte) staticLevels[i]);
|
||||
}
|
||||
buffer.putInt((int) experienceGained);
|
||||
|
||||
Reference in New Issue
Block a user