002-2,120,89,0 script KPS Manager NPC191,{ @run = ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT); @run_cnt = ((QUEST_NorthTulimshar & TWOBIT_9_MASK) >> TWOBIT_9_SHIFT); if (QL_KYLIAN == 15) goto L_SeeKylian; if (QL_KYLIAN == 14) goto L_RunComplete; if (QL_KYLIAN == 13) goto L_RunStarted; if (QL_KYLIAN == 12) goto L_JobSelect; if (QL_KYLIAN == 11) goto L_AcceptJob; if (QL_KYLIAN == 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: QL_KYLIAN = 11; 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: @run = 0; callfunc "SetKylianRun"; @run_cnt = 0; callfunc "SetKylianRunCnt"; QL_KYLIAN = 12; goto L_JobSelect; L_StartJobAgain: @run = 0; callfunc "SetKylianRun"; QL_KYLIAN = 12; 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: @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: QL_KYLIAN = 13; @run = @rand_quest; callfunc "SetKylianRun"; Kylian_Timer = gettimetick(2); goto L_close; L_RunStarted: mes "Deliver this package to ##B" + $@random_quests$[@run] + "##b.\""; goto L_close; L_RunComplete: @elapsed_time = (gettimetick(2) - Kylian_Timer); if (@elapsed_time > 600) goto L_Failed; @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: Zeny = Zeny + $@delivery_money; getexp ($@delivery_exp_mod * BaseLevel), 0; callfunc "SetKylianRun"; QL_KYLIAN = 15; 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: 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 { QUEST_NorthTulimshar = (QUEST_NorthTulimshar & ~(TWOBIT_8_MASK)) | (@run << TWOBIT_8_SHIFT); return; } function script SetKylianRunCnt { QUEST_NorthTulimshar = (QUEST_NorthTulimshar & ~(TWOBIT_9_MASK)) | (@run_cnt << TWOBIT_9_SHIFT); return; }