Compare commits

..

6 Commits

Author SHA1 Message Date
Greg Tseng
22269f32f9 both quests now have a bribe option 2025-03-06 15:15:01 -05:00
Greg Tseng
5895b1e90a made Shield of Arrav completable with bribery to King Roald 2025-03-06 12:18:15 -05:00
Greg Tseng
d6add6cc4e initial bribing of King Roald enabled 2025-03-06 08:13:10 -05:00
Greg Tseng
504a49eaae accidentally uncommented out something in the west ardy civilian cat handler 2025-03-05 18:24:14 -05:00
Greg Tseng
709d259b77 This implements a stat for how many cats get sold for death runes
Merge branch 'cat-sold-counter'
2025-03-05 12:43:03 -05:00
Greg Tseng
ade60a1e45 finished the cats sold stat implementation 2025-03-05 12:42:03 -05:00
22 changed files with 165 additions and 196 deletions

View File

@ -43,5 +43,5 @@ I would strongly recommend contributing code to the [2009Scape project](https://
## License
Like 2009Scape, this is AGPLv3. This is, in my opinion, the only proper license for an open source RSPS. The key term of the license being if you wish to use this code to host your own server, you must also offer the source code for people to inspect and use, and allow them to make modifications to it as I did with 2009Scape's code.
Like 2009Scape, this is AGPLv3. This is, in my opinion, the only proper license for an open source RSPS. The key term of the license being if you wish to use this code, you must also offer the source code for people to inspect and use! (eg no private, for profit RSPS).

View File

@ -15,11 +15,6 @@ fun kidnapPlayer(player: Player, loc: Location, type: TeleportType) {
}
fun returnPlayer(player: Player) {
// Prevent returning more than once and sending the player back to HOME_LOCATION
if (getAttribute<Location?>(player, "kidnapped-by-random", null) == null) {
return
}
player.locks.unlockTeleport()
val destination = getAttribute(player, "/save:original-loc", ServerConstants.HOME_LOCATION ?: Location.create(3222, 3218, 0))
teleport(player, destination)

View File

@ -46,23 +46,23 @@ enum class RandomEvents(val npc: RandomEventNPC, val loot: WeightBasedTable? = n
WeightedItem(Items.TOOTH_HALF_OF_A_KEY_985,1,1,0.1),
WeightedItem(Items.LOOP_HALF_OF_A_KEY_987,1,1,0.1)
)),
// MAZE(npc = MazeNPC()),
MAZE(npc = MazeNPC()),
DRILL_DEMON(npc = SergeantDamienNPC()),
EVIL_CHICKEN(npc = EvilChickenNPC()),
// STRANGE_PLANT(npc = StrangePlantNPC()),
// SWARM(npc = SwarmNPC()),
// EVIL_BOB(npc = EvilBobNPC(), skillIds = intArrayOf(Skills.FISHING, Skills.MAGIC)),
STRANGE_PLANT(npc = StrangePlantNPC()),
SWARM(npc = SwarmNPC()),
EVIL_BOB(npc = EvilBobNPC(), skillIds = intArrayOf(Skills.FISHING, Skills.MAGIC)),
DRUNKEN_DWARF(npc = DrunkenDwarfNPC()),
RICK_TURPENTINE(npc = RickTurpentineNPC(), loot = CERTER.loot),
SURPRISE_EXAM(npc = MysteriousOldManNPC(), type = "sexam"),
FREAKY_FORESTER(npc = FreakyForesterNPC(), skillIds = intArrayOf(Skills.WOODCUTTING)),
// PILLORY(npc = PilloryNPC(), skillIds = intArrayOf(Skills.THIEVING)),
PILLORY(npc = PilloryNPC(), skillIds = intArrayOf(Skills.THIEVING)),
TREE_SPIRIT(npc = TreeSpiritRENPC(), skillIds = intArrayOf(Skills.WOODCUTTING)),
QUIZ_MASTER(npc = QuizMasterNPC()),
RIVER_TROLL(RiverTrollRENPC(), skillIds = intArrayOf(Skills.FISHING)),
// ROCK_GOLEM(RockGolemRENPC(), skillIds = intArrayOf(Skills.MINING)),
SHADE(ShadeRENPC(), skillIds = intArrayOf(Skills.PRAYER));
// ZOMBIE(ZombieRENPC(), skillIds = intArrayOf(Skills.PRAYER));
ROCK_GOLEM(RockGolemRENPC(), skillIds = intArrayOf(Skills.MINING)),
SHADE(ShadeRENPC(), skillIds = intArrayOf(Skills.PRAYER)),
ZOMBIE(ZombieRENPC(), skillIds = intArrayOf(Skills.PRAYER));
companion object {
@JvmField

View File

@ -90,7 +90,7 @@ public class PortalChamberPlugin extends OptionHandler {
for (Locations l : Locations.values()) {
if (l.name().contains(identifier)) {
if (l == Locations.ARDOUGNE){
if (!player.getAttribute(ARDOUGNE_TELE_ATTRIBUTE, false)) {
if (player.getAttribute(ARDOUGNE_TELE_ATTRIBUTE, false)){
player.sendMessage("You do not have the requirements to direct the portal there");
return;
}
@ -138,6 +138,12 @@ public class PortalChamberPlugin extends OptionHandler {
case "enter":
String objectName = object.getName();
for (Locations l : Locations.values()) {
if (l == Locations.ARDOUGNE){
if (player.getAttribute(ARDOUGNE_TELE_ATTRIBUTE, false)){
player.sendMessage("You do not have the requirements to enter this portal.");
return false;
}
}
if (objectName.toLowerCase().contains(l.name().toLowerCase())) {
player.teleport(l.location);
if (player.getHouseManager().isInHouse(player) && node.getId() == 13635) {

View File

@ -44,30 +44,29 @@ public final class CookingRecipePlugin extends UseWithHandler {
@Override
public boolean handle(NodeUsageEvent event) {
Recipe recipe = null;
Item part = null;
// TODO: Transitioning to a Listener would save an O(n) pass through the recipes list on every use-with
recipeloop:
for (Recipe temp : Recipe.RECIPES) {
if (temp.isSingular()) {
if (temp.getBase().getId() == event.getUsedItem().getId() || temp.getBase().getId() == event.getBaseItem().getId()) {
for (Item ingredient : temp.getIngredients()) {
if (ingredient.getId() == event.getBaseItem().getId() || ingredient.getId() == event.getUsedItem().getId()) {
recipe = temp;
break recipeloop;
break;
}
}
}
} else {
Item part = null;
Item ingredient = null;
for (int k = 0; k < temp.getParts().length; k++) {
for (int i = 0; i < temp.getIngredients().length; i++) {
Item tempPart = temp.getParts()[k];
Item ingredient = temp.getIngredients()[i];
if (tempPart.getId() == event.getUsedItem().getId() && ingredient.getId() == event.getBaseItem().getId() || tempPart.getId() == event.getBaseItem().getId() && ingredient.getId() == event.getUsedItem().getId()) {
part = temp.getParts()[k];
ingredient = temp.getIngredients()[i];
if (part.getId() == event.getUsedItem().getId() && ingredient.getId() == event.getBaseItem().getId() || part.getId() == event.getBaseItem().getId() && ingredient.getId() == event.getUsedItem().getId()) {
if (k == i) {// represents that this ingredient can
// mix with the other.
recipe = temp;
part = tempPart;
break recipeloop;
break;
}
}
}
@ -77,7 +76,6 @@ public final class CookingRecipePlugin extends UseWithHandler {
if (recipe != null) {
final Player player = event.getPlayer();
final Recipe recipe_ = recipe;
final Item part_ = part;
SkillDialogueHandler handler = new SkillDialogueHandler(player, SkillDialogue.ONE_OPTION, recipe.getProduct()) {
@Override
public void create(final int amount, int index) {
@ -93,7 +91,7 @@ public final class CookingRecipePlugin extends UseWithHandler {
@Override
public int getAll(int index) {
return player.getInventory().getAmount(part_ != null ? part_ : recipe_.getBase());
return player.getInventory().getAmount(recipe_.getBase());
}
};
if (player.getInventory().getAmount(recipe.getBase()) == 1) {

View File

@ -119,9 +119,6 @@ public abstract class Recipe {
}
}
if (index != -1) {
if (!player.getInventory().containItems(event.getBaseItem().getId(), event.getUsedItem().getId())) {
return;
}
if (player.getInventory().remove(event.getBaseItem()) && player.getInventory().remove(event.getUsedItem())) {
player.getInventory().add(getParts()[index + 1]);
String message = getMixMessage(event);

View File

@ -128,12 +128,7 @@ public final class FamiliarManager {
}
if (currentPet != -1) {
int last = this.petDetails.get(currentPet).size() - 1;
PetDetails details;
if (last < 0) { //missing data in save due to historical bug (see GL !2077)
details = new PetDetails(0);
} else {
details = this.petDetails.get(currentPet).get(last);
}
PetDetails details = this.petDetails.get(currentPet).get(last);
Pets pets = Pets.forId(currentPet);
familiar = new Pet(player, details, currentPet, pets.getNpcId(currentPet));
} else if (familiarData.containsKey("familiar")) {
@ -419,9 +414,6 @@ public final class FamiliarManager {
* @param details The new pet details.
*/
public void addDetails(int itemId, PetDetails details) {
if (petDetails.get(itemId) == null) {
petDetails.put(itemId, new ArrayList<>());
}
petDetails.get(itemId).add(details);
}

View File

@ -129,8 +129,8 @@ public final class Pet extends Familiar {
if (pet.isKitten(itemId)) {
owner.incrementAttribute("/save:stats_manager:cats_raised");
}
owner.getFamiliarManager().addDetails(newItemId, details);
owner.getFamiliarManager().removeDetails(getItemId());
owner.getFamiliarManager().addDetails(newItemId, details);
owner.getFamiliarManager().morphPet(new Item(newItemId), false, location, details.getHunger(), 0);
owner.getPacketDispatch().sendMessage("<col=ff0000>Your pet has grown larger.</col>");
}

View File

@ -80,7 +80,7 @@ public final class PCLanderZone extends MapZone {
for (PestControlActivityPlugin a : activities) {
if (a.getWaitingPlayers().remove(e)) {
if (logout) {
e.setLocation(a.getLeaveLocation());
e.getProperties().setTeleportLocation(a.getLeaveLocation());
}
break;
}

View File

@ -109,9 +109,15 @@ class HaroldDialogueFile : DialogueFile() {
21 -> playerl(FacialExpression.ASKING, "What?").also { stage++ }
22 -> npcl(FacialExpression.FRIENDLY, "I really fancy one of those Blurberry Specials. I never get over to the Gnome Stronghold so I haven't had one for ages!").also { stage++ }
23 -> {
if (removeItem(player!!, Items.BLURBERRY_SPECIAL_2064) || removeItem(player!!, Items.PREMADE_BLURB_SP_2028)) {
if (removeItem(player!!, Items.BLURBERRY_SPECIAL_2064)) {
sendMessage(player!!, "You give Harold a Blurberry Special.")
sendItemDialogue(player!!, Items.BLURBERRY_SPECIAL_2064, "You give Harold a Blurberry Special.").also { stage++ }
} else if (removeItem(player!!, Items.BLURBERRY_SPECIAL_9520)) { // This should not be here since 9520 is used by the gnome restaurant minigame.
sendMessage(player!!, "You give Harold a Blurberry Special.")
sendItemDialogue(player!!, Items.BLURBERRY_SPECIAL_2064, "You give Harold a Blurberry Special.").also { stage++ }
} else if (removeItem(player!!, Items.PREMADE_BLURB_SP_2028)) {
sendMessage(player!!, "You give Harold a Blurberry Special.")
sendItemDialogue(player!!, Items.PREMADE_BLURB_SP_2028, "You give Harold a Blurberry Special.").also { stage++ }
} else {
player(FacialExpression.FRIENDLY, "I'll go and get you one.").also { stage = END_DIALOGUE }
}

View File

@ -4,7 +4,6 @@ import content.data.Quests
import core.api.*
import org.rs09.consts.Items
import core.game.dialogue.DialogueFile
import core.game.dialogue.FacialExpression
import core.tools.END_DIALOGUE
class CommanderMontaiDialogue : DialogueFile(){
@ -13,19 +12,19 @@ class CommanderMontaiDialogue : DialogueFile(){
if (questStage == 10) {
when(stage) {
0 -> playerl("Hello.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Hello traveller, are you here to help or just to watch?").also { stage++ }
1 -> npcl("Hello traveller, are you here to help or just to watch?").also { stage++ }
2 -> playerl("I've been sent by King Bolren to retrieve the orb of protection.").also { stage++ }
3 -> npcl(FacialExpression.OLD_NORMAL, "Excellent we need all the help we can get.").also { stage++ }
4 -> npcl(FacialExpression.OLD_NORMAL, "I'm Commander Montai. The orb is in the Khazard stronghold to the north, but until we weaken their defences we can't get close.").also { stage++ }
3 -> npcl("Excellent we need all the help we can get.").also { stage++ }
4 -> npcl("I'm Commander Montai. The orb is in the Khazard stronghold to the north, but until we weaken their defences we can't get close.").also { stage++ }
5 -> playerl("What can I do?").also { stage++ }
6 -> npcl(FacialExpression.OLD_NORMAL, "Firstly we need to strengthen our own defences. We desperately need wood to make more battlements, once the battlements are gone it's all over. Six loads of normal logs should do it.").also { stage++ }
6 -> npcl("Firstly we need to strengthen our own defences. We desperately need wood to make more battlements, once the battlements are gone it's all over. Six loads of normal logs should do it.").also { stage++ }
7 -> options("Ok, I'll gather some wood.", "Sorry, I no longer want to be involved.").also { stage++ }
8 -> when (buttonID) {
1 -> playerl("Ok, I'll gather some wood.").also { stage = 10 }
2 -> playerl("Sorry, I no longer want to be involved.").also { stage = 9 }
}
9 -> npcl(FacialExpression.OLD_NORMAL, "That's a shame, we could have done with your help.").also { stage = END_DIALOGUE }
10 -> npcl(FacialExpression.OLD_NORMAL, "Please be as quick as you can, I don't know how much longer we can hold out.").also {
9 -> npcl("That's a shame, we could have done with your help.").also { stage = END_DIALOGUE }
10 -> npcl("Please be as quick as you can, I don't know how much longer we can hold out.").also {
setQuestStage(player!!, Quests.TREE_GNOME_VILLAGE, 20)
stage = END_DIALOGUE
}
@ -34,43 +33,43 @@ class CommanderMontaiDialogue : DialogueFile(){
if(inInventory(player!!, Items.LOGS_1511,6)){
when(stage) {
0 -> playerl("Hello.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Hello again, we're still desperate for wood soldier.").also { stage++ }
1 -> npcl("Hello again, we're still desperate for wood soldier.").also { stage++ }
2 -> playerl("I have some here. (You give six loads of logs to the commander.)").also{ stage++ }
3 -> {
// Remove the 6 normal logs
for(i in 1..6) { removeItem(player!!,Items.LOGS_1511) }
setQuestStage(player!!, Quests.TREE_GNOME_VILLAGE, 25)
npcl(FacialExpression.OLD_NORMAL, "That's excellent, now we can make more defensive battlements. Give me a moment to organize the troops and then come speak to me. I'll inform you of our next phase of attack.")
npcl("That's excellent, now we can make more defensive battlements. Give me a moment to organize the troops and then come speak to me. I'll inform you of our next phase of attack.")
stage = END_DIALOGUE
}
}
} else {
when(stage) {
0 -> playerl("Hello.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Hello again, we're still desperate for wood soldier. We need six loads of normal logs.").also { stage++ }
1 -> npcl("Hello again, we're still desperate for wood soldier. We need six loads of normal logs.").also { stage++ }
2 -> playerl("I'll see what I can do.").also { stage++ }
3 -> npcl(FacialExpression.OLD_NORMAL, "Thank you.").also { stage = END_DIALOGUE }
3 -> npcl("Thank you.").also { stage = END_DIALOGUE }
}
}
} else if (questStage == 25) {
when(stage) {
0 -> playerl("How are you doing Montai?").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "We're hanging in there soldier. For the next phase of our attack we need to breach their stronghold.").also { stage++ }
2 -> npcl(FacialExpression.OLD_NORMAL, "The ballista can break through the stronghold wall, and then we can advance and seize back the orb.").also { stage++ }
1 -> npcl("We're hanging in there soldier. For the next phase of our attack we need to breach their stronghold.").also { stage++ }
2 -> npcl("The ballista can break through the stronghold wall, and then we can advance and seize back the orb.").also { stage++ }
3 -> playerl("So what's the problem?").also { stage++ }
4 -> npcl(FacialExpression.OLD_NORMAL, "From this distance we can't get an accurate enough shot. We need the correct coordinates of the stronghold for a direct hit. I've sent out three tracker gnomes to gather them.").also { stage++ }
4 -> npcl("From this distance we can't get an accurate enough shot. We need the correct coordinates of the stronghold for a direct hit. I've sent out three tracker gnomes to gather them.").also { stage++ }
5 -> playerl("Have they returned?").also { stage++ }
6 -> npcl(FacialExpression.OLD_NORMAL, "I'm afraid not, and we're running out of time. I need you to go into the heart of the battlefield, find the trackers, and bring back the coordinates.").also { stage++ }
7 -> npcl(FacialExpression.OLD_NORMAL, "Do you think you can do it?").also { stage++ }
6 -> npcl("I'm afraid not, and we're running out of time. I need you to go into the heart of the battlefield, find the trackers, and bring back the coordinates.").also { stage++ }
7 -> npcl("Do you think you can do it?").also { stage++ }
8 -> options("No, I've had enough of your battle.", "I'll try my best.").also { stage++ }
9 -> when(buttonID) {
1 -> playerl("No, I've had enough of your battle.").also { stage = 10 }
2 -> playerl("I'll try my best.").also { stage = 11 }
}
10 -> npcl(FacialExpression.OLD_NORMAL, "I understand, this isn't your fight.").also { stage = END_DIALOGUE }
11 -> npcl(FacialExpression.OLD_NORMAL, "Thank you, you're braver than most.").also { stage++ }
12 -> npcl(FacialExpression.OLD_NORMAL, "I don't know how long I will be able to hold out. Once you have the coordinates come back and fire the ballista right into those monsters.").also { stage++ }
13 -> npcl(FacialExpression.OLD_NORMAL, "If you can retrieve the orb and bring safety back to my people, none of the blood spilled on this field will be in vain.").also {
10 -> npcl("I understand, this isn't your fight.").also { stage = END_DIALOGUE }
11 -> npcl("Thank you, you're braver than most.").also { stage++ }
12 -> npcl("I don't know how long I will be able to hold out. Once you have the coordinates come back and fire the ballista right into those monsters.").also { stage++ }
13 -> npcl("If you can retrieve the orb and bring safety back to my people, none of the blood spilled on this field will be in vain.").also {
setQuestStage(player!!, Quests.TREE_GNOME_VILLAGE, 30)
stage = END_DIALOGUE
}
@ -78,29 +77,29 @@ class CommanderMontaiDialogue : DialogueFile(){
} else if (questStage == 30) {
when(stage) {
0 -> playerl("Hello.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Hello warrior. We need the coordinates for a direct hit from the ballista.").also { stage++ }
2 -> npcl(FacialExpression.OLD_NORMAL, "Once you have a direct hit you will be able to enter the stronghold and retrieve the orb.").also { stage = END_DIALOGUE }
1 -> npcl("Hello warrior. We need the coordinates for a direct hit from the ballista.").also { stage++ }
2 -> npcl("Once you have a direct hit you will be able to enter the stronghold and retrieve the orb.").also { stage = END_DIALOGUE }
}
} else if (questStage == 31) {
if(inInventory(player!!,Items.ORB_OF_PROTECTION_587)){
when(stage) {
0 -> playerl("I have the orb of protection.").also { stage++ }
1 -> npcl(FacialExpression.OLD_HAPPY, "Incredible, for a human you really are something.").also { stage++ }
1 -> npcl("Incredible, for a human you really are something.").also { stage++ }
2 -> playerl("Thanks... I think!").also { stage++ }
3 -> npcl(FacialExpression.OLD_NORMAL, "I'll stay here with my troops and try and hold Khazard's men back. You return the orb to the gnome village. Go as quick as you can, the village is still unprotected.").also { stage = END_DIALOGUE }
3 -> npcl("I'll stay here with my troops and try and hold Khazard's men back. You return the orb to the gnome village. Go as quick as you can, the village is still unprotected.").also { stage = END_DIALOGUE }
}
} else {
when(stage) {
0 -> playerl("I've breached the stronghold.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "I saw, that was a beautiful sight. The Khazard troops didn't know what hit them.").also { stage++ }
2 -> npcl(FacialExpression.OLD_NORMAL, "Now is the time to retrieve the orb. It's all in your hands. I'll be praying for you.").also { stage = END_DIALOGUE }
1 -> npcl("I saw, that was a beautiful sight. The Khazard troops didn't know what hit them.").also { stage++ }
2 -> npcl("Now is the time to retrieve the orb. It's all in your hands. I'll be praying for you.").also { stage = END_DIALOGUE }
}
}
} else if (questStage != 0){
when(stage) {
0 -> playerl("Hello Montai, how are you?").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "I'm ok, this battle is going to take longer to win than I expected. The Khazard troops won't give up even without the orb.").also { stage++ }
1 -> npcl("I'm ok, this battle is going to take longer to win than I expected. The Khazard troops won't give up even without the orb.").also { stage++ }
2 -> playerl("Hang in there.").also { stage = END_DIALOGUE }
}
}

View File

@ -11,7 +11,6 @@ import org.rs09.consts.Items
import core.game.dialogue.DialogueFile
import content.region.kandarin.quest.tree.TreeGnomeVillage.Companion.mazeEntrance
import content.region.kandarin.quest.tree.TreeGnomeVillage.Companion.mazeVillage
import core.game.dialogue.FacialExpression
import core.game.world.GameWorld.Pulser
import core.tools.END_DIALOGUE
@ -46,30 +45,30 @@ class ElkoyDialogue : DialogueFile(){
inInventory(player!!, Items.ORBS_OF_PROTECTION_588) && followLocation == "exit" -> {
when(stage) {
0 -> playerl("Hello Elkoy. I have the orb.").also { stage++ }
1 -> npcl(FacialExpression.OLD_HAPPY, "Take it to King Bolren, I'm sure he'll be pleased to see you.").also { stage++ }
1 -> npcl("Take it to King Bolren, I'm sure he'll be pleased to see you.").also { stage++ }
2 -> options("Alright, I'll do that.", "Can you guide me out of the maze now?").also { stage++ }
3 -> when(buttonID) {
1 -> playerl("Alright, I'll do that.").also { stage = END_DIALOGUE }
2 -> playerl("Can you guide me out of the maze now?").also { stage = 4 }
}
4 -> npcl(FacialExpression.OLD_NORMAL, "If you like, but please take the orb to King Bolren soon.").also { stage++ }
4 -> npcl("If you like, but please take the orb to King Bolren soon.").also { stage++ }
5 -> {
travelCutscene(player!!, mazeEntrance)
stage++
}
6 -> npcl(FacialExpression.OLD_NORMAL, "Here we are. Please don't lose the orb!").also { stage = END_DIALOGUE }
6 -> npcl("Here we are. Please don't lose the orb!").also { stage = END_DIALOGUE }
}
}
inInventory(player!!, Items.ORB_OF_PROTECTION_587) -> {
when(stage) {
0 -> playerl("Hello Elkoy.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "You're back! And the orb?").also { stage++ }
1 -> npcl("You're back! And the orb?").also { stage++ }
2 -> playerl("I have it here.").also { stage++ }
3 -> {
if(locY > 3161){
npcl(FacialExpression.OLD_NORMAL, "You're our saviour. Please return it to the village and we are all saved. Would you like me to show you the way to the village?").also { stage++ }
npcl("You're our saviour. Please return it to the village and we are all saved. Would you like me to show you the way to the village?").also { stage++ }
} else {
npcl(FacialExpression.OLD_NORMAL, "Take the orb to King Bolren, I'm sure he'll be pleased to see you.").also { stage = END_DIALOGUE }
npcl("Take the orb to King Bolren, I'm sure he'll be pleased to see you.").also { stage = END_DIALOGUE }
}
}
4 -> options("Yes please.", "No thanks Elkoy.").also { stage++ }
@ -77,24 +76,24 @@ class ElkoyDialogue : DialogueFile(){
1 -> playerl("Yes please.").also { stage = 7 }
2 -> playerl("No thanks Elkoy.").also { stage = 6 }
}
6 -> npcl(FacialExpression.OLD_NORMAL, "Ok then, take care.").also { stage = END_DIALOGUE }
6 -> npcl("Ok then, take care.").also { stage = END_DIALOGUE }
7 -> travelCutscene(player!!, mazeVillage).also { stage++ }
8 -> npcl(FacialExpression.OLD_NORMAL, "Here we are. Take the orb to King Bolren, I'm sure he'll be pleased to see you.").also { stage = END_DIALOGUE }
8 -> npcl("Here we are. Take the orb to King Bolren, I'm sure he'll be pleased to see you.").also { stage = END_DIALOGUE }
}
}
inInventory(player!!, Items.ORBS_OF_PROTECTION_588) || questStage == 100 -> {
when(stage) {
0 -> playerl("Hello Elkoy.").also { stage++ }
1 -> npcl(FacialExpression.OLD_HAPPY, "You truly are a hero.").also { stage++ }
1 -> npcl("You truly are a hero.").also { stage++ }
2 -> playerl("Thanks.").also { stage++ }
3 -> npcl(FacialExpression.OLD_NORMAL, "You saved us by defeating the warlord. I'm humbled and wish you well.").also { stage++ }
4 -> npcl(FacialExpression.OLD_NORMAL, "Would you like me to show you the way to the ${followLocation}?").also { stage++ }
3 -> npcl("You saved us by defeating the warlord. I'm humbled and wish you well.").also { stage++ }
4 -> npcl("Would you like me to show you the way to the ${followLocation}?").also { stage++ }
5 -> options("Yes please.", "No thanks Elkoy.").also { stage++ }
6 -> when(buttonID) {
1 -> playerl("Yes please.").also { stage = 8 }
2 -> playerl("No thanks Elkoy.").also { stage = 7 }
}
7 -> npcl(FacialExpression.OLD_NORMAL, "Ok then, take care.").also { stage = END_DIALOGUE }
7 -> npcl("Ok then, take care.").also { stage = END_DIALOGUE }
8 -> {
if(followLocation == "village") {
travelCutscene(player!!, mazeVillage)
@ -105,33 +104,33 @@ class ElkoyDialogue : DialogueFile(){
stage++
}
}
9 -> npcl(FacialExpression.OLD_NORMAL, "Here we are. Have a safe journey.").also { stage = END_DIALOGUE }
10 -> npcl(FacialExpression.OLD_NORMAL, "Here we are. Feel free to have a look around.").also { stage = END_DIALOGUE }
9 -> npcl("Here we are. Have a safe journey.").also { stage = END_DIALOGUE }
10 -> npcl("Here we are. Feel free to have a look around.").also { stage = END_DIALOGUE }
}
}
questStage == 0 -> {
when(stage) {
0 -> playerl("Hello there.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Hello, welcome to our maze. I'm Elkoy the tree gnome.").also { stage++ }
1 -> npcl("Hello, welcome to our maze. I'm Elkoy the tree gnome.").also { stage++ }
2 -> playerl("I haven't heard of your sort.").also { stage++ }
3 -> npcl(FacialExpression.OLD_SAD, "There's not many of us left. Once you could find tree gnomes anywhere in the world, now we hide in small groups to avoid capture.").also { stage++ }
3 -> npcl("There's not many of us left. Once you could find tree gnomes anywhere in the world, now we hide in small groups to avoid capture.").also { stage++ }
4 -> playerl("Capture from whom?").also { stage++ }
5 -> npcl(FacialExpression.OLD_NORMAL, "Tree gnomes have been hunted for so called 'fun' since as long as I can remember.").also { stage++ }
6 -> npcl(FacialExpression.OLD_NORMAL, "Our main threat nowadays are General Khazard's troops. They know no mercy, but are also very dense. They'll never find their way through our maze.").also { stage++ }
7 -> npcl(FacialExpression.OLD_NORMAL, "Have fun.").also { stage = END_DIALOGUE }
5 -> npcl("Tree gnomes have been hunted for so called 'fun' since as long as I can remember.").also { stage++ }
6 -> npcl("Our main threat nowadays are General Khazard's troops. They know no mercy, but are also very dense. They'll never find their way through our maze.").also { stage++ }
7 -> npcl("Have fun.").also { stage = END_DIALOGUE }
}
}
questStage in 1..39 -> {
when (stage) {
0 -> npcl(FacialExpression.OLD_DISTRESSED, "Oh my! The orb, they have the orb. We're doomed.").also { stage++ }
0 -> npcl("Oh my! The orb, they have the orb. We're doomed.").also { stage++ }
1 -> playerl("Perhaps I'll be able to get it back for you.").also { stage++ }
2 -> npcl(FacialExpression.OLD_NORMAL, "Would you like me to show you the way to the ${followLocation}?").also { stage++ }
2 -> npcl("Would you like me to show you the way to the ${followLocation}?").also { stage++ }
3 -> options("Yes please.", "No thanks Elkoy.").also { stage++ }
4 -> when (buttonID) {
1 -> playerl("Yes please.").also { stage = 6 }
2 -> playerl("No thanks Elkoy.").also { stage = 5 }
}
5 -> npcl(FacialExpression.OLD_NORMAL, "Ok then, take care.").also { stage = END_DIALOGUE }
5 -> npcl("Ok then, take care.").also { stage = END_DIALOGUE }
6 -> {
if(followLocation == "village")
travelCutscene(player!!, mazeVillage)
@ -139,20 +138,20 @@ class ElkoyDialogue : DialogueFile(){
travelCutscene(player!!, mazeEntrance)
stage++
}
7 -> npcl(FacialExpression.OLD_NORMAL, "Here we are. I hope you get the orb back soon.").also { stage = END_DIALOGUE }
7 -> npcl("Here we are. I hope you get the orb back soon.").also { stage = END_DIALOGUE }
}
}
questStage == 40 -> {
when(stage) {
0 -> playerl("Hello Elkoy.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Did you hear? Khazard's men have pillaged the village! They slaughtered many, and took the other orbs in an attempt to lead us out of the maze. When will the misery end?").also { stage++ }
2 -> npcl(FacialExpression.OLD_NORMAL, "Would you like me to show you the way to the ${followLocation}?").also { stage++ }
1 -> npcl("Did you hear? Khazard's men have pillaged the village! They slaughtered many, and took the other orbs in an attempt to lead us out of the maze. When will the misery end?").also { stage++ }
2 -> npcl("Would you like me to show you the way to the ${followLocation}?").also { stage++ }
3 -> options("Yes please.", "No thanks Elkoy.").also { stage++ }
4 -> when(buttonID) {
1 -> playerl("Yes please.").also { stage = 6 }
2 -> playerl("No thanks Elkoy.").also { stage = 5 }
}
5 -> npcl(FacialExpression.OLD_NORMAL, "Ok then, take care.").also { stage = END_DIALOGUE }
5 -> npcl("Ok then, take care.").also { stage = END_DIALOGUE }
6 -> {
if(followLocation == "village") {
travelCutscene(player!!, mazeVillage)
@ -162,8 +161,8 @@ class ElkoyDialogue : DialogueFile(){
stage++
}
}
7 -> npcl(FacialExpression.OLD_NORMAL, "Please try to get our orbs back for us, otherwise the village is doomed!").also { stage = END_DIALOGUE }
8 -> npcl(FacialExpression.OLD_NORMAL, "Here we are. Despite what has happened here, I hope you feel welcome.").also { stage = END_DIALOGUE }
7 -> npcl("Please try to get our orbs back for us, otherwise the village is doomed!").also { stage = END_DIALOGUE }
8 -> npcl("Here we are. Despite what has happened here, I hope you feel welcome.").also { stage = END_DIALOGUE }
}
}
}

View File

@ -10,7 +10,6 @@ import org.rs09.consts.Items
import org.rs09.consts.NPCs
import core.game.dialogue.DialogueFile
import content.region.kandarin.quest.tree.TreeGnomeVillage.Companion.mazeEntrance
import core.game.dialogue.FacialExpression
import core.game.world.GameWorld
import core.tools.END_DIALOGUE
@ -21,37 +20,37 @@ class KingBolrenDialogue : DialogueFile() {
questStage < 10 -> {
when (stage) {
0 -> playerl("Hello.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Well hello stranger. My name's Bolren, I'm the king of the tree gnomes.").also { stage++ }
2 -> npcl(FacialExpression.OLD_NORMAL, "I'm surprised you made it in, maybe I made the maze too easy.").also { stage++ }
1 -> npcl("Well hello stranger. My name's Bolren, I'm the king of the tree gnomes.").also { stage++ }
2 -> npcl("I'm surprised you made it in, maybe I made the maze too easy.").also { stage++ }
3 -> playerl("Maybe.").also { stage++ }
4 -> npcl(FacialExpression.OLD_NORMAL, "I'm afraid I have more serious concerns at the moment. Very serious.").also { stage++ }
4 -> npcl("I'm afraid I have more serious concerns at the moment. Very serious.").also { stage++ }
5 -> options("I'll leave you to it then.", "Can I help at all?").also { stage++ }
6 -> when (buttonID) {
1 -> playerl("I'll leave you to it then.").also { stage = 7 }
2 -> playerl("Can I help at all?").also { stage = 8 }
}
7 -> npcl(FacialExpression.OLD_NORMAL, "Ok, take care.").also { stage = END_DIALOGUE }
8 -> npcl(FacialExpression.OLD_NORMAL, "I'm glad you asked.").also { stage++ }
9 -> npcl(FacialExpression.OLD_SAD, "The truth is my people are in grave danger. We have always been protected by the Spirit Tree. No creature of dark can harm us while its three orbs are in place.").also { stage++ }
10 -> npcl(FacialExpression.OLD_SAD, "We are not a violent race, but we fight when we must. Many gnomes have fallen battling the dark forces of Khazard to the North.").also { stage++ }
11 -> npcl(FacialExpression.OLD_SAD, "We became desperate, so we took one orb of protection to the battlefield. It was a foolish move.").also { stage++ }
12 -> npcl(FacialExpression.OLD_NORMAL, "Khazard troops seized the orb. Now we are completely defenceless.").also { stage++ }
7 -> npcl("Ok, take care.").also { stage = END_DIALOGUE }
8 -> npcl("I'm glad you asked.").also { stage++ }
9 -> npcl("The truth is my people are in grave danger. We have always been protected by the Spirit Tree. No creature of dark can harm us while its three orbs are in place.").also { stage++ }
10 -> npcl("We are not a violent race, but we fight when we must. Many gnomes have fallen battling the dark forces of Khazard to the North.").also { stage++ }
11 -> npcl("We became desperate, so we took one orb of protection to the battlefield. It was a foolish move.").also { stage++ }
12 -> npcl("Khazard troops seized the orb. Now we are completely defenceless.").also { stage++ }
13 -> playerl("How can I help?").also { stage++ }
14 -> npcl(FacialExpression.OLD_NORMAL,"You would be a huge benefit on the battlefield. If you would go there and try to retrieve the orb, my people and I will be forever grateful.").also { stage++ }
14 -> npcl("You would be a huge benefit on the battlefield. If you would go there and try to retrieve the orb, my people and I will be forever grateful.").also { stage++ }
15 -> options("I would be glad to help.", "I'm sorry but I won't be involved.").also { stage++ }
16 -> when (buttonID) {
1 -> playerl("I would be glad to help.").also { stage = 18 }
2 -> playerl("I'm sorry but I won't be involved.").also { stage = 17 }
}
17 -> npcl(FacialExpression.OLD_NORMAL, "Ok then, travel safe.").also { stage = END_DIALOGUE }
18 -> npcl(FacialExpression.OLD_NORMAL, "Thank you. The battlefield is to the north of the maze. Commander Montai will inform you of their current situation.").also { stage++ }
19 -> npcl(FacialExpression.OLD_NORMAL, "That is if he's still alive.").also { stage++ }
20 -> npcl(FacialExpression.OLD_NORMAL, "My assistant shall guide you out. Good luck friend, try your best to return the orb.").also {
17 -> npcl("Ok then, travel safe.").also { stage = END_DIALOGUE }
18 -> npcl("Thank you. The battlefield is to the north of the maze. Commander Montai will inform you of their current situation.").also { stage++ }
19 -> npcl("That is if he's still alive.").also { stage++ }
20 -> npcl("My assistant shall guide you out. Good luck friend, try your best to return the orb.").also {
stage++
}
21 -> {
teleport(player!!, mazeEntrance)
sendNPCDialogue(player!!, NPCs.ELKOY_5179, "We're out of the maze now. Please hurry, we must have the orb if we are to survive.", FacialExpression.OLD_NORMAL)
sendNPCDialogue(player!!, NPCs.ELKOY_5179, "We're out of the maze now. Please hurry, we must have the orb if we are to survive.")
setQuestStage(player!!, Quests.TREE_GNOME_VILLAGE, 10)
stage = END_DIALOGUE
}
@ -60,7 +59,7 @@ class KingBolrenDialogue : DialogueFile() {
questStage < 31 -> {
when (stage) {
0 -> playerl("Hello Bolren.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Hello traveller, we must retrieve the orb. It's being held by Khazard troops north of here.").also { stage++ }
1 -> npcl("Hello traveller, we must retrieve the orb. It's being held by Khazard troops north of here.").also { stage++ }
2 -> playerl("Ok, I'll try my best.").also { stage = END_DIALOGUE }
}
}
@ -68,32 +67,32 @@ class KingBolrenDialogue : DialogueFile() {
if(inInventory(player!!,Items.ORB_OF_PROTECTION_587)){
when(stage) {
0 -> playerl("I have the orb.").also { stage++ }
1 -> npcl(FacialExpression.OLD_DISTRESSED, "Oh my... The misery, the horror!").also { stage++ }
1 -> npcl("Oh my... The misery, the horror!").also { stage++ }
2 -> playerl("King Bolren, are you OK?").also { stage++ }
3 -> npcl(FacialExpression.OLD_DISTRESSED, "Thank you traveller, but it's too late. We're all doomed.").also { stage++ }
3 -> npcl("Thank you traveller, but it's too late. We're all doomed.").also { stage++ }
4 -> playerl("What happened?").also { stage++ }
5 -> npcl(FacialExpression.OLD_DISTRESSED, "They came in the night. I don't know how many, but enough.").also { stage++ }
5 -> npcl("They came in the night. I don't know how many, but enough.").also { stage++ }
6 -> playerl("Who?").also { stage++ }
7 -> npcl(FacialExpression.OLD_DISTRESSED, "Khazard troops. They slaughtered anyone who got in their way. Women, children, my wife.").also { stage++ }
7 -> npcl("Khazard troops. They slaughtered anyone who got in their way. Women, children, my wife.").also { stage++ }
8 -> playerl("I'm sorry.").also { stage++ }
9 -> npcl(FacialExpression.OLD_BOWS_HEAD_SAD, "They took the other orbs, now we are defenceless.").also { stage++ }
9 -> npcl("They took the other orbs, now we are defenceless.").also { stage++ }
10 -> playerl("Where did they take them?").also { stage++ }
11 -> npcl(FacialExpression.OLD_NORMAL, "They headed north of the stronghold. A warlord carries the orbs.").also { stage++ }
11 -> npcl("They headed north of the stronghold. A warlord carries the orbs.").also { stage++ }
12 -> options("I will find the warlord and bring back the orbs.", "I'm sorry but I can't help.").also { stage++ }
13 -> when(buttonID) {
1 -> playerl("I will find the warlord and bring back the orbs.").also { stage = 15 }
2 -> playerl("I'm sorry but I can't help.").also { stage = 14 }
}
14 -> npcl(FacialExpression.OLD_NORMAL, "I understand, this isn't your battle.").also { stage = END_DIALOGUE }
15 -> npcl(FacialExpression.OLD_NORMAL, "You are brave, but this task will be tough even for you. I wish you the best of luck. Once again you are our only hope.").also { stage++ }
16 -> npcl(FacialExpression.OLD_NORMAL, "I will safeguard this orb and pray for your safe return. My assistant will guide you out.").also {
14 -> npcl("I understand, this isn't your battle.").also { stage = END_DIALOGUE }
15 -> npcl("You are brave, but this task will be tough even for you. I wish you the best of luck. Once again you are our only hope.").also { stage++ }
16 -> npcl("I will safeguard this orb and pray for your safe return. My assistant will guide you out.").also {
stage++
}
17 -> {
if(removeItem(player!!,Items.ORB_OF_PROTECTION_587)){
teleport(player!!,mazeEntrance)
setQuestStage(player!!, Quests.TREE_GNOME_VILLAGE, 40)
sendNPCDialogue(player!!, NPCs.ELKOY_5179, "Good luck friend.", FacialExpression.OLD_NORMAL)
sendNPCDialogue(player!!, NPCs.ELKOY_5179, "Good luck friend.")
}
stage = END_DIALOGUE
}
@ -101,9 +100,9 @@ class KingBolrenDialogue : DialogueFile() {
} else {
when(stage) {
0 -> playerl("Hello Bolren.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Do you have the orb?").also { stage++ }
1 -> npcl("Do you have the orb?").also { stage++ }
2 -> playerl("No, I'm afraid not.").also { stage++ }
3 -> npcl(FacialExpression.OLD_NORMAL, "Please, we must have the orb if we are to survive.").also { stage = END_DIALOGUE }
3 -> npcl("Please, we must have the orb if we are to survive.").also { stage = END_DIALOGUE }
}
}
}
@ -111,12 +110,12 @@ class KingBolrenDialogue : DialogueFile() {
if(inInventory(player!!,Items.ORBS_OF_PROTECTION_588)){
when(stage) {
0 -> playerl("Bolren, I have returned.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "You made it back! Do you have the orbs?").also { stage++ }
1 -> npcl("You made it back! Do you have the orbs?").also { stage++ }
2 -> playerl("I have them here.").also { stage++ }
3 -> npcl(FacialExpression.OLD_HAPPY, "Hooray, you're amazing. I didn't think it was possible but you've saved us.").also { stage++ }
4 -> npcl(FacialExpression.OLD_NORMAL, "Once the orbs are replaced we will be safe once more. We must begin the ceremony immediately.").also { stage++ }
3 -> npcl("Hooray, you're amazing. I didn't think it was possible but you've saved us.").also { stage++ }
4 -> npcl("Once the orbs are replaced we will be safe once more. We must begin the ceremony immediately.").also { stage++ }
5 -> playerl("What does the ceremony involve?").also { stage++ }
6 -> npcl(FacialExpression.OLD_NORMAL, "The spirit tree has looked over us for centuries. Now we must pay our respects.").also { stage++ }
6 -> npcl("The spirit tree has looked over us for centuries. Now we must pay our respects.").also { stage++ }
7 -> sendDialogue(player!!,"The gnomes begin to chant. Meanwhile, King Bolren holds the orbs of protection out in front of him.").also { stage++ }
8 -> {
// Orbs fly up, gnomes chant, spirit tree animates
@ -167,20 +166,20 @@ class KingBolrenDialogue : DialogueFile() {
} else {
when(stage) {
0 -> playerl("Bolren, I have returned.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "You made it back! Do you have the orbs?").also { stage++ }
1 -> npcl("You made it back! Do you have the orbs?").also { stage++ }
2 -> playerl("No, I'm afraid not.").also { stage++ }
3 -> npcl(FacialExpression.OLD_NORMAL, "Please, we must have the orb if we are to survive.").also { stage = END_DIALOGUE }
3 -> npcl("Please, we must have the orb if we are to survive.").also { stage = END_DIALOGUE }
}
}
}
questStage == 99 -> {
when(stage){
0 -> npcl(FacialExpression.OLD_NORMAL, "Now at last my people are safe once more. We can live in peace again.").also { stage++ }
0 -> npcl("Now at last my people are safe once more. We can live in peace again.").also { stage++ }
1 -> playerl("I'm pleased I could help.").also { stage++ }
2 -> npcl(FacialExpression.OLD_NORMAL, "You are modest brave traveller.").also { stage++ }
3 -> npcl(FacialExpression.OLD_NORMAL, "Please, for your efforts take this amulet. It's made from the same sacred stone as the orbs of protection. It will help keep you safe on your journeys.").also { stage++ }
2 -> npcl("You are modest brave traveller.").also { stage++ }
3 -> npcl("Please, for your efforts take this amulet. It's made from the same sacred stone as the orbs of protection. It will help keep you safe on your journeys.").also { stage++ }
4 -> playerl("Thank you King Bolren.").also { stage++ }
5 -> npcl(FacialExpression.OLD_NORMAL, "The tree has many other powers, some of which I cannot reveal. As a friend of the gnome people, I can now allow you to use the tree's magic to teleport to other trees grown from related seeds.").also {
5 -> npcl("The tree has many other powers, some of which I cannot reveal. As a friend of the gnome people, I can now allow you to use the tree's magic to teleport to other trees grown from related seeds.").also {
finishQuest(player!!, Quests.TREE_GNOME_VILLAGE)
stage = END_DIALOGUE
}
@ -189,9 +188,9 @@ class KingBolrenDialogue : DialogueFile() {
isQuestComplete(player!!, Quests.TREE_GNOME_VILLAGE) -> {
when(stage) {
0 -> playerl("Hello again Bolren.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Well hello, it's good to see you again.").also { stage = if (hasAnItem(player!!, Items.GNOME_AMULET_589).container != null) END_DIALOGUE else 2 }
1 -> npcl("Well hello, it's good to see you again.").also { stage = if (hasAnItem(player!!, Items.GNOME_AMULET_589).container != null) END_DIALOGUE else 2 }
2 -> playerl("I've lost my amulet.").also { stage++ }
3 -> npcl(FacialExpression.OLD_NORMAL, "Oh dear. Here, take another. We are truly indebted to you.").also {
3 -> npcl("Oh dear. Here, take another. We are truly indebted to you.").also {
addItemOrDrop(player!!, Items.GNOME_AMULET_589)
stage = END_DIALOGUE
}

View File

@ -1,18 +1,17 @@
package content.region.kandarin.quest.tree
import core.game.dialogue.DialogueFile
import core.game.dialogue.FacialExpression
import core.tools.END_DIALOGUE
class LieutenantSchepburDialogue : DialogueFile(){
override fun handle(componentID: Int, buttonID: Int) {
when(stage) {
0 -> npcl(FacialExpression.OLD_NORMAL, "Move into position lads! eh? Who are you and what do you want?").also { stage++ }
0 -> npcl("Move into position lads! eh? Who are you and what do you want?").also { stage++ }
1 -> playerl("Who are you then?").also { stage++ }
2 -> npcl(FacialExpression.OLD_NORMAL, "Lieutenant Schepbur, commanding officer of the new Armoured Tortoise Regiment.").also { stage++ }
2 -> npcl("Lieutenant Schepbur, commanding officer of the new Armoured Tortoise Regiment.").also { stage++ }
3 -> playerl("There's only two tortoises here, that's hardly a regiment.").also { stage++ }
4 -> npcl(FacialExpression.OLD_NORMAL, "This is just the beginning! Gnome breeders and trainers are already working to expand the number of units. Soon we'll have hundreds of these beauties, nay thousands! And they will not only carry mages and").also { stage++ }
5 -> npcl(FacialExpression.OLD_NORMAL, "archers but other fiendish weapons of destruction of gnome devising. An army of giant tortoises will march upon this battlefield and rain the fire of our wrath upon all our enemies! Nothing will be able to stop us!").also { stage++ }
4 -> npcl("This is just the beginning! Gnome breeders and trainers are already working to expand the number of units. Soon we'll have hundreds of these beauties, nay thousands! And they will not only carry mages and").also { stage++ }
5 -> npcl("archers but other fiendish weapons of destruction of gnome devising. An army of giant tortoises will march upon this battlefield and rain the fire of our wrath upon all our enemies! Nothing will be able to stop us!").also { stage++ }
6 -> playerl("Oooookayy...... I'll leave you to it then....").also { stage = END_DIALOGUE }
}
}

View File

@ -1,14 +1,13 @@
package content.region.kandarin.quest.tree
import core.game.dialogue.DialogueFile
import core.game.dialogue.FacialExpression
import core.tools.END_DIALOGUE
class LocalGnomeDialogue : DialogueFile() {
override fun handle(componentID: Int, buttonID: Int) {
when (stage) {
0 -> playerl("Hello little man.").also { stage++ }
1 -> npcl(FacialExpression.OLD_LAUGH1, "Little man stronger than big man. Hee hee, lardi dee, lardi da.").also { stage = END_DIALOGUE }
1 -> npcl("Little man stronger than big man. Hee hee, lardi dee, lardi da.").also { stage = END_DIALOGUE }
}
}
}

View File

@ -5,7 +5,6 @@ import core.api.inInventory
import core.api.getQuestStage
import org.rs09.consts.Items
import core.game.dialogue.DialogueFile
import core.game.dialogue.FacialExpression
import core.tools.END_DIALOGUE
class RemsaiDialogue : DialogueFile(){
@ -15,35 +14,35 @@ class RemsaiDialogue : DialogueFile(){
inInventory(player!!,Items.ORBS_OF_PROTECTION_588) -> {
when(stage) {
0 -> playerl("I've returned.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "You're back, well done brave adventurer. Now the orbs are safe we can perform the ritual for the spirit tree. We can live in peace once again.").also { stage = END_DIALOGUE }
1 -> npcl("You're back, well done brave adventurer. Now the orbs are safe we can perform the ritual for the spirit tree. We can live in peace once again.").also { stage = END_DIALOGUE }
}
}
inInventory(player!!, Items.ORB_OF_PROTECTION_587) -> {
when(stage) {
0 -> playerl("Hello Remsai.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Hello, did you find the orb?").also { stage++ }
1 -> npcl("Hello, did you find the orb?").also { stage++ }
2 -> playerl("I have it here.").also { stage++ }
3 -> npcl(FacialExpression.OLD_HAPPY, "You're our saviour.").also { stage = END_DIALOGUE }
3 -> npcl("You're our saviour.").also { stage = END_DIALOGUE }
}
}
questStage < 40 -> {
when(stage) {
0 -> playerl("Hello Remsai.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Hello, did you find the orb?").also { stage++ }
1 -> npcl("Hello, did you find the orb?").also { stage++ }
2 -> playerl("No, I'm afraid not.").also { stage++ }
3 -> npcl(FacialExpression.OLD_NORMAL, "Please, we must have the orb if we are to survive.").also { stage = END_DIALOGUE }
3 -> npcl("Please, we must have the orb if we are to survive.").also { stage = END_DIALOGUE }
}
}
questStage == 40 -> {
when(stage) {
0 -> playerl("Are you ok?").also { stage++ }
1 -> npcl(FacialExpression.OLD_DISTRESSED, "Khazard's men came. Without the orb we were defenceless. They killed many and then took our last hope, the other orbs. Now surely we're all doomed. Without them the spirit tree is useless.").also { stage = END_DIALOGUE }
1 -> npcl("Khazard's men came. Without the orb we were defenceless. They killed many and then took our last hope, the other orbs. Now surely we're all doomed. Without them the spirit tree is useless.").also { stage = END_DIALOGUE }
}
}
questStage > 40 -> {
when(stage) {
0 -> playerl("I've returned.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "You're back, well done brave adventurer. Now the orbs are safe we can perform the ritual for the spirit tree. We can live in peace once again.").also { stage = END_DIALOGUE }
1 -> npcl("You're back, well done brave adventurer. Now the orbs are safe we can perform the ritual for the spirit tree. We can live in peace once again.").also { stage = END_DIALOGUE }
}
}
}

View File

@ -4,7 +4,6 @@ import content.data.Quests
import core.api.*
import org.rs09.consts.Items
import core.game.dialogue.DialogueFile
import core.game.dialogue.FacialExpression
import core.tools.END_DIALOGUE
class TrackerGnomeOneDialogue : DialogueFile(){
@ -14,32 +13,32 @@ class TrackerGnomeOneDialogue : DialogueFile(){
questStage >= 40 -> {
when (stage) {
0 -> playerl("Hello").also { stage++ }
1 -> npcl(FacialExpression.OLD_BOWS_HEAD_SAD, "When will this battle end? I feel like I've been fighting forever.").also { stage = END_DIALOGUE }
1 -> npcl("When will this battle end? I feel like I've been fighting forever.").also { stage = END_DIALOGUE }
}
}
questStage > 30 -> {
if(inInventory(player!!, Items.ORB_OF_PROTECTION_587)){
when(stage) {
0 -> playerl("How are you tracker?").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Now we have the orb I'm much better. They won't stand a chance without it.").also { stage = END_DIALOGUE }
1 -> npcl("Now we have the orb I'm much better. They won't stand a chance without it.").also { stage = END_DIALOGUE }
}
} else {
when(stage) {
0 -> playerl("Hello again.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Well done, you've broken down their defences. This battle must be ours.").also { stage = END_DIALOGUE }
1 -> npcl("Well done, you've broken down their defences. This battle must be ours.").also { stage = END_DIALOGUE }
}
}
}
questStage == 30 -> {
when (stage) {
0 -> playerl("Do you know the coordinates of the Khazard stronghold?").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "I managed to get one, although it wasn't easy.").also { stage++ }
1 -> npcl("I managed to get one, although it wasn't easy.").also { stage++ }
2 -> sendDialogue(player!!, "The gnome tells you the height coordinate.").also {
setAttribute(player!!, "/save:treegnome:tracker1", true)
stage++
}
3 -> playerl("Well done.").also { stage++ }
4 -> npcl(FacialExpression.OLD_NORMAL, "The other two tracker gnomes should have the other coordinates if they're still alive.").also { stage++ }
4 -> npcl("The other two tracker gnomes should have the other coordinates if they're still alive.").also { stage++ }
5 -> playerl("OK, take care.").also { stage = END_DIALOGUE }
}
}

View File

@ -3,7 +3,6 @@ package content.region.kandarin.quest.tree
import content.data.Quests
import core.api.*
import core.game.dialogue.DialogueFile
import core.game.dialogue.FacialExpression
import core.tools.END_DIALOGUE
class TrackerGnomeThreeDialogue : DialogueFile(){
@ -20,31 +19,31 @@ class TrackerGnomeThreeDialogue : DialogueFile(){
questStage == 30 -> {
when(stage) {
0 -> playerl("Are you OK?").also { stage++ }
1 -> npcl(FacialExpression.OLD_LAUGH1, "OK? Who's OK? Not me! Hee hee!").also { stage++ }
1 -> npcl("OK? Who's OK? Not me! Hee hee!").also { stage++ }
2 -> playerl("What's wrong?").also { stage++ }
3 -> npcl(FacialExpression.OLD_LAUGH1, "You can't see me, no one can. Monsters, demons, they're all around me!").also { stage++ }
3 -> npcl("You can't see me, no one can. Monsters, demons, they're all around me!").also { stage++ }
4 -> playerl("What do you mean?").also { stage++ }
5 -> npcl(FacialExpression.OLD_LAUGH1, "They're dancing, all of them, hee hee.").also { stage++ }
5 -> npcl("They're dancing, all of them, hee hee.").also { stage++ }
6 -> sendDialogue(player!!,"He's clearly lost the plot.").also { stage++ }
7 -> playerl("Do you have the coordinate for the Khazard stronghold?").also { stage++ }
8 -> npcl(FacialExpression.OLD_NORMAL, "Who holds the stronghold?").also { stage++ }
8 -> npcl("Who holds the stronghold?").also { stage++ }
9 -> playerl("What?").also { stage++ }
10 -> {
// Generate the x coordinate answer
if(getAttribute(player!!,"treegnome:xcoord",0) == 0){
val answer = (1..4).random()
npcl(FacialExpression.OLD_NORMAL, xcoordMap[answer])
npcl(xcoordMap[answer])
setAttribute(player!!,"/save:treegnome:xcoord",answer)
} else {
npcl(FacialExpression.OLD_NORMAL, xcoordMap[getAttribute(player!!,"treegnome:xcoord",1)])
npcl(xcoordMap[getAttribute(player!!,"treegnome:xcoord",1)])
}
stage++
}
11 -> playerl("You're mad").also { stage++ }
12 -> npcl(FacialExpression.OLD_LAUGH1, "Dance with me, and Khazard's men are beat.").also { stage++ }
12 -> npcl("Dance with me, and Khazard's men are beat.").also { stage++ }
13 -> sendDialogue(player!!,"The toll of war has affected his mind.").also { stage++ }
14 -> playerl("I'll pray for you little man.").also { stage++ }
15 -> npcl(FacialExpression.OLD_LAUGH1, "All day we pray in the hay, hee hee.").also {
15 -> npcl("All day we pray in the hay, hee hee.").also {
setAttribute(player!!, "/save:treegnome:tracker3", true)
stage = END_DIALOGUE
}
@ -53,13 +52,13 @@ class TrackerGnomeThreeDialogue : DialogueFile(){
questStage == 31 -> {
when(stage) {
0 -> playerl("Hello again.").also { stage++ }
1 -> npcl(FacialExpression.OLD_BOWS_HEAD_SAD, "Don't talk to me, you can't see me. No one can, just the demons.").also { stage = END_DIALOGUE }
1 -> npcl("Don't talk to me, you can't see me. No one can, just the demons.").also { stage = END_DIALOGUE }
}
}
questStage > 31 -> {
when(stage) {
0 -> playerl("Hello").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "I feel dizzy, where am I? Oh dear, oh dear I need some rest.").also { stage++ }
1 -> npcl("I feel dizzy, where am I? Oh dear, oh dear I need some rest.").also { stage++ }
2 -> playerl("I think you do.").also { stage = END_DIALOGUE }
}
}

View File

@ -4,7 +4,6 @@ import content.data.Quests
import core.api.*
import org.rs09.consts.Items
import core.game.dialogue.DialogueFile
import core.game.dialogue.FacialExpression
import core.tools.END_DIALOGUE
class TrackerGnomeTwoDialogue : DialogueFile(){
@ -14,36 +13,36 @@ class TrackerGnomeTwoDialogue : DialogueFile(){
questStage == 30 -> {
when (stage) {
0 -> playerl("Are you OK?").also { stage++ }
1 -> npcl(FacialExpression.OLD_DISTRESSED, "They caught me spying on the stronghold. They beat and tortured me.").also { stage++ }
2 -> npcl(FacialExpression.OLD_LAUGH1, "But I didn't crack. I told them nothing. They can't break me!").also { stage++ }
1 -> npcl("They caught me spying on the stronghold. They beat and tortured me.").also { stage++ }
2 -> npcl("But I didn't crack. I told them nothing. They can't break me!").also { stage++ }
3 -> playerl("I'm sorry little man.").also { stage++ }
4 -> npcl(FacialExpression.OLD_LAUGH1, "Don't be. I have the position of the stronghold!").also { stage++ }
4 -> npcl("Don't be. I have the position of the stronghold!").also { stage++ }
5 -> sendDialogue(player!!, "The gnome tells you the y coordinate.").also {
setAttribute(player!!, "/save:treegnome:tracker2", true)
stage++
}
6 -> playerl("Well done.").also { stage++ }
7 -> npcl(FacialExpression.OLD_NORMAL, "Now leave before they find you and all is lost.").also { stage++ }
7 -> npcl("Now leave before they find you and all is lost.").also { stage++ }
8 -> playerl("Hang in there.").also { stage++ }
9 -> npcl(FacialExpression.OLD_NORMAL, "Go!").also { stage = END_DIALOGUE }
9 -> npcl("Go!").also { stage = END_DIALOGUE }
}
}
questStage >= 40 -> {
when(stage) {
0 -> playerl("Hello").also { stage++ }
1 -> npcl(FacialExpression.OLD_DISTRESSED, "When will this battle end? I feel like I've been locked up my whole life.").also { stage = END_DIALOGUE }
1 -> npcl("When will this battle end? I feel like I've been locked up my whole life.").also { stage = END_DIALOGUE }
}
}
questStage > 30 -> {
if(inInventory(player!!,Items.ORB_OF_PROTECTION_587)){
when(stage) {
0 -> playerl("How are you tracker?").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Now we have the orb I'm much better. Soon my comrades will come and free me.").also { stage = END_DIALOGUE }
1 -> npcl("Now we have the orb I'm much better. Soon my comrades will come and free me.").also { stage = END_DIALOGUE }
}
} else {
when(stage) {
0 -> playerl("Hello again.").also { stage++ }
1 -> npcl(FacialExpression.OLD_NORMAL, "Well done, you've broken down their defences. This battle must be ours.").also { stage = END_DIALOGUE }
1 -> npcl("Well done, you've broken down their defences. This battle must be ours.").also { stage = END_DIALOGUE }
}
}
}

View File

@ -18,7 +18,7 @@ class ServerConstants {
var NOAUTH_DEFAULT_ADMIN: Boolean = true
@JvmField
var CURRENT_SAVEFILE_VERSION = 4
var CURRENT_SAVEFILE_VERSION = 3
@JvmField
var DAILY_ACCOUNT_LIMIT = 3

View File

@ -130,8 +130,8 @@ public final class BankContainer extends Container {
});
player.getInterfaceManager().openSingleTab(new Component(763));
super.refresh();
player.getInventory().refresh();
player.getInventory().getListeners().add(listener);
player.getInventory().refresh();
setVarp(player, 1249, lastAmountX);
int settings = new IfaceSettingsBuilder().enableOptions(new IntRange(0, 5)).enableExamine().enableSlotSwitch().build();
player.getPacketDispatch().sendIfaceSettings(settings, 0, 763, 0, 27);

View File

@ -81,22 +81,6 @@ class SaveVersionHooks : LoginListener {
}
}
if (player.version < 4) { //GL !2065
replaceAllItems(player, Items.BLURBERRY_SPECIAL_9520, Items.BLURBERRY_SPECIAL_2064)
replaceAllItems(player, Items.BLURBERRY_SPECIAL_9521, Items.BLURBERRY_SPECIAL_2065)
replaceAllItems(player, Items.LAMP_6796, Items.LAMP_2528)
replaceAllItems(player, Items.RUNE_SHIELDH1_10667, Items.RUNE_SHIELDH1_7336)
replaceAllItems(player, Items.RUNE_SHIELDH2_10670, Items.RUNE_SHIELDH2_7342)
replaceAllItems(player, Items.RUNE_SHIELDH3_10673, Items.RUNE_SHIELDH3_7348)
replaceAllItems(player, Items.RUNE_SHIELDH4_10676, Items.RUNE_SHIELDH4_7354)
replaceAllItems(player, Items.RUNE_SHIELDH5_10679, Items.RUNE_SHIELDH5_7360)
replaceAllItems(player, Items.ADAMANT_SHIELDH1_10666, Items.ADAMANT_SHIELDH1_7334)
replaceAllItems(player, Items.ADAMANT_SHIELDH2_10669, Items.ADAMANT_SHIELDH2_7340)
replaceAllItems(player, Items.ADAMANT_SHIELDH3_10672, Items.ADAMANT_SHIELDH3_7346)
replaceAllItems(player, Items.ADAMANT_SHIELDH4_10675, Items.ADAMANT_SHIELDH4_7352)
replaceAllItems(player, Items.ADAMANT_SHIELDH5_10678, Items.ADAMANT_SHIELDH5_7358)
}
// Finish up
player.version = ServerConstants.CURRENT_SAVEFILE_VERSION
}