Fixed ironman mode being stuck after permadeath

This commit is contained in:
Player Name 2024-05-13 15:13:23 +00:00 committed by Ryan
parent a63867627e
commit f501468ead
9 changed files with 30 additions and 33 deletions

View file

@ -48,7 +48,7 @@ class ShootingStarMiningPulse(player: Player?, node: Scenery?, val star: Shootin
val bonusXp = 75 * player.skills.getStaticLevel(Skills.MINING)
player.incrementAttribute("/save:shooting-star:bonus-xp", bonusXp)
Repository.sendNews(player.username + " is the discoverer of the crashed star near " + star.location + "!")
player.sendMessage("You have ${player.skills.experienceMutiplier * player.getAttribute("shooting-star:bonus-xp", 0).toDouble()} bonus xp towards mining stardust.")
player.sendMessage("You have ${player.skills.experienceMultiplier * player.getAttribute("shooting-star:bonus-xp", 0).toDouble()} bonus xp towards mining stardust.")
ShootingStarPlugin.submitScoreBoard(player)
star.isDiscovered = true
return player.skills.getLevel(Skills.MINING) >= star.miningLevel

View file

@ -198,7 +198,7 @@ public final class PCRewardInterface extends ComponentPlugin {
} else if (skillId == Skills.MAGIC || skillId == Skills.RANGE) {
divideBy = 29;//19.1-31 ideal range
}
return (int) ((level * level) / divideBy) * (player.getSkills().experienceMutiplier / 2);
return (int) ((level * level) / divideBy) * (player.getSkills().experienceMultiplier / 2);
}
/**
@ -283,7 +283,7 @@ public final class PCRewardInterface extends ComponentPlugin {
if (reward.isSkillReward()) {
final double experience = ((int) calculateExperience(player, reward.getSkill()) * points);
player.getSkills().addExperience(reward.getSkill(), experience);
message = "The Void Knight has granted you " + (int) (experience * player.getSkills().experienceMutiplier) + " " + reward.getName() + ".";
message = "The Void Knight has granted you " + (int) (experience * player.getSkills().experienceMultiplier) + " " + reward.getName() + ".";
} else {
if (!reward.checkItemRequirement(player, option)) {
return;

View file

@ -93,7 +93,7 @@ class TutorialMagicTutorDialogue(player: Player? = null) : core.game.dialogue.Di
}
}
71 -> when(stage){
0 -> options("Set Ironman Mode (current: ${player.ironmanManager.mode.name})", "Change XP Rate (current: ${player.skills.experienceMutiplier}x)", "I'm ready now.").also { stage++ }
0 -> options("Set Ironman Mode (current: ${player.ironmanManager.mode.name})", "Change XP Rate (current: ${player.skills.experienceMultiplier}x)", "I'm ready now.").also { stage++ }
1 -> when(buttonId){
1 -> options("None","Standard","Hardcore (Permadeath!)","Ultimate","Nevermind.").also { stage = 10 }
2 -> options("1.0x","2.5x","5.0x","10x").also { stage = 20 }
@ -107,7 +107,7 @@ class TutorialMagicTutorDialogue(player: Player? = null) : core.game.dialogue.Di
val mode = IronmanMode.values()[buttonId - 1]
player.dialogueInterpreter.sendDialogue("You set your ironman mode to: ${mode.name}.")
player.ironmanManager.mode = mode
if (player.skills.experienceMutiplier == 10.0 && mode != IronmanMode.HARDCORE) player.skills.experienceMutiplier = 5.0
if (player.skills.experienceMultiplier == 10.0 && mode != IronmanMode.HARDCORE) player.skills.experienceMultiplier = 5.0
}
else
{
@ -124,7 +124,7 @@ class TutorialMagicTutorDialogue(player: Player? = null) : core.game.dialogue.Di
return true
}
player.dialogueInterpreter.sendDialogue("You set your XP rate to: ${rate}x.")
player.skills.experienceMutiplier = rate
player.skills.experienceMultiplier = rate
stage = 0
}
@ -154,9 +154,9 @@ class TutorialMagicTutorDialogue(player: Player? = null) : core.game.dialogue.Di
{
setAttribute(player, "/save:permadeath", true)
}
else if(player.skills.experienceMutiplier == 10.0)
else if(player.skills.experienceMultiplier == 10.0)
{
player.skills.experienceMutiplier = 5.0
player.skills.experienceMultiplier = 5.0
}
//This overwrites the stuck dialogue after teleporting to Lumbridge for some reason

View file

@ -98,7 +98,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
stage = 41;
break;
case 2:
npc("Your current XP rate is: " + player.getSkills().experienceMutiplier);
npc("Your current XP rate is: " + player.getSkills().experienceMultiplier);
stage = 11;
break;
case 3:
@ -123,7 +123,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
break;
case 11:
if (player.getSkills().experienceMutiplier == 5.0) {
if (player.getSkills().experienceMultiplier == 5.0) {
player.newPlayer = player.getSkills().getTotalLevel() < 50;
options("Change xp rate", "Nevermind.");
stage++;
@ -152,7 +152,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
switch(buttonId){
case 1:
if(player.newPlayer) {
player.getSkills().experienceMutiplier = 1.0;
player.getSkills().experienceMultiplier = 1.0;
stage = 14;
} else {
stage = 15;
@ -161,7 +161,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
break;
case 2:
if(player.newPlayer){
player.getSkills().experienceMutiplier = 2.5;
player.getSkills().experienceMultiplier = 2.5;
stage = 14;
} else {
stage = 15;
@ -173,7 +173,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
return true;
case 4:
if (player.newPlayer) {
player.getSkills().experienceMutiplier = 10.0;
player.getSkills().experienceMultiplier = 10.0;
stage = 14;
} else {
stage = 15;
@ -183,7 +183,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
npc("One moment, please...");
break;
case 14:
npc("Tada, your xp rate is now " + player.getSkills().experienceMutiplier);
npc("Tada, your xp rate is now " + player.getSkills().experienceMultiplier);
stage = 131;
break;
case 15:
@ -376,7 +376,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
switch (buttonId) {
case 1:
interpreter.sendDialogues(npc, FacialExpression.FRIENDLY, "Tada! Your experience rate is now 10x.", "Happy Scaping!");
player.getSkills().experienceMutiplier = 10.0;
player.getSkills().experienceMultiplier = 10.0;
stage = 50;
break;
case 2:

View file

@ -4,6 +4,7 @@ import core.api.*
import core.game.node.entity.player.Player
import core.game.node.entity.player.VarpManager
import core.game.node.entity.player.info.login.PlayerSaver
import core.game.node.entity.player.link.IronmanMode
import core.game.node.entity.player.link.SavedData
import core.game.node.entity.player.link.diary.DiaryType
import core.game.node.entity.player.link.quest.QuestRepository
@ -42,6 +43,7 @@ fun permadeath(target: Player) {
}
}
target.musicPlayer.clearUnlocked()
target.ironmanManager.mode = IronmanMode.NONE
PlayerSaver(target).save()
target.clear()
}

View file

@ -622,17 +622,12 @@ public class Player extends Entity {
packetDispatch.sendTempMusic(90);
if (!getZoneMonitor().handleDeath(killer) && (!getProperties().isSafeZone() && getZoneMonitor().getType() != ZoneType.SAFE.getId()) && getDetails().getRights() != Rights.ADMINISTRATOR) {
//If player was a Hardcore Ironman, announce that they died
if (this.getIronmanManager().getMode().equals(IronmanMode.HARDCORE)){ //if this was checkRestriction, ultimate irons would be moved to HARDCORE_DEAD as well
if (this.getIronmanManager().getMode().equals(IronmanMode.HARDCORE)) { //if this was checkRestriction, ultimate irons would be moved to HARDCORE_DEAD as well
String gender = this.isMale() ? "man " : "woman ";
if (getAttributes().containsKey("permadeath")) {
Repository.sendNews("Permadeath Hardcore Iron" + gender + " " + this.getUsername() + " has fallen. Total Level: " + this.getSkills().getTotalLevel()); // Not enough room for XP
permadeath(this);
return;
} else {
Repository.sendNews("Hardcore Iron " + gender + " " + this.getUsername() + " has fallen. Total Level: " + this.getSkills().getTotalLevel()); // Not enough room for XP
this.getIronmanManager().setMode(IronmanMode.STANDARD);
asPlayer().getSavedData().getActivityData().setHardcoreDeath(true);
this.sendMessage("You have fallen as a Hardcore Iron Man, your Hardcore status has been revoked.");
}
}
GroundItemManager.create(new Item(526), getLocation(), k);

View file

@ -355,13 +355,13 @@ class PlayerSaveParser(val player: Player) {
val skillData = saveFile!!["skills"] as JSONArray
player.skills.parse(skillData)
player.skills.experienceGained = saveFile!!["totalEXP"].toString().toDouble()
player.skills.experienceMutiplier = saveFile!!["exp_multiplier"].toString().toDouble()
player.skills.experienceMultiplier = saveFile!!["exp_multiplier"].toString().toDouble()
if (GameWorld.settings?.default_xp_rate != 5.0) {
player.skills.experienceMutiplier = GameWorld.settings?.default_xp_rate!!
player.skills.experienceMultiplier = GameWorld.settings?.default_xp_rate!!
}
val divisor: Double
if(player.skills.experienceMutiplier >= 10 && !player.attributes.containsKey("permadeath")){ //exclude permadeath HCIMs from XP squish
divisor = player.skills.experienceMutiplier / 5.0
if(player.skills.experienceMultiplier >= 10 && !player.attributes.containsKey("permadeath")){ //exclude permadeath HCIMs from XP squish
divisor = player.skills.experienceMultiplier / 5.0
player.skills.correct(divisor)
}
if (saveFile!!.containsKey("milestone")) {

View file

@ -569,7 +569,7 @@ class PlayerSaver (val player: Player){
}
root.put("skills",skills)
root.put("totalEXP",player.skills.experienceGained.toString())
root.put("exp_multiplier",player.skills.experienceMutiplier.toString())
root.put("exp_multiplier",player.skills.experienceMultiplier.toString())
if(player.skills.combatMilestone > 0 || player.skills.skillMilestone > 0){
val milestone = JSONObject()
milestone.put("combatMilestone",player.skills.combatMilestone.toString())

View file

@ -41,7 +41,7 @@ public final class Skills {
/**
* Represents the constant modifier of experience.
*/
public double experienceMutiplier = 5.0;
public double experienceMultiplier = 5.0;
/**
* The maximum experience multiplier.
@ -289,7 +289,7 @@ public final class Skills {
private double getExperienceMod(int slot, double experience, boolean playerMod, boolean multiplyer) {
//Keywords for people ctrl + Fing the project
//xprate xp rate xp multiplier skilling rate
return experienceMutiplier;
return experienceMultiplier;
/*if (!(entity instanceof Player)) {
return 1.0;
}
@ -414,14 +414,14 @@ public final class Skills {
setLifepoints(staticLevels[i]);
}
}
experienceMutiplier = 5.0;
experienceMultiplier = 5.0;
updateCombatLevel();
}
public void parseExpRate(ByteBuffer buffer) {
experienceMutiplier = buffer.getDouble();
if(GameWorld.getSettings().getDefault_xp_rate() != experienceMutiplier){
experienceMutiplier = GameWorld.getSettings().getDefault_xp_rate();
experienceMultiplier = buffer.getDouble();
if(GameWorld.getSettings().getDefault_xp_rate() != experienceMultiplier){
experienceMultiplier = GameWorld.getSettings().getDefault_xp_rate();
}
}
@ -445,7 +445,7 @@ public final class Skills {
}
public void saveExpRate(ByteBuffer buffer) {
buffer.putDouble(experienceMutiplier);
buffer.putDouble(experienceMultiplier);
}
/**