summaryrefslogblamecommitdiff
path: root/npc/029-2/sorfina.txt
blob: a235a24448aa041e88b1afd28c08b5e22dd17591 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15














                                            
                                 
           





                                                                                                     





                                                                                                                                                                    




                                                                                                     
 

                                                                                 
         

                                                                 
          
                                                       
           



                                                                 
 


                                                                



                                                                                        
        

                                                                         

      
          

                                 






                                                                                                
         












                                                                                        
         











                                                                                                                                                                              
         







                                                                                                                                                        
         




















                                                                                                                                                                                  
         








                                                                
         





                                                                    
         













                                                                           
         







                                                                                        
         













                                                                                                                     
         





















                                                                                                                                  
         







                                                                                                                                                                
         












                                                                                                                   
         







                                                                                              
         








                                                                
         













                                                                                                                                               
         





                                                                                         
         
                                                                             





                                

                                                



                        













                                            

                                          


                              

                                                                                                                                                 

           
                                                      




                                                        




                                    

                                                                    



                      
                                                                                                      

                            
                 




                                                                                                                                     


          
                                   

          


                

















                                                                                                  

                                                                                      






                                                      

                                                                                      






















                                                                       
029-2,27,27,0	script	Sorfina	NPC154,0,1,{
    @npc_distance = 2;
    callfunc "PCtoNPCRange";
    if(@npc_check) end;
    goto L_Main;

L_Main:
    if (QL_BEGIN == 10) goto L_Hasan;
    if (QL_BEGIN >= 4) goto L_Again;
    if (QL_BEGIN == 3) goto L_Clothes;
    if (QL_BEGIN == 2) goto L_Dresser;
    if (QL_BEGIN == 1) goto L_Carpet;
    goto L_Start;

L_Start:
    mes l("You open your eyes.");
    mes "";
    mesn l("Old Woman");
    mes l("\"Ah, you woke up. You washed ashore on the beach 3 days ago. You've been asleep since.");
    mes l("You must have been thrown off one of the ships sailing during that last tremor.\"");
    next;
    mes l("\"My little granddaughter Tanisha found you. Kaan was able to carry you to bed.");
    mes l("We've been taking care of you ever since. Waiting for you to wake up.\"");
    if (getvaultid()) {
        next;
        mesc l("...I see. That is surprising, to be able to take a form in this world without needing to deal with complex backstories.");
        next;
        mesc l("Well, maybe it is still too early to judge. Still, this must be a peaceful world, to have such warm greeting. Maybe we should play along for now.");
    }
    next;
    mesq l("You didn't have any possessions on you when we found you and no one knows who you are.");
    mes l("Do you have a name?");
    select
        strcharinfo(0);

    mesn l("Old Woman");
    mesq l("Well %s what else can you tell me about yourself?.", strcharinfo(0));
    next;
    mesn l("Old Woman");
    mesq l("Go on. If you need to think a bit, take your time.");
    select
        l("... Tulimshar in Tonori ... I'm a Talpan.");
    mes "";
    mesn l("Old Woman");
    mesq l("Anything else you can remember?");
    select
        l("Umm... no... I... I don't remember anything else...");

    if (getvaultid()) {
        mesc l("That is obviously a lie, but will do for now.");
    }
    mesn l("Old Woman");
    mes l("Well I can tell you some useful things, if you want to hear.");
    mes l("Some of it might jog your memory or at least help you catch your bearings.");
    mes l("Oh, and by the way my name is Sorfina.\"");
    menu
        l("That would be great!"), L_Tut,
        l("No, thanks. I already know how things are going."), L_SkipTut;

L_Tut:
    clear;
    mesc l("She smiles at you.");
    mesn;
    mes "\"You have arrived at a very strange time. The Council is visiting Candor today.\"";
    mes "\"All the recent rumbling from the cave has all of Candor worried.\"";
    mes "\"Our guess is something with the last big shaker was the reason you ended up here.\"";
    mes "\"Ok, lets start by getting you dressed.\"";
    goto L_Carpet;

L_Carpet:
    mesn;
    mes "\"Try to take a few steps and walk to that carpet over there.";
    next;
    camera "#Carpet";
    mapmask getmask() | 4;
    next;
    camera;
    mes "Press [###keyMoveUp;] to move up, press [###keyMoveDown;] to move down, ";
    mes "press [###keyMoveLeft;] to move left, press [###keyMoveRight;] to move right ";
    mes " or click on the place you want to go to.\"";
    QL_BEGIN = 1;
    goto L_close;

L_Dresser:
    mesn;
    mes "\"You should get dressed now.\"";
    next;
    camera "Dresser#tutorial";
    mapmask getmask() | 32;
    mes "\"In that dresser there are some clothes you can wear.\"";
    mes "\"To interact with things in your environment or talk to NPCs you can either click on it or press [###keyTargetNPC;] to focus and [###keyTalk;] to talk/activate.\"";
    next;
    camera;
    mes "\"Now get the clothes out of the dresser.\"";
    goto L_close;

L_Naked:
    mesn;
    mes "\"Press [###keyWindowInventory;] or click on the Inventory button in the bar at the upper right corner to open your bag.\"";
    mes "\"Once we stop talking, double-click on the clothes to equip.\"";
    mes "\"Talk to me again after you get dressed. You can either click on me, or press [###keyTargetNPC;] to focus on me and [###keyTalk;] to talk.\"";
    goto L_close;

L_Clothes:
    if (getequipid(equip_torso) < 0)
        goto L_Naked;
    mesn;
    mes "\"That's much better, don't you think?\"";
    mes "\"Here take this.\"";
    getitem "HitchhikersTowel", 1;
    mes "\"Your HitchHikers Towel will return you to your last set soul menhir or here if not set.\"";
    mes "\"It can't be used constantly as the magic needs time to power the jump.\"";
    mes "\"I think this will help you a bit. To get more information, press the button Setup and look at the controls on the Keyboard tab. You can also change them as you like.";
    mes "Talk to me again if you want me to explain more things.\"";

    mes "\"Oh, and if you're looking for extra work, you should talk to Aidan and Valon when you go outside. They're giving rewards for monster hunting.";
    mes "You can find Aidan near the camp fire outside and Valon out by the fields in the east.\"";
    next;

    mes "She digs in her pocket for a moment.";
    mes "\"And here is some money for you. Don't spend it all in one place.";
    mes "Now go help Tanisha downstairs.\"";
    mapmask getmask() | 8;
    Zeny = Zeny + 30;
    QL_BEGIN = 4;
    goto L_close;

L_Again:
    mesn;
    mes "\"Make yourself at home! Do you have any questions?\"";
    menu
        "Yes, could you explain about...",L_Explain,
        "Could I get Healed?",L_Heal,
        "No, thanks.",L_close;

L_Heal:
    if (BaseLevel > 20)
        goto L_NoHeal;
    mesn;
    mes "\"Hello Dear! You look tired, you should rest a moment.\"";
    mes "You take a short nap and feel refreshed.";
    heal MaxHp, 0;
    goto L_Main;

L_NoHeal:
    mesn;
    mes "\"I'm sorry but your wounds are far to advanced for my skills.\"";
    goto L_Main;

L_Explain:
    menu
        "... walking?",L_Walk,
        "... talking?",L_Talk,
        "... the inventory and items?",L_Items,
        "... shortcuts?",L_Shortcut,
        "... what to do in Candor?",L_Aidan,
        "... change my appearence?",L_Barber,
        "... nevermind.",L_close;

L_Walk:
    mesn;
    mes "\"You can use the arrow keys to walk around.";
    mes "Press [###keyMoveUp;] to move up, press [###keyMoveDown;] to move down, ";
    mes "press [###keyMoveLeft;] to move left, press [###keyMoveRight;] to move right ";
    mes " or click on the place you want to go to.";
    mes "This only works if that place is reachable and walkable.\"";
    goto L_close;

L_Talk:
    mesn;
    mes "\"If you want to talk to a normal person, you can click at him or her.";
    mes "Or you can press [###keyTargetNPC;] to focus on the nearest person and then press [###keyTalk;] to talk.\"";
    next;
    mes "\"If you want to talk to other adventurers, press [###keyChat;] to open your chat window.";
    mes "Then type your message and press Enter to send.\"";
    next;
    mes "\"You may want to talk privately to another adventurer sometimes. In that case you can whisper.";
    mes "After pressing [###keyChat;] type '/whisper [name] [message]'.";
    mes "Or you can right click on someone and choose the whisper option.\"";
    next;
    mes "\"Press [###keyWindowChat;] to show and hide your chat window.\"";
    goto L_close;

L_Items:
    mesn;
    mes "\"There are three types of items.";
    mes "They can be Consumables, Equipment or Miscellaneous.\"";
    next;
    mes "\"Consumable items such as Potions, can be used only once.";
    mes "After use, they will disappear from your inventory.";
    mes "There are some rare items that can be used but don't get consumed.\"";
    next;
    mes "\"Equipment items like Armors, Weapons, Accessories can be equipped for fashionable purposes or to raise your status.\"";
    next;
    mes "\"Miscellaneous items such as maggot slime, can be used in creating other items, or just to trade and sell.\"";
    next;
    mes "\"Your HitchHikers Towel will return you to your last set soul menhir or here if not set.\"";
    mes "\"It can't be used constantly as the magic needs time to power the jump.\"";
    next;
    mes "\"Press [###keyWindowInventory;] to open your inventory.";
    mes "When placing your cursor over an item there, you can see a box with some information about that item.\"";
    next;
    mes "\"To use or equip an item, select it by double-clicking on it.";
    mes "Selecting the item then pressing Use or Equip also works.\"";
    goto L_close;

L_Shortcut:
    mesn;
    mes "\"Press [###keyWindowShortcut;] or click the Shortcut button in the bar at the upper right to open your shortcut window.\"";
    next;
    mes "\"You can select the item you want to put on a shortcut with your mouse and then click on the position in the shortcut window you want to place it.\"";
    next;
    mes "\"Now you can use or equip/unequip it by pressing the number of the shortcut.\"";
    goto L_close;

L_Aidan:
    mesn;
    mes "\"I heard Aidan and Valon are looking for brave adventurers, you might want to talk to them. ";
    mes "You can find Aidan near the camp fire outside. The fields are just south of the town exit. ";
    mes "You'll see Valon of the city gaurd standing there. They both are offering rewards for monster hunting.\"";
    next;
    mes "\"When you leave this area to the South, you'll come to the docks.";
    mes "They will take you to Hurnscald, a major trading port.\"";
    next;
    mes "\"Go east out of Candor and north. You will find the cave everyone is talking about to the north.";
    next;
    mes "Talk to everybody. You can never tell when they might know something useful.\"";
    goto L_close;

L_Barber:
    mesn;
    mes "\"Jessie downstairs can change your appearance.\"";
    mes "\"They will allow you to change your hair color or style as well as gender.\"";
    next;
    mes "\"There are a number of people across the continent that can change this for you.\"";
    mes "\"There is no cost or limit to the number of times it can be changed.\"";
    goto L_close;

L_Hasan:
    mesn;
    mes "\"Make yourself at home! Do you have any questions?\"";
        menu
            "A guy named Hasan is bullying people.",L_Next,
            "Yes, could you explain again about...",L_Explain,
            "No, thanks.",L_close;

L_Next:
    mes "\"Ah, Hasan. He's causing trouble again?\"";
    mes "She shakes her head.";
    mesn;
    mes "\"This guy has been a plague ever since he could walk. He's always causing trouble.\"";
    mes "\"And his father... Well, one day his father thought he should teach Hasan a lesson.\"";
    mes "\"He took him into the desert and then left him there!";
    mes "Hasan was only seven years old!\"";
    mes "\"I never understood how someone could do something like that to a child, even if it's a rascal like Hasan.\"";
    mes "\"Anyway, Hasan tried to find his way back home, but stumbled into a nest of scorpions!\"";
    mes "She shakes her head.";
    mes "\"If Valon hadn't have come along that moment, Hasan would have died that day.\"";
    mes "\"However, the scorpions poison caused a bad fever and once Hasan had recovered from that, he was even more malicious than before.\"";
    mes "She sighs.";
    QL_BEGIN = 11;
    goto L_close;

L_SkipTut:
    mesn;
    mes "\"Really? You seem quite unexperienced. Listening to some advice won't hurt.\"";
    menu
        "Thinking about it twice... please tell me.",L_Tut,
        "Yeah, but thanks for the offer. Bye.",L_Bye;

L_Bye:
    mesn;
    mes "\"Alright, if you say so. But take at least this. See you later.\"";
    getitem Knife, 1;
    getitem SlingShot, 1;
    getitem SlingBullet, 500;
    getitem HitchhikersTowel, 1;
    getitem CottonShirt, 1;
    getitem RaggedShorts, 1;
    set Zeny, Zeny + 35; // tanisha gives 5 Zeny
    QL_BEGIN = 8;
    equip(CottonShirt);
    equip(RaggedShorts);
    equip(Knife);
    close;

L_close:
    close;

OnTouch:
    if (QL_BEGIN > 0)
        end;
    goto L_Start;
}

