summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2018-03-18 19:02:51 +0000
committerJesusaves <cpntb1@ymail.com>2018-03-18 19:02:51 +0000
commitecb256f894f1039ebe6e8232133c3fdbf67c462e (patch)
treeee50a8c804d12c20960b4f015d828b149dc0b93e
parenta9a329ecaa58bae9ee7c8c88b593c66ec6215f0c (diff)
parent4c46fc5699a8b7e968e1ad58ea7097c4960c4b7e (diff)
downloadserverdata-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.txt301
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;
}
-
-