diff options
author | Jesusaves <cpntb1@ymail.com> | 2020-10-24 12:48:53 +0000 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2020-10-24 12:48:53 +0000 |
commit | 1a3d323af19764546552b1d621c65303c1fb3005 (patch) | |
tree | 5e70a62dc756d5a10fe558fe6e3efefcf5ef1a97 /npc/008-1 | |
parent | 8077efb70e0af1c54a84859f73c96de21c60107b (diff) | |
download | serverdata-1a3d323af19764546552b1d621c65303c1fb3005.tar.gz serverdata-1a3d323af19764546552b1d621c65303c1fb3005.tar.bz2 serverdata-1a3d323af19764546552b1d621c65303c1fb3005.tar.xz serverdata-1a3d323af19764546552b1d621c65303c1fb3005.zip |
CONTENT III SUPER MERGE REQUEST
Included:
* Tulimshar Casino
* Placeholder fixing/filling
* Food Questline
* Rossy Quest
* Galimatia Quest (mostly by Livio)
* Edourard bugs
* Blood Donor Quest (from Moubootaur Legends)
* Merchant Guild Quest
* Mundane Bugfix
* La Marine
* Hurns Doctor easter eggs
* Sailing to Argaes with Legion
* Other things not relevant enough to be noted down, I guess
Diffstat (limited to 'npc/008-1')
-rw-r--r-- | npc/008-1/_import.txt | 4 | ||||
-rw-r--r-- | npc/008-1/_mobs.txt | 23 | ||||
-rw-r--r-- | npc/008-1/auldsbel.txt | 6 | ||||
-rw-r--r-- | npc/008-1/banu.txt | 6 | ||||
-rw-r--r-- | npc/008-1/blossom.txt | 77 | ||||
-rw-r--r-- | npc/008-1/confused-tree.txt | 4 | ||||
-rw-r--r-- | npc/008-1/crane.txt | 93 | ||||
-rw-r--r-- | npc/008-1/doors.txt | 43 | ||||
-rw-r--r-- | npc/008-1/marine.txt | 17 | ||||
-rw-r--r-- | npc/008-1/oscar.txt | 10 | ||||
-rw-r--r-- | npc/008-1/rossy.txt | 389 | ||||
-rw-r--r-- | npc/008-1/snarfles.txt | 86 | ||||
-rw-r--r-- | npc/008-1/voltain.txt | 6 |
13 files changed, 722 insertions, 42 deletions
diff --git a/npc/008-1/_import.txt b/npc/008-1/_import.txt index 812a33fa..381dec5a 100644 --- a/npc/008-1/_import.txt +++ b/npc/008-1/_import.txt @@ -7,14 +7,18 @@ "npc/008-1/banu.txt", "npc/008-1/blossom.txt", "npc/008-1/confused-tree.txt", +"npc/008-1/crane.txt", +"npc/008-1/doors.txt", "npc/008-1/hinnak.txt", "npc/008-1/jack.txt", "npc/008-1/mapflags.txt", +"npc/008-1/marine.txt", "npc/008-1/mikhail.txt", "npc/008-1/milly.txt", "npc/008-1/old-man.txt", "npc/008-1/old-woman.txt", "npc/008-1/oscar.txt", +"npc/008-1/rossy.txt", "npc/008-1/sabine.txt", "npc/008-1/shop.txt", "npc/008-1/sign.txt", diff --git a/npc/008-1/_mobs.txt b/npc/008-1/_mobs.txt index 11f3e52a..4ca22849 100644 --- a/npc/008-1/_mobs.txt +++ b/npc/008-1/_mobs.txt @@ -52,7 +52,7 @@ 008-1,235,118,9,9 monster Butterfly 1032,3,10000,10000 008-1,241,58,5,3 monster Butterfly 1032,3,10000,10000 008-1,292,165,5,3 monster Butterfly 1032,3,10000,10000 -008-1,203,142,5,3 monster Butterfly 1032,3,10000,10000 +008-1,207,139,5,3 monster Butterfly 1032,3,10000,10000 008-1,165,147,5,3 monster Butterfly 1032,3,10000,10000 008-1,181,213,14,10 monster Log Head 1031,2,5000,30000 008-1,244,160,31,11 monster Mana Bug 1035,7,10000,10000 @@ -92,7 +92,7 @@ 008-1,146,183,36,25 monster Forest Maggot 1028,12,500,2500 008-1,77,96,7,5 monster Forest Maggot 1028,3,500,2500 008-1,185,187,21,11 monster Butterfly 1032,3,10000,10000 -008-1,272,67,30,35 monster Squirrel 1041,7,10000,30000 +008-1,267,68,30,35 monster Squirrel 1041,7,10000,30000 008-1,178,180,36,30 monster Squirrel 1041,12,10000,30000 008-1,161,34,6,7 monster Scorpion 1043,2,6000,12000 008-1,47,98,23,49 monster Butterfly 1032,5,10000,10000 @@ -103,5 +103,22 @@ 008-1,111,68,8,3 monster Robin Bandit 1064,2,8000,12000 008-1,126,80,8,3 monster Bandit 1063,2,5500,8000 008-1,122,44,4,7 monster Robin Bandit 1064,1,3000,8000 -008-1,89,116,7,6 monster Moubi 1072,1,10000000,1000000 008-1,259,116,31,20 monster Maggot 1026,6,500,10000 +008-1,221,70,8,11 monster Small Frog 1086,3,3000,30000 +008-1,190,166,8,11 monster Small Frog 1086,2,3000,30000 +008-1,88,197,8,26 monster Small Frog 1086,4,3000,30000 +008-1,228,62,15,11 monster Big Frog 1087,1,6000,60000 +008-1,225,162,15,11 monster Big Frog 1087,1,6000,60000 +008-1,88,190,15,11 monster Big Frog 1087,1,6000,60000 +008-1,124,173,20,23 monster Mouboo 1023,5,30000,60000 +008-1,162,42,36,12 monster Butterfly 1032,3,10000,10000 +008-1,186,52,2,0 monster Mauve Plant 1036,1,1000,20000 +008-1,179,25,5,3 monster Pinkie 1030,2,3000,12000 +008-1,228,107,5,12 monster Brotherhood Fighter 1081,2,6000,18000 +008-1,249,143,18,3 monster Brotherhood Fighter 1081,2,12000,18000 +008-1,283,158,7,5 monster Forest Maggot 1028,3,500,2500 +008-1,66,191,17,27 monster Forest Maggot 1028,5,5000,25000 +008-1,55,204,17,8 monster Spider 1044,2,4000,8000 +008-1,73,54,17,12 monster Bluepar 1088,2,12000,36000 +008-1,33,33,11,12 monster Wolvern 1117,2,10000,10000 +008-1,82,162,38,14 monster Wolvern 1117,3,18000,60000 diff --git a/npc/008-1/auldsbel.txt b/npc/008-1/auldsbel.txt index 7f0bc2b1..3d3ebbf5 100644 --- a/npc/008-1/auldsbel.txt +++ b/npc/008-1/auldsbel.txt @@ -1,11 +1,11 @@ -// Evol scripts. +// The Mana World scripts. // Author: // Micksha // Description: // Auldsbel the Magician. // THIS IS A PLACEHOLDER! -008-1,119,114,0 script Auldsbel#008-1 NPC_WIZARD,{ +008-1,119,114,0 script Auldsbel NPC_WIZARD,{ // Placeholder please remove if (!MASTERBOOK_PAGES) { @@ -49,6 +49,6 @@ OnInit: .bodytype = BODYTYPE_3; - .distance = 2; + .distance = 4; end; } diff --git a/npc/008-1/banu.txt b/npc/008-1/banu.txt index 342475ea..183d33c3 100644 --- a/npc/008-1/banu.txt +++ b/npc/008-1/banu.txt @@ -1,11 +1,11 @@ -// Evol scripts. +// The Mana World scripts. // Author: // Micksha // Description: // Banu, the old lady. // THIS IS A PLACEHOLDER! -008-1,244,88,0 script Banu#008-1 NPC_OLD_LADY,{ +008-1,244,88,0 script Banu NPC_OLD_LADY,{ speech l("Hello."), l("You don't have a scythe, by chance? I am too old to mew this field all alone."), @@ -16,6 +16,6 @@ OnInit: .bodytype = BODYTYPE_2; - .distance = 2; + .distance = 4; end; } diff --git a/npc/008-1/blossom.txt b/npc/008-1/blossom.txt index 24db6821..8746752e 100644 --- a/npc/008-1/blossom.txt +++ b/npc/008-1/blossom.txt @@ -1,39 +1,78 @@ -// Evol scripts. +// The Mana World scripts. // Author: // Micksha // Description: // Blossom the flower-seller girl. // THIS IS A PLACEHOLDER! -008-1,198,138,0 script Blossom#008-1 NPC_BLOSSOM,{ +008-1,198,138,0 script Blossom NPC_BLOSSOM,{ speech l("Hi, my name is Blossom."), l("Strange, it seems I became younger lately."), l("Are you in need of some flowers?"); - switch (select(l("I love flowers! What do you have for sale?"), - l("Not now, thank you."), - l("Dont you know something about fertility? I heard rumors."))) + do { - case 1: - closeclientdialog; - shop "#Invisible008-1"; - close; - case 2: - speech S_FIRST_BLANK_LINE, - l("Oh, ok. Come back later if you need something."); - close; - case 3: - speech S_FIRST_BLANK_LINE, - l("I heard something too. A girl named Galimatia seems to need help. If only those lazy developers could tell her what she needs."); - close; - } + select + l("I love flowers! What do you have for sale?"), + l("Not now, thank you."), + l("Dont you know something about fertility? I heard rumors."), + l("Do you sell Flower Seeds?"); + mes ""; + switch (@menu) + { + case 1: + closeclientdialog; + shop "#Invisible008-1"; + close; + case 2: + speech S_FIRST_BLANK_LINE, + l("Oh, ok. Come back later if you need something."); + close; + case 3: + /* + speech S_FIRST_BLANK_LINE, + l("I heard something too. A girl named Galimatia seems to need help. If only those lazy developers could tell her what she needs."); + */ + mesn; + mesq l("I heard something too. A girl named Galimatia seems to need help."); + next; + mesn; + mesq l("But I believe Oscar gave her a fertility recipe...?"); + next; + mesn; + mesq l("...Oops, I'm not supposed to say that. Oscar is... Well... Either a genius or a madman, I can't say."); + break; + case 4: + mesn; + mesq l("No I don't, but I can exchange them. 3 %s for a %s.", getitemlink(GrassSeeds), getitemlink(FlowerSeeds)); + next; + /* + // TODO: Add Andra + mesn; + mesq l("If you need the opposite, look for Andra."); + */ + if (countitem(GrassSeeds) < 3) + break; + + mesc l("Trade with %s?", .name$); + if (askyesno() == ASK_YES) { + inventoryplace FlowerSeeds, 1; + delitem GrassSeeds, 3; + getitem FlowerSeeds, 1; + mesn; + mesq l("Thanks for the trade."); + next; + } + break; + } + } while (true); close; OnInit: .bodytype = BODYTYPE_2; - .distance = 2; + .distance = 4; end; } diff --git a/npc/008-1/confused-tree.txt b/npc/008-1/confused-tree.txt index 198aedd7..5ed54448 100644 --- a/npc/008-1/confused-tree.txt +++ b/npc/008-1/confused-tree.txt @@ -343,7 +343,7 @@ delayed_reply(sprintf("I haven't seen player `%s` today.", .@player$)); else - delayed_reply(sprintf("Player `%s` was last seen %s.", .@player$, FuzzyTime(.@time))); + delayed_reply(sprintf("Player `%s` was last seen %s.", .@player$, FuzzyTime(.@time, 0, 99))); end; } @@ -656,7 +656,7 @@ reply(relative_array_random(.bad$)); else if (.@m$ ~= "(?:^| )(?:how old are you|uptime)(?:$|[^a-z])") - reply("%%B Server uptime: " + FuzzyTime(.uptime, 1) + "."); + reply("%%B Server uptime: " + FuzzyTime(.uptime, 1, 99) + "."); else if (.@m$ ~= "(?:^| )how chatty are you(?:$|[^a-z])") reply("%%B Answered " + .answered_times + " times, ignored " + .ignored_times + " times."); diff --git a/npc/008-1/crane.txt b/npc/008-1/crane.txt new file mode 100644 index 00000000..d8099536 --- /dev/null +++ b/npc/008-1/crane.txt @@ -0,0 +1,93 @@ +// TMW scripts. +// Author: +// Micksha +// Description: +// Crane is Snarfles' apprentice, who secretly eats mouboo steak and enjoys. + +008-1,97,113,0 script Crane NPC_SNARFLES,{ + function foodQuest; + + mesn; + mesq l("Heya. I am Crane, Snarfle's apprentice."); + if (getq(General_SmearedHands) <= 3 && getq2(General_SmearedHands) != 1) + foodQuest(); + close; + +function foodQuest { + .@q=getq(General_SmearedHands); + next; + mesn; + mesq l("Don't tell him, but, I secretly love %s!", getitemlink(MoubooSteak)); + switch (.@q) { + case 1: + next; + mesn strcharinfo(0); + select + l("Do you know a recipe for %s?", getitemname(BarbecuePlate)), + l("Okay, I won't."); + mes ""; + if (@menu == 2) + break; + mesn; + mesq l("Ah sure, it is a simple recipe, I could even make one for you and give you the recipe, but..."); + next; + mesn; + mesq l("I always get smeared hands eating it and cannot play cards anymore with Snarfles."); + next; + mesn; + mesq l("Well, if you find me a solution for that problem, I can give you the recipe. What do you say?"); + next; + mesc l("WARNING: If you accept this quest, you'll be struck at the %s route!", b(l("Carnivour"))), 1; + mesc l("This will also make %s's Quest unavailable.", b("Snarfles")), 1; + mesc l("This decision cannot be changed later."), 1; + next; + mesc l("Accept this request?"), 1; + if (askyesno() == ASK_YES) { + setq General_SmearedHands, 2, CARNIVOROUS; // 2 = Carnivorous + mesn; + mesq l("Great! I'll be eager for your return!"); + } + break; + case 2: + mesn; + mesq l("Have you found a solution for my smeared hands problem?"); + next; + select + l("No, not yet."); + mes ""; + mesn; + mesq l("I've heard they're related to the earl of sandwich, so maybe a sandwich maker could help... *sigh* I want to play cards..."); + break; + case 3: + mesn strcharinfo(0); + select + l("Have you tried putting it in a bread already?"), + l("I'll keep looking for solutions for your problem."); + mes ""; + if (@menu == 2) + return; + mesn; + mesq l("Actually... No. Have been too afraid of it tasting foul."); + next; + mesn strcharinfo(0); + mesq l("Really? Tiki, Candor's chef, liked it very much."); + next; + mesn; + mesq l("Wha - Really?! Tiki said it tasted good??! I'm saved! You're truly my savior!!"); + next; + mesn; + mesq l("I'll put the %s recipe on your %s. Thanks, you saved my day!", getitemlink(BarbecuePlate), getitemlink(RecipeBook)); + RECIPES[CraftBarbecuePlate]=true; + getitembound BarbecuePlate, 1, IBT_ACCOUNT; + setq1 General_SmearedHands, 4; // Finished + default: + return; + } + return; +} + +OnInit: + .bodytype = BODYTYPE_3; + .distance = 4; + end; +} diff --git a/npc/008-1/doors.txt b/npc/008-1/doors.txt new file mode 100644 index 00000000..7ad1d705 --- /dev/null +++ b/npc/008-1/doors.txt @@ -0,0 +1,43 @@ +// The Mana World scripts. +// Author: +// Jesusalva +// Description: +// Rossy Quest + +008-1,49,157,0 script #RossyCaveInit NPC_HIDDEN,0,0,{ + end; + +OnTouch: + if (getq(HurnscaldQuests_Rossy) != 16) + { + // Normal warping + warp "008-3-0", 129, 112; + } + else + { + // HurnscaldQuests_Rossy + // (MAIN QUEST, CAVE CONTROL, INSTANCE CONTROL) + .@inst=getq3(HurnscaldQuests_Rossy); + .@mapn$="ross@"+getcharid(0); + // NOTE: .@inst >= 0 skipped now that inst=0 refers to La Marine + if (isinstance(.@inst) && instanceowner(.@inst) == getcharid(3)) + { + // Renew instance for 15 minutes + //instance_set_timeout(900, 900, .@inst); + // FIXME: Clean unkilled monsters + } else { + .@inst = instance_create("ROSSY "+getcharid(0), getcharid(3), IOT_CHAR); + instance_attachmap("008-3-0", .@inst, false, .@mapn$); + // Instance lasts 20 minutes + instance_set_timeout(ROSSY_INSTIME, ROSSY_INSTIME, .@inst); + instance_init(.@inst); + setq3 HurnscaldQuests_Rossy, .@inst; + // Reset quest progress + setq2 HurnscaldQuests_Rossy, 0; + @rossylock=false; + } + // Warp to instanced map + warp .@mapn$, 129, 112; + } + end; +} diff --git a/npc/008-1/marine.txt b/npc/008-1/marine.txt new file mode 100644 index 00000000..ca448a2e --- /dev/null +++ b/npc/008-1/marine.txt @@ -0,0 +1,17 @@ +// Moubootaur Legends scripts. +// Authors: +// Jesusalva +// Description: +// This script controls access to Ships, fixing variables. + +// Use NPC_LA_MARINE if needed +008-1,327,104,0 script La Marine#H NPC_HIDDEN,0,0,{ + end; + +OnTouch: + EnterTown("Hurns"); + + warp "marine@"+LOCATION$, 42, 26; + closedialog; + close; +} diff --git a/npc/008-1/oscar.txt b/npc/008-1/oscar.txt index 6668ea1e..d7c2f6d5 100644 --- a/npc/008-1/oscar.txt +++ b/npc/008-1/oscar.txt @@ -1,20 +1,20 @@ -// Evol scripts. +// The Mana World scripts. // Author: // Micksha // Description: // Oscar the farmer. -// THIS IS A PLACEHOLDER! +// THIS IS A PLACEHOLDER! Read Dimond Chef before editing. -008-1,160,77,0 script Oscar#008-1 NPC_CAUL,{ +008-1,160,77,0 script Oscar NPC_CAUL,{ speech l("Hi, my name is Oscar."), l("I used to be a farmer, but my magic attempts were banned by the gouvernment."), - lg("Now I remain poor and unemployed."); + l("Now I remain poor and unemployed."); close; OnInit: .bodytype = BODYTYPE_3; - .distance = 2; + .distance = 4; end; } diff --git a/npc/008-1/rossy.txt b/npc/008-1/rossy.txt new file mode 100644 index 00000000..8e63bd27 --- /dev/null +++ b/npc/008-1/rossy.txt @@ -0,0 +1,389 @@ +// The Mana World scripts. +// Author: +// Jesusalva +// Description: +// Daughter of Olana and sister of Juliet. PLACEHOLDER SPRITE + +008-1,62,220,0 script Rossy NPC_TANISHA,{ + function rossyFirstmet; + function rossyBasket; + function rossyLetter; + function rossyPotionList; + function rossyPotionDone; + function rossyDeliverRoses; + function rossyDeliverTulip; + function rossyJulietIntro; + .@q=getq(HurnscaldQuests_Rossy); + mesn; + mesq l("Hello, wanderer."); + switch (.@q) { + case 1: + rossyFirstmet(); + break; + case 3: + rossyBasket(); + break; + case 6: + rossyLetter(); + break; + case 7: + rossyPotionList(); + break; + case 8: + mesn; + mesq l("What, you still have my potion with you??"); + next; + mesn; + mesq l("Could you please deliver it to %s in the magic academy? He is the head of alchemy.", b("David")); + break; + case 9: + case 10: + rossyPotionDone(); + break; + case 11: + rossyDeliverRoses(); + break; + case 13: + rossyDeliverTulip(); + break; + case 14: + mesn; + mesq l("Go and tell my mother that she is the nicest mother in the world."); + next; + select + l("Right on it."), + l("Did you find your sister? I am starting to get worried too."); + mes ""; + if (@menu == 2) { + mesn; + if (BaseLevel < .minLevel_rescue) + mesq l("I think I have an idea where Juliet might be. Come back in a few levels, and I will tell you if she is ok."); + else + mesq l("I think I have an idea where she might be. Come back in a few minutes, I will tell you if she is ok."); + } + break; + case 15: + rossyJulietIntro(); + break; + case 16: + mesn; + mesq l("Oh no! Juliet ... why would you go to that scary place? ... Please help her, %s!", strcharinfo(0)); + mesc l("The cave is %s", b(l("Northwest of here."))); + break; + case 17: + mesn; + mesq l("Hey %s!", strcharinfo(0)); + next; + mesn; + mesq l("Thanks for finding Juliet again. I'm so relieved!"); + next; + mesn; + mesq l("...I still wonder what was that thing Juliet was running from... Hm? Nothing! Just thinking out loud."); + break; + // Default messages + case 12: + mesc l("Achooo!"); + // FALLTHROUGH + default: + mesn; + mesq l("I'm being lazy right now, so please %s", any( + l("don't tell devs I'm slacking off again."), + l("tell my mother there is no reason to worry."), + l("don't worry with me.") + )); + } + close; + +function rossyFirstmet { + mesc l("A young girl looks at you in tears."); + next; + select + l("Hey there... Why are you crying? Are you hurt?"), + l("Sorry kid, I don't have time to play with children."); + mes ""; + if (@menu == 2) + return; + mesn l("Young Girl"); + mesq l("No. I'm crying because I lost all my fruits. My sister and I were collecting some near Dimond's Cove, but then I stumbled on a giant snail and it attacked us!"); + next; + mesn l("Young Girl"); + mesq l("But we were lucky, because the snail is really slow and we ran away from it. Juliet ran to the left and I ran to the right. The snail got pretty confused, because we are identical twins. The problem is that I dropped the basket full of fruits on the ground and that evil snail ate them all! And now I can't find Juliet to help me collect more fruits."); + next; + mesn strcharinfo(0); + select + l("Did you say \"Juliet\"? I talked to your mother Olana, She's very worried about you!"); + mes ""; + // You know she is Rossy, so mesn; won't need args anymore + mesn; + mesq l("Really? But she let us play in the woods. There's no reason to be worried – unless...."); + next; + mesn; + mesc l("Rossy suddenly gets a strange look on her face, mumbling something about Juliet."); + mesq l("Could you do me a favor? Please, tell my mother that we're alright. There's ... well ... there's no reason to worry about us."); + next; + select + l("Very well, if you say so...."), + l("Sorry, but I really don't have time for this."); + mes ""; + if (@menu == 2) { + mesn; + mesq lg("Then why bother? Weird person..."); + return; + } + setq HurnscaldQuests_Rossy, 2; + mesn; + mesq l("Thank you very much!"); + return; +} + +function rossyBasket { + mesn; + mesq l("Hey, that is nice of you to come back. I was thinking about giving a basket full of %s to my mother, to make her happy, you know.", getitemlink(Blueberries)); + next; + mesn; + mesq l("But I would need at least %d berries, and it would take ages to get so many by myself!", .blueberries_amount); + next; + select + l("That is no problem for me. Just wait and I will come back with the cherries."), + l("Ask Juliet, not me."), + rif(countitem(Blueberries), l("Hey, I have some in my backpack!")), + l("You should get them yourself."); + mes ""; + if (@menu == 2) { + mesn; + mesq l("Juliet ran to the left, and I'm pretty sure she is doing the same."); + } + if (@menu != 3) + return; + if (countitem(Blueberries) < .blueberries_amount) { + mesn; + mesq l("You do, but that's not enough. I need %d %s.", .blueberries_amount, getitemlink(Blueberries)); + } + delitem Blueberries, .blueberries_amount; + getexp 2000, 500; + setq HurnscaldQuests_Rossy, 4; + // FIXME: Perhaps give player a [Berries Bag] item? Hmm. + mesn; + mesq l("I can't believe it! You got all the berries needed! Lemme just wrap them and... done! Please give them to my mother. Tell her that it is a gift from me and Juliet, and that there's no reason to worry about us."); // Lemme = Let me + next; + mesn; + mesc l("%s mumbles to herself.", .name$); + mesq l("I hope..."); + next; + mesn; + mesq l("Oh, and after you give the berries to my mother, please come back here. Err, if you have some free time, of course."); + return; +} + +function rossyLetter { + mesn; + mesq l("I'm being lazy right now, so please %s", any( + l("don't tell devs I'm slacking off again."), + l("tell my mother there is no reason to worry."), + l("don't worry with me.") + )); + next; + select + l("Hocus sent a letter to you."), + l("Erm, okay."); + mes ""; + if (@menu == 2) + return; + mesn; + mesq l("The Grandmaster? %%U Lemme read..."); + next; + mesn; + mesc l("%s's face suddenly turns pale.", .name$); + mesq l("Oh no! I completely forgot. The exam! Dang, I knew I should not have picked Alchemy for study..."); + next; + mesn; + mesc l("%s looks at you with beady eyes.", .name$); + mesq l("I haven't found Juliet yet, and I don't even have any of the ingredients required. Could you get them for me? Pretty please? %%J"); + next; + select + l("Alright, tell me what I must get."), + l("Your cute face will not convince me - Your test, your responsibility."); + mes ""; + if (@menu == 2) { + mesn; + mesq l("Yes, I know. I really should have started it earlier... But I can't look for Juliet AND get the ingredients at the same time. Some of them are only found in Tulimshar."); + next; + mesn; + mesq l("You don't even know how Juliet looks. Please come back if you reconsider. Please. Juliet could be being eaten by a creature, as we speak. %%i"); + return; + } + setq HurnscaldQuests_Rossy, 7, 0; + mesn; + mesq l("Excellent! So, as for the materials I need to brew the potion..."); + next; + rossyPotionList(); + return; +} + +function rossyPotionList { + .@t=getq2(HurnscaldQuests_Rossy); + // Potion submitted + if (.@t) { + // Finished! + if (.@t < gettimetick(2)) { + // Yay + mesn; + mesq l("I'm done! Thanks for the help. It is just the shade of blue I wanted."); + next; + mesn; + mesq l("Could you please deliver it to %s in the magic academy? He is the head of alchemy.", b("David")); + setq HurnscaldQuests_Rossy, 8, 0; + } else { + // Brewing + mesn; + mesq l("Please be patient... I'll be done in %s.", FuzzyTime(.@t)); + } + return; + } + + // Potion not yet finished + //mesf("- %d/%d %s", countitem(CactusDrink), 24, getitemlink(CactusDrink)); + mesf("- %d/%d %s", countitem(MaggotSlime), 32, getitemlink(MaggotSlime)); + mesf("- %d/%d %s", countitem(GambogeHerb), 50, getitemlink(GambogeHerb)); + mesf("- %d/%d %s", countitem(AlizarinHerb), 43, getitemlink(AlizarinHerb)); + mesf("- %d/%d %s", countitem(BugLeg), 30, getitemlink(BugLeg)); + mesf("- %d/%d %s", countitem(Pearl), 1, getitemlink(Pearl)); + next; + mesn; + mesq l("Do you have these materials with you?"); + next; + select + l("Not yet."), + l("Yes, here they are!"), + l("No, but I'll be right back."); + mes ""; + if (@menu != 2) + return; + if (countitem(MaggotSlime) < 32 || + countitem(GambogeHerb) < 50 || + countitem(AlizarinHerb) < 43 || + countitem(BugLeg) < 30 || + //countitem(CactusDrink) < 24 || + countitem(Pearl) < 1) { + mesn; + mesq l("You would lie to a poor, small, frail girl like me? %%S"); + next; + mesn; + mesq l("Don't you think that to be very coward on your part?"); + return; + } + //delitem CactusDrink, 24; + delitem MaggotSlime, 32; + delitem GambogeHerb, 50; + delitem AlizarinHerb, 43; + delitem BugLeg, 30; + delitem Pearl, 1; + setq2 HurnscaldQuests_Rossy, gettimetick(2)+900; + mesn; + mesq l("Perfect! Please allow me some time to brew this potion. It should be ready in 15 minutes or so."); + return; +} + +function rossyPotionDone { + mesn; + mesq l("So... How did it go?"); + next; + select + l("David said it was \"okay-ish\"."), + l("David said he would grade it later, but you had nothing to worry about."); + mes ""; + if (@menu == 1) { + mesn; + mesq l("That's a relief. Okay-ish is actually a pretty good grade in the Academy."); + next; + } + mesn; + mesq l("Could you please tell my mother about that? She is already worried with Juliet and me, no need to have her worried about the exam as well."); + compareandsetq HurnscaldQuests_Rossy, 9, 10; + return; +} + +function rossyDeliverRoses { + if (countitem(ARedRose) < 15) { + mesn; + mesq l("Hello %s.", strcharinfo(0)); + return; + } + select + l("Your mother was so happy that she asked me to bring you these flowers."); + mes ""; + delitem ARedRose, 15; + setq HurnscaldQuests_Rossy, 12; + mesn; + mesq l("How nice!"); + next; + mesn; + mesc l("Rossy takes the flowers from your hands and suddenly throws them on the ground. She begins sneezing."); + next; + select + l("I presume you don't like roses, right?"), + l("Are you feeling well?"); + mes ""; + mesn; + mesq l("I am allergic to roses; my mother should already know that!"); + next; + mesn strcharinfo(0); + mesc l("Maybe we should talk to Olana about this."); + return; +} + +function rossyDeliverTulip { + if (countitem(ARedTulip) < 15) { + mesc l("Achooo!"); + mesn; + mesq l("I'm being lazy right now, so please %s", any( + l("don't tell devs I'm slacking off again."), + l("tell my mother there is no reason to worry."), + l("don't worry with me.") + )); + return; + } + select + l("Your mother is sorry about the roses. Here are some beautiful red tulips instead."); + mes ""; + delitem ARedTulip, 15; + setq HurnscaldQuests_Rossy, 14; + getexp 2500, 250; + mesn; + mesq l("That's better! Go and tell my mother that she is the nicest mother in the world."); + next; + mesn; + mesq l("However... Now I should really find my sister. Come back later."); + return; +} + +function rossyJulietIntro { + if (BaseLevel < .minLevel_rescue) { + mesn; + mesq l("I think I have an idea where Juliet might be. Come back in a few levels, and I will tell you if she is ok."); + return; + } + mesn; + mesq l("%s, you have to help me! I saw Juliet, but something was wrong!!", strcharinfo(0)); + next; + select + l("Calm down and tell me what happened."); + mes ""; + mesn; + mesq l("No time for that! She was running away from something and entered a cave not far from here. I heard her scream. Please, can you enter the cave and save her? I'm so scared!"); + next; + mesc l("%s is too distressed to be of any help. It might be a better idea to go inside the cave and look for Juliet.", .name$); + mesc l("The cave is %s", b(l("Northwest of here."))); + setq HurnscaldQuests_Rossy, 16; + return; +} + +OnInit: + .bodytype = BODYTYPE_3; + .distance = 4; + + // Quest conf + .blueberries_amount=30; + .minLevel_rescue = 60; + end; +} diff --git a/npc/008-1/snarfles.txt b/npc/008-1/snarfles.txt index d40bf309..6332b4c9 100644 --- a/npc/008-1/snarfles.txt +++ b/npc/008-1/snarfles.txt @@ -1,20 +1,98 @@ -// Evol scripts. +// The Mana World scripts. // Author: // Micksha // Description: // Snarfles the mouboo farmer. // THIS IS A PLACEHOLDER! -008-1,79,118,0 script Snarfles#008-1 NPC_SNARFLES,{ +008-1,79,118,0 script Snarfles NPC_SNARFLES,{ + function foodQuest; speech l("My Mouboos, my beloved Mouboos!"), l("Oh, hi, isn't it cool to live among all those Mouboos? I don't understand how some people can eat Mouboo steak."), lg("Murderers!"); - + if (getq(General_SmearedHands) <= 3 && getq2(General_SmearedHands) != 2) + foodQuest(); close; +function foodQuest { + .@q=getq(General_SmearedHands); + next; + mesn; + mesq l("Ah... I could use some Asparagus with Hollondaise now..."); + switch (.@q) { + case 1: + next; + mesn strcharinfo(0); + select + l("\"Asparagus with Hollondaise\"? What's that?"), + menuaction(l("Leave")); + mes ""; + if (@menu == 2) + break; + mesn; + mesq l("Some call it %s, but it is so tasty...", getitemlink(VeggiePlate)); + next; + mesn; + mesq l("I could even make one for you and give the recipe, but..."); + next; + mesn; + mesq l("I always get smeared hands eating it and cannot play cards anymore with Crane."); + next; + mesn; + mesq l("Well, if you find me a solution for that problem, I can give you the recipe. What do you say?"); + next; + mesc l("WARNING: If you accept this quest, you'll be struck at the %s route!", b(l("Vegetarian"))), 1; + mesc l("This will also make %s's Quest unavailable.", b("Crane")), 1; + mesc l("This decision cannot be changed later."), 1; + next; + mesc l("Accept this request?"), 1; + if (askyesno() == ASK_YES) { + setq General_SmearedHands, 2, VEGAN; // 1 = Vegan + mesn; + mesq l("Great! I'll be eager for your return!"); + } + break; + case 2: + mesn; + mesq l("Have you found a solution for my smeared hands problem?"); + next; + select + l("No, not yet."); + mes ""; + mesn; + mesq l("I've heard they're related to the earl of sandwich, so maybe a sandwich maker could help... *sigh* I want to play cards..."); + break; + case 3: + mesn strcharinfo(0); + select + l("Have you tried putting it in a bread already?"), + l("I'll keep looking for solutions for your problem."); + mes ""; + if (@menu == 2) + return; + mesn; + mesq l("Actually... No. Have been too afraid of it tasting foul."); + next; + mesn strcharinfo(0); + mesq l("Really? Tiki, Candor's chef, liked it very much."); + next; + mesn; + mesq l("Wha - Really?! Tiki said it tasted good??! I'm saved! You're truly my savior!!"); + next; + mesn; + mesq l("I'll put the %s recipe on your %s. Thanks, you saved my day!", getitemlink(VeggiePlate), getitemlink(RecipeBook)); + RECIPES[CraftVeggiePlate]=true; + getitembound VeggiePlate, 1, IBT_ACCOUNT; + setq1 General_SmearedHands, 4; // Finished + default: + return; + } + return; +} + OnInit: .bodytype = BODYTYPE_3; - .distance = 2; + .distance = 4; end; } diff --git a/npc/008-1/voltain.txt b/npc/008-1/voltain.txt index d3aa9bc8..6ab22f1e 100644 --- a/npc/008-1/voltain.txt +++ b/npc/008-1/voltain.txt @@ -1,11 +1,11 @@ -// Evol scripts. +// The Mana World scripts. // Author: // Micksha // Description: // Voltain the dark druid. // THIS IS A PLACEHOLDER! -008-1,182,155,0 script Voltain#008-1 NPC_DARK_DRUID,{ +008-1,182,155,0 script Voltain NPC_DARK_DRUID,{ speech l("Go away, I have to think about new evil doings."), lg("GO AWAY, I SAID!"); @@ -14,6 +14,6 @@ OnInit: .bodytype = BODYTYPE_3; - .distance = 2; + .distance = 4; end; } |