029-2,33,27,0	script	#Carpet	NPC127,1,1,{
    if (QL_BEGIN != 1)
        end;
    mapmask getmask();
    mesn l("Sorfina");
    mesq l("You should get dressed now.");
    next;
    camera "Dresser#tutorial";
    mapmask getmask() | 16;
    mesq l("In that dresser there are some clothes you can wear.");
    mesc l("To interact with things in your environment or talk to NPCs you can either click on it or press N to focus and T to talk/activate.");
    next;
    camera;
    mesq l("Now get the clothes out of the dresser.");
    QL_BEGIN = 2;
    close;
}

029-2,29,23,0	script	Dresser#tutorial	NPC400,{
    if (QL_BEGIN > 2) goto L_Empty;
    if (QL_BEGIN == 2) goto L_Shirt;
    goto L_Walk;

L_Walk:
    mesn l("Sorfina");
    mesq l("Thats not what I said to do. Please don't skip ahead.");
    close;

L_Shirt:
    mapmask getmask();
    mesc l("You take a simple Cotton Shirt and some very worn-out Ragged Shorts out of the dresser.");
    getitem CottonShirt, 1;
    getitem RaggedShorts, 1;
    QL_BEGIN = 3;
    mesn l("Sorfina");
    mesq l("Great! Now you can equip it.");
    mesc l("You can open your inventory by pressing F3 or clicking on the 'Inventory' button in the bar at the upper right corner.");
    next;
    mesq l("After we finish talking, click on the clothes and press the equip button.");
    close;

