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.\""); 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..."); 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: 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; }