// 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;
}