summaryrefslogblamecommitdiff
path: root/npc/009-2/wyara.txt
blob: 0b8e9a47ef602ce02b8f27eb3df522ea7832d5bb (plain) (tree)




















































                                                                                   
                              






















                                                         
                              





                                                      
                              






                                                                                                                                                        
                              

                                                                                                                                                                         
                              





                                                                                                                     
                              






                                                                                                    
                              




                                                                        
                              

                                                                                                                                                                                
                              





                                                                                                                               
                              






                                                                                                                                                                                                     
                              



















                                                                                       
                              

                                                                                                                                                                                   
                              


                                                                                                                                                                                              
                              




                                                                                                                                                                                         
                              




                                                                    
                              




                                                                                                                                                                               
                              


                                                                                                                                                                    
                              




                                                                                                                                                                            
                              




                                                                                                                
                              






                                                                                                                                 
                              











                                                                                             
                              

                                                                                                                                               
                              

                                                                                                                                                          
                              








                                                                                                                                           
                              




                                                                                                                                            
                              






                                                                                                                                                                                                                       
                              
                                                                                                                                                    
                                 





                                           
                              






                                                            
                              

























                                                                                                                 
                              

                                                                                                                                   
                              

                                                                                                                                                                                 
                              









                                                                                                    
                              

















                                                                                                            
                              




                                                                                                                                                 
                              



                                                                                                           
                              




                                                                                       
                              




                                                                                       
                              




                                                                                                       
                              

















                                                                                                          
                              




                                                   
                              



                                                    
                              


                                                                                                                                                 
                              






                                                    
                              

                                                                
                              

                                                                                                                        
                              

                                                                                                                                                                     
                              

                                                                                                                                 
                              








                                                               
                              



                                                                            
                              










                                                                                                                                           
                              












                                                                                                                                                                                            
                              


                                                                                                                                                                                          
                              








                                                                                                                                                                                                           
                              

                                                                                                                                      
                              





                                                                                                                    
                              

                                                                                                                                                                                                          
                              

                                                                                                                                                                                                              
                              

                                                                                                                                                                                                       
                              

                                                                                                              
                              

                                                                                                                                                                                     
                              

                                                                                                                                                                                                                  
                              

                                                                                                                                                                                
                              

                                                                                                                                                                                                  
                              

                                                                                                      
                              











                                                                                                                                       
                              




                                                                                                                                                                                       
                              

                                                                                                                                                                           
                              





















                                                                                                                                                                                                                                     
009-2,121,26,0	script	Wyara#_M	NPC103,{
    @Q_MASK = NIBBLE_2_MASK;
    @Q_SHIFT = NIBBLE_2_SHIFT;
    @Q_status = (QUEST_MAGIC2 & @Q_MASK) >> @Q_SHIFT;

    // Set up SkillUp function
    @SUP_id = SKILL_MAGIC_NATURE;
    @SUP_name$ = "Nature Magic";

    @STATUS_INITIAL = 0;
    @STATUS_PURIFY_EXPLAINED = 1;
    @STATUS_PURIFY_ONCE = 2;
    @STATUS_PURIFY_TWICE = 3;
    @STATUS_PURIFY_OVER = 4;
    @STATUS_MAX = @STATUS_PURIFY_OVER;

    // This operation works around an earlier possible corruption of this state
    if (@Q_status > @STATUS_MAX)
        @Q_status = @STATUS_INITIAL;
    if ((@Q_status == @STATUS_PURIFY_OVER) && (getskilllv(SKILL_MAGIC_NATURE) < 2))
        @Q_status = @STATUS_INITIAL;
    callsub S_Update_Var;

    @has_magic = getskilllv(SKILL_MAGIC);

    if (@Q_status == @STATUS_PURIFY_ONCE) goto L_M_purify_once;
    if (@Q_status == @STATUS_PURIFY_TWICE) goto L_M_purify_done;

    mes "[Wyara the witch]";
    mes "\"Greetings, fair traveller! What can I do for you?\"";
    next;
    MAGIC_FLAGS = MAGIC_FLAGS | MFLAG_KNOWS_WYARA;
    goto L_Main;

