Skip to content

Commit

Permalink
fix: various quest fixes (2004Scape#323)
Browse files Browse the repository at this point in the history
* fixes for hetty/imp and the tracker gnome

* couple small fixes for cooks quest

* restless ghost fixes

* don't spawn ghost after quest completion

* change khazard spear troop defend anim

* fix agility dungeon thieving door
  • Loading branch information
Indio3 authored Jan 22, 2024
1 parent d4f6e67 commit 262edbf
Show file tree
Hide file tree
Showing 22 changed files with 480 additions and 591 deletions.
2 changes: 1 addition & 1 deletion data/pack/npc.pack
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@
456=father_aereck
457=restless_ghost
458=father_urhney
459=npc_459
459=priest_skeleton
460=npc_460
461=npc_461
462=npc_462
Expand Down
2 changes: 1 addition & 1 deletion data/pack/seq.pack
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,7 @@
428=human_spear_stab
429=human_spear_crush
430=human_spear_defend
431=seq_431
431=human_khazardspear_defend
432=seq_432
433=seq_433
434=seq_434
Expand Down
2 changes: 1 addition & 1 deletion data/src/scripts/_unpack/all.seq
Original file line number Diff line number Diff line change
Expand Up @@ -4530,7 +4530,7 @@ frame8=anim_1918
frame9=anim_1627
frame10=anim_1340

[seq_431]
[human_khazardspear_defend]
walkmerge=label_1,label_2,label_9,label_11,label_13,label_15,label_17,label_19,label_37,label_39,label_41,label_43,label_45
frame1=anim_1426
frame2=anim_1719
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ if(inv_total(inv, childs_blanket) >= 1) {
~objbox(childs_blanket, "You hand the monk the childs blanket.");
~chatnpc(happy, "Really, that's excellent, well done! Maybe now I will be able to get some rest.");
~chatnpc(neutral, "*yawn*..I'm off to bed! Farewell brave traveller!");
inv_del(inv, childs_blanket, 1);
%drunkmonk_progress = ^drunkmonk_retrieved_blanket;
return;
}
Expand Down
2 changes: 1 addition & 1 deletion data/src/scripts/areas/area_lumbridge/scripts/cook.rs2
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ if(%cook_progress = 0) {
~chatnpc("sad", "Err thank you. It's a pretty ordinary cooks hat really.");
} else if($option = 4) {
~chatplayer("neutral", "Can I use your range?");
~chatnpc("happy", "Go ahead - it's a very good range. It's easier to use than most other ranges.");
~chatnpc("happy", "Go ahead - it's a very good range.|It's easier to use than most other ranges.");
}

}
123 changes: 71 additions & 52 deletions data/src/scripts/areas/area_lumbridge/scripts/father_aereck.rs2
Original file line number Diff line number Diff line change
@@ -1,65 +1,84 @@
[opnpc1,father_aereck]
switch_int(%priest_progress) {

case 0: @father_aereck_default;

case ^priest_not_started: @father_aereck_default;
case ^priest_complete: @father_aereck_default;

case default: @father_aereck_priest_inprogress;

}

