diff options
author | Jesusaves <cpntb1@ymail.com> | 2018-03-18 19:02:51 +0000 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2018-03-18 19:02:51 +0000 |
commit | ecb256f894f1039ebe6e8232133c3fdbf67c462e (patch) | |
tree | ee50a8c804d12c20960b4f015d828b149dc0b93e | |
parent | a9a329ecaa58bae9ee7c8c88b593c66ec6215f0c (diff) | |
parent | 4c46fc5699a8b7e968e1ad58ea7097c4960c4b7e (diff) | |
download | serverdata-ecb256f894f1039ebe6e8232133c3fdbf67c462e.tar.gz serverdata-ecb256f894f1039ebe6e8232133c3fdbf67c462e.tar.bz2 serverdata-ecb256f894f1039ebe6e8232133c3fdbf67c462e.tar.xz serverdata-ecb256f894f1039ebe6e8232133c3fdbf67c462e.zip |
Implement lieutenant dausen quest
by acsvln and gnulinux
Another commit will follow to fix minor issues
See merge request TMW2/serverdata!2
-rw-r--r-- | npc/003-1/lieutenantdausen.txt | 301 |
1 files changed, 220 insertions, 81 deletions
diff --git a/npc/003-1/lieutenantdausen.txt b/npc/003-1/lieutenantdausen.txt index b4470bddb..85db28f65 100644 --- a/npc/003-1/lieutenantdausen.txt +++ b/npc/003-1/lieutenantdausen.txt @@ -2,6 +2,8 @@ // Authors: // Saulc // Jesusalva +// acsvln +// gnulinux // Description: // Help Tulimshar guards // Quest variable: @@ -10,67 +12,81 @@ // 0 - not started // 1 - Lieutenant Dausen asked for help Tulimshar guards // 2 - completed - +// 3 - Reward given 003-1,111,84,0 script Lieutenant Dausen NPC_PLAYER,{ // The Monster King guild have a special menu if (strcharinfo(2) == "Monster King") goto L_MKControl; + + .@has = getq(TulimsharQuest_WaterForGuard); + + switch (.@has) { + case 0: + callsub(L_Greetings); + break; + case 1: + callsub(L_InProgress); + break; + case 2: + callsub(L_Reward); + break; + case 3: + callsub(L_QuestDone); + break; + default: + end; + } - // This NPC is broken, so this code disables it - mesn; - mesq l("Greetings, citzen. I am @@, chief of the Tulimshar guards.", .name$); close; - - function quest_waterForGuard - { - setq TulimsharQuest_WaterForGuard, 1; - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Good luck!"); - close; - } + L_Greetings: + speech S_LAST_BLANK_LINE, l("Greetings, wanderer. I am @@, chief of the Tulimshar guards. My wards are dying from dehydration in the sun. Bring them water and you will earn a reward.", .name$); - .@has = getq(TulimsharQuest_WaterForGuard); - if (.@has == 0) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Hello can you help me?"); - do + select + l("Yes sir. I will help them."), + menuaction(l("Quit")); + + if (1 != @menu) + { + closedialog; + goodbye; + } + else { - select - l("Yes"), - menuaction(l("Quit")); + setq TulimsharQuest_WaterForGuard, 1; + + speech S_FIRST_BLANK_LINE, l("Good luck! Come for remuneration when you finish!"); + } + return; + + L_InProgress: + mesn; + mesq l("Pleace help my crew!"); + return; + + L_Reward: + mesn; + mesq l("Thank you, there is your reward."); + + inventoryplace Boots, 1, TulimsharGuardCard, 1; + getitem Boots, 1; + + next; + + speech S_LAST_NEXT, + l("Wait a minute..."), + l("Tulimshar guards needs an free-lance employee who would help us in our work. We are searching such people as you."), + l("Take this badge and you can get access to the guards house. You would find more work there. Bye and good luck!"); + + getitem TulimsharGuardCard, 1; - switch (@menu) - { - case 1: - quest_waterForGuard; - break; - } - } while (@menu != 2); - } - else if (.@has == 1) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Not yet. Get level 255 and I'll reward you!"); - } - else if (.@has == 2) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Thank you, there is your reward"); - narrator("You receive 30 exp."); - getexp 30, 0; setq TulimsharQuest_WaterForGuard, 3; - } - else - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Thank you for your help."); - } + return; - closedialog; - goodbye; - close; + L_QuestDone: + mesn; + mesq l("Thank you for your help."); + return; L_MKControl: mesn; @@ -88,9 +104,6 @@ L_MKSmall: initnpctimer; close; - - - OnBlackScorpionDeath: areamonster("004-1", 0, 0, 79, 81, l("Black Scorpion"), 1074, 1, "Lieutenant Dausen::OnBlackScorpionDeath"); if (rand(10000) <= 100) @@ -121,10 +134,6 @@ OnManaGhostDeath: getitem StrangeCoin, 1; end; - - - - OnTimer5000: areamonster("004-1", 0, 0, 79, 81, "Black Scorpion", 1074, 5, "Lieutenant Dausen::OnBlackScorpionDeath"); areamonster("003-1", 0, 0, 120, 155, "Black Scorpion", 1074, 5, "Lieutenant Dausen::OnBlackScorpion2Death"); @@ -251,20 +260,150 @@ OnTimer630000: stopnpctimer; end; - OnInit: .sex = G_MALE; .distance = 4; end; } +// Debug - purpose NPC +003-1,110,84,0 script LieutenantDausenDebug NPC_MONA,{ + showavatar NPC_MONA; // this is handled by avatars.xml + mesn; + mesq l("Reset?"); + next; + menu + l("Yes."), L_Reset, + l("No."), L_Close; +L_Reset: + GUARDS_DONE_BITARRAY=0; + setq TulimsharQuest_WaterForGuard, 0; + mes l("Reset!"); + goto L_Close; -003-1,98,100,0 script Guard Philip NPC_GUARD1,{ - legiontalk; +L_Close: + //showavatar; // Use this to hide the showavatar + close; + +// Use @shownpc to enable AyashaDebug +OnInit: + if (!debug) + disablenpc .name$; + end; +} + +// Render random guard answer after bringing him water +function script GuardsGratitude { + + switch (rand(6)) + { + case 0: + .@message$ = l("God bless you! You have saved me from sweltering!"); + break; + case 1: + .@message$ = l("I am happy that such responsible citizens live in Tulimshar. Thank you for your help. It's really hot nowdays!"); + break; + case 2: + .@message$ = l("Thanks, this is very handy."); + break; + case 3: + .@message$ = l("Our service is dangerous and difficult. But I would not want any other. Thanks for the help."); + break; + case 4: + .@message$ = l("My mother told me, do not go work like a guard. You will die from overheating in the sun during the summer time."); + break; + case 5: + .@message$ = l("Who are you? Thanks for the help."); + break; + default: + .@message$="Thank you!"; + break; + } + + if (Sex == SEX_FEMALE) + { + .@narrator_message$ = l("The Guard sends an air kiss to you."); + } + else + { + .@narrator_message$ = l("The Guard patted you on the back."); + } + + speech S_LAST_BLANK_LINE, .@message$; + narrator S_LAST_BLANK_LINE, .@narrator_message$; + + return; +} + +// Do TulimsharQuest_WaterForGuard quest +function script CheckGuard { + .@guard_id = getarg(0); + .@guard_count = 0; + .@count_tmp = 0; + + if (debug) + npctalk3 l("Hello, I am G-@@, of the @@ order.", .@guard_id, $@GuardBits[.@guard_id]); + + if (GUARDS_DONE_BITARRAY & $@GuardBits[.@guard_id]) + { + mesn; + mesq l("Thanks for help! Other guards may need help too!"); + close; + } + else + { + while (.@count_tmp < 18) + { + if (GUARDS_DONE_BITARRAY & $@GuardBits[.@count_tmp]) + .@guard_count = (.@guard_count + 1); + + .@count_tmp = (.@count_tmp + 1); + } + + if ( 0 == countitem(BottleOfTonoriWater) ) + { + legiontalk; + } + else + { + delitem BottleOfTonoriWater, 1; + getitem EmptyBottle, 1; + + getexp 30, 0; + Zeny = (Zeny + 50); + + GUARDS_DONE_BITARRAY = GUARDS_DONE_BITARRAY | $@GuardBits[.@guard_id]; + + if (.@guard_count >= 17) + { + message strcharinfo(0), "That must have been the last guard."; + setq TulimsharQuest_WaterForGuard, 2; + } + + GuardsGratitude(); + narrator("You receive 30 exp and 50 GP."); + close; + } + } + + return; +} + +// Handle Guard's logic +function script GuardHandler { if (getq(TulimsharQuest_WaterForGuard) == 1) { - //CheckGuard(); // FIXME This is not Hide And Seek + CheckGuard(getarg(0)); + } else { + legiontalk; } + + return; +} + +003-1,98,100,0 script Guard Philip NPC_GUARD1,{ + GuardHandler(0); + end; OnTimer1000: @@ -307,9 +446,11 @@ OnInit: initialmove; initnpctimer; .distance = 5; + + setarray $@GuardBits, 1, (1 << 1), (1 << 2), (1 << 3), (1 << 4), (1 << 5), (1 << 6), (1 << 7), (1 << 8), (1 << 9), (1 << 10), (1 << 11), (1 << 12), (1 << 13), (1 << 14), (1 << 15), (1 << 16), (1 << 17); } 003-1,98,121,0 script Guard Defou NPC_GUARD1,{ - legiontalk; + GuardHandler(1); end; OnInit: .sex = G_OTHER; @@ -317,7 +458,7 @@ OnInit: end; } 003-1,102,121,0 script Guard Avou NPC_GUARD1,{ - legiontalk; + GuardHandler(2); end; OnInit: .sex = G_OTHER; @@ -325,23 +466,23 @@ OnInit: end; } 003-1,58,158,0 script Guard Benji NPC_GUARD1,{ - legiontalk; + GuardHandler(3); end; OnInit: .sex = G_OTHER; - .distance = 1; + .distance = 3; end; } 003-1,62,158,0 script Guard Valou NPC_GUARD1,{ - legiontalk; + GuardHandler(4); end; OnInit: .sex = G_OTHER; - .distance = 1; + .distance = 3; end; } 003-1,71,138,0 script Guard Nutelo NPC_GUARD1,{ - legiontalk; + GuardHandler(5); end; OnInit: .sex = G_OTHER; @@ -349,7 +490,7 @@ OnInit: end; } 003-1,58,128,0 script Guard Moustacha NPC_GUARD1,{ - legiontalk; + GuardHandler(6); end; OnInit: .sex = G_OTHER; @@ -357,7 +498,7 @@ OnInit: end; } 003-1,58,100,0 script Guard Popaul NPC_GUARD1,{ - legiontalk; + GuardHandler(7); end; OnTimer1000: @@ -385,7 +526,7 @@ OnInit: .distance = 5; } 003-1,51,73,0 script Guard Yen NPC_GUARD1,{ - legiontalk; + GuardHandler(8); end; OnInit: .sex = G_OTHER; @@ -393,7 +534,7 @@ OnInit: end; } 003-2,41,37,0 script Guard Yuna NPC_GUARD2,{ - legiontalk; + GuardHandler(9); end; OnInit: .sex = G_OTHER; @@ -401,7 +542,7 @@ OnInit: end; } 003-1,54,52,0 script Guard Maxim NPC_GUARD1,{ - legiontalk; + GuardHandler(10); end; OnTimer1000: @@ -435,7 +576,7 @@ OnInit: } 003-1,50,36,0 script Guard Totor NPC_GUARD1,{ - legiontalk; + GuardHandler(11); end; OnTimer1000: @@ -459,7 +600,7 @@ OnInit: .distance = 5; } 003-1,53,36,0 script Guard Roukin NPC_GUARD1,{ - legiontalk; + GuardHandler(12); end; OnTimer1000: @@ -498,7 +639,7 @@ OnInit: .distance = 5; } 003-1,35,34,0 script Guard Falko NPC_GUARD1,{ - legiontalk; + GuardHandler(13); end; OnTimer1000: @@ -516,7 +657,7 @@ OnInit: .distance = 5; } 003-3,39,37,0 script Guard Malindax NPC_GUARD1,{ - legiontalk; + GuardHandler(14); end; OnInit: .sex = G_OTHER; @@ -524,7 +665,7 @@ OnInit: end; } 003-1,111,101,0 script Guard Froma NPC_GUARD1,{ - legiontalk; + GuardHandler(15); end; OnInit: .sex = G_OTHER; @@ -532,7 +673,7 @@ OnInit: end; } 003-1,102,80,0 script Guard Tetric NPC_GUARD1,{ - legiontalk; + GuardHandler(16); end; OnTimer1000: @@ -583,12 +724,10 @@ OnInit: .distance = 5; } 003-1,107,80,0 script Guard Biscop NPC_GUARD1,{ - legiontalk; + GuardHandler(17); end; OnInit: .sex = G_OTHER; .distance = 1; end; } - - |