L_Main:
    if (!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED))
        menu
            "What do you know about...", L_Question,
            "Can you help me use the mana seed?", L_Q_manaseed_unabsorbed,
            "Can you help me learn magic?", L_Magic,
            "I would like to buy potions.", L_Shop,
            "Can you reset my stats?", L_StatReset,
            "Bye!", L_close;
    if (!(!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED)))
        menu
            "What do you know about...", L_Question,
            "Can you help me learn magic?", L_Magic,
            "I would like to buy potions.", L_Shop,
            "Can you reset my stats?", L_StatReset,
            "Bye!", L_close;
    goto L_Shop;

L_Shop:
    mesn l("Wyara the Witch");
    mes "\"Please have a look at the shelf behind me.\"";
    close;

L_StatReset:
    @npcname$ = "Wyara";
    callfunc "StatReset";
    goto L_close;

L_Question:
    callfunc "MagicTalkOptionsSetup";
    @ignore = @QQ_WYARA;
    callfunc "MagicTalkMenu";

    if (@c == 0) goto L_Main;
    if (@c == @QQ_ELANORE) goto L_Q_elanore;
    if (@c == @QQ_MANASEED) goto L_Q_manaseed;
    if (@c == @QQ_MANAPOTION) goto L_Q_manapotion;
    if (@c == @QQ_SAGATHA) goto L_Q_sagatha;
    if (@c == @QQ_AULDSBEL) goto L_Q_auldsbel;
    if (@c == @QQ_IMP) goto L_Q_imp;
    if (@c == @QQ_OLDWIZ) goto L_Q_old_wizard;
    if (@c == @QQ_ASTRALSOUL) goto L_Q_astralsoul;

    mesn l("Wyara the Witch");
    mes "\"I fear that I can't help you with that.\"";
    next;
    goto L_Main;


L_Q_astralsoul:
    mesn l("Wyara the Witch");
    mes "\"The astral soul skill? Yes, I have heard about that. It can be taught by old and wise mages usually.\"";
    next;
    mes "\"You need lots of practise until you can handle the ability, and even more practise until you have the powers to teach it to someone else.\"";
    next;
    goto L_Main;

L_Q_old_wizard:
    mesn l("Wyara the Witch");
    mes "\"I don't know his name, but I do know that he has been living in the mountains since I first came here. He is a master of many schools of magic, I believe.\"";
    next;
    mesn l("Wyara the Witch");
    mes "She smiles.";
    mes "\"He is also a nice and friendly person to talk to, and quite knowledgeable about the teas of this area.\"";
    next;
    goto L_Main;

L_Q_elanore:
    mesn l("Wyara the Witch");
    mes "\"Elanore is the Tulimshar healer. She is a very kind person and an outstanding healer.\"";
    next;
    goto L_Main;

L_Q_manaseed:
    if (!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED))
        goto L_Q_manaseed_unabsorbed;
    mesn l("Wyara the Witch");
    mes "\"A mana seed?  I'm afraid that I can't help you with that.\"";
    next;
    goto L_Main;

L_Q_manaseed_unabsorbed:
    mesn l("Wyara the Witch");
    mes "\"So you touched the mana seed but weren't able to absorb its powers?  That means that you're lacking a natural magical ability. Still, there are ways around that.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"If you drink a mana potion, you should be able to retain this magical power and slowly build up a magical skill.\"";
    MAGIC_FLAGS = MAGIC_FLAGS | MFLAG_KNOWS_MANAPOTION;
    next;
    goto L_Main;

L_Q_manapotion:
    mesn l("Wyara the Witch");
    mes "\"I have a simple recipe for making mana potions, but I don't have one ready right now. Can you bring me 40 mauve leaves and a bottle of water?  I can make one from those quite easily.\"";
    next;
    menu
        "Sure!", L_make_manapotion,
        "No.", L_Main;

