//############################################# // author: alastrim, PjotrOrial //############################################# // This npc teaches you the speed skill. // used variables: // QUEST_MIRIAM: // 0 either fully completed the quests in here, or not started. // 1 you said the wrong words, she is insulted. (so you excuse and goto 2) // 2 waiting for the ingredients // 3 you brought the needed stuff. if you meet other criteria (baselevel, agi) you will be taught the skill // 4 you have met the criteria of 3, but declined to take the speed test. // 5 you tried the quest but you failed // QUEST_MIRIAM_start // a time in ticks. This is only !=0 if you started running to pachua. // QUEST_MIRIAM_run // when you reach pachua, he stores the difference of start and arrival in here. //############################################# // after you gained the speed skill, all variables are reset to zero. //############################################# 032-1.gat,55,20,0 script Miriam 175,{ if (getskilllv(SKILL_SPEED)) goto L_fast; if (getequipid(equip_torso) < 0) goto L_naked; if (QUEST_MIRIAM == 0) goto L_intro; if (QUEST_MIRIAM == 1) goto L_ask1; if (QUEST_MIRIAM == 2) goto L_ask2; if (QUEST_MIRIAM == 3) goto L_teach; if (QUEST_MIRIAM == 4) goto L_testoffer; if (QUEST_MIRIAM_run != 0) goto L_checktime; if (QUEST_MIRIAM_start != 0) goto L_wasting; if (QUEST_MIRIAM == 5) goto L_testoffer; L_intro: mes "You see a woman sitting in the hot sand with eyes wide open... But she does not seem to be looking at something in particular..."; next; menu "Ehr... Hi, my name is " +strcharinfo(0)+ ". Are you OK?",-; next; mes "[Miriam]"; mes "\"..."; next; menu "Hello?",-; next; mes "[Miriam]"; mes "\"Yes, I am. Why? Do you think I am not OK? I am OK. You interrupted my meditation. Now I will need hours to calm down and stay quiet! Yes, yes, I know, I'm a fast talker!\""; next; mes "\"In fact, I am fast in everything I do! I can kill a Mountain Snake before it even starts to think about attacking me! Yes my friend, in a battle, speed is power!"; next; menu "Wow! Very impressi...",-; mes "[Miriam]"; mes "\"Yes, yes, I know. But if there is one thing I am NOT good at, it is meditation! My master said I need to meditate, but... Ohh! So difficult to stay quiet! And when you FINALLY do, someone INTERRUPTS you, asking if you are 'OK'...\""; next; menu "Oh, I am sorry! I didn't know you were meditating...",-; next; mes "[Miriam]"; mes "\"You are really sorry? Ok, but that is not enough... I need you to do something for me. As you can imagine, I will need a lot of time to concentrate and get back to the state I was when you interrupted me.\""; next; mes "\"But the problem is that I wasn't expecting to be here for so long, so I will need some food and something to drink.\""; next; mes "\"So, if you really want to prove that you are sorry, bring me 5 [Concentration Potions] and 10 [Snake Tongues].\""; next; menu "Ok, but those potions will not help with your mental concent...",-, "Sorry, but I can't help you right now.",L_canthelp; mes "[Miriam]"; mes "\"ah, ah, ah... I know what I am doing! Now run and get what I asked.\""; set QUEST_MIRIAM, 2; close; L_canthelp: mes "[Miriam]"; mes "\"Oh, really? So you better pray to not need my help in the future!\""; set QUEST_MIRIAM, 1; close; L_canthelp2: mes "[Miriam]"; mes "\"...\""; next; mes "\"...\""; next; mes "\"Well, if you don't have time to help, at least don't make things difficult for me!\""; close; L_ask1: mes "[Miriam]"; mes "\"So, you are back... have you changed your mind about my request?\""; next; menu "Yes, I will get what you want!",-, "No, I have no time right now.",L_canthelp2; set QUEST_MIRIAM, 2; mes "\"Good. So, run and get it!\""; close; L_ask2: mes "[Miriam]"; mes "\"Did you get what I asked for?\""; next; menu "Yes, here it is!",L_getitems, "What was that again?", L_ask3, "No, not yet.",-; next; mes "\"So please hurry up!\""; close; L_ask3: mes "[Miriam]"; mes "\"You have a small mind, haven't you? I am meditating here and I asked you to bring me stuff, so I can concentrate better.\""; next; mes "\"And stop asking such silly questions in the future.\""; next; mes "\"So, if you really want to help me now, bring me 5 [Concentration Potions] and 10 [Snake Tongues].\""; close; L_getitems: if (countitem("SnakeTongue") < 10 || countitem("ConcentrationPotion") < 5) goto L_notenough; delitem "SnakeTongue", 10; delitem "ConcentrationPotion", 5; set QUEST_MIRIAM, 3; mes "[Miriam]"; mes "\"Good job! Now I have enough food to stay in this desert for days!\""; next; mes "\"Now, since you helped me, maybe I can teach you a basic skill, but only if you prove yourself to be a fast runner! Come back and talk to me when you think you are prepared to learn.\""; close; L_notenough: mes "[Miriam]"; mes "\"Hey, you don't have all that I asked. Come back when you have everything.\""; close; L_teach: mes "[Miriam]"; mes "\"Hmm... do you think you can learn the special Speed skill?\""; next; menu "Yes, I am prepared...", -, "I am already fast.", L_notfast; set @agi, readparam(bAgi); set @torso$, getitemname(getequipid(equip_torso)); set @weight, MaxWeight/Weight; if (@weight < 3) goto L_heavyweight; if (@agi < 60) goto L_slow; if (baselevel < 60) goto L_lowlevel; if (countitem("SteelShield") > 0 || countitem("WarlordHelmet") > 0 || countitem("CrusadeHelmet") > 0 || countitem("WarlordPlate") > 0 || countitem("KnightsHelmet") > 0 || countitem("InfantryHelmet") > 0 || countitem("ChainmailShirt") > 0) goto L_heavymetal; goto L_offer; L_heavyweight: mes "[Miriam]"; mes "\"Wow... Why do you bring so many things with you? You must be carrying more than one third of your own weight! I won't teach you unless you get rid of some stuff... \""; close; L_heavymetal: mes "[Miriam]"; mes "\"Hmm... I see... You want to be one of those lazy slow warriors... wasting all their strength carrying kilos of metal clothes... Why does no one see the great advantages of a beautiful, flexible, lightweight armor nowadays?\""; next; mes "\"Come back here when you get rid of this junk...\""; close; L_slow: mes "[Miriam]"; mes "Oh, wait, wait... " +@agi+ " Agility? Are you serious? What do you do with all your Character points? Put them all to 'Strength'? Really... I don't even want to know... Come back here when you have a decent character points distribution!\""; close; L_lowlevel: mes "[Miriam]"; mes "\"Come back here when you are old enough. I even wonder how you could get here so unexperienced as you are.\""; close; L_offer: mes "[Miriam]"; mes "\"Hmm! You look great in these clothes! They look very comfortable too... And it seems like you are not carrying too much weight.\""; next; if (!(getskilllv(SKILL_POOL))) goto L_noskill; menu "Yes, I look really good in this " +@torso$+ ".",-; next; mes "[Miriam]"; mes "\"I see. I like the way you distributed your Character Points too... " +@agi+ " points to Agility! You really know how to prepare yourself for a good fight!\""; next; mes "\"Well... Even if you have a potential to be a good fighter, moving the way you do will not help. You need to be fast to avoid the monsters. \""; next; mes "\"So, if you pass a small test I can teach you a skill that will increase your walking speed! You will not be as fast as I am, but I am sure it will be useful.\""; next; menu "I'm in! What kind of test is it?",-, "I don't think I need more speed right now",L_giveup; next; L_test: mes "[Miriam]"; mes "\"Great! The test is simple. You need to run as fast as you can from the place where I am sitting to the mountains and talk to Pachua, the chief. When you get there and talk to Pachua, he will send a special smoke signal to me, so I can know how much time it took for you to get there.\""; next; mes "\"If you make it in a good time, I will teach you the special speeding skill. If not, you can always try again. So, are you ready?\""; next; menu "Yes, let's do it!",-, "No, I need to stretch my muscles first!",L_stretch; close2; message strcharinfo(0), "Miriam quickly grabs your arm and pull you to the place where she is sitting."; // Warp the player to the place where the NPC is defined, so he can't cheat. warp "032-1.gat",55,21; npctalk "Run " +strcharinfo(0)+ ", run!"; set QUEST_MIRIAM, 5; set QUEST_MIRIAM_start, gettimetick(1); set QUEST_MIRIAM_cheat, 0; end; L_naked: mes "[Miriam]"; mes "\"Hmmm?! Please put on some clothes before talking to me.\""; close; L_notfast: mes "[Miriam]"; mes "\"Hah! If you think so...\""; close; L_noskill: mes "[Miriam]"; mes "\"For a person like you, I could even teach a useful skill! Too bad you don't have the basic abillities to learn it...\""; close; L_giveup: mes "[Miriam]"; mes "\"Oh, that is too bad... But if you change your mind, come back!\""; set QUEST_MIRIAM, 4; close; L_testoffer: mes "[Miriam]"; mes "\"Are you ready for the test now?\""; next; menu "Yes!",L_test, "Not yet.",-; close; L_warning: mes "[Miriam]"; mes "\"I know very well what you tried to do. I will not teach you the speed skill if you keep trying this kind of trick!\""; next; goto L_testoffer; L_stretch: mes "[Miriam]"; mes "\"Ok. Good idea... Stretching exercises can increase your flexibility and even prevent injuries!\""; set QUEST_MIRIAM, 4; close; L_wasting: mes "[Miriam]"; mes "\"Don't waste your time talking to me! RUN and talk to Pachua!\""; close; L_checktime: if (QUEST_MIRIAM_cheat != 0) goto L_warning; if (QUEST_MIRIAM_run > 210) goto L_tryagain; if (QUEST_MIRIAM_run <= 210) goto L_goodjob; L_tryagain: mes "[Miriam]"; mes "\"You needed " + QUEST_MIRIAM_run + " seconds to reach Pachua. It is not enough.\""; set QUEST_MIRIAM_run, 0; close; L_goodjob: mes "[Miriam]"; mes "\"Great job! You needed " + QUEST_MIRIAM_run + " seconds to reach Pachua. Very impressive for a person like you.\""; next; mes "\"Now I need you to relax. Do NOT move. This teaching process can be painful sometimes.\""; next; mes "Miriam stares into your eyes and starts to scream some strange words very close to your ears."; next; mes "You feel dizzy and as soon as you move your head and look to the ground, Miriam pushes you hard, sending you meters away from her."; close2; warp "032-1.gat",55,22; // free all used player variables. This can be done, since there is a conditional on the speedskill at the beginning. set QUEST_MIRIAM_start, 0; set QUEST_MIRIAM_run, 0; set QUEST_MIRIAM, 0; message strcharinfo(0), "[You gain 2500 experience points]"; message strcharinfo(0), "[You learned Speed Skill]"; setskill SKILL_SPEED, 1; getexp 2500, 0; close; L_fast: mes "[Miriam]"; mes "\"I hope you make a good use of your new skill... Take care!\""; close; }