Limited daily rerolls to 10.
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user