summaryrefslogtreecommitdiff
path: root/npc/quests/quests_geffen.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/quests/quests_geffen.txt')
-rw-r--r--npc/quests/quests_geffen.txt282
1 files changed, 273 insertions, 9 deletions
diff --git a/npc/quests/quests_geffen.txt b/npc/quests/quests_geffen.txt
index b7f4550d7..a220fd654 100644
--- a/npc/quests/quests_geffen.txt
+++ b/npc/quests/quests_geffen.txt
@@ -1,20 +1,19 @@
-//===== rAthena Script =======================================
+//===== Hercules Script ======================================
//= Quest NPCs related to Geffen
-//===== By: ==================================================
+//===== By: ==================================================
//= kobra_k88 & Samuray22
-//===== Current Version: =====================================
-//= 1.4
-//===== Compatible With: =====================================
-//= rAthena 7.15 +
-//===== Description: =========================================
+//===== Current Version: =====================================
+//= 1.5
+//===== Description: =========================================
//= Welding Mask and Headset Quests.
-//===== Additional Comments: =================================
+//===== Additional Comments: =================================
//= 1.1 Fixed exploits [Lupus]
//= 1.2 Removed Duplicates [Silent]
//= 1.3 Updated "Welding Mask" Quest to the Official one. [Samuray22]
//= 1.3a replaced item "names" with item id. Added missing [Lupus]
//= 1.4 Updated welding mask and headset quests. [L0ne_W0lf]
-//============================================================
+//= 1.5 Added Number Match Game. [Euphy]
+//============================================================
// Blacksmith: 'Welding Mask' Quest
//============================================================
@@ -162,3 +161,268 @@ geffen_in,30,71,4 script Eric 83,{
close;
}
}
+
+// Number Match Game :: gef_yagu
+//============================================================
+geffen,122,77,4 script Nia#yagu 700,{
+ mes "[Nia]";
+ mes "Hello, I'm Nia, the fifth";
+ mes "disciple of Mawong, the";
+ mes "gaming mastermind. Now,";
+ mes "how would you like to play a";
+ mes "Number Match game with me?";
+ next;
+ switch(select("Number Match Game?:Practice Number Match:Play Number Match:Record Holder:Cancel")) {
+ case 1:
+ mes "[Nia]";
+ mes "Ah, well, the objective of";
+ mes "the Number Match game is to";
+ mes "guess the number I'm thinking";
+ mes "of. Of course, there are a few";
+ mes "rules that limit the numbers";
+ mes "that I can choose from.";
+ next;
+ mes "[Nia]";
+ mes "All the numbers that I make";
+ mes "up must be 3 digits, I can't";
+ mes "use 0 for any of the digits,";
+ mes "and I can't use the same";
+ mes "number for any of the digits";
+ mes "more than once.";
+ next;
+ mes "[Nia]";
+ mes "So, for example, I can't";
+ mes "use the numbers 103, 112,";
+ mes "252, or 701. Those numbers";
+ mes "either have a 0, or they use";
+ mes "the same number in the digits";
+ mes "more than once. Got it now?";
+ next;
+ mes "[Nia]";
+ mes "Now, you only get 5 guesses,";
+ mes "and after each guess, I'll tell";
+ mes "you how many digits you guessed";
+ mes "correctly, followed by the number of correctly guessed digits in";
+ mes "the correct digit place.";
+ next;
+ mes "[Nia]";
+ mes "For example, let's say the";
+ mes "number I come up with is 168.";
+ mes "If your first guess is 678, then you guessed two of the digits,";
+ mes "6 and 8, correctly. However,";
+ mes "only 8 is in the correct place.";
+ next;
+ mes "[Nia]";
+ mes "You know, it'd be a good idea";
+ mes "if you try the Practice Mode";
+ mes "first. Then, when you're more";
+ mes "comfortable, play the actual";
+ mes "Number Match game. Don't forget that speed counts for your score!";
+ next;
+ mes "[Nia]";
+ mes "Ah, if you happen to";
+ mes "make a new record in the";
+ mes "Number Match game, you'll";
+ mes "have your name recorded,";
+ mes "so don't miss this chance for";
+ mes "fame and maybe even fortune~";
+ close;
+ case 2:
+ mes "[Nia]";
+ mes "Great, let's do a practice";
+ mes "Number Match game. Please";
+ mes "try to guess my number, okay?";
+ mes "If you want to cancel, then please enter a number greater than 1,000.";
+ set .@practice,1;
+ break;
+ case 3:
+ mes "[Nia]";
+ mes "Great, let's play Number Match!";
+ mes "You will have 5 chances to guess the number that I'm thinking of.";
+ mes "If you want to cancel, then please enter a number greater than 1,000.";
+ set .@practice,0;
+ break;
+ case 4:
+ set .@name_record$, $050908_minus1_yagu$;
+ if (.@name_record$ == "") //custom
+ set .@name_record$,"(null)";
+ set .@score_record, $050908_minus1_yagu;
+ set .@score_min, .@score_record / 60;
+ set .@score_sec, .@score_record % 60;
+ mes "[Nia]";
+ mes "^ff0000" + .@name_record$ + "^000000 is the";
+ mes "record holder for the Number";
+ mes "Match game with a time of";
+ mes "^ff0000" + .@score_min + " minutes, " + .@score_sec + " seconds^000000.";
+ close;
+ case 5:
+ mes "[Nia]";
+ mes "Take care of yourself,";
+ mes "adventurer. If you ever";
+ mes "feel like playing a Number";
+ mes "Match game, come and talk";
+ mes "to me, alright? See you~";
+ close;
+ }
+ next;
+
+ // Generate 3 digits of a number.
+ while(1) {
+ set .@yagu100, rand(1,9);
+ set .@yagu10, rand(1,9);
+ set .@yagu1, rand(1,9);
+ if ((.@yagu100 != .@yagu10) && (.@yagu100 != .@yagu1) && (.@yagu10 != .@yagu1)) {
+ // Store the actual number (unofficial).
+ set .@yagu, (100*.@yagu100) + (10*.@yagu10) + .@yagu1;
+ break;
+ }
+ }
+
+ // The official time calculation is based on ServerTime,
+ // an int HHMMSS equivalent to atoi(gettimestr("%H%M%S",7)).
+ // UNIX time is really a better way to do this.
+ set .@start_time, gettimetick(2);
+
+ while(1) {
+
+ // Guess a number that meets all conditions.
+ while(1) {
+ if (input(.@input,100,999) != 0) {
+ mes "[Nia]";
+ mes "You've canceled the";
+ mes "Number Match game.";
+ close;
+ }
+ set .@input100, .@input / 100;
+ set .@input10, (.@input % 100) / 10;
+ set .@input1, .@input % 10;
+ if ((.@input100 > 0) && (.@input10 > 0) && (.@input1 > 0)) {
+ if ((.@input100 != .@input10) && (.@input100 != .@input1) && (.@input10 != .@input1))
+ break;
+ }
+ mes "[Nia]";
+ mes "You entered one of the";
+ mes "digits as 0, or input the";
+ mes "same numerical value in";
+ mes "the digits more than once.";
+ mes "Please enter another guess.";
+ next;
+ }
+
+ set .@retry, .@retry+1;
+ mes "[Nia]";
+ mes "^ff0000"+strcharinfo(0)+"^000000,";
+ mes "your guess is ^0000ff"+.@input+"^000000.";
+ mes "Give me a moment to";
+ mes "come up with your results.";
+ next;
+
+ // Correct digits in correct locations.
+ set .@strike,0;
+ if (.@yagu100 == .@input100)
+ set .@strike, .@strike+1;
+ if (.@yagu10 == .@input10)
+ set .@strike, .@strike+1;
+ if (.@yagu1 == .@input1)
+ set .@strike, .@strike+1;
+
+ // Correct digits in incorrect locations.
+ set .@ball,0;
+ if ((.@yagu100 == .@input10) || (.@yagu100 == .@input1))
+ set .@ball, .@ball+1;
+ if ((.@yagu10 == .@input100) || (.@yagu10 == .@input1))
+ set .@ball, .@ball+1;
+ if ((.@yagu1 == .@input100) || (.@yagu1 == .@input10))
+ set .@ball, .@ball+1;
+
+ if (.@strike == 3) {
+ if (.@practice) {
+ mes "[Nia]";
+ mes "Yes, the number that";
+ mes "I guessed was ^ff0000"+.@yagu+"^000000!";
+ mes "Congratulations, you";
+ mes "just won this practice";
+ mes "game! Now you should be";
+ mes "ready for the real thing~";
+ close;
+ } else {
+
+ // Calculate final time and check against the previous record.
+ set .@end_time, gettimetick(2);
+ if (.@end_time < .@start_time)
+ set .@end_time, .@end_time + 3600;
+ set .@total_time, .@end_time - .@start_time;
+ set .@total_min, .@total_time / 60;
+ set .@total_sec, .@total_time % 60;
+ set .@name_record$, $050908_minus1_yagu$;
+ if (.@name_record$ == "") //custom
+ set .@name_record$,"(null)";
+ set .@score_record, $050908_minus1_yagu;
+ set .@score_min, .@score_record / 60;
+ set .@score_sec, .@score_record % 60;
+
+ if (.@score_record >= .@total_time || !.@score_record) { //custom (second condition)
+ set $050908_minus1_yagu$, strcharinfo(0);
+ set $050908_minus1_yagu, .@total_time;
+ mes "[Nia]";
+ mes "Great! You guessed";
+ mes "my number, which was";
+ mes "^ff0000" + .@yagu + "^000000. You finished in";
+ mes "^ff0000" + .@total_min + " minutes, " + .@total_sec + " seconds^000000,";
+ mes "breaking the previous record";
+ mes "of ^ff0000" + .@score_min + " minutes, " + .@score_sec + " seconds^000000.";
+ next;
+ mes "[Nia]";
+ mes "^ff0000" + .@name_record$ + "^000000";
+ mes "set that old record,";
+ mes "but now you are the";
+ mes "new person to beat in the";
+ mes "Match Game. Congratulations";
+ mes "for setting a new record!";
+ close;
+ }
+ mes "[Nia]";
+ mes "Nice work, you guessed";
+ mes "my number! The answer, of";
+ mes "course, was ^ff0000" + .@yagu + "^000000. You managed";
+ mes "to guess this number correctly";
+ mes "in ^ff0000" + .@total_min + " minutes, " + .@total_sec + " seconds^000000.";
+ next;
+ mes "[Nia]";
+ mes "^ff0000" + .@name_record$ + "^000000 is";
+ mes "the current Number Match";
+ mes "record holder with a time";
+ mes "of ^ff0000" + .@score_min + " minutes, " + .@score_sec + " seconds^000000.";
+ mes "Good luck, and hopefully you";
+ mes "can break this record someday~";
+ close;
+ }
+ } else {
+ if (.@practice) {
+ mes "[Nia]";
+ mes "Your guess has ^ff0000" + .@ball + "^000000 of the";
+ mes "correct numbers. ^ff0000" + .@strike + "^000000 of the";
+ mes "digits in your guess have";
+ mes "the correct number in the";
+ mes "correct digit placement.";
+ mes "Alright, try it again~";
+ next;
+ } else {
+ mes "[Nia]";
+ mes "Your last guess had ^ff0000" + .@ball + "^000000";
+ mes "of the correct numbers,";
+ mes "and ^ff0000" + .@strike + "^000000 digits in your guess";
+ mes "had the correct number in";
+ mes "the correct digit placement.";
+ switch(.@retry) {
+ case 1: mes "You have four guesses left."; break;
+ case 2: mes "You have three guesses left."; break;
+ case 3: mes "You have two guesses left."; break;
+ case 4: mes "You only have one guess left..."; break;
+ case 5: mes "The answer was ^ff0000" + .@yagu + "^000000."; close;
+ }
+ next;
+ }
+ }
+ }
+}