diff --git a/scripts/interface_chat/scripts/chat.rs2 b/scripts/interface_chat/scripts/chat.rs2 index bf62e5d83f..89d32a21fe 100644 --- a/scripts/interface_chat/scripts/chat.rs2 +++ b/scripts/interface_chat/scripts/chat.rs2 @@ -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; diff --git a/scripts/minigames/game_agilityarena/configs/parrot.mesanim b/scripts/minigames/game_agilityarena/configs/parrot.mesanim new file mode 100644 index 0000000000..89c28d19c3 --- /dev/null +++ b/scripts/minigames/game_agilityarena/configs/parrot.mesanim @@ -0,0 +1,5 @@ +[parrot] +len1=seq_1126 +len2=seq_1126 +len3=seq_1126 +len4=seq_1126 \ No newline at end of file diff --git a/scripts/minigames/game_agilityarena/scripts/agilityarena.rs2 b/scripts/minigames/game_agilityarena/scripts/agilityarena.rs2 index 20d020c396..79aa1c5959 100644 --- a/scripts/minigames/game_agilityarena/scripts/agilityarena.rs2 +++ b/scripts/minigames/game_agilityarena/scripts/agilityarena.rs2 @@ -1,5 +1,6 @@ [oploc1,agilityarena_ladderdown] if(testbit(%agilityarena_varbit, ^agilityarena_paid) = ^false) { + ~chatnpc_model("Parrot", 3624, "
Clap 'em in irons!"); ~chatnpc_specific(nc_name(agilityarena_clerk), agilityarena_clerk, "
Ahoy there! Pay up first!"); return; } diff --git a/scripts/minigames/game_agilityarena/scripts/agilityarena_clerk.rs2 b/scripts/minigames/game_agilityarena/scripts/agilityarena_clerk.rs2 index 1b027e4dcd..feb3cbde61 100644 --- a/scripts/minigames/game_agilityarena/scripts/agilityarena_clerk.rs2 +++ b/scripts/minigames/game_agilityarena/scripts/agilityarena_clerk.rs2 @@ -1,16 +1,21 @@ [apnpc1,agilityarena_clerk] ~chatplayer("
Ahoy Cap'n!"); ~chatnpc("
Ahoy there!"); -// no parrot head model/npc so no parrot dialogue? +~chatnpc_model("Parrot", 3624, "
Avast ye scurvy swabs!"); +~chatplayer("
Huh?"); +~chatnpc("
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("
What is this place?"); ~chatnpc("
This, me hearty, is the entrance to the Brimhaven Agility Arena!"); ~chatnpc("
I were diggin for buried treasure when I found it! Amazed I was! It was a sight to behold!"); + ~chatnpc_model("Parrot", 3624, "
Buried treasure!"); ~chatnpc("
It were the biggest thing I'd ever seen! It must've been at least a league from side to side!"); ~chatnpc("
It made me list, I were that excited!"); + ~chatnpc_model("Parrot", 3624, "
Get on with it!"); ~chatnpc("
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, "
Danger! Danger!"); ~chatnpc("
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) { @@ -18,6 +23,7 @@ while($op ! null) { ~chatnpc("
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("
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("
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, "
Tag when green light means tickets! Tag when red light means green light!"); ~chatplayer("
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) { @@ -27,9 +33,11 @@ while($op ! null) { return; } ~chatnpc("
Aye, entrance be 200 coins."); + ~chatnpc_model("Parrot", 3624, "
Pieces of eight!"); ~chatnpc("
A word of warning me hearty! There are dangerous traps down there!"); if(inv_total(inv, coins) < 200) { ~chatplayer("
I don't have the money on me at the moment."); + ~chatnpc_model("Parrot", 3624, "
*squawk*"); ~chatnpc("
No coins, no entrance!"); return; } diff --git a/scripts/quests/quest_eadgar/scripts/eadgar_troll_chief_cook.rs2 b/scripts/quests/quest_eadgar/scripts/eadgar_troll_chief_cook.rs2 index 61817ebcce..d75bea4753 100644 --- a/scripts/quests/quest_eadgar/scripts/eadgar_troll_chief_cook.rs2 +++ b/scripts/quests/quest_eadgar/scripts/eadgar_troll_chief_cook.rs2 @@ -25,9 +25,9 @@ if(%eadgar_quest = ^eadgar_got_fake_man & inv_total(inv, eadgar_fake_man) > 0) { // rsprox/branon ~chatnpc("
Did you find tasty human? Burntmeat smell something good."); ~chatplayer("
Yes! Look!"); - ~chatnpc_specific("Fake man", eadgar_parrotts, "
Heeeeeeelp!"); // no npc or chathead for this in 274 + ~chatnpc_model("Fake man", 4053, "Heeeeeeelp!"); ~chatnpc("
Ah, dat look like nice tasty human."); - ~chatnpc_specific("Fake man", eadgar_parrotts, "
Aaaargh! Somebody save me!"); + ~chatnpc_model("Fake man", 4053, "
Aaaargh! Somebody save me!"); ~chatnpc("
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); diff --git a/scripts/quests/quest_eadgar/scripts/eadgar_zoo_keeper_aviary.rs2 b/scripts/quests/quest_eadgar/scripts/eadgar_zoo_keeper_aviary.rs2 index 89bdefe883..6d41b9c08d 100644 --- a/scripts/quests/quest_eadgar/scripts/eadgar_zoo_keeper_aviary.rs2 +++ b/scripts/quests/quest_eadgar/scripts/eadgar_zoo_keeper_aviary.rs2 @@ -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("
Hah! Got you now!"); -~chatnpc_specific("Parrot", eadgar_parrotts, "
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, "
Sqwaawk...*hic*"); if(.npc_find(coord, eadgar_zoo_keeper_aviary, 14, 0) = true) { ~.chatnpc("
Hey! What are you doing with that parrot?"); ~chatplayer("
Nothing."); diff --git a/scripts/quests/quest_eadgar/scripts/quest_eadgar.rs2 b/scripts/quests/quest_eadgar/scripts/quest_eadgar.rs2 index b8978712c1..f744d9cfa7 100644 --- a/scripts/quests/quest_eadgar/scripts/quest_eadgar.rs2 +++ b/scripts/quests/quest_eadgar/scripts/quest_eadgar.rs2 @@ -70,7 +70,7 @@ if(%eadgar_quest = ^eadgar_spoken_burntmeat_first | %eadgar_quest = ^eadgar_spok // rsprox/branon ~chatnpc("
Oh, it's you. Have you got me a parrot yet?"); if(inv_total(inv, eadgar_drunk_parrot) > 0) { - ~chatnpc_specific("Parrot", eadgar_parrotts, "
Raaawk! Polly wanna cracker!"); + ~chatnpc_model("Parrot", 3624, "
Raaawk! Polly wanna cracker!"); ~chatplayer("
Here it is! How are you going to explain your plan?"); ~chatnpc("
Yes, yes, of course. It's quite ingenious really!"); ~chatnpc("
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 @@ -78,7 +78,7 @@ if(inv_total(inv, eadgar_drunk_parrot) > 0) { ~chatnpc("
We'll just make a scarecrow. We'll need logs, and 10 sheaves of wheat for stuffing."); ~chatplayer("
How are we going to make it sound like a human?"); ~chatnpc("
That's what the parrot's for, of course."); - ~chatnpc_specific("Parrot", eadgar_parrotts, "
Who's a pretty boy then?"); // mesanim lore_bird_chathead_quizical + ~chatnpc_model("Parrot", 3624, "
Who's a pretty boy then?"); // mesanim lore_bird_chathead_quizical ~chatnpc("
Although the trolls might get suspicious if it doesn't say what they expect a human to say..."); ~chatnpc("
You should hide it for a while somewhere it can pick up some more appropriate catchphrases."); ~chatplayer("
How are we going to make it smell like a human?"); @@ -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, "
Polly wanna cracker!"); - case 1 : ~chatnpc_specific("Parrot", eadgar_parrotts, "
Pieces of eight! Pieces of eight!"); - case 2 : ~chatnpc_specific("Parrot", eadgar_parrotts, "
Who's a pretty boy then?"); + case 0 : ~chatnpc_model("Parrot", 3624, "
Polly wanna cracker!"); + case 1 : ~chatnpc_model("Parrot", 3624, "
Pieces of eight! Pieces of eight!"); + case 2 : ~chatnpc_model("Parrot", 3624, "
Who's a pretty boy then?"); } ~chatplayer("
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, "
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, "
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("
I think it's probably heard enough."); inv_add(inv, eadgar_drunk_parrot, 1); %eadgar_quest = ^eadgar_got_parrot_back; @@ -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, "
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, "
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]