Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions scripts/interface_chat/scripts/chat.rs2
Original file line number Diff line number Diff line change
Expand Up @@ -1118,6 +1118,56 @@ if(p_finduid(uid) = true) {
%weakqueue_map_clock = map_clock;
}

[proc,chatnpc_model_page](string $npc_name, int $chathead, int $page)
def_int $lines = split_linecount($page);
def_interface $interface = null;

if ($lines = 0) {
// sanity check
return;
} else if ($lines = 1) {
$interface = npcchat1;
if_setmodel(npcchat1:com_0, $chathead);
if_setanim(npcchat1:com_0, split_getanim($page));
if_settext(npcchat1:com_1, $npc_name);
if_settext(npcchat1:com_2, split_get($page, 0));
} else if ($lines < 3) {
$interface = npcchat2;
if_setmodel(npcchat2:com_0, $chathead);
if_setanim(npcchat2:com_0, split_getanim($page));
if_settext(npcchat2:com_1, $npc_name);
if_settext(npcchat2:com_2, split_get($page, 0));
if_settext(npcchat2:com_3, split_get($page, 1));
} else if ($lines = 3) {
$interface = npcchat3;
if_setmodel(npcchat3:com_0, $chathead);
if_setanim(npcchat3:com_0, split_getanim($page));
if_settext(npcchat3:com_1, $npc_name);
if_settext(npcchat3:com_2, split_get($page, 0));
if_settext(npcchat3:com_3, split_get($page, 1));
if_settext(npcchat3:com_4, split_get($page, 2));
} else if ($lines = 4) {
$interface = npcchat4;
if_setmodel(npcchat4:com_0, $chathead);
if_setanim(npcchat4:com_0, split_getanim($page));
if_settext(npcchat4:com_1, $npc_name);
if_settext(npcchat4:com_2, split_get($page, 0));
if_settext(npcchat4:com_3, split_get($page, 1));
if_settext(npcchat4:com_4, split_get($page, 2));
if_settext(npcchat4:com_5, split_get($page, 3));
}
if_openchat($interface);

[proc,chatnpc_model](string $npc_name, int $chathead, string $string)
split_init($string, 380, 4, q8_full);
def_int $page = 0;
def_int $pagetotal = split_pagecount;
while ($page < $pagetotal) {
~chatnpc_model_page($npc_name, $chathead, $page);
p_pausebutton;
$page = calc($page + 1);
}