[label,father_aereck_default]
~chatnpc("default", "Welcome to the church of holy Saradomin.");
def_int $option = ~p_choice3("Who's Saradomin?", 1, "Nice place you've got here.", 2, "I'm looking for a quest.", 3);
switch_int ($option) {

case 1: {
~chatplayer("default", "Who's Saradomin?");
~chatnpc("default", "Surely you have heard of the God, Saradomin? He who creates the forces of goodness and purity in this world? I cannot believe your ignorance! This isthe God with more followers than any other! At least in these parts! He who along with his brothers Guthix and Zamorak created this world.");
$option = ~p_choice2("Oh that Saradomin.", 1, "Oh sorry I'm not from this world.", 2);
switch_int ($option) {

case 1: {
~chatplayer("default", "Oh that Saradomin.");
~chatnpc("default", "There is only one Saradomin.");
}

case 2: {
~chatplayer("default", "Oh sorry I'm not from this world.");
~chatnpc("default", "That's strange. I thought things nor from this world were all slime and tenticles.");
$option = ~p_choice2("You don't understand. This is a computer game.", 1, "I am - do you like my disguise?", 2);
switch_int ($option) {

case 1: {
~chatplayer("default", "You don't understand. This is a computer game.");
~chatnpc("default", "I beg you pardon?");
~chatplayer("default", "Never mind.");
}

case 2: {
~chatplayer("default", "I am - do you like my disguise?");
~chatnpc("default", "Aargh begone foul creature from antoher dimension.");
~chatplayer("default", "Ok, Ok. It was a joke.");
}

~chatnpc(happy, "Welcome to the church of holy Saradomin.");
switch_int (~p_choice3("Who's Saradomin?", 1, "Nice place you've got here.", 2, "I'm looking for a quest.", 3)) {
case 1:
~chatplayer(quiz, "Who's Saradomin?");
~chatnpc(shock, "Surely you have heard of the god, Saradomin?");
~chatnpc(neutral, "He who creates the forces of goodness and purity in this world? I cannot believe your ignorance!");
~chatnpc(neutral, "This is the God with more followers than any other!.. At least in this part of the world.");
~chatnpc(neutral, "He who created this world along with his brothers Guthix and Zamorak?");
switch_int (~p_choice2("Oh, THAT Saradomin...", 1, "Oh, sorry. I'm not from this world.", 2)) {
case 1:
~chatplayer(neutral, "Oh, THAT Saradomin...");
~chatnpc(confused, "There... is only one Saradomin...");
case 2:
~chatplayer(neutral, "Oh, sorry. I'm not from this world.");
~chatnpc(shock, "...");
~chatnpc(neutral, "That's... strange.");
~chatnpc(neutral, "I thought things not from this world were all slime and tenticles.");
switch_int (~p_choice2("You don't understand. This is a computer game!", 1, "I am - do you like my disguise?", 2)) {
case 1:
~chatplayer(neutral, "You don't understand. This is a computer game!");
~chatnpc(confused, "I... beg your pardon?");
~chatplayer(neutral, "Never mind.");
case 2:
~chatplayer(happy, "I am - do you like my disguise?");
~chatnpc(shock, "Aargh! Begone foul creature from another dimension!");
~chatplayer(happy, "Ok, ok, I was only joking...");
}
}

}
}

case 2: {
~chatplayer("default", "Nice place you've got here.");
~chatnpc("default", "It is, isn't it? It was built 230 years ago.");
}

case 3: {
~chatplayer("default", "I'm looking for a quest.");
case 2:
~chatplayer(happy, "Nice place you've got here.");
~chatnpc(happy, "It is, isn't it?|It was built over 230 years ago.");
case 3:
~chatplayer(happy, "I'm looking for a quest.");
switch_int(%priest_progress) {
case 0: @father_aereck_priest_start;
case ^priest_complete: ~chatnpc("default", "Sorry I only had the one quest.");
case 0:
~chatnpc(happy, "That's lucky, I need someone to do a quest for me.");
%priest_progress = ^priest_started;
~send_quest_progress(quest_journal:priest, %priest_progress, ^priest_complete);
~chatplayer(happy, "Ok, let me help then.");
~chatnpc(happy, "Thank you. The problem is, there is a ghost in the church graveyard: I would like you to get rid of it.");
~chatnpc(happy, "If you need any help, my friend Father Urhney is an expert on ghosts.");
~chatnpc(happy, "I believe he is currently living as a hermit. He has a little shack somewhere in the swamps south of here. I'm sure if you told him that I sent you he'd be willing to help.");
~chatnpc(happy, "My name is father Aereck by the way.|Pleased to meet you.");
~chatplayer(happy, "Likewise.");
~chatnpc(neutral, "Take care travelling through the swamps.|I have heard they can be quite dangerous.");
~chatplayer(happy, "I will, thanks.");
case ^priest_complete: ~chatnpc(happy, "Sorry, I only had the one quest.");
}
}
}

[label,father_aereck_priest_inprogress]
~chatnpc(neutral, "Have you got rid of the ghost yet?");
switch_int (%priest_progress) {
case ^priest_started:
~chatplayer(sad, "I can't find father Urhney at the moment.");
~chatnpc(happy, "Well, to get to the swamp he is in you need to go round the back of the castle. The swamp is on the otherside of the fence to the south.");
~chatnpc(happy, "You'll have to go through the wood to the west to get round the fence. Then you'll have to go right into the eastern depths of the swamp.");
case ^priest_spoken_urhney:
~chatplayer(neutral, "I had a talk with Father Urhney. He has given me this funny amulet to talk to the ghost with.");
~chatnpc(confused, "I always wondered what that amulet was... Well, I hope it's useful. Tell me when you get rid of the ghost!");
case ^priest_spoken_ghost:
~chatplayer(neutral, "I've found out that the ghost's corpse has lost its skull. If I can find the skull the ghost will go.");
~chatnpc(neutral, "That WOULD explain it.");
~chatnpc(neutral, "Hmmmmm. Well, I haven't seen any skulls.");
~chatplayer(confused, "Yes, I think a warlock has stolen it.");
~chatnpc(angry, "I hate warlocks.");
~chatnpc(happy, "Ah well, good luck!");
case ^priest_obtained_skull:
if(inv_total(inv, ghost_skull) = 0) { // this only checks the player inv
~chatplayer(sad, "Well, I found the ghost's skull but then lost it.");
~chatnpc(neutral, "Don't worry, I'm sure you'll find it again.");
return;
}
~chatplayer(happy, "I've finally found the ghost's skull!");
~chatnpc(happy, "Great! Put it in the ghost's coffin and see what happens!");
}
72 changes: 36 additions & 36 deletions data/src/scripts/areas/area_lumbridge/scripts/father_urhney.rs2
Original file line number Diff line number Diff line change
@@ -1,65 +1,65 @@
[opnpc1,father_urhney]
~chatnpc("default", "Go away! I'm meditating!");


if (%priest_progress = 1) {
~chatnpc(angry, "Go away! I'm meditating!");
if (%priest_progress = ^priest_started) {
@multi3("Well, that's friendly.", father_urhney_well_thats_friendly, "Father Aereck sent me to talk to you.", father_urhney_priest_father_aereck_sent_me, "I've come to repossess your house.", father_urhney_repossess_house);
} else if (%priest_progress = 2) {
if (inv_total(inv, amulet_of_ghostspeak) = 0) @multi3("Well, that's friendly.", father_urhney_well_thats_friendly, "I've lost the amulet.", father_urhney_priest_lost_amulet, "I've come to repossess your house.", father_urhney_repossess_house);
} else if (%priest_progress >= ^priest_spoken_urhney & inv_total(inv, amulet_of_ghostspeak) = 0 & inv_total(bank, amulet_of_ghostspeak) = 0) {
@multi3("Well, that's friendly.", father_urhney_well_thats_friendly, "I've lost the amulet.", father_urhney_priest_lost_amulet, "I've come to repossess your house.", father_urhney_repossess_house);
} else {
@multi2("Well, that's friendly.", father_urhney_well_thats_friendly, "I've come to repossess your house.", father_urhney_repossess_house);
}

[label,father_urhney_well_thats_friendly]
~chatplayer("default", "Well, that's friendly.");
~chatnpc("default", "I said go away!");
~chatplayer("default", "Ok, ok.");
~chatplayer(neutral, "Well, that's friendly.");
~chatnpc(angry, "I SAID go AWAY.");
~chatplayer(neutral, "Okay, okay...");

[label,father_urhney_repossess_house]
~chatplayer("default", "I've come to repossess your house.");
~chatnpc("default", "Under what grounds?");
def_int $option = ~p_choice2("Repeated failure on mortgage payments.", 1,"I don't know, I just wanted this house.", 2);
~chatplayer(neutral, "I've come to repossess your house.");
~chatnpc(shock, "Under what grounds???");
def_int $option = ~p_choice2("Repeated failure on mortgage payments.", 1, "I don't know, I just wanted this house.", 2);
if ($option = 1) {
~chatplayer("default", "Repeated failure on mortgage payments.");
~chatnpc("default", "I don't have a mortgage. I built this house myself.");
~chatplayer("default", "Sorry I must have got the wrong address. All the houses look the same around here.");
~chatplayer(neutral, "Repeated failure on mortgage payments.");
~chatnpc(angry, "What?");
~chatnpc(angry, "But... I don't have a mortgage!|I built this house myself!");
~chatplayer(neutral, "Sorry. I must have got the wrong address.|All the houses look the same around here.");
} else if ($option = 2) {
~chatplayer("default", "I don't know, I just wanted this house.");
~chatnpc("default", "Oh go away and stop wasting my time.");
~chatplayer(sad, "I don't know. I just wanted this house...");
~chatnpc(angry, "Oh... go away and stop wasting my time!");
}

[label,father_urhney_priest_father_aereck_sent_me]
~chatplayer("default", "Father Aereck sent me to talk to you.");
~chatnpc("default", "I suppose I'd better talk to you then. What problems has he got himself into this time?");
~chatplayer(neutral, "Father Aereck sent me to talk to you.");
~chatnpc(angry, "I suppose I'd better talk to you then.|What problems has he got himself into this time?");
def_int $option = ~p_choice2("He's got a ghost haunting his graveyard.", 1,"You mean he gets himself into lots of problems?", 2);
if ($option = 1) {
@father_urhney_priest_hes_got_a_ghost;
} else if ($option = 2) {
~chatplayer("default", "You mean he gets himself into lots of problems?");
~chatnpc("default", "Yeah. For example when we were trainee priests. He kept on getting stuck up bell ropes. Anyway I don't have time for chitchat. What's his problem this time?");
~chatplayer(quiz, "You mean he gets himself into lots of problems?");
~chatnpc(neutral, "Yeah. For example, when we were trainee priests|he kept on getting stuck up bell ropes.");
~chatnpc(angry, "Anyway. I don't have time for chitchat.|What's his problem THIS time?");
@father_urhney_priest_hes_got_a_ghost;
}

[label,father_urhney_priest_hes_got_a_ghost]
~chatplayer("default", "He's got a ghost haunting his graveyard.");
~chatnpc("default", "Oh, the silly fool.");
~chatnpc("default", "I leave town for just five months, and ALREADY he can't manage.");
~chatnpc("default", "(sigh)");
~chatnpc("default", "Well, I can't go back and exorcise it. I vowed not to leave this place. Until I had done a full two years of prayer and meditiation.");
~chatnpc("default", "Tell you what I can do though; take this amulet.");
%priest_progress = 2;
~chatplayer(neutral, "He's got a ghost haunting his graveyard.");
~chatnpc(angry, "Oh, the silly fool.");
~chatnpc(angry, "I leave town for just five months,|and ALREADY he can't manage.");
~chatnpc(sad, "(sigh)");
~chatnpc(angry, "Well, I can't go back and exorcise it.|I vowed not to leave this place.|Until I had done a full two years of prayer and meditiation.");
~chatnpc(neutral, "Tell you what I can do though;|take this amulet.");
%priest_progress = ^priest_spoken_urhney;
inv_add(inv, amulet_of_ghostspeak, 1);
~mesbox("Father Urhney hands you an amulet.");
~chatnpc("default", "It is an Amulet of Ghostspeak.");
~chatnpc("default", "So called, because when you wear it you can speak to ghosts. A lot of ghosts are doomed to be ghosts because they have left some important task uncompleted.");
~chatnpc("default", "Maybe if you know what this task is, you can get rid of the ghost. I'm not making any guarantees mind you, but it is the best I can do right now.");
~chatplayer("default", "Thank you. I'll give it a try!");
~chatnpc(neutral, "It is an Amulet of Ghostspeak.");
~chatnpc(neutral, "So called, because when you wear it you can speak to ghosts. A lot of ghosts are doomed to be ghosts because they have left some important task uncompleted.");
~chatnpc(neutral, "Maybe if you know what this task is,|you can get rid of the ghost.|I'm not making any guarantees mind you,|but it is the best I can do right now.");
~chatplayer(neutral, "Thank you. I'll give it a try!");

[label,father_urhney_priest_lost_amulet]
~chatplayer("default", "I've lost the amulet.");
~chatplayer(happy, "I've lost the amulet.");
~mesbox("Father Urhney sighs.");
~chatnpc("default", "How careless can you get. Those things aren't easy to come by you know. It's a good job I've got a spare.");
~chatnpc(angry, "How careless can you get?|Those things aren't easy to come by you know!|It's a good job I've got a spare.");
inv_add(inv, amulet_of_ghostspeak, 1);
~mesbox("Father Urhney hands you an amulet.");
~chatnpc("default", "Be more careful this time.");
~chatplayer("default", "Ok I'll try to be.");
~chatnpc(angry, "Be more careful this time.");
~chatplayer(neutral, "Okay, I'll try to be.");
Loading

0 comments on commit 262edbf

Please sign in to comment.