L_manapotion_toomany:
    mesn l("Wyara the Witch");
    mes "\"Hmm... looking at you, I don't think that you would be able to carry it.\"";
    next;
    goto L_Main;

L_make_manapotion:
    if(countitem("MauveHerb") < 40)
        goto L_make_manapotion_lack;
    if(countitem("BottleOfWater") < 1)
        goto L_make_manapotion_lack;
    getinventorylist;
    if ((@inventorylist_count == 100)
        && (countitem("MauveHerb") > 40)
        && (countitem("BottleOfWater") > 100)
        && (countitem("ManaPotion") < 1))
            goto L_manapotion_toomany;

    delitem "MauveHerb", 40;
    delitem "BottleOfWater", 1;
    getitem "ManaPotion", 1;

    mesn l("Wyara the Witch");
    mes "Wyara takes your mauve leaves, grinds them, and pours some of the resultant paste into her cauldron. She then takes your bottle and sticks it into her brew, head-first.";
    next;
    mesn l("Wyara the Witch");
    mes "The water in the bottle takes on a strange golden hue, but doesn't flow out.";
    mes "After a while, she retrieves the bottle and pours some of the liquid into a smaller clay bottle. She proceeds to mix in the rest of the paste, then plugs the bottle and shakes it.";
    next;
    mesn l("Wyara the Witch");
    mes "\"I shall keep the rest of your water and the bottle as a payment, if you don't mind. But here is the potion; let it rest for a minute before you use it for maximum effect.\"";
    next;
    goto L_Main;

L_make_manapotion_lack:
    mesn l("Wyara the Witch");
    mes "\"No, we need forty mauve leaves and a bottle of water.\"";
    next;
    goto L_Main;

L_Q_imp:
    mesn l("Wyara the Witch");
    mes "\"Sagatha told me that she imprisoned an evil earth spirit in a dried-up well. She wants it to stay there until it has mended its ways, or forever, if it doesn't.\"";
    next;
    goto L_Main;

L_Q_sagatha:
    mesn l("Wyara the Witch");
    mes "Wyara smiles.";
    mes "\"You have met Sagatha?  She's a wonderful person, isn't she?  Well, she does hold back a little towards humans, but deep down she feels for them, too.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"She does hold all plants and animals very dear, though. Well, the peaceful ones more than the aggressive ones, I suppose, and scorpions not very much at all.\"";
    next;
    goto L_Main;

L_Q_auldsbel:
    mesn l("Wyara the Witch");
    mes "\"Auldsbel... the guild wizard?  I don't know him very well; as far as I know, he is only visiting.\"";
    next;
    goto L_Main;

L_M_no:
    mesn l("Wyara the Witch");
    mes "\"I am sorry, but you don't seem to be able to control any magic. That means that I really can't help you with that.\"";
    next;
    goto L_Main;

L_Magic:
    if (!@has_magic)
        goto L_M_no;
    mesn l("Wyara the Witch");
    mes "\"Perhaps I can help you a little, but I am not a master of any school of magic.\"";
    next;
    goto L_M_main;

L_M_main:
    menu
        "Can you explain magic to me?", L_M_explain,
        "Can you teach me a spell?", L_M_spell,
        "Can you train me?", L_M_train,
        "Never mind.", L_Main;

L_M_explain:
    mesn l("Wyara the Witch");
    mes "\"Magic is just a name for the force that lives in all plants and animals and emanates from there into all things, living or dead.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"Some things it finds easier to pass through – natural things, living things – but dead things, such as rock or metal, can slow it down.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"There are different kinds of magic, too; nature, astral, and so on, but if this interests you, you should talk to a scholar.\"";
    next;
    goto L_M_main;

L_M_spell:
    if (getskilllv(SKILL_MAGIC_NATURE) > 1)
        goto L_M_spell3;
    if (getskilllv(SKILL_MAGIC) > 1)
        goto L_M_spell2;
    mesn l("Wyara the Witch");
    mes "\"No... I don't think that you are ready yet. But please ask me again when you have some more control over your magical powers.\"";
    next;
    goto L_M_main;

