summaryrefslogtreecommitdiff
path: root/npc/008-2-4
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2021-04-09 11:00:49 -0300
committerJesusaves <cpntb1@ymail.com>2021-04-09 11:00:49 -0300
commit8a4bf716002a017de77fe7df301ef8e4aaf00a2e (patch)
tree4947d0b015baad639fa07133369e9a09c8a468bc /npc/008-2-4
downloadserverdata-8a4bf716002a017de77fe7df301ef8e4aaf00a2e.tar.gz
serverdata-8a4bf716002a017de77fe7df301ef8e4aaf00a2e.tar.bz2
serverdata-8a4bf716002a017de77fe7df301ef8e4aaf00a2e.tar.xz
serverdata-8a4bf716002a017de77fe7df301ef8e4aaf00a2e.zip
Initial commit
Diffstat (limited to 'npc/008-2-4')
-rw-r--r--npc/008-2-4/_import.txt7
-rw-r--r--npc/008-2-4/_savepoints.txt15
-rw-r--r--npc/008-2-4/_warps.txt3
-rw-r--r--npc/008-2-4/bernard.txt222
-rw-r--r--npc/008-2-4/mapflags.txt1
-rw-r--r--npc/008-2-4/olana.txt321
6 files changed, 569 insertions, 0 deletions
diff --git a/npc/008-2-4/_import.txt b/npc/008-2-4/_import.txt
new file mode 100644
index 00000000..826aa135
--- /dev/null
+++ b/npc/008-2-4/_import.txt
@@ -0,0 +1,7 @@
+// Map 008-2-4: The Rusty Pick
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/008-2-4/_savepoints.txt",
+"npc/008-2-4/_warps.txt",
+"npc/008-2-4/bernard.txt",
+"npc/008-2-4/mapflags.txt",
+"npc/008-2-4/olana.txt",
diff --git a/npc/008-2-4/_savepoints.txt b/npc/008-2-4/_savepoints.txt
new file mode 100644
index 00000000..0129971e
--- /dev/null
+++ b/npc/008-2-4/_savepoints.txt
@@ -0,0 +1,15 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 008-2-4: The Rusty Pick saves
+008-2-4,25,27,0 script #save_008-2-4_25_27 NPC_SAVE_POINT,0,0,{
+ savepointparticle .map$, .x, .y, NO_INN;
+ close;
+
+OnInit:
+ .distance = 2;
+ .sex = G_OTHER;
+ end;
+
+OnTouch:
+ bedTouch();
+ end;
+}
diff --git a/npc/008-2-4/_warps.txt b/npc/008-2-4/_warps.txt
new file mode 100644
index 00000000..2d8336f7
--- /dev/null
+++ b/npc/008-2-4/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 008-2-4: The Rusty Pick warps
+008-2-4,44,28,0 warp #008-2-4_44_28 0,0,008-2-2,25,29
diff --git a/npc/008-2-4/bernard.txt b/npc/008-2-4/bernard.txt
new file mode 100644
index 00000000..a7cd2382
--- /dev/null
+++ b/npc/008-2-4/bernard.txt
@@ -0,0 +1,222 @@
+// Evol scripts.
+// Author:
+// gumi
+// Quest states:
+// [1] 0 - cannot do the quest
+// [1] 1 - can do the quest
+// [1] 2 - bernard wants roasted maggot
+// [1] 3 - brought maggot
+// [1] 4 - bernard wants maggot slime
+// [1] 5 - brought maggot slime
+// [1] 6 - mikhail needs maggot slime
+// [1] 7 - brought maggot slime
+// [2] unused
+// [3] unused
+// [t] unused
+// Description:
+// Bernard wants to make a maggot slime soup
+
+008-2-4,34,29,0 script Bernard NPC_BERNARD,{
+
+ if (BaseLevel < .min_level)
+ {
+ npctalk3 generic(16 | 32);
+ end;
+ }
+
+ function soup_intro {
+ if (rand(2) == 1)
+ {
+ speech 4,
+ l("The fields are crawling with maggots."),
+ l("Where is Mikhail?"),
+ l("What is taking them so long?"),
+ l("Could I ask a favor of you?");
+ }
+ else
+ {
+ speech 4,
+ l("The taste of maggots in soup is... unforgettable."),
+ l("They taste simply divine!"),
+ l("I sent someone to kill me some maggots and they have yet to return."),
+ l("Would you help me kill some?");
+ }
+
+ if (selectd(l("Yes."), l("No.")) == 2)
+ {
+ return;
+ }
+
+ if (rand(2) == 1)
+ {
+ speech 4,
+ l("Great!"),
+ l("I need a %s for my soup.", getitemlink(.first_item));
+ }
+ else
+ {
+ speech 4,
+ l("Bring me a %s.", getitemlink(.first_item)),
+ l("I'll give you something if you do.");
+ }
+
+ speech 8,
+ l("Please bring it to me!");
+
+ setq .quest, 2;
+ close;
+ }
+
+ function soup_reminder_roasted {
+ speech
+ l("Oh, please hurry and bring me a %s.", getitemlink(.first_item)),
+ l("I'm yearning for maggot soup!");
+ close;
+ }
+
+ function soup_no_room {
+ speech 1 | 8,
+ "...",
+ l("It seems you don't have room for my reward."),
+ l("I'll wait until you do.");
+ close;
+ }
+
+ function soup_reward_roasted {
+ speech 4,
+ l("Oooh, perfect! It's perfect!"),
+ l("You brought me my %s!", getitemlink(.first_item)),
+ l("Here, have some %s for your troubles.",
+ getitemlink(.first_reward_item));
+
+ if (checkweight(.first_reward_item, .first_reward_amount) != true)
+ soup_no_room;
+
+ if (countitem(.first_item) < 1)
+ close;
+
+ delitem .first_item, 1;
+ quest_item(.maxLevel, .first_reward_item, .first_reward_amount);
+ quest_xp(.maxLevel, .first_reward_exp);
+ setq .quest, 3;
+
+ speech 8,
+ l("Now let's see...");
+ close;
+ }
+
+ function soup_ask_slime {
+ speech
+ l("Thank you so much!"),
+ l("But... something is missing to make the soup creamy."),
+ l("I need %d %s for that.",
+ .second_item_qty, getitemlink(.second_item)),
+ l("Bring them to me, and I'll give you something nice.");
+
+ setq .quest, 4;
+ close;
+ }
+
+ function soup_reminder_slime {
+ speech
+ l("Please do hurry and bring me %d %s, so I can finish my soup!",
+ .second_item_qty, getitemlink(.second_item));
+ close;
+ }
+
+ function soup_reward_slime {
+ speech
+ l("Nice!"),
+ l("They're perfect, just perfect!"),
+ l("You brought me the %d %s!",
+ .second_item_qty, getitemlink(.second_item)),
+ l("Here, have some %s as reward.",
+ getitemlink(.second_reward_item));
+
+ if (checkweight(.second_reward_item, .second_reward_amount) != true)
+ soup_no_room;
+
+ if (countitem(.second_item) < .second_item_qty)
+ close;
+
+ delitem .second_item, .second_item_qty;
+ quest_item(.maxLevel, .second_reward_item, .second_reward_amount);
+ quest_xp(.maxLevel, .second_reward_exp);
+ setq .quest, 5;
+
+ close;
+ }
+
+ function soup_thanks_slime {
+ speech
+ l("I didn't mention it before, but I also put beer in my soup."),
+ l("I hope you like beer as much as I do, because, you see..."),
+ l("Beer is life!");
+ close;
+ }
+
+ function soup_thanks_mikhail {
+ speech
+ l("My help, Mikhail, finally returned with the slimes I needed."),
+ l("I wonder what took him so long?");
+ close;
+ }
+
+
+ // OnTalk:
+ switch (getq(.quest))
+ {
+ case 0:
+ case 1: soup_intro; break;
+ case 2:
+ if (countitem(.first_item) < 1)
+ soup_reminder_roasted;
+ else
+ soup_reward_roasted;
+ break;
+ case 3: soup_ask_slime; break;
+ case 4:
+ if (countitem(.second_item) < .second_item_qty)
+ soup_reminder_slime;
+ else
+ soup_reward_slime;
+ break;
+ case 5:
+ case 6: soup_thanks_slime; break;
+ default: soup_thanks_mikhail;
+ }
+
+ closeclientdialog();
+ close;
+
+OnPCLoginEvent:
+OnPCBaseLvUpEvent:
+ if (BaseLevel >= .min_level && getq(.quest) < 1)
+ {
+ setq .quest, 1; // allow the player to do the quest
+ dispbottom l("New quest available: %s (level %d+)",
+ getquestlink(.quest), .min_level); // XXX: requires new manaplus versions, maybe show a different message for old versions?
+ }
+ end;
+
+OnInit:
+ .min_level = 10; // min level to do the quest
+ .maxLevel = 30;
+
+ .first_item = RoastedMaggot;
+ .first_reward_item = CherryCake;
+ .first_reward_amount = 5;
+ .first_reward_exp = 100;
+
+ .second_item = MaggotSlime;
+ .second_item_qty = 3;
+ .second_reward_item = Beer;
+ .second_reward_amount = 3;
+ .second_reward_exp = 100;
+
+ .quest = HurnscaldQuests_Soup;
+ .quest_debug = .quest;
+ .distance = 3;
+
+ end;
+}
diff --git a/npc/008-2-4/mapflags.txt b/npc/008-2-4/mapflags.txt
new file mode 100644
index 00000000..cd86a1e4
--- /dev/null
+++ b/npc/008-2-4/mapflags.txt
@@ -0,0 +1 @@
+008-2-4 mapflag town
diff --git a/npc/008-2-4/olana.txt b/npc/008-2-4/olana.txt
new file mode 100644
index 00000000..4c42f599
--- /dev/null
+++ b/npc/008-2-4/olana.txt
@@ -0,0 +1,321 @@
+// The Mana World scripts.
+// Author:
+// Micksha
+// Jesusalva
+// Alastrim
+// Ali-g
+// Dark Mage
+// Description:
+// Olana, the old woman who is looking for her daughter Rossy and Juliet.
+// HurnscaldQuests_Rossy
+// 0 - Quest Not Assigned
+// 1 - Asked to look for Rossy
+
+
+008-2-4,30,28,0 script Olana NPC_OLANA,{
+ function olanaIntro;
+ function olanaIntroDone;
+ function olanaRossyLie;
+ function olanaDeliverBerries;
+ function olanaGetLetter;
+ function olanaRossyGoodGirl;
+ function olanaRossyBadMom;
+ function olanaRossyHappy;
+ .@q=getq(HurnscaldQuests_Rossy);
+ if (BaseLevel < .minLevel)
+ .@q = -1; // Hard Reset
+ mesn;
+ mesq l("Oh, a traveler. Welcome.");
+ next;
+ switch (.@q) {
+ case 0:
+ olanaIntro();
+ break;
+ case 1:
+ olanaIntroDone();
+ break;
+ case 2:
+ olanaRossyLie();
+ break;
+ case 3:
+ mesc l("%s smiles at you, but she still seems preoccupied.", .name$);
+ next;
+ mesc l("Rossy was collecting fruits, right? Maybe she has some idea on how to cheer her mother up?");
+ break;
+ case 4:
+ olanaDeliverBerries();
+ break;
+ case 5:
+ olanaGetLetter();
+ break;
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ mesn;
+ mesq l("Please bring Hocus' letter to my daughter as fast as you can.");
+ break;
+ case 10:
+ olanaRossyGoodGirl();
+ break;
+ case 11:
+ mesn;
+ mesc l("%s says absently-minded, while staring at a portrait of her daughters, Rossy and Juliet:");
+ mesq l("Could you do me a favor? Could you bring her %d %s? I am sure she will love them!", 15, getitemlink(ARedRose));
+ break;
+ case 12:
+ olanaRossyBadMom();
+ break;
+ case 13:
+ mesn;
+ mesq l("Please, tell Rossy I am really sorry and buy her Red Tulips instead, the same amount - %d, her age.", 15);
+ break;
+ case 14:
+ olanaRossyHappy();
+ break;
+ case 15:
+ case 16:
+ mesn;
+ mesq l("Where is Juliet? I want to know where she is! Please find her, %s!", strcharinfo(0));
+ break;
+ case 17:
+ mesn;
+ mesq l("Juliet got home sound and safe thanks to you, %s. I'll be eternally grateful.", strcharinfo(0));
+ next;
+ mesn;
+ mesq l("Rossy and Juliet are out there, playing again. Please, feel free to play with them or to come here for a cup of water.");
+ break;
+ default:
+ speech
+ l("Did you see my daughters Rossy and Juliet, by chance?"),
+ l("She wasn't at home for two days now. I worry about her!"),
+ l("If you see her, please tell her to come home.");
+ }
+ close;
+
+function olanaIntro {
+ mesn;
+ mesq l("This is a private room from the Rusty Pick. You see, my father owns this inn.");
+ next;
+ mesn;
+ mesq l("I moved to Tulimshar so my daughters – Rossy and Juliet – could learn magic, but we come back to Hurnscald on occasion.");
+ next;
+ mesn;
+ mesc l("Olana suddenly looks very pale and starts to shiver.");
+ mesq l("Which reminds me - I let my two lovely girls play in the woods nearby but they haven't come back yet!");
+ next;
+ mesn;
+ mesq l("These forests are not safe; I am afraid they might have wandered in the swamps by accident.");
+ next;
+ mesn;
+ mesq l("Could you pretty please see if they're fine? I can book you this inn for a night after that.");
+ next;
+ if (askyesno() == ASK_NO) {
+ mesn;
+ mesq l("Well, you *do* look weak, I guess I would get worried if you went after them and ended up lost and on the swamps.");
+ next;
+ mesn;
+ mesq l("But if you change your mind, please, call me again.");
+ return;
+ }
+ mesn;
+ mesq l("Excellent! I am counting on you!");
+ setq HurnscaldQuests_Rossy, 1;
+ return;
+}
+
+function olanaIntroDone {
+ mesn;
+ mesq l("My daughters – Rossy and Juliet – went to play in the woods but haven't come back yet.");
+ next;
+ mesn;
+ mesq l("Could you pretty please see if they're fine? I can book you this inn for a night after that.");
+ return;
+}
+
+function olanaRossyLie {
+ mesn;
+ mesq l("Have you found my daughters yet? %%i");
+ next;
+ select
+ l("No, sorry, I'll keep looking."),
+ l("I saw Rossy, she is fine."),
+ l("Yes, a snail attacked them.");
+ mes "";
+ if (@menu == 1) {
+ mesn;
+ mesq l("Please do, I'm worried about them....");
+ return;
+ }
+ if (@menu == 3) {
+ mesn;
+ mesq l("Oh noes!!!!");
+ next;
+ mesc l("%s faints.", .name$);
+ mesc l("Maybe we could have told her that in a better way.");
+ return;
+ }
+ mesn;
+ mesq l("Oh you did? That's good. I'm relieved. But what about Juliet?");
+ next;
+ select
+ l("I haven't found Juliet yet, sorry."),
+ l("Well, Rossy told both of them were fine...");
+ mes "";
+ mesn;
+ mesq l("Ok. They must be playing hide and seek. Thanks again... I can't express how grateful I am.");
+ next;
+ setq HurnscaldQuests_Rossy, 3;
+ mesn;
+ mesq l("I'll now book you a room on the Inn.");
+ select
+ l("Thanks."),
+ l("Actually, please don't. I do this out of the goodness of my heart.");
+ mes "";
+ // Do not register the inn
+ if (@menu == 2) {
+ mesn;
+ mesq l("Oh... Okay, then!");
+ return;
+ }
+ // Register the inn
+ INN_REGISTER = RUSTYPICK_INN;
+ PC_IS_DEAD = false;
+ savepoint "008-2-4", 26, 27;
+ return;
+}
+
+function olanaDeliverBerries {
+ mesn;
+ mesq l("Hello there.");
+ next;
+ select
+ l("Erm, hi."),
+ l("Hi, Rossy asked me to give you this. She says it is a gift from both her and Juliet.");
+ mes "";
+ if (@menu == 1)
+ return;
+ mesn;
+ mesq l("Ohhh... How sweet... Sometimes Rossy impresses me with her kindness. Here... You are spending so much time helping us, and we give nothing back. Take this as a small reward.");
+ quest_xp(.maxLevel, 2000);
+ quest_jxp(.maxLevel, 200);
+ quest_gp(.maxLevel, 10000);
+ setq HurnscaldQuests_Rossy, 5;
+ next;
+ mesn;
+ mesq l("Could you do me a small favor, though? I know I barely know you, and you must be very busy, but...");
+ next;
+ olanaGetLetter();
+ return;
+}
+
+function olanaGetLetter {
+ mesn;
+ mesq l("Would you mind giving this letter to my little Rossy? You see, Rossy and Juliet are enrolled at Tulimshar Magic School...");
+ next;
+ mesn;
+ mesq l("Rossy is doing alchemy, and I received a letter signed by Hocus, the Grandmaster. She did not submit her exam before we travelled, and now she is running out of time...");
+ next;
+ mesn;
+ mesq l("Pretty please?");
+ next;
+ if (askyesno() == ASK_NO)
+ return;
+ mesn;
+ mesq l("Thank you again. Please, bring it to her as fast as you can.");
+ setq HurnscaldQuests_Rossy, 6;
+ return;
+}
+
+function olanaRossyGoodGirl {
+ mesn strcharinfo(0);
+ select
+ l("Rossy passed her exam.");
+ mes "";
+ mesn;
+ mesq l("That's a relief to hear! I'm so proud of her.");
+ next;
+ mesn;
+ mesq l("Could you do me a favor? Could you bring her %d %s? I am sure she will love them!", 15, getitemlink(ARedRose));
+ next;
+ select
+ l("Okay, I'll get the roses and give them to her."),
+ l("What? No way!");
+ mes "";
+ if (@menu == 2)
+ return;
+ mesn;
+ mesq l("I know this won't be enough, but here is %d E to help you.", 50);
+ next;
+ mesn;
+ mesq l("After you get them, please deliver them to my brilliant daughter, Rossy.");
+ Zeny+=50;
+ setq HurnscaldQuests_Rossy, 11;
+ return;
+}
+
+function olanaRossyBadMom {
+ mesn;
+ mesq l("Did she like my present?");
+ next;
+ select
+ l("Sure she did..."),
+ l("Well, you should have known that your daughter is allergic to roses.");
+ mes "";
+ if (@menu == 1) {
+ mesn;
+ mes "%%H";
+ return;
+ }
+ mesn;
+ mesq l("Oh, how stupid I am! Here, take some of my money and buy Red Tulips instead, the same amount. Keep the flowers.");
+ next;
+ mesn;
+ mesq l("Please, tell Rossy I am really sorry. My mind was on Juliet when I asked you to bring the red roses — they are her favorite.");
+ next;
+ mesn strcharinfo(0);
+ select
+ l("I will give her the tulips when I see her.");
+ mes "";
+ mesn;
+ mesq l("Thank you. And don't forget to tell her that I'm really sorry.");
+ Zeny+=450;
+ setq HurnscaldQuests_Rossy, 13;
+ return;
+}
+
+function olanaRossyHappy {
+ mesn;
+ mesq l("So?");
+ next;
+ select
+ l("Rossy was happy with your gift, and asked me to say you are the nicest mother in the world.");
+ mes "";
+ mesn;
+ mesq l("I'm so glad to hear that! But, have you seen Juliet too, by any chance?");
+ next;
+ select
+ l("Erm, no, sorry."),
+ l("I'm sure she is fine.");
+ mes "";
+ mesn;
+ mesq l("For some reason, I can't get off my mind she is in danger... Motherly instincts.");
+ next;
+ mesn;
+ mesq l("For now, I should reward you for all your effort thus far.");
+ .@item=any(Diamond, Ruby, Emerald, Sapphire, Topaz, Amethyst);
+ inventoryplace .@item, 1;
+ setq HurnscaldQuests_Rossy, 15;
+ getitem .@item, 1;
+ next;
+ mesn;
+ mesq l("But please, could you look for Juliet as well? I'm starting to get deeply worried, here.");
+ return;
+}
+
+OnInit:
+ .distance = 4;
+ .minLevel = 40;
+ .maxLevel = 80; // Differs from Juliet/Rossy
+ end;
+}