diff options
Diffstat (limited to 'npc/001-2-19/lloyd.txt')
-rw-r--r-- | npc/001-2-19/lloyd.txt | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/npc/001-2-19/lloyd.txt b/npc/001-2-19/lloyd.txt new file mode 100644 index 000000000..9a0b2f37c --- /dev/null +++ b/npc/001-2-19/lloyd.txt @@ -0,0 +1,244 @@ +// Evol scripts. +// Authors: +// gumi +// Reid +// Description: +// Lloyd the banker NPC. +// Variables: +// 0 ArtisQuests_Lloyd +// 1 ArtisQuests_Fexil +// 2 ArtisQuests_Enora +// Quest states: +// 00 -- Never talked +// 01 -- Registred on the Guild +// 10 -- not started +// 11 -- Lloyd warned about the quest +// 20 -- Default. +// 21 -- BlackSmith quest delivered. +// 22 -- Chelios Quest given. +// 23 -- Chelios Quest done. + +001-2-19,31,25,0 script Lloyd the Banker NPC_LLOYD,{ + + function enora_quest { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Black iron... That is a very specific request that you have for me!"), + l("Let me check in my inventory book..."), + l("..."), + l("Yes, I have some! \"5x Black Iron Ingots\""), + lg("Is this for you or somebody else? Because you need to be registered to obtain these materials."); + + switch (selectd(ArtisQuests_Enora, + l("This is for my own use."), + l("Chelios asked me to get it."))) + { + case 1: + speech S_FIRST_BLANK_LINE, + l("This is your first time asking for something, you won't pay this time, take it as a sign of good faith!"), + l("If you need something in the future, do not hesitate to pass by here, our stock is full of boxes collecting dust."); + emotion E_WINK; + break; + case 2: + speech S_FIRST_BLANK_LINE, + l("Chelios... He is part of the Blacksmith House, is he not?"), + l("Since Don settled in Artis he and his band refused to register to the Merchant Guild."), + l("I will close an eye for once, but only because it's your first time asking for something!"), + l("Sometimes a good merchant needs to reach out first. It's on the house, give Chelios my regards!"); + emotion E_WINK; + break; + } + setq ArtisQuests_Enora, 3; + + return; + } + + function explain_guild { + speech S_LAST_NEXT, + l("The guild is in charge of the commerce regularization throughout Artis and its surroundings."), + l("With the help of the town hall and the Legion of Aemil we organize some auction and we help local merchants to launch their businesses."), + l("We also feature some services like a storage and a bank for members."), + l("Registration is open to everybody, but newcomers need to pay a fee for all of the paperwork."); + + narrator S_FIRST_BLANK_LINE, + l("The bank and item storage is shared between all characters within a same account."), + l("With it, you can safely move items and funds between your characters."), + l("To move between characters that are on different accounts, you have to use the Trade function."); + return; + } + + function first_visit { + speech S_LAST_NEXT, + l("Welcome!"), + l("My name is Lloyd, I am a representative of the Merchant Guild of Artis."); + + selectd(l("My name is @@...", strcharinfo(0))); + + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("\"@@\", I like this name!", strcharinfo(0)), + l("Oh, wait a second..."); + narrator S_LAST_NEXT, + l("Lloyd is searching something in his book."); + speech S_LAST_NEXT, + l("I see."), + lg("You are new around here, right?"); + + if (selectd(l("How do you know?"), l("Yes I am.")) == 1) + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Oh, it is simple. I have on this book the names of every citizen of Artis and its surroundings."), + l("And I have no mention of a so called \"@@\" on it!", strcharinfo(0)); + } + else + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("I knew it!"); + } + + speech S_LAST_NEXT, + l("Let me explain to you what the Merchant Guild is for."); + + explain_guild; + next; + + .@price = 500; + speech S_LAST_NEXT, + l("The fee is of @@ E. So, do you want to register?", .@price); + + switch (selectd(l("Yes."), + l("I don't have the time now."))) + { + case 1: + if (Zeny < .@price) + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("You do not seem to have enough money, come back later!"); + } + else + { + Zeny = Zeny - .@price; + setq ArtisQuests_Lloyd, 1; + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Perfect!"), + l("I wrote your name on the book, you are now free to use the storage and bank services."); + } + break; + case 2: + break; + } + + return; + } + + function paper_to_deliver { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Now that you bring up that topic, that reminds me of something..."), + l("Earlier today there was this young seller named Fexil that passed by here."), + l("He asked to lend some money and a place to open his store, I think that he asked for a place on the merchant squares on the south-west of the city..."), + l("Anyway, he forgot his permit when he left the building."), + l("Could you bring it to him?"); + + do + { + .@q = selectd(ArtisQuests_Fexil, + l("Ok, I will bring it to him."), + l("I need more information first."), + l("I don't have the time.")); + switch (.@q) + { + case 1: + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Thank you for this!"); + setq ArtisQuests_Fexil, 1; + break; + case 2: + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("You should look for a seller named Fexil around the merchant square."), + l("Ask other merchants, they might know where he is."); + break; + case 3: + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("No problem, come back later if you changed your mind!"); + break; + } + } while (.@q == 2); + } + + if (getq(ArtisQuests_Lloyd) == 0) + { + first_visit; + + closedialog; + goodbye; + close; + } + + speech S_LAST_NEXT, + l("Welcome to the Merchant Guild of Artis!"), + l("What do you want today?"); + + do + { + .@enora = getq(ArtisQuests_Enora); + + selectd + rif(.@enora == 2, l("I'm looking for some black iron ingots.")), + l("I would like to store some items."), + l("I would like to perform money transactions."), + l("What is this guild for?"), + l("Does the guild has any work for me right now?"), + l("Bye."); + + switch (@menu) + { + case 1: + enora_quest; + break; + case 2: + openstorage; + closedialog; + close; + break; + case 3: + MerchantGuild_Bank; + break; + case 4: + mes ""; + explain_guild; + break; + case 5: + if (getq(ArtisQuests_Fexil) >= 1) + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("There are no tasks for you right now."); + continue; + } + + paper_to_deliver; + + continue; + } + if (@menu != 6) + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT | S_NO_NPC_NAME, + l("Something else?"); + } + } while (@menu != 6); + + closedialog; + goodbye; + close; + +OnInit: + .quest_debug = ArtisQuests_Lloyd; + .sex = G_MALE; + .distance = 4; + end; + +OnPCLoginEvent: + if (#MerchantBank) + { + BankVault += max(0, #MerchantBank); + #MerchantBank = 0; + } + end; +} |