function script EarthImpTouch {
if (getskilllv(SKILL_MAGIC))
goto L_message;
close;
L_message:
set @Q_MASK, NIBBLE_0_MASK;
set @Q_SHIFT, NIBBLE_0_SHIFT;
set @Q_status, (QUEST_MAGIC2 & @Q_MASK) >> @Q_SHIFT;
set @Q_STATUS_INITIAL, 0;
set @Q_STATUS_ONQUEST, 1;
set @Q_STATUS_STUDENT0, 2;
set @Q_STATUS_STUDENT1, 3;
set @Q_STATUS_STUDENT2, 4;
set @Q_STATUS_STUDENT3, 5;
set @BRANCH, 732;
set @s$, "girl";
if (Sex)
set @s$, "boy";
if (MAGIC_FLAGS & MFLAG_KNOWS_IMP)
goto L_wb;
mes "[Well]";
mes "Something is inside that well, and now that you have turned your attention towards it, it seems to be talking to you!";
next;
mes "[Well]";
mes "\"Hey! You there! Yes, I'm talking to you!\"";
mes "That strange voice seems to be coming from inside your head!";
next;
menu
"Who, me?", -,
"Leave me alone!", L_close,
"Aaah! I'm hearing voices!", L_silly_close;
mes "[Well]";
mes "\"I'm in here, in the well, talking to you! If I'm not very mistaken, you are a powerful wizard-to-be, except that nobody has showed you how to properly do magic yet!\"";
next;
menu
"Who are you?", -,
"Aaaah! The voices are after me!", L_silly_close,
"Whatever it is, I'm not interested.", L_close;
mes "[Earth Spirit]";
mes "\"I'm a forest spirit; my name isn't important... all that matters is that I like you, and that I will help you become a powerful wizard if you help me. A fair deal, if you will...\"";
next;
set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_IMP;
goto L_main;
L_wb:
mes "[Earth Spirit]";
mes "\"It's excellent to see you again!\"";
next;
L_main:
menu
"How did you get trapped?", L_Q_trapped,
"Can you teach me magic and spells?", L_Q_magic,
"What do you know about...", L_Q,
"Goodbye!", -;
close;
L_Q_trapped:
mes "[Earth Spirit]";
mes "\"Oh, a wicked witch grew jealous of my power and locked me up in this well.\"";
next;
goto L_main;
L_Q:
mes "[Earth Spirit]";
mes "\"Stop bothering me with your questions, will you? I'm trying to make you a powerful wizard, after all!\"";
next;
goto L_main;
L_Q_magic:
if (@Q_status == @Q_STATUS_ONQUEST)
goto L_Q_magic_1;
if (@Q_status == @Q_STATUS_STUDENT0)
goto L_Q_magic_2;
if (@Q_status == @Q_STATUS_STUDENT1)
goto L_Q_magic_3;
if (@Q_status == @Q_STATUS_STUDENT2)
goto L_Q_magic_4;
mes "[Earth Spirit]";
mes "\"Good, good... that's the right attitude! Yes, I can teach you magic, but first you must prove that you are worthy to be my student!\"";
next;
mes "[Earth Spirit]";
mes "\"North-west of here sits and old, dead tree. Well, not completely dead, not yet, but almost. It's nothing special. Well, maybe a little, but not really. I want you to cut off one of its branches.\"";
next;
menu
"No way.", L_silly_close,
"Sure.", L_Q_tree_ok,
"Why that particular tree?", -;
mes "[Earth Spirit]";
mes "\"Oh, you and your questions! Well, that tree was a druid once, so the branches contain a bit of its lifeforce. And that's useful.\"";
next;
menu
"Yuck.", L_silly_close,
"Sure, whatever.", L_Q_tree_ok,
"Isn't that like cutting off someone's arm?", -;
mes "[Earth Spirit]";
mes "\"Oooh... now come on! Don't be so sentimental. He turned himself into a tree, he can hardly expect everyone to leave him alone.\"";
next;
mes "[Earth Spirit]";
mes "\"Besides, think of it like that: if you want to bake a cake, you've got to break a few eggs. Not everything's sweetness in life, my " + @s$ + "!.\"";
next;
menu
"No way.", L_silly_close,
"Alright, that makes sense.", L_Q_tree_ok;
L_Q_tree_ok:
mes "[Earth Spirit]";
mes "\"Good, good, good! Yes, that will be very good! So, come back when you have the branch. Oh, and bring 100,000 GP, too, as an enrollment fee.\"";
set @Q_status, @Q_STATUS_ONQUEST;
callsub S_update_var;
set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_CUTTREE;
next;
goto L_main;
L_Q_magic_1:
mes "[Earth Spirit]";
mes "\"Yes, yes, if you brought me the branch and the money, then I will!\"";
next;
menu
"Here is the branch and the money.", -,
"How much money did you want again?", L_Q_tree_howmuch,
"How can I cut it?", L_Q_tree_how,
"Where was the tree again?", L_Q_tree_where,
"What is that tree?", L_Q_tree_what;
if (countitem(@BRANCH) < 1)
goto L_Q_tree_none;
if (!(MAGIC_FLAGS & MFLAG_DID_CUTTREE))
goto L_Q_tree_dry;
if (zeny < 100000)
goto L_Q_tree_nomoney;
set zeny, zeny - 100000;
delitem @BRANCH, 1;
mes "[Earth Spirit]";
mes "Following the earth sprite's instructions, you throw branch and GP into the well.";
next;
mes "[Earth Spirit]";
mes "\"Well done, very well done! Consider yourself my student now.\"";
mes "[5000 experience points]";
if (getskilllv(SKILL_MAGIC_NATURE) < 2)
mes "[Level 2 in Nature Magic]";
getexp 5000, 0;
if (getskilllv(SKILL_MAGIC_NATURE) < 2)
skill SKILL_MAGIC_NATURE, 2;
next;
set @Q_status, @Q_STATUS_STUDENT0;
callsub S_update_var;
goto L_main;
L_Q_magic_finish:
mes "[1000 experience points]";
set @Q_status, @Q_status + 1;
callsub S_update_var;
getexp 1000,0;
next;
goto L_main;
L_Q_magic_2:
mes "[Earth Spirit]";
mes "\"Yes, of course! For just 20,000 GP I will teach you your first spell!\"";
next;
menu
"Here you are.", -,
"No.", L_main;
if (zeny < 20000)
goto L_no20k;
set zeny, zeny - 20000;
mes "[Earth Spirit]";
mes "\"Kekeke... excellent! Yes, here goes your first spell, the flying backpack! If you are overloaded, it will take the load off your shoulders.\"";
next;
mes "[Earth Spirit]";
mes "\"Take a cocoon, living or dead, and suffuse it in magic. Whisper '" + getspellinvocation("flying-backpack") + "', and feel it float!\"";
goto L_Q_magic_finish;
L_Q_magic_3:
mes "[Earth Spirit]";
mes "\"But yes, yes! Only 20,000 GP, once again, and I will teach you a far more useful spell!\"";
next;
menu
"Here you are.", -,
"No.", L_main;
if (zeny < 20000)
goto L_no20k;
set zeny, zeny - 20000;
mes "[Earth Spirit]";
mes "\"Yeees, good! This one is a protection spell, making your skin harder. You need a hard spike for it, though. Hold that spike in your hands, and focus on it.\"";
next;
mes "[Earth Spirit]";
mes "\"Next, say '" + getspellinvocation("protect") + "', and feel your skin grow rigid! Very useful against stings and stabs and pokes and pricks and that sort of stuff.\"";
goto L_Q_magic_finish;
L_Q_magic_4:
mes "[Earth Spirit]";
mes "\"Naah, you're too weak now! Come back later when you have grown!\"";
next;
goto L_main;
L_no20k:
mes "[Earth Spirit]";
mes "\"You can't pay me 20,000 if you don't have that much!\"";
next;
goto L_main;
L_Q_tree_none:
mes "[Earth Spirit]";
mes "\"Where is your branch?\"";
next;
goto L_main;
L_Q_tree_dry:
mes "[Earth Spirit]";
mes "\"That won't do. This branch is completely dead; you'll have to get another.\"";
next;
goto L_main;
L_Q_tree_nomoney:
mes "[Earth Spirit]";
mes "\"No, you don't have enough money! Come back when you have 100,000.\"";
next;
goto L_main;
L_Q_tree_howmuch:
mes "[Earth Spirit]";
mes "\"It's only 100,000 GP to become my student.\"";
next;
goto L_main;
L_Q_tree_how:
mes "[Earth Spirit]";
mes "\"Oh... right, the tree might be protected. Only a bone knife will cut that. No idea where you can find one, but I'm sure you will manage!\"";
next;
goto L_main;
L_Q_tree_where:
mes "[Earth Spirit]";
mes "\"North-west of here.\"";
next;
goto L_main;
L_Q_tree_what:
mes "[Earth Spirit]";
mes "\"Just some silly druid who turned himself into a tree; nothing important.\"";
next;
goto L_main;
L_silly_close:
if (MAGIC_FLAGS & MFLAG_KNOWS_IMP)
mes "[Earth Spirit]";
if (!(MAGIC_FLAGS & MFLAG_KNOWS_IMP))
mes "[Well]";
mes "\"Silly " + @s$ + ".\"";
L_close:
close;
S_update_var:
set QUEST_MAGIC2,
(QUEST_MAGIC & ~(@Q_MASK)
| (@Q_status << @Q_SHIFT));
return;
}
005-1.gat,118,70,0 script #EarthImp0#_M 127,{
callfunc "EarthImpTouch";
}
005-1.gat,119,70,0 script #EarthImp1#_M 127,{
callfunc "EarthImpTouch";
}