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; package core.game.node.entity.skill.slayer;
import org.json.simple.JSONObject;
import rs09.ServerStore;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import core.game.content.dialogue.DialoguePlugin; import core.game.content.dialogue.DialoguePlugin;
import core.game.content.dialogue.FacialExpression; 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.game.node.item.Item;
import core.plugin.Initializable; import core.plugin.Initializable;
import static rs09.tools.DialogueConstKt.END_DIALOGUE;
/** /**
* Represents the dialogue plugin used for a slayer master. * 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 final int level = 2;
private int rerolls = 0;
/** /**
* Constructs a new {@code SlayerMasterDialogue} {@code Object}. * Constructs a new {@code SlayerMasterDialogue} {@code Object}.
*/ */
@@ -117,6 +123,7 @@ public final class SlayerMasterDialogue extends DialoguePlugin {
@Override @Override
public boolean handle(int interfaceId, int buttonId) { public boolean handle(int interfaceId, int buttonId) {
rerolls = ServerStore.getInt(getStoreFile(), player.getUsername().toLowerCase());
if (isDiary) { if (isDiary) {
switch (stage) { switch (stage) {
case 999: case 999:
@@ -495,8 +502,8 @@ public final class SlayerMasterDialogue extends DialoguePlugin {
break; break;
} }
if (Master.hasSameTask(master, player)) { if (Master.hasSameTask(master, player)) {
interpreter.sendDialogues(master.getNpc(), getExpression(master), "You're still hunting something. Come back when you've", "finished your task."); interpreter.sendDialogues(master.getNpc(), getExpression(master), "You're still hunting something. But let me check something...");
stage = 999; stage = 847;
} else { } else {
player.getSlayer().setTaskCount(0); player.getSlayer().setTaskCount(0);
player.getSlayer().generate(master); player.getSlayer().generate(master);
@@ -514,9 +521,9 @@ public final class SlayerMasterDialogue extends DialoguePlugin {
} else { } else {
options("Got any tips for me?", "Okay, great!"); options("Got any tips for me?", "Okay, great!");
} }
stage = 854; stage++;
break; break;
case 854: case 845:
switch (buttonId) { switch (buttonId) {
case 1: case 1:
interpreter.sendDialogues(master.getNpc(), getExpression(master), player.getSlayer().getTask().getTip()); interpreter.sendDialogues(master.getNpc(), getExpression(master), player.getSlayer().getTask().getTip());
@@ -528,9 +535,46 @@ public final class SlayerMasterDialogue extends DialoguePlugin {
break; break;
case 3: case 3:
player("I'd like to re-roll this task."); player("I'd like to re-roll this task.");
if(rerolls == 10){
stage++;
} else {
player.getSlayer().clear(); player.getSlayer().clear();
getStoreFile().put(player.getUsername().toLowerCase(), rerolls + 1);
stage = 701; 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; break;
case 860: case 860:
player("Great, thanks!"); player("Great, thanks!");
@@ -667,4 +711,8 @@ public final class SlayerMasterDialogue extends DialoguePlugin {
return new int[]{70, 1598, 1596, 1597, 1599, 8275, 8273, 8274, 8649}; 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 { fun getArchive(name: String): JSONObject {
if(fileMap[name] == null){ if(fileMap[name] == null){
fileMap[name] = JSONObject() fileMap[name] = JSONObject()
@@ -87,6 +88,7 @@ object ServerStore {
} }
} }
@JvmStatic
fun JSONObject.getInt(key: String): Int { fun JSONObject.getInt(key: String): Int {
return when(val value = this[key]){ return when(val value = this[key]){
is Long -> value.toInt() is Long -> value.toInt()