L_M_spell3:
    mesn l("Wyara the Witch");
    mes "\"Now that you know the basics of nature magic, here is one of my favourites: '" + get(.invocation$, "rain") + "' will summon rain, whereever you are standing. It will consume a bottle of water, though.\"";
    if (getskilllv(SKILL_MAGIC) < 2)
        mes "\"You are not powerful enough to use it yet, though; you will first have to absorb more magic from the mana seed.\"";
    next;
    goto L_M_spell2;

L_M_spell2:
    mesn l("Wyara the Witch");
    mesq l("Here is another useful one: '%s'. It will tell you the stats of the target monster, so you can know how dangerous it is.", b("miteyo"));
    learnskill SKILL_MONSTERINFO;
    next;
    goto L_M_main;

L_M_train:
    if (getskilllv(SKILL_MAGIC_NATURE) > 1)
        goto L_M_train_no;
    mesn l("Wyara the Witch");
    if (@Q_status >= @STATUS_PURIFY_EXPLAINED)
        goto L_M_train_wb;
    mes "\"Train you?  No... you should talk to Sagatha.\"";
    mes "She hesitates.";
    next;
    callfunc "SagathaStatus";
    if (@evil) goto L_M_train_evil;
    mesn l("Wyara the Witch");
    mes "\"It would be difficult to ask her to accept you unless you understand some of the basics already.\"";
    next;
    goto L_M_train_dispatch;

L_M_train_evil:
    mes "Wyara looks at you sadly.";
    mes "\"I have heard that you have done something unforgiveable. No witch in this land will teach you now.\"";
    next;
    goto L_M_main;

L_M_train_wb:
    callfunc "SagathaStatus";
    if (@evil)
        goto L_M_train_evil;
    mes "\"Ah, yes, your training...\"";
    next;
    goto L_M_train_dispatch;

L_M_train_dispatch:
    if (@Q_status == @STATUS_PURIFY_TWICE)
        goto L_M_purify_done;
    if (@Q_status == @STATUS_PURIFY_ONCE)
        goto L_M_purify_once;
    if (@Q_status == @STATUS_PURIFY_EXPLAINED)
        goto L_M_purify_explained;

    mesn l("Wyara the Witch");
    mes "\"Well, let me help you get started, then!  But first, to make sure that you are serious, I have a small task for you.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"There is a pond west of Hurnscald, a very small one, almost square in shape, with a rock on its southern ledge leading to its center. This pond is close to dying.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"I want to save it; for that, someone will have to pour a purification potion into it.\"";
    next;
    @Q_status = @STATUS_PURIFY_EXPLAINED;
    callsub S_Update_Var;
    goto L_M_purify_explained;

L_M_purify_explained:
    if (countitem("PurificationPotion"))
        goto L_M_purify_doit;

    mesn l("Wyara the Witch");
    mes "\"To make the purification potion, I will need twenty maggot slimes and twenty leaves of mauve.\"";
    next;
    menu
        "I shall get them later.", L_M_main,
        "Booring.", L_M_main,
        "Here they are.", L_Next;

L_Next:
    getinventorylist;
    if ((@inventorylist_count == 100) && (countitem("MauveHerb") > 20) && (countitem("MaggotSlime") > 20))
        goto L_M_purify_nospace;
    if (countitem("MauveHerb") < 20)
        goto L_M_purify_lacking;
    if (countitem("MaggotSlime") < 20)
        goto L_M_purify_lacking;
    delitem "MauveHerb", 20;
    delitem "MaggotSlime", 20;
    getitem "PurificationPotion", 1;
    mesn l("Wyara the Witch");
    mes "Wyara grinds the leaves and mixes them with the slime, boils them, then speaks a brief incantation over them and hands you the result.";
    next;
    goto L_M_purify_doit;

L_M_purify_doit:
    mesn l("Wyara the Witch");
    mes "\"Take your purification potion to the pond, right next to its center, and pour the potion in.\"";
    close;

L_M_purify_nospace:
    mesn l("Wyara the Witch");
    mes "\"You don't have enough space to carry the potion. Please come back later.\"";
    next;
    goto L_M_main;

