mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
Fixed ironman mode being stuck after permadeath
This commit is contained in:
parent
a63867627e
commit
f501468ead
9 changed files with 30 additions and 33 deletions
|
|
@ -48,7 +48,7 @@ class ShootingStarMiningPulse(player: Player?, node: Scenery?, val star: Shootin
|
||||||
val bonusXp = 75 * player.skills.getStaticLevel(Skills.MINING)
|
val bonusXp = 75 * player.skills.getStaticLevel(Skills.MINING)
|
||||||
player.incrementAttribute("/save:shooting-star:bonus-xp", bonusXp)
|
player.incrementAttribute("/save:shooting-star:bonus-xp", bonusXp)
|
||||||
Repository.sendNews(player.username + " is the discoverer of the crashed star near " + star.location + "!")
|
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)
|
ShootingStarPlugin.submitScoreBoard(player)
|
||||||
star.isDiscovered = true
|
star.isDiscovered = true
|
||||||
return player.skills.getLevel(Skills.MINING) >= star.miningLevel
|
return player.skills.getLevel(Skills.MINING) >= star.miningLevel
|
||||||
|
|
|
||||||
|
|
@ -198,7 +198,7 @@ public final class PCRewardInterface extends ComponentPlugin {
|
||||||
} else if (skillId == Skills.MAGIC || skillId == Skills.RANGE) {
|
} else if (skillId == Skills.MAGIC || skillId == Skills.RANGE) {
|
||||||
divideBy = 29;//19.1-31 ideal 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()) {
|
if (reward.isSkillReward()) {
|
||||||
final double experience = ((int) calculateExperience(player, reward.getSkill()) * points);
|
final double experience = ((int) calculateExperience(player, reward.getSkill()) * points);
|
||||||
player.getSkills().addExperience(reward.getSkill(), experience);
|
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 {
|
} else {
|
||||||
if (!reward.checkItemRequirement(player, option)) {
|
if (!reward.checkItemRequirement(player, option)) {
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ class TutorialMagicTutorDialogue(player: Player? = null) : core.game.dialogue.Di
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
71 -> when(stage){
|
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 -> when(buttonId){
|
||||||
1 -> options("None","Standard","Hardcore (Permadeath!)","Ultimate","Nevermind.").also { stage = 10 }
|
1 -> options("None","Standard","Hardcore (Permadeath!)","Ultimate","Nevermind.").also { stage = 10 }
|
||||||
2 -> options("1.0x","2.5x","5.0x","10x").also { stage = 20 }
|
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]
|
val mode = IronmanMode.values()[buttonId - 1]
|
||||||
player.dialogueInterpreter.sendDialogue("You set your ironman mode to: ${mode.name}.")
|
player.dialogueInterpreter.sendDialogue("You set your ironman mode to: ${mode.name}.")
|
||||||
player.ironmanManager.mode = mode
|
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
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -124,7 +124,7 @@ class TutorialMagicTutorDialogue(player: Player? = null) : core.game.dialogue.Di
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
player.dialogueInterpreter.sendDialogue("You set your XP rate to: ${rate}x.")
|
player.dialogueInterpreter.sendDialogue("You set your XP rate to: ${rate}x.")
|
||||||
player.skills.experienceMutiplier = rate
|
player.skills.experienceMultiplier = rate
|
||||||
stage = 0
|
stage = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -154,9 +154,9 @@ class TutorialMagicTutorDialogue(player: Player? = null) : core.game.dialogue.Di
|
||||||
{
|
{
|
||||||
setAttribute(player, "/save:permadeath", true)
|
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
|
//This overwrites the stuck dialogue after teleporting to Lumbridge for some reason
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
|
||||||
stage = 41;
|
stage = 41;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
npc("Your current XP rate is: " + player.getSkills().experienceMutiplier);
|
npc("Your current XP rate is: " + player.getSkills().experienceMultiplier);
|
||||||
stage = 11;
|
stage = 11;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
|
@ -123,7 +123,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 11:
|
case 11:
|
||||||
if (player.getSkills().experienceMutiplier == 5.0) {
|
if (player.getSkills().experienceMultiplier == 5.0) {
|
||||||
player.newPlayer = player.getSkills().getTotalLevel() < 50;
|
player.newPlayer = player.getSkills().getTotalLevel() < 50;
|
||||||
options("Change xp rate", "Nevermind.");
|
options("Change xp rate", "Nevermind.");
|
||||||
stage++;
|
stage++;
|
||||||
|
|
@ -152,7 +152,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
|
||||||
switch(buttonId){
|
switch(buttonId){
|
||||||
case 1:
|
case 1:
|
||||||
if(player.newPlayer) {
|
if(player.newPlayer) {
|
||||||
player.getSkills().experienceMutiplier = 1.0;
|
player.getSkills().experienceMultiplier = 1.0;
|
||||||
stage = 14;
|
stage = 14;
|
||||||
} else {
|
} else {
|
||||||
stage = 15;
|
stage = 15;
|
||||||
|
|
@ -161,7 +161,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(player.newPlayer){
|
if(player.newPlayer){
|
||||||
player.getSkills().experienceMutiplier = 2.5;
|
player.getSkills().experienceMultiplier = 2.5;
|
||||||
stage = 14;
|
stage = 14;
|
||||||
} else {
|
} else {
|
||||||
stage = 15;
|
stage = 15;
|
||||||
|
|
@ -173,7 +173,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
|
||||||
return true;
|
return true;
|
||||||
case 4:
|
case 4:
|
||||||
if (player.newPlayer) {
|
if (player.newPlayer) {
|
||||||
player.getSkills().experienceMutiplier = 10.0;
|
player.getSkills().experienceMultiplier = 10.0;
|
||||||
stage = 14;
|
stage = 14;
|
||||||
} else {
|
} else {
|
||||||
stage = 15;
|
stage = 15;
|
||||||
|
|
@ -183,7 +183,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
|
||||||
npc("One moment, please...");
|
npc("One moment, please...");
|
||||||
break;
|
break;
|
||||||
case 14:
|
case 14:
|
||||||
npc("Tada, your xp rate is now " + player.getSkills().experienceMutiplier);
|
npc("Tada, your xp rate is now " + player.getSkills().experienceMultiplier);
|
||||||
stage = 131;
|
stage = 131;
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
|
|
@ -376,7 +376,7 @@ public final class HansDialoguePlugin extends DialoguePlugin {
|
||||||
switch (buttonId) {
|
switch (buttonId) {
|
||||||
case 1:
|
case 1:
|
||||||
interpreter.sendDialogues(npc, FacialExpression.FRIENDLY, "Tada! Your experience rate is now 10x.", "Happy Scaping!");
|
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;
|
stage = 50;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import core.api.*
|
||||||
import core.game.node.entity.player.Player
|
import core.game.node.entity.player.Player
|
||||||
import core.game.node.entity.player.VarpManager
|
import core.game.node.entity.player.VarpManager
|
||||||
import core.game.node.entity.player.info.login.PlayerSaver
|
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.SavedData
|
||||||
import core.game.node.entity.player.link.diary.DiaryType
|
import core.game.node.entity.player.link.diary.DiaryType
|
||||||
import core.game.node.entity.player.link.quest.QuestRepository
|
import core.game.node.entity.player.link.quest.QuestRepository
|
||||||
|
|
@ -42,6 +43,7 @@ fun permadeath(target: Player) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
target.musicPlayer.clearUnlocked()
|
target.musicPlayer.clearUnlocked()
|
||||||
|
target.ironmanManager.mode = IronmanMode.NONE
|
||||||
PlayerSaver(target).save()
|
PlayerSaver(target).save()
|
||||||
target.clear()
|
target.clear()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -622,17 +622,12 @@ public class Player extends Entity {
|
||||||
packetDispatch.sendTempMusic(90);
|
packetDispatch.sendTempMusic(90);
|
||||||
if (!getZoneMonitor().handleDeath(killer) && (!getProperties().isSafeZone() && getZoneMonitor().getType() != ZoneType.SAFE.getId()) && getDetails().getRights() != Rights.ADMINISTRATOR) {
|
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 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 ";
|
String gender = this.isMale() ? "man " : "woman ";
|
||||||
if (getAttributes().containsKey("permadeath")) {
|
if (getAttributes().containsKey("permadeath")) {
|
||||||
Repository.sendNews("Permadeath Hardcore Iron" + gender + " " + this.getUsername() + " has fallen. Total Level: " + this.getSkills().getTotalLevel()); // Not enough room for XP
|
Repository.sendNews("Permadeath Hardcore Iron" + gender + " " + this.getUsername() + " has fallen. Total Level: " + this.getSkills().getTotalLevel()); // Not enough room for XP
|
||||||
permadeath(this);
|
permadeath(this);
|
||||||
return;
|
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);
|
GroundItemManager.create(new Item(526), getLocation(), k);
|
||||||
|
|
|
||||||
|
|
@ -355,13 +355,13 @@ class PlayerSaveParser(val player: Player) {
|
||||||
val skillData = saveFile!!["skills"] as JSONArray
|
val skillData = saveFile!!["skills"] as JSONArray
|
||||||
player.skills.parse(skillData)
|
player.skills.parse(skillData)
|
||||||
player.skills.experienceGained = saveFile!!["totalEXP"].toString().toDouble()
|
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) {
|
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
|
val divisor: Double
|
||||||
if(player.skills.experienceMutiplier >= 10 && !player.attributes.containsKey("permadeath")){ //exclude permadeath HCIMs from XP squish
|
if(player.skills.experienceMultiplier >= 10 && !player.attributes.containsKey("permadeath")){ //exclude permadeath HCIMs from XP squish
|
||||||
divisor = player.skills.experienceMutiplier / 5.0
|
divisor = player.skills.experienceMultiplier / 5.0
|
||||||
player.skills.correct(divisor)
|
player.skills.correct(divisor)
|
||||||
}
|
}
|
||||||
if (saveFile!!.containsKey("milestone")) {
|
if (saveFile!!.containsKey("milestone")) {
|
||||||
|
|
|
||||||
|
|
@ -569,7 +569,7 @@ class PlayerSaver (val player: Player){
|
||||||
}
|
}
|
||||||
root.put("skills",skills)
|
root.put("skills",skills)
|
||||||
root.put("totalEXP",player.skills.experienceGained.toString())
|
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){
|
if(player.skills.combatMilestone > 0 || player.skills.skillMilestone > 0){
|
||||||
val milestone = JSONObject()
|
val milestone = JSONObject()
|
||||||
milestone.put("combatMilestone",player.skills.combatMilestone.toString())
|
milestone.put("combatMilestone",player.skills.combatMilestone.toString())
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ public final class Skills {
|
||||||
/**
|
/**
|
||||||
* Represents the constant modifier of experience.
|
* Represents the constant modifier of experience.
|
||||||
*/
|
*/
|
||||||
public double experienceMutiplier = 5.0;
|
public double experienceMultiplier = 5.0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The maximum experience multiplier.
|
* The maximum experience multiplier.
|
||||||
|
|
@ -289,7 +289,7 @@ public final class Skills {
|
||||||
private double getExperienceMod(int slot, double experience, boolean playerMod, boolean multiplyer) {
|
private double getExperienceMod(int slot, double experience, boolean playerMod, boolean multiplyer) {
|
||||||
//Keywords for people ctrl + Fing the project
|
//Keywords for people ctrl + Fing the project
|
||||||
//xprate xp rate xp multiplier skilling rate
|
//xprate xp rate xp multiplier skilling rate
|
||||||
return experienceMutiplier;
|
return experienceMultiplier;
|
||||||
/*if (!(entity instanceof Player)) {
|
/*if (!(entity instanceof Player)) {
|
||||||
return 1.0;
|
return 1.0;
|
||||||
}
|
}
|
||||||
|
|
@ -414,14 +414,14 @@ public final class Skills {
|
||||||
setLifepoints(staticLevels[i]);
|
setLifepoints(staticLevels[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
experienceMutiplier = 5.0;
|
experienceMultiplier = 5.0;
|
||||||
updateCombatLevel();
|
updateCombatLevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void parseExpRate(ByteBuffer buffer) {
|
public void parseExpRate(ByteBuffer buffer) {
|
||||||
experienceMutiplier = buffer.getDouble();
|
experienceMultiplier = buffer.getDouble();
|
||||||
if(GameWorld.getSettings().getDefault_xp_rate() != experienceMutiplier){
|
if(GameWorld.getSettings().getDefault_xp_rate() != experienceMultiplier){
|
||||||
experienceMutiplier = GameWorld.getSettings().getDefault_xp_rate();
|
experienceMultiplier = GameWorld.getSettings().getDefault_xp_rate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -445,7 +445,7 @@ public final class Skills {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveExpRate(ByteBuffer buffer) {
|
public void saveExpRate(ByteBuffer buffer) {
|
||||||
buffer.putDouble(experienceMutiplier);
|
buffer.putDouble(experienceMultiplier);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue