// 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: To be continued here // 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|-1, { OnInit: // Nibble 4 set $@knowYanisNT, 0x10000; set $@knowLatoyNT, 0x20000; set $@knowWeellosNT, 0x40000; set $@knowCasinoNT, 0x80000; set $@businessmanNT_MASK, NIBBLE_5_MASK; set $@businessmanNT_SHIFT, NIBBLE_5_SHIFT; end; } 021-2.gat,25,67,0|script|#KylianOut|32767,1,1, { set @KylianNTLicense, 0; set @KylianNTSightSeeing, 0; set @KylianNTCasino, 0; end; } 021-2.gat,32,92,0|script|Kylian|193, { set @state, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT); 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; // This NPC previously used the variable TMW_Quest callfunc "ClearVarTMW_Quest"; set @bernard, ((QUEST_SouthTulimshar & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT); if (@state == 9) goto L_Done; if (@KylianNTCasino) goto L_CasinoDone; if (@state == 8) goto L_DesertHat; if (@state == 7) goto L_Clothes; if (@KylianNTSightSeeing) goto L_SightSeeingDone; if (@state == 6) goto L_Casino; if (@state == 5) goto L_Food; if (@KylianNTLicense) goto L_LicenseDone; if (@state == 4) goto L_SightSeeing; if (@state == 3) goto L_ShopLicense; if (@state >= 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!",-; 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 errands.",L_Close, "No, I'm busy.",L_Close, "Mh, ok.",L_Luggage; L_Luggage: mes "[Kylian]"; mes "\"I need someone to get my luggage from the docks. Show this paper to the sailor who's watching the luggage.\""; mes "He gives you his ticket which you store in your pocket, separated from your inventory."; set @state, 1; callsub S_Update_Mask; goto L_Close; L_Suitcase: // @state >= 1, but below 3 mes "[Kylian]"; mes "\"Did you already get my luggage from the docks?\""; if (@state != 2) goto L_Close; menu "Here it is.",-, "I'm on my way, don't worry.",L_Close; if (countitem("LeatherSuitcase") < 1) goto L_NoItem; delitem "LeatherSuitcase", 1; set Zeny, Zeny + @suitcase_money; getexp @suitcase_exp, 0; set @state, 3; callsub S_Update_Mask; mes "[Kylian]"; mes "\"Ah, very good. I really need to have a look at some of my papers in there.\""; mes "He gives you some money."; next; mes "[Kylian]"; mes "\"Oh, and I have some acorns left, I had them with me as travelling fare. You can have them, they're tasty."; mes "In case you don't like them, you could also bring them to the Tulimshar bakery. I heard they use them to make some special flour.\""; getitem "Acorn", @acorn_amount; next; L_ShopLicense: // @state == 3 mes "[Kylian]"; mes "\"I'm a salesman and came to Tulimshar because I'm thinking about establishing a shop here. While I'm going through my papers, could you find out who I have to talk to about opening a shop in this city?\""; if (!(QUEST_NorthTulimshar & $@knowYanisNT)) goto L_Close; menu "You need to talk to Yanis in the government building.",-, "I'll see what I can do.",L_Close; set Zeny, Zeny + @license_money; getexp @license_exp, 0; set @state, 4; callsub S_Update_Mask; set @KylianNTLicense, 1; mes "[Kylian]"; mes "\"Ah, excellent. That's very helpful. Could you tell me how to get to that building?\""; mes "You explain the way to the building."; next; 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.\""; goto L_Close; L_SightSeeing: // @state == 4 and logged out sometime between getting to that state and now mes "[Kylian]"; mes "\"You just came here the right moment. I have finished my business affairs. I think I should use my time here to also get a bit of cultural knowledge about the area. Can you tell me if there are any historical places to visit?\""; if (!(QUEST_NorthTulimshar & $@knowWeellosNT)) goto L_Close; menu "There is a very old historic building not far from here.",-, "I don't know, but will have a look around.",L_Close; set Zeny, Zeny + @sightseeing_money; getexp @sightseeing_exp, 0; set @state, 5; callsub S_Update_Mask; mes "[Kylian]"; mes "\"This sounds interesting. Please tell me the way.\""; mes "You tell him how to get to the historic building."; next; L_Food: // @state == 5 mes "[Kylian]"; mes "\"While I'm out, I could also get something to eat. Maybe some typical dish for this region. Do you have a good suggestion for that?\""; if (@bernard < 4) // didn't yet help Bernard to make his soup goto L_Close; menu "Bernard on the bazaar makes a great soup.",-, "No idea, I'll try to find out.",L_Close; set Zeny, Zeny + @food_money; getexp @food_exp, 0; set @state, 6; callsub S_Update_Mask; set @KylianNTSightSeeing, 1; L_SightSeeingDone: mes "[Kylian]"; mes "\"I'm going to see the historic building you told me about and try this local soup on the bazaar. Thank you for the suggestions.\""; goto L_Close; L_Casino: // @state == 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 soup from Bernard really was delicious. I wonder what it's made of...\""; next; mes "\"However, I was wondering if you know about a good place to spend the evening? Some place to have fun?\""; if (!(QUEST_NorthTulimshar & $@knowCasinoNT)) goto L_Close; menu "Of course! The casino!",-, "Not really.",L_Close; set Zeny, Zeny + @casino_money; getexp @casino_exp, 0; set @state, 7; callsub S_Update_Mask; mes "[Kylian]"; mes "\"Oh, there's a casino in this city? That's a wonderful thing. Where can I find it?\""; mes "You explain how to get to the casino."; next; L_Clothes: // @state == 7 mes "[Kylian]"; mes "\"I should get proper clothing before I go to the casino tonight. Do you know a reputable shop where clothing of high quality is sold?\""; if (!(QUEST_NorthTulimshar & $@knowLatoyNT)) goto L_Close; menu "At the market near the harbor district...",-, "Mh, I don't know.",L_Close; set Zeny, Zeny + @clothes_money; getexp @clothes_exp, 0; set @state, 8; callsub S_Update_Mask; set @KylianNTCasino, 1; mes "You explain about Latoy and his high quality shop."; 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.\""; goto L_Close; L_DesertHat: // @state == 8 mes "Kylian looks a bit tired."; mes "[Kylian]"; mes "\"That was an interesting night. Thanks for your suggestion to visit the casino.\""; next; getinventorylist; mes "\"You helped me a lot, so I bought a souvenir for you while I was shopping.\""; if ((checkweight("DesertHat", 1) == 0) || (@inventorylist_count == 100)) goto L_Inventory; getitem "DesertHat", 1; set @state, 9; callsub S_Update_Mask; next; L_Done: mes "[Kylian]"; mes "\"I hope to get a positive response about my shop license soon. I might have more things to do for you then, if you're interested."; mes "Just stop by later.\""; goto L_Close; L_Inventory: mes "[Kylian]"; mes "\"Oh, you're carrying a lot of things. 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 is not 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; set @bernard, 0; // NOT set to zero: @KylianNTLicense, @KylianNTSightSeeing and @KylianNTCasino // those are used to check if the player logged out in the meanwhile close; S_Update_Mask: set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~($@businessmanNT_MASK)) | (@state << $@businessmanNT_SHIFT); return; }