L_M_purify_lacking:
    mesn l("Wyara the Witch");
    mes "\"You'll need twenty mauve leaves and twenty maggot slimes for the potion.\"";
    next;
    goto L_M_main;

L_M_purify_once:
    mesn l("Wyara the Witch");
    mes "Wyara nods.";
    mes "\"You have purified the pond a little, but not enough, I think. We'll need another potion.\"";
    next;
    if (countitem("PurificationPotion"))
        goto L_M_purify_doit2;
    mesn l("Wyara the Witch");
    mes "\"I'll need twenty more maggot slimes and leaves of mauve.\"";
    next;
    menu
        "I'll do that later.", L_Main,
        "No way.", L_Main,
        "Here you are.", L_Next1;

L_Next1:
    getinventorylist;
    if ((@inventorylist_count == 100) && (countitem("MauveHerb") > 20) && (countitem("MaggotSlime") > 20))
        goto L_M_purify_nospace;
    if (countitem("MauveHerb") < 20)
        goto L_M_purify_lacking;
    if (countitem("MaggotSlime") < 20)
        goto L_M_purify_lacking;
    delitem "MauveHerb", 20;
    delitem "MaggotSlime", 20;
    getitem "PurificationPotion", 1;
    mesn l("Wyara the Witch");
    mes "Wyara brews another purification potion.";
    next;
    goto L_M_purify_doit2;

L_M_purify_doit2:
    mesn l("Wyara the Witch");
    mes "\"Please apply this one quickly, again.\"";
    close;

L_M_purify_done:
    mesn l("Wyara the Witch");
    mes "Wyara smiles at you.";
    mes "\"A friend told me... you have saved the pond for now. Perhaps it will need some more attention later, but I'll ask others for this.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"Please sit down and touch the ground.\"";
    next;
    menu
        "Very well.", L_Next2,
        "No way!", L_M_purify_abort;

L_Next2:
    mesn l("Wyara the Witch");
    mes "You sit down and touch the ground, and so does Wyara.";
    next;
    mesn l("Wyara the Witch");
    mes "You sense the earth, through the floor boards, and begin to feel one with it, as if you were a plant or rock.";
    next;
    mesn l("Wyara the Witch");
    mes "The gentle breeze coming in through the window begins to take on a very different quality, as if it were the gentle caress of a mother soothing her child.";
    next;
    mesn l("Wyara the Witch");
    mes "You can sense the water within the ground, and from it you sense your sisters and brothers, plants, animals, people...";
    next;
    mesn l("Wyara the Witch");
    mes "Slowly, the sensation recedes, but you feel changed.";
    @SUP_xp = 5000;
    @SUP_lvl = 2;
    callfunc "SkillUp";
    @Q_status = @STATUS_PURIFY_OVER;
    callsub S_Update_Var;
    close;

L_M_purify_abort:
    mesn l("Wyara the Witch");
    mes "\"I can't help you if you don't subject yourself to the ritual.\"";
    close;

L_M_train_no:
    mesn l("Wyara the Witch");
    mes "\"I can't teach you anything at this time. Perhaps Sagatha can help you, but I'm not sure if she will accept you as a student.\"";
    next;
    goto L_M_train_sagatha;

L_M_train_sagatha:
    menu
        "OK.", L_M_main,
        "How can I convince her to accept me?", L_Next3;

