// TMW2/LoF scripts.
// Authors:
// var
// TMW-LoF Team
// Jesusalva
// Description:
// Special quest, can be done every three months, on days 18~25.
// Months: February, May, August, November
017-1,44,37,0 script Stranger#LoF NPC_LOF_STRANGER,{
if (!$@GM_OVERRIDE && (gettime(GETTIME_MONTH) % 3 != 2 || (gettime(GETTIME_DAYOFMONTH) < 18 && gettime(GETTIME_DAYOFMONTH) > 25))) {
dispbottom l("An error with Stranger#LoF happened! Please report!!");
disablenpc .name$;
end;
}
.@q=getq(LoFQuest_Hitchhiker);
if (.@q == 2) goto L_Complete;
if (.@q == 1) goto L_Quizz;
mesn;
mesq l("Hello, hello! It's great to see you. Maybe you can help me with a little problem I have.");
next;
mesn;
mesq l("I need some materials to repair my spacesh- ahm, it's not important why I need it."); // Translators: Spacesh(ip)
next;
mesn;
mesq l("Anyway, I'd be really happy if you could give me @@ @@, @@ @@, @@ @@ and @@ @@.",
100, getitemlink(Chagashroom),
3, getitemlink(FluoPowder),
1, getitemlink(TinIngot),
1, getitemlink(TitaniumIngot));
if (countitem(Chagashroom) < 100 ||
countitem(FluoPowder) < 3 ||
countitem(TinIngot) < 1 ||
countitem(TitaniumIngot) < 1)
close;
next;
mesn;
mesq l("Do you have that for me?");
if (askyesno() == ASK_NO)
close;
mes "";
// We already checked, cheaters will have their inventory ripped apart and I don't care ~ Jesusalva
delitem Chagashroom, 100;
delitem FluoPowder, 3;
delitem TinIngot, 1;
delitem TitaniumIngot, 1;
getexp (BaseLevel**2)*5, JobLevel*2;
setq LoFQuest_Hitchhiker, 1;
mesn;
mesq l("Great! Thank you!");
next;
mesn;
mesq l("I have a lot of work to do now. But before you leave...");
goto L_Quizz;
L_Quizz:
inventoryplace OldTowel, 1;
mesn;
mesq l("Did you knew May 25th it is a very special day - the Towel Day?");
next;
mesn;
mesq l("To celebrate this I'll ask you some questions about my favourite book, The Hitchhiker's Guide to the Galaxy. If you can answer them, I'll give you something very useful.");
next;
mesn;
mesq l("The answers might need to have whitespaces. DO NOT, BY ALL MEANS, insert two whitespaces instead of one.");
mesq l("I'll get so mad at you that even if you are correct, I'll say otherwise. Also, mind special characters.");
mesq l("If I don't know the answer in your language, try answering in English. That always works.");
mesc l("Are you ready?"), 1;
mesc l("There's no time limit on this riddle.");
next;
if (askyesno() == ASK_NO)
close;
goto L_Easy;
L_Easy:
mes "";
mesn;
mesq l("The first one is easy.");
next;
mes "";
if (0171_Stranger_BlackBox(EASY))
goto L_Medium;
else
goto L_Fail;
L_Medium:
mes "";
mesn;
mesq l("You're absolutely right. The next one will be more tricky.");
next;
mes "";
if (0171_Stranger_BlackBox(MEDIUM))
goto L_Hard;
else
goto L_Fail;
L_Hard:
mes "";
mesn;
mesq l("Not bad, not bad. Let's see if you can answer an even more difficult one.");
next;
mes "";
if (0171_Stranger_BlackBox(HARD))
goto L_Reward;
else
goto L_Fail;
// Failure
L_Fail:
mes "";
mesn;
if (rand2(1,2) == 1) {
mesq l("Sorry, but that's not right.");
next;
mesn;
mesq l("Come try again, some other time.");
} else {
mesq l("Nah, that's wrong. Come back if you want to try again.");
}
mesc l("If you are sure your answer is correct, please contact Jesusalva for bug fixing.");
close;
// Reward
L_Reward:
mes "";
mesn;
mesq l("Unbelievable! You're really a wise person.");
next;
mesn;
mesq l("One last question, but this shouldn't be a problem for you.");
next;
mesn;
mesq l("What is the most important item for every hitchhiker to have?");
input .@answer$;
if (strip(strtolower(.@answer$)) != "towel" && strip(strtolower(.@answer$)) != l("towel"))
goto L_Fail;
mes "";
mesn;
mesq l("There you are! A towel is really the most important item for a hitchhiker to have.");
getitem OldTowel, 1;
// If you complete the quest in May, you get 50% more experience
if (gettime(GETTIME_MONTH) == MAY)
getexp JobLevel*BaseLevel*3/2, BaseLevel*3;
else
getexp JobLevel*BaseLevel, BaseLevel*2;
setq LoFQuest_Hitchhiker, 2;
next;
mesn;
mesq l("It really comes in handy that I have my towel with me. A towel is about the most massively useful thing an inte- ahm, a person can have.");
close;
// TODO: Enable another quest after main quest has been completed
// TODO: Completing sub quest on May shall give better bonus (gettime(GETTIME_MONTH) == MAY)
// TODO: Keep your Towel well guarded; It can only be obtained once and is required in further quests.
L_Complete:
mesn;
mesq l("I have a lot of work to do now.");
if (rand2(3) == 2) {
next;
mesn;
mesq l("Annoying Paxel, for example %%o");
}
close;
// Proccessing Core
OnInit:
.sex=G_OTHER;
.distance=5;
OnClock0000:
if (gettime(GETTIME_MONTH) % 3 == 2) {
if (gettime(GETTIME_DAYOFMONTH) >= 18 && gettime(GETTIME_DAYOFMONTH) <= 25) {
enablenpc .name$;
end;
}
}
disablenpc .name$;
end;
}