// Kylian is a businessman from Argeas who wants to eventually open a shop in Tulimshar // asks the player for several information about the city // Quest uses Nibble 4 and 5 of QUEST_NorthTulimshar // Author: Jenalya // Nibble 4 is used as flags to indicate if the player knows certain places/persons // Bit 0: player talked to Yanis in the government building // Bit 1: player talked to Latoy on the market in North Tulimshar // Bit 2: player talked to Weellos as the historic building // Bit 3: player was in the casino rooms // Nibble 5 is used to save the quest progress with Kylian // state 1: player has the task to get the luggage from the harbor // state 2: Adrian gave the luggage to the player // state 3: player gave luggage to Kylian and Kylian asks who to talk to for the shop license // after the player answered this, @KylianNTLicense is set. // the player can only continue the quest when logging out and therefore setting that value to 0 again // state 4: Kylian asks for a historical building to get some cultural knowledge // state 5: Kylian asks where to get some typical food // after the player answered this, @KylianNTSightSeeing is set. // the player can only continue the quest when logging out and therefore setting that value to 0 again // state 6: Kylian asks where to go to have some fun in the evening (casino) // state 7: Kylian asks where to get exquisite clothing before going out in the evening // after the player answered this, @KylianNTSightSeeing is set. // the player can only continue the quest when logging out and therefore setting that value to 0 again // state 8: Kylian was in the casino and gives a desert hat as reward // state 9: Shop approved, go talk Kylian's shopkeeper if you are looking for work. // state 10: Meet Shop keeper // state 11: Start Time Trial // state 12: Return // state 13: Start Daily Timed // state 14: Return // state 15: Completed // Kylian_Timer is used to denote start time. // temporary variables used to check if the player logged out or left the building in the meanwhile // this is to ensure some 'time in between' different actions of the quest // @KylianNTLicense // @KylianNTSightSeeing // @KylianNTCasino -|script|#businessmanNTconfig|32767 { end; OnInit: // Nibble 4 // Used in Random Quest later as a Nibble set $@knowYanisNT, (1 << 16); set $@knowLatoyNT, (1 << 17); set $@knowWeellosNT, (1 << 18); set $@knowCasinoNT, (1 << 19); // Random Quests for Later setarray $@random_quests$, "None", "Falkurn", "Old Wizard", "Baktar"; set $@delivery_money, 100; set $@delivery_exp_mod, 10; end; } 002-2,44,107,0|script|#KylianOut|32767,1,1 { set @KylianNTLicense, 0; set @KylianNTSightSeeing, 0; set @KylianNTCasino, 0; end; } 002-2,43,101,0|script|Kylian|193 { set @acorn_amount, 12; set @suitcase_money, 100; set @suitcase_exp, 50; set @license_money, 50; set @license_exp, 20; set @sightseeing_money, 50; set @sightseeing_exp, 20; set @food_money, 50; set @food_exp, 20; set @clothes_money, 50; set @clothes_exp, 20; set @fun_money, 50; set @fun_exp, 20; if (QL_KYLIAN == 15) goto L_Done; if (QL_KYLIAN >= 11) goto L_Helping; if (QL_KYLIAN == 10) goto L_OfferedJob; if (QL_KYLIAN == 9) goto L_Shop; if (@KylianNTCasino) goto L_CasinoDone; if (QL_KYLIAN == 8) goto L_DesertHat; if (QL_KYLIAN == 7) goto L_Clothes; if (@KylianNTSightSeeing) goto L_SightSeeingDone; if (QL_KYLIAN == 6) goto L_Casino; if (QL_KYLIAN == 5) goto L_Food; if (@KylianNTLicense) goto L_LicenseDone; if (QL_KYLIAN == 4) goto L_SightSeeing; if (QL_KYLIAN == 3) goto L_ShopLicense; if (QL_KYLIAN >= 1) goto L_Suitcase; mes "[Kylian]"; mes "\"Ah! Are you the room service? I've some requests.\""; menu "Sure... What can I do for you?",L_Luggage, "No I'm not!",L_Next; L_Next: mes "[Kylian]"; mes "\"Too bad. Would you be interested in earning some quick money with some errands regardless?\""; menu "I'm a great adventurer! I don't do petty errands.",L_Close, "No. I'm busy.",L_Close, "Well... OK.",L_Luggage; L_Luggage: mes "[Kylian]"; mes "\"I need you to get my luggage from the docks. Just show this paper to the sailor who's watching the luggage.\""; mes "He gives you his ticket, which you promptly store in a safe pocket outside of your inventory."; set QL_KYLIAN, 1; goto L_Close; L_Suitcase: // QL_KYLIAN >= 1, but below 3 mes "[Kylian]"; mes "\"Did you get my luggage from the docks?\""; if (QL_KYLIAN != 2) goto L_Close; menu "Here it is.",L_Continue, "Don't worry; I'm on my way.",L_Close; L_Continue: if (countitem("LeatherSuitcase") < 1) goto L_NoItem; delitem "LeatherSuitcase", 1; set Zeny, Zeny + @suitcase_money; getitem "Acorn", @acorn_amount; getexp @suitcase_exp, 0; set QL_KYLIAN, 3; next; mes "[Kylian]"; mes "\"Ah! Very good. I have some urgent paperwork that I've been needing to attend to.\""; mes "He gives you some money."; next; mes "[Kylian]"; mes "\"Before you go, I also happen to have some acorns left over from my trip.\""; mes "\"You can have them if you wish; they're rather tasty.\""; mes "If, however, you don't like them, you could take them to the Tulimshar bakery. I heard they use them to make a special kind of flour.\""; next; goto L_ShopLicense; L_ShopLicense: // QL_KYLIAN == 3 mes "[Kylian]"; mes "\"I'm a salesman and came to Tulimshar because I'm thinking about establishing a shop here.\""; mes "\"While I'm going through my papers, could you find out whom I have to talk to about opening up a shop in this city?\""; if (!(QUEST_NorthTulimshar & $@knowYanisNT)) goto L_Close; menu "You need to go and talk to Yanis in the government building.",L_GovBuild, "I'll see what I can do.",L_Close; L_GovBuild: set Zeny, Zeny + @license_money; getexp @license_exp, 0; set QL_KYLIAN, 4; set @KylianNTLicense, 1; mes "[Kylian]"; mes "\"Ah... excellent! That's very helpful. Could you tell me how to get to that building?\""; mes "You give him directions to the building."; next; goto L_LicenseDone; L_LicenseDone: // the player didn't log out yet after telling about Yanis mes "[Kylian]"; mes "\"I need to prepare my papers now. I might have some more questions later on though.\""; goto L_Close; L_SightSeeing: // QL_KYLIAN == 4 and logged out sometime between getting to that state and now mes "[Kylian]"; mes "\"You came here at just the right moment! I have finished my business affairs, and I think I should use my time here to learn a bit about the culture in the area. Can you tell me if there are any historical places or landmarks to visit?\""; if (!(QUEST_NorthTulimshar & $@knowWeellosNT)) goto L_Close; menu "There's a very old building not far from here.",L_HistBuild, "I don't know, but I'll have a look around.",L_Close; L_HistBuild: set Zeny, Zeny + @sightseeing_money; getexp @sightseeing_exp, 0; set QL_KYLIAN, 5; mes "[Kylian]"; mes "\"This sounds interesting. Please tell me the way.\""; mes "You tell him how to get to the historic building."; next; goto L_Food; L_Food: // QL_KYLIAN == 5 mes "[Kylian]"; mes "\"While I'm out, I could also get something to eat. Do you have any suggestions for local cuisine?\""; if (QL_FIERI < 4) // didn't yet help Fieri make Tonori Delight goto L_Close; menu "A man named Fieri makes a tasty Tonori Delight over at the castle.",L_SoupBer, "No idea. I'll try to find out.",L_Close; L_SoupBer: set Zeny, Zeny + @food_money; getexp @food_exp, 0; set QL_KYLIAN, 6; set @KylianNTSightSeeing, 1; goto L_SightSeeingDone; L_SightSeeingDone: mes "[Kylian]"; mes "\"I'm going to see the historic building you told me about and try the local food at the castle. Thank you for the suggestions.\""; goto L_Close; L_Casino: // QL_KYLIAN == 6 and logged out sometime between getting to that state and now mes "[Kylian]"; mes "\"Hello. I just came back from my sight-seeing tour, and this Tonori Delight really was delicious. I wonder what it's made of...\""; next; mes "\"However, I was wondering if you know about some evening attractions. Maybe somewhere to have fun?\""; if (!(QUEST_NorthTulimshar & $@knowCasinoNT)) goto L_Close; menu "Of course! The casino!",L_CasinoFound, "Not really.",L_Close; L_CasinoFound: set Zeny, Zeny + @casino_money; getexp @casino_exp, 0; set QL_KYLIAN, 7; mes "[Kylian]"; mes "\"Oh! There's a casino in this city? That's wonderful! Where can I find it?\""; mes "You explain how to get to the casino."; next; goto L_Clothes; L_Clothes: // QL_KYLIAN == 7 mes "[Kylian]"; mes "\"I should acquire proper clothing before I go to the casino tonight. Do you know a reputable shop where high-quality clothing is sold?\""; if (!(QUEST_NorthTulimshar & $@knowLatoyNT)) goto L_Close; menu "Latoy's shop. It's on the west side of Tulimshar.",L_HarborDistrict, "Hmmm... I don't know.",L_Close; L_HarborDistrict: set Zeny, Zeny + @clothes_money; getexp @clothes_exp, 0; set QL_KYLIAN, 8; set @KylianNTCasino, 1; mes "You explain about Latoy and the quality of his shop."; next; mes "[Kylian]"; mes "\"This seems to be exactly what I need. Thanks a lot.\""; goto L_Close; L_CasinoDone: mes "[Kylian]"; mes "\"I'm looking forward to going to the casino tonight. See me tomorrow, and I might have more requests.\""; goto L_Close; L_DesertHat: // QL_KYLIAN == 8 mes "Kylian looks a bit tired."; next; mes "[Kylian]"; mes "\"That was an interesting night. Thanks for your suggestion to visit the casino.\""; next; getinventorylist; mes "\"You helped me out a lot, so I bought a souvenir for you while I was out shopping.\""; if ((checkweight("DesertHat", 1) == 0) || (@inventorylist_count == 100)) goto L_Inventory; getitem "DesertHat", 1; set QL_KYLIAN, 9; next; goto L_Close; L_Shop: mes "[Kylian]"; mes "\"The Council of Wizards approved my shop license!\""; mes "\"I purchased a store just across the way from the inn.\""; next; mes "\"If you are looking for work, go see the shop keeper I have working for me there.\""; mes "\"Mention your name, and he will know I sent you.\""; set QL_KYLIAN, 10; goto L_Close; L_OfferedJob: mes "[Kylian]"; mes "\"I spoke with the shopkeeper, and he said you haven't stopped in yet.\""; next; mes "\"I wish you would consider working for me.\""; next; mes "\"KPS needs a determined, experienced adventurer like you.\""; goto L_Close; L_Helping: mes "[Kylian]"; mes "\"I've heard you decided to come work for me. That's great news!\""; mes "\"Keep up the good work, and I might have something a little extra for you.\""; goto L_Close; L_Done: mes "[Kylian]"; mes "\"Thanks a bunch, business is booming!\""; mes "\"Please, take this for all your hard work.\""; next; set Zeny, Zeny + $@delivery_money; getexp ($@delivery_exp_mod * BaseLevel), 0; set @run_cnt, 0; callfunc "SetKylianRunCnt"; set QL_KYLIAN, 12; mes "[" + $@delivery_money + " money]"; mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]"; next; goto L_Close; L_Inventory: mes "[Kylian]"; mes "\"Oh my. You're carrying quite a lot. Come back when you have more room.\""; goto L_Close; L_NoItem: mes "[Kylian]"; mes "\"I don't see it! Are you trying to tease me? This isn't funny!\""; goto L_Close; L_Close: set @acorn_amount, 0; set @suitcase_money, 0; set @suitcase_exp, 0; set @license_money, 0; set @license_exp, 0; set @sightseeing_money, 0; set @sightseeing_exp, 0; set @food_money, 0; set @food_exp, 0; set @clothes_money, 0; set @clothes_exp, 0; set @fun_money, 0; set @fun_exp, 0; set @inventorylist_count, 0; // NOT set to zero: @KylianNTLicense, @KylianNTSightSeeing and @KylianNTCasino // those are used to check if the player logged out in the meanwhile close; } function|script|KylianDebug { set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT); set @run_cnt, ((QUEST_NorthTulimshar & TWOBIT_9_MASK) >> TWOBIT_9_SHIFT); goto L_Menu; L_Menu: mes "[Kylian Debug]"; menu "Show Quest State", L_ShowState, "Set Quest State", L_SetState, "Reset Timer to Now", L_WorkTimer, "Reset Timer + 24 Hours", L_MoreWorkTimer, "Close.", L_Close; L_ShowState: mes "State: " + QL_KYLIAN; mes "Timer: " + Kylian_Timer; mes "Time: " + gettimetick(2); mes "Elapsed Time: " + (gettimetick(2) - Kylian_Timer); mes "Reset Timer: 86400 > " + (gettimetick(2) - Kylian_Timer); mes "Run: " + @run; mes "Run NPC: " + $@random_quests$[@run]; mes "Run Count: " + @run_cnt; goto L_Menu; L_SetState: mes "\"Input the quest state desired.\""; input QL_KYLIAN; goto L_Menu; L_WorkTimer: set Kylian_Timer, gettimetick(2); goto L_Menu; L_MoreWorkTimer: set Kylian_Timer, (gettimetick(2) - 86401); goto L_Menu; L_Close: return; } 002-2,40,101,0|script|KylianDebug#1|193 { callfunc "KylianDebug"; close; OnInit: if (!debug) disablenpc "KylianDebug#1"; end; } 002-2,118,89,0|script|KylianDebug#2|193 { callfunc "KylianDebug"; close; OnInit: if (!debug) disablenpc "KylianDebug#2"; end; }