L_Next3:
    callfunc "SagathaStatus";
    mesn l("Wyara the Witch");
    if (@evil)
        goto L_M_train_s_fail;
    if (getskilllv(SKILL_MAGIC) < 2)
        goto L_M_train_s_lvl1;
    if (@good > 1)
        mes "\"Come to think of it, I have heard good things about you. Perhaps she will be willing to accept you as a student now?\"";
    if (@good == 1)
        mes "\"I have heard some good things about you, but I'm not sure if it will be enough to sway her – she is hesitant to accept students.\"";
    if (@good == 0)
        mes "\"Sagatha cares greatly about all living creatures, but particularly about the creatures of the forest. If you are kind to them, she will be more likely to be kind to you.\"";
    next;
    if (@druid == 3)
        goto L_M_main;
    mesn l("Wyara the Witch");
    mes "She smiles.";
    mes "\"Actually, I think I know of a good thing you could do. There is a very special tree in the desert south-east of Tulimshar, a tree that has been there for a very long time.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"The tree is slowly dying – and has been for a long time – but it is there because of a wonderful thing that happened long ago. Tend to it, and I am sure that she will learn about this.\"";
    next;
    MAGIC_FLAGS = MAGIC_FLAGS | MFLAG_KNOWS_DRUIDTREE;
    menu
        "What is that tree?", L_M_train_t_backgd,
        "How should I tend to it?", L_Next4,
        "Nah.", L_M_main;

L_Next4:
    mesn l("Wyara the Witch");
    mes "\"The tree has been there alone and unattended for a long time; what he needs most is water and affection. Give him both.\"";
    next;
    mesn l("Wyara the Witch");
    mes "She hesitates for a moment.";
    mes "\"But stay away from the well in the area. There is no water in there anymore, and it's also dangerous.\"";
    next;
    goto L_M_main;

L_M_train_t_backgd:
    mesn l("Wyara the Witch");
    mes "\"Many generations ago, there was a lush, green oasis in the desert south-east of Tulimshar. Plants of all kinds grew there, and many animals, including mouboos, made this place their home.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"Then there came war, and some people pleaded to the demon Grenxen. He founded Tulimshar, and to provide it with water he changed the underground waterflow. The oasis began to dry out quickly.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"But the oasis, like many such places back in the old days, had a druid watching over it. The druid refused to accept what Grenxen had done, but he was powerless to revert or change it.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"All he could do was to delay the inevitable, to give the animals and nomads some time to adapt.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"But to do so, he had to reach the water streams deep underground. Thus, he turned himself into a tree, a deep-rooted fyrad, so that his roots could reach underground.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"He had to exert himself tremendously; he had to grow deep, quickly; I believe that no druid or witch has summoned such magic before or since. But he succeeded, and for a while he saved the oasis.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"Many generations he remained the only one ever to have successfully defied Grenxen, but this came at a price:  he had to remain a tree, and he never turned back.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"I believe that he has not forgotten his old magic, because even though a tree remembers many things for a very long time, trees are not keen to change things, not even themselves.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"Now he stands alone in the desert, dried-up and forgotten, with no-one remembering him.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"Please give him water, for he is always in need of it, and thank him for his sacrifice. It is all we can do for him now.\"";
    next;
    goto L_M_t_menu;

L_M_t_menu:
    menu
        "How should I give him water?", L_M_t_water,
        "How should I thank him?", L_M_t_remind,
        "I will.", L_M_main,
        "No.", L_M_main;

L_M_t_water:
    mesn l("Wyara the Witch");
    mes "\"A bottle of water would probably not be enough. No, you would have to water the ground all around... that's too many bottles. You will have to get water from elsewhere.\"";
    next;
    goto L_M_t_menu;

L_M_t_remind:
    mesn l("Wyara the Witch");
    mes "\"Give him a sign of affection. Something that works with a tree, but also something that humans might do to each other, to remind him of his days as a human.\"";
    next;
    mesn l("Wyara the Witch");
    mes "\"Yes... that would be important. Show your affection in the same way that you might towards a human.\"";
    next;
    goto L_M_t_menu;

L_M_train_s_fail:
    mes "She shakes her head.";
    mes "\"No... from what I have heard, you have done something unforgivable. I very much doubt that you can be her student now, and I won't teach you any further either.\"";
    next;
    goto L_M_main;

L_M_train_s_lvl1:
    mes "\"Well, you're still a bit of a beginner, so I don't think she will accept you yet. Maybe you can absorb some more power from the mana seed?  If you can grow your magical powers a little, I might be able to help you.\"";
    next;
    goto L_M_main;

L_close:
    close;

S_Update_Var:
    QUEST_MAGIC2 = (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT));
    return;
}