Limited daily rerolls to 10.

This commit is contained in:
ceikry
2021-07-31 22:26:39 -05:00
parent 386b65799a
commit 4a6502b4ea
2 changed files with 54 additions and 4 deletions
@@ -1,5 +1,7 @@
package core.game.node.entity.skill.slayer;
import org.json.simple.JSONObject;
import rs09.ServerStore;
import rs09.game.world.GameWorld;
import core.game.content.dialogue.DialoguePlugin;
import core.game.content.dialogue.FacialExpression;
@@ -13,6 +15,8 @@ import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item;
import core.plugin.Initializable;
import static rs09.tools.DialogueConstKt.END_DIALOGUE;
/**
* Represents the dialogue plugin used for a slayer master.
*
@@ -68,6 +72,8 @@ public final class SlayerMasterDialogue extends DialoguePlugin {
private final int level = 2;
private int rerolls = 0;
/**
* Constructs a new {@code SlayerMasterDialogue} {@code Object}.
*/
@@ -117,6 +123,7 @@ public final class SlayerMasterDialogue extends DialoguePlugin {
@Override
public boolean handle(int interfaceId, int buttonId) {
rerolls = ServerStore.getInt(getStoreFile(), player.getUsername().toLowerCase());
if (isDiary) {
switch (stage) {
case 999:
@@ -495,8 +502,8 @@ public final class SlayerMasterDialogue extends DialoguePlugin {
break;
}
if (Master.hasSameTask(master, player)) {
interpreter.sendDialogues(master.getNpc(), getExpression(master), "You're still hunting something. Come back when you've", "finished your task.");
stage = 999;
interpreter.sendDialogues(master.getNpc(), getExpression(master), "You're still hunting something. But let me check something...");
stage = 847;
} else {
player.getSlayer().setTaskCount(0);
player.getSlayer().generate(master);
@@ -514,9 +521,9 @@ public final class SlayerMasterDialogue extends DialoguePlugin {
} else {
options("Got any tips for me?", "Okay, great!");
}
stage = 854;
stage++;
break;
case 854:
case 845:
switch (buttonId) {
case 1:
interpreter.sendDialogues(master.getNpc(), getExpression(master), player.getSlayer().getTask().getTip());
@@ -528,8 +535,45 @@ public final class SlayerMasterDialogue extends DialoguePlugin {
break;
case 3:
player("I'd like to re-roll this task.");
if(rerolls == 10){
stage++;
} else {
player.getSlayer().clear();
getStoreFile().put(player.getUsername().toLowerCase(), rerolls + 1);
stage = 701;
}
}
break;
case 846:
npcl(FacialExpression.NEUTRAL, "Actually, you're out of free rerolls. You can buy a reroll from my reward store, though.");
stage = END_DIALOGUE;
break;
case 847:
if(rerolls < 10){
npcl(FacialExpression.NEUTRAL, "You do have " + (10 - rerolls) + " rerolls left today, would you like to use one?");
stage++;
}
else {
npcl(FacialExpression.NEUTRAL, "And it also seems you're out of rerolls for today. That's unfortunate.");
stage = END_DIALOGUE;
}
break;
case 848:
options("Yes, please.", "No, thanks.");
stage++;
break;
case 849:
switch(buttonId){
case 1:
playerl(FacialExpression.FRIENDLY, "Yes, please.");
player.getSlayer().clear();
getStoreFile().put(player.getUsername().toLowerCase(), rerolls + 1);
stage = 701;
break;
case 2:
playerl(FacialExpression.NEUTRAL, "No, thanks.");
stage = END_DIALOGUE;
break;
}
break;
case 860:
@@ -667,4 +711,8 @@ public final class SlayerMasterDialogue extends DialoguePlugin {
return new int[]{70, 1598, 1596, 1597, 1599, 8275, 8273, 8274, 8649};
}
private JSONObject getStoreFile() {
return ServerStore.getArchive("daily-slayer-rerolls");
}
}
@@ -63,6 +63,7 @@ object ServerStore {
}
}
@JvmStatic
fun getArchive(name: String): JSONObject {
if(fileMap[name] == null){
fileMap[name] = JSONObject()
@@ -87,6 +88,7 @@ object ServerStore {
}
}
@JvmStatic
fun JSONObject.getInt(key: String): Int {
return when(val value = this[key]){
is Long -> value.toInt()