[proc,chatnpc_cutscene_page](string $npc_name, npc $npc, int $page)
def_int $lines = split_linecount($page);
def_interface $interface = null;
Expand Down
5 changes: 5 additions & 0 deletions scripts/minigames/game_agilityarena/configs/parrot.mesanim
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[parrot]
len1=seq_1126
len2=seq_1126
len3=seq_1126
len4=seq_1126
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
[oploc1,agilityarena_ladderdown]
if(testbit(%agilityarena_varbit, ^agilityarena_paid) = ^false) {
~chatnpc_model("Parrot", 3624, "<p,parrot>Clap 'em in irons!");
~chatnpc_specific(nc_name(agilityarena_clerk), agilityarena_clerk, "<p,angry>Ahoy there! Pay up first!");
return;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,29 @@
[apnpc1,agilityarena_clerk]
~chatplayer("<p,happy>Ahoy Cap'n!");
~chatnpc("<p,happy>Ahoy there!");
// no parrot head model/npc so no parrot dialogue?
~chatnpc_model("Parrot", 3624, "<p,parrot>Avast ye scurvy swabs!");
~chatplayer("<p,confused>Huh?");
~chatnpc("<p,happy>Don't mind me parrot, he's Cracked Jenny's Tea Cup!");
def_int $op = ~p_choice4("What is this place?", 1, "What do I do in the arena?", 2, "I'd like to use the Agility Arena, please.", 3, "See you later.", 4);
while($op ! null) {
if($op = 1) {
~chatplayer("<p,confused>What is this place?");
~chatnpc("<p,happy>This, me hearty, is the entrance to the Brimhaven Agility Arena!");
~chatnpc("<p,happy>I were diggin for buried treasure when I found it! Amazed I was! It was a sight to behold!");
~chatnpc_model("Parrot", 3624, "<p,parrot>Buried treasure!");
~chatnpc("<p,happy>It were the biggest thing I'd ever seen! It must've been at least a league from side to side!");
~chatnpc("<p,happy>It made me list, I were that excited!");
~chatnpc_model("Parrot", 3624, "<p,parrot>Get on with it!");
~chatnpc("<p,happy>I'd found a huge cave with all these platforms. I reckon it be an ancient civilisation that made it. I had to be mighty careful as there was these traps everywhere! Dangerous it was!");
~chatnpc_model("Parrot", 3624, "<p,parrot>Danger! Danger!");
~chatnpc("<p,happy>Entrance is only 200 coins!");
$op = ~p_choice4("What is this place?", 1, "What do I do in the arena?", 2, "I'd like to use the Agility Arena, please.", 3, "See you later.", 4);
} else if($op = 2) {
~chatplayer("<p,confused>What do I do in the arena?");
~chatnpc("<p,neutral>Well, me hearty, it's simple. Ye can cross between two platforms by using the traps or obstacles strung across 'em. Try and make your way to the pillar that is indicated by the flashing arrow.");
~chatnpc("<p,neutral>Ye receive tickets for tagging more than one pillar in a row. So ye won't get a ticket from the first pillar but ye will for every platform ye tag in a row after that.");
~chatnpc("<p,neutral>If ye miss a platform ye will miss out on the next ticket so try and get every platform you can! When ye be done, take the tickets to Jackie over there and she'll exchange them for more stuff!");
~chatnpc_model("Parrot", 3624, "<p,parrot>Tag when green light means tickets! Tag when red light means green light!");
~chatplayer("<p,happy>Thanks!");
$op = ~p_choice4("What is this place?", 1, "What do I do in the arena?", 2, "I'd like to use the Agility Arena, please.", 3, "See you later.", 4);
} else if($op = 3) {
Expand All @@ -27,9 +33,11 @@ while($op ! null) {
return;
}
~chatnpc("<p,neutral>Aye, entrance be 200 coins.");
~chatnpc_model("Parrot", 3624, "<p,parrot>Pieces of eight!");
~chatnpc("<p,shock>A word of warning me hearty! There are dangerous traps down there!");
if(inv_total(inv, coins) < 200) {
~chatplayer("<p,neutral>I don't have the money on me at the moment.");
~chatnpc_model("Parrot", 3624, "<p,parrot>*squawk*");
~chatnpc("<p,angry>No coins, no entrance!");
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ if(%eadgar_quest = ^eadgar_got_fake_man & inv_total(inv, eadgar_fake_man) > 0) {
// rsprox/branon
~chatnpc("<p,happy>Did you find tasty human? Burntmeat smell something good.");
~chatplayer("<p,happy>Yes! Look!");
~chatnpc_specific("Fake man", eadgar_parrotts, "<p,neutral>Heeeeeeelp!"); // no npc or chathead for this in 274
~chatnpc_model("Fake man", 4053, "Heeeeeeelp!");
~chatnpc("<p,happy>Ah, dat look like nice tasty human.");
~chatnpc_specific("Fake man", eadgar_parrotts, "<p,neutral>Aaaargh! Somebody save me!");
~chatnpc_model("Fake man", 4053, "<p,neutral>Aaaargh! Somebody save me!");
~chatnpc("<p,happy>Yep, sound like human too. Burntmeat put it in stew.|Good work, human. Burnmeat give precious reward."); // linebreaks from runeweb 2004
%eadgar_quest = ^eadgar_got_burnt_meat;
inv_del(inv, eadgar_fake_man, 1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ inv_del(inv, eadgar_alco_chunks, 1);
queue(eadgar_get_parrot, 0, 0); // appears to be queued here judging by indio's clip
~mesbox("You manage to attract a parrot and catch it.");
~chatplayer("<p,happy>Hah! Got you now!");
~chatnpc_specific("Parrot", eadgar_parrotts, "<p,neutral>Sqwaawk...*hic*"); // this chathead doesn't seem to exist in 274 but will be lunar_captains_parrot in 2006, something else in 2005...? https://web.archive.org/web/20060114030943im_/http://www.runeweb.net/fireball/Eadgars%20Ruse%20Images/Eadgar12.PNG
~chatnpc_model("Parrot", 3624, "<p,parrot>Sqwaawk...*hic*");
if(.npc_find(coord, eadgar_zoo_keeper_aviary, 14, 0) = true) {
~.chatnpc("<p,angry>Hey! What are you doing with that parrot?");
~chatplayer("<p,shifty>Nothing.");
Expand Down
14 changes: 7 additions & 7 deletions scripts/quests/quest_eadgar/scripts/quest_eadgar.rs2
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,15 @@ if(%eadgar_quest = ^eadgar_spoken_burntmeat_first | %eadgar_quest = ^eadgar_spok
// rsprox/branon
~chatnpc("<p,neutral>Oh, it's you. Have you got me a parrot yet?");
if(inv_total(inv, eadgar_drunk_parrot) > 0) {
~chatnpc_specific("Parrot", eadgar_parrotts, "<p,neutral>Raaawk! Polly wanna cracker!");
~chatnpc_model("Parrot", 3624, "<p,parrot>Raaawk! Polly wanna cracker!");
~chatplayer("<p,happy>Here it is! How are you going to explain your plan?");
~chatnpc("<p,happy>Yes, yes, of course. It's quite ingenious really!");
~chatnpc("<p,neutral>What we need is something that looks like a human,|sounds like a human, smells like a human and tastes|like a human."); //linebreaks from from runeweb, one of the few 2004-era images we have of this quest
~chatplayer("<p,quiz>How are we going to make it look like a human?");
~chatnpc("<p,neutral>We'll just make a scarecrow. We'll need logs, and 10 sheaves of wheat for stuffing.");
~chatplayer("<p,quiz>How are we going to make it sound like a human?");
~chatnpc("<p,happy>That's what the parrot's for, of course.");
~chatnpc_specific("Parrot", eadgar_parrotts, "<p,neutral>Who's a pretty boy then?"); // mesanim lore_bird_chathead_quizical
~chatnpc_model("Parrot", 3624, "<p,parrot>Who's a pretty boy then?"); // mesanim lore_bird_chathead_quizical
~chatnpc("<p,neutral>Although the trolls might get suspicious if it doesn't say what they expect a human to say...");
~chatnpc("<p,neutral>You should hide it for a while somewhere it can pick up some more appropriate catchphrases.");
~chatplayer("<p,quiz>How are we going to make it smell like a human?");
Expand Down Expand Up @@ -148,14 +148,14 @@ if(inv_freespace(inv) > 0) {
// rsprox/branon
if(%eadgar_quest >= ^eadgar_hid_parrot & %eadgar_quest <= ^eadgar_needs_potion) {
switch_int(randominc(2)) {
case 0 : ~chatnpc_specific("Parrot", eadgar_parrotts, "<p,neutral>Polly wanna cracker!");
case 1 : ~chatnpc_specific("Parrot", eadgar_parrotts, "<p,neutral>Pieces of eight! Pieces of eight!");
case 2 : ~chatnpc_specific("Parrot", eadgar_parrotts, "<p,neutral>Who's a pretty boy then?");
case 0 : ~chatnpc_model("Parrot", 3624, "<p,parrot>Polly wanna cracker!");
case 1 : ~chatnpc_model("Parrot", 3624, "<p,parrot>Pieces of eight! Pieces of eight!");
case 2 : ~chatnpc_model("Parrot", 3624, "<p,parrot>Who's a pretty boy then?");
}
~chatplayer("<p,neutral>I don't think it's done yet.");
} else if(%eadgar_quest = ^eadgar_needs_parrot_back) {
~mesbox("You look under the rack and find the drunk parrot.");
~chatnpc_specific("Parrot", eadgar_parrotts, "<p,neutral>Ah, hello Sir. Could you please free me?|I seem to have ... OW! What are you doing?|That's my spleen!"); // linebreaks from runeweb 2004
~chatnpc_model("Parrot", 3624, "<p,parrot>Ah, hello Sir. Could you please free me?|I seem to have ... OW! What are you doing?|That's my spleen!"); // linebreaks from runeweb 2004
~chatplayer("<p,happy>I think it's probably heard enough.");
inv_add(inv, eadgar_drunk_parrot, 1);
%eadgar_quest = ^eadgar_got_parrot_back;
Expand Down Expand Up @@ -427,7 +427,7 @@ if(inv_total(inv, eadgar_drunk_parrot) > 0) {
// to match OSRS videos - the drunk parrot/fake man swap is queued
// and does not occur until the player clicks through or cancels eadgar's default dialog tree
queue(eadgar_fake_man, 0, 0);
~chatnpc_specific("Fake man", eadgar_parrotts, "<p,neutral>What am I doing here? Ow! Where's the rest of the|Guard? Agh! I won't tell you anything!"); // linebreaks from runeweb 2004
~chatnpc_model("Fake man", 4053, "<p,neutral>What am I doing here? Ow! Where's the rest of the|Guard? Agh! I won't tell you anything!"); // linebreaks from runeweb 2004
@eadgar_default_tree;

[queue,eadgar_fake_man]
Expand Down