L_Empty:
    mes l("The dresser is empty.");
    close;

OnInit:
    .distance=1;
    end;
}

029-2,44,31,0	script	#DoorOutTut1	NPC45,0,0,{
    if (QL_BEGIN < 4)
        goto L_Block;
    mapmask getmask();
    warp "029-2", 112, 85;
    end;

L_Block:
    message strcharinfo(0), "Sorfina : ##BWait a moment! ##bYou're not ready to leave.";
    // FIXME: this should be changed to npctalk with strcharinfo(0) once we increase the view area
    end;
}
029-2,23,24,0	script	#GameRules1	NPC32767,0,1,{
    if (TUT_var > 0)
        end;
    mes "[Server/Client Notice]";
    mesc l("The explanations in this tutorial are based on the Manaplus client.");
    mesc l("If you're using another client, settings and controls may be different.");
    callfunc "GameRules";
    close;
}
029-2,21,24,0	script	#GameRules2	NPC32767,0,1,{
    if (TUT_var > 0)
        end;
    mes "[Server/Client Notice]";
    mesc l("The explanations in this tutorial are based on the Manaplus client.");
    mesc l("If you're using another client, settings and controls may be different.");
    callfunc "GameRules";
    close;
}
029-2,22,26,0	script	#GameRules3	NPC32767,1,0,{
    if (TUT_var == 0)
        goto L_KnockBack;
    end;

L_KnockBack:
    message strcharinfo(0), "Server : ##BPlease Accept the Game rules";
    warp "029-2", 22, 24;
    end;
}
029-2,24,24,0	script	#GameRules4	NPC32767,0,1,{
    if (TUT_var == 0)
        goto L_KnockBack;
    end;

L_KnockBack:
    message strcharinfo(0), "Server : ##BPlease Accept the Game rules";
    warp "029-2", 22, 24;
    end;
}