summaryrefslogblamecommitdiff
path: root/world/map/npc/002-2/kps.txt
blob: 73b40466a598d76a90951e35b0f8221ecd23066a (plain) (tree)
1
2
3
4
5
6
7





                                                                                          
                                     



















                                                                             

                                                                                                                  
         


                                                                                                                    



                        
                                               
        
                                                       




                              
                                                        









































                                                                                 
                                                                                  
        

                                    










                                     
                                                                          

















                                                                             
                                                                











                                                                       
                                                                                  








                                                                       
                                                                                            



                         

                                                                          




                 
                            



                                                                                                   
                               



                                                                                                       
// KPS (Killian Parcel Service)
// Author: Wushin
// Kylian_Timer denotes current quest time & holds last completed.
// reuse the 4 bits
// To Mark 4 Different NPCs.
// setarray $@kps_npc_bits, $@knowYanisNT, $@knowLatoyNT, $@knowWeellosNT, $@knowCasinoNT;
002-2,120,89,0|script|KPS Manager|191
{
    set @state, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT);
    set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT);
    set @run_cnt, ((QUEST_NorthTulimshar & TWOBIT_9_MASK) >> TWOBIT_9_SHIFT);
    if (@state == 15)
        goto L_SeeKylian;
    if (@state == 14)
        goto L_RunComplete;
    if (@state == 13)
        goto L_RunStarted;
    if (@state == 12) 
        goto L_JobSelect;
    if (@state == 11)
        goto L_AcceptJob;
    if (@state == 10)
        goto L_OfferJob;
    goto L_Default;

L_Default:
    mes "[KPS Manager]";
    mes "\"A rich salesman named Kylian bought this shop recently.\"";
    mes "\"I'm waiting for him to give the go-ahead on opening it up, but I haven't heard from him in a while.\"";
    next;
    mes "\"I wonder if he needs any help...\"";
    next;
    mes "\"If you could go over and check on him in the inn while I tend to the store, I'd really appreciate it.\"";
    goto L_Close;

L_OfferJob:
    mes "[KPS Manager]";
    mes "\"Hello! How can I help you today?\"";
    menu
        "My name is " + strcharinfo(0) + ".", L_MyName,
        "Nothing.", L_Close;

L_MyName:
    set @state, 11;
    callfunc "SetKylianQuest";
    mes "\"Ah. Kylian said you would be dropping by.\"";
    next;
    mes "\"I assume you are looking for some work?\"";
    menu
        "Yes.", L_StartJob,
        "No.", L_Close;

L_AcceptJob:
    mes "[KPS Manager]";
    mes "\"Interested in some work?\"";
    menu
        "Yes.", L_StartJob,
        "No.", L_Close;

L_StartJob:
    set @run, 0;
    callfunc "SetKylianRun";
    set @run_cnt, 0;
    callfunc "SetKylianRunCnt";
    set @state, 12;
    callfunc "SetKylianQuest";
    goto L_JobSelect;

L_StartJobAgain:
    set @run, 0;
    callfunc "SetKylianRun";
    set @state, 12;
    callfunc "SetKylianQuest";
    goto L_JobSelect;

L_JobSelect:
    if ((gettimetick(2) - Kylian_Timer) < 86400)
        goto L_NoPackages;
    mes "[KPS Manager]";
    mes "\"We have a number of deliveries that need to go all over the world.\"";
    next;
    goto L_RandJob;

L_RandJob:
    set @rand_quest, rand(1,3);
    goto L_JobInfo;

L_JobInfo:
    mes "\"We have a delivery for ##B" + $@random_quests$[@rand_quest] + "##b.\"";
    menu
        "I'll take it.", L_StartRun,
        "Anything else?", L_RandJob,
        "I need a break.", L_Close;

L_StartRun:
    set @state, 13;
    callfunc "SetKylianQuest";
    set @run, @rand_quest;
    callfunc "SetKylianRun";
    set Kylian_Timer, gettimetick(2);
    goto L_Close;

L_RunStarted:
    mes "Deliver this package to ##B" + $@random_quests$[@run] + "##b.\"";
    goto L_Close;

L_RunComplete:
    set @elapsed_time, (gettimetick(2) - Kylian_Timer);
    if (@elapsed_time > 600)
        goto L_Failed;
    set @run_cnt, (@run_cnt + 1);
    callfunc "SetKylianRunCnt";
    // Set Kylian wants to see you reward state
    if (@run_cnt > 3)
        goto L_KylianReward;
    goto L_RunAgain;

L_SeeKylian:
    mes "\"You need to go see Kylian before I can give you any more work.\"";
    goto L_Close;

L_Failed:
    mes "\"If you're faster next time, you can earn a bonus.\"";
    next;
    goto L_RunAgain;

L_KylianReward:
    set Zeny, Zeny + $@delivery_money;
    getexp ($@delivery_exp_mod * BaseLevel), 0;
    callfunc "SetKylianRun";
    set @state, 15;
    callfunc "SetKylianQuest";
    mes "[" + $@delivery_money + " money]";
    mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]";
    next;
    mes "\"I've got news for you! Kylian wants me to send you over right away.\"";
    goto L_Close;

L_RunAgain:
    set Zeny, Zeny + $@delivery_money;
    getexp ($@delivery_exp_mod * BaseLevel), 0;
    callfunc "SetKylianRun";
    mes "[" + $@delivery_money + " money]";
    mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]";
    next;
    mes "\"Good job! Keep up the nice work, and I'm sure the boss will give you a bonus.\"";
    next;
    goto L_StartJobAgain;

L_NoPackages:
    mes "\"Sorry, but we don't have any more jobs open right now.\"";
    mes "\"Come back tomorrow; maybe we will have some more work then.\"";
    goto L_Close;

L_Close:
    close;
}
function|script|SetKylianRun
{
    set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_8_MASK)) | (@run << TWOBIT_8_SHIFT);
    return;
}
function|script|SetKylianRunCnt
{
    set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_9_MASK)) | (@run_cnt << TWOBIT_9_SHIFT);
    return;
}