summaryrefslogblamecommitdiff
path: root/world/map/npc/021-2/kylian.txt
blob: 49d2d78b0a4689d74ec8dea6201c5eaca04b2dbc (plain) (tree)

































                                                                                                      

                                 

        











                                              

                                              





                                

                                    















                                                                                         



                                                                             















                                                                


                              





                                                                                                         
 

                   

                                                                                                                         









                                                             
                                 
                                              

           












                                                                                                                      
                                                                                                                                              

                                   

                       

                             
                                                                                                                                                                                                                       


                                                
                                                                           
                                          

           








                                                                                                 

                       




                                                                                       
                                                                                           
                   
                                                                                                                                                                                                                                               


                                                  
                                                                               
                                                             

            




                                        
                                                               

                                                            

                


                                                                                                                                                 
                                                                 

                     
                                                              
                                                 

          




                                 

                           




                                                                                                                                             
                                                                                      






                                                                                                                                                
                                               
                              

              




                                   
                                                                                                

                                                

                   





                                                                                                                                                   
                                                                     
                                    

                 



















                                                                                             
                     
                                                                                        
                                                                            




                           
                
 





























                                                                                                                                             
                                
                    







                                                                                                                   
// 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,
{
    end;

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!",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 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.",L_Continue,
        "I'm on my way, don't worry.",L_Close;

L_Continue:
    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;
    goto L_ShopLicense;

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.",L_GovBuild,
        "I'll see what I can do.",L_Close;

L_GovBuild:
    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;
    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.\"";
    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.",L_HistBuild,
        "I don't know, but will have a look around.",L_Close;

L_HistBuild:
    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;
    goto L_Food;

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.",L_SoupBer,
        "No idea, I'll try to find out.",L_Close;

L_SoupBer:
    set Zeny, Zeny + @food_money;
    getexp @food_exp, 0;
    set @state, 6;
    callsub S_Update_Mask;
    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 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!",L_CasinoFound,
        "Not really.",L_Close;

L_CasineFound:
    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;
    goto L_Clothes;

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...",L_HarborDistrict,
        "Mh, I don't know.",L_Close;

L_HarborDistrict:
    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;
    goto L_Done;

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;
}