//================= Hercules Script =======================================
//= _ _ _
//= | | | | | |
//= | |_| | ___ _ __ ___ _ _| | ___ ___
//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
//= | | | | __/ | | (__| |_| | | __/\__ \
//= \_| |_/\___|_| \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright (C) 2012-2015 Hercules Dev Team
//= Copyright (C) Euphy
//= Copyright (C) L0ne_W0lf
//= Copyright (C) Samuray22
//= Copyright (C) silent
//= Copyright (C) Lupus
//= Copyright (C) kobra_k88
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
//= the Free Software Foundation, either version 3 of the License, or
//= (at your option) any later version.
//=
//= This program is distributed in the hope that it will be useful,
//= but WITHOUT ANY WARRANTY; without even the implied warranty of
//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//= GNU General Public License for more details.
//=
//= You should have received a copy of the GNU General Public License
//= along with this program. If not, see <http://www.gnu.org/licenses/>.
//=========================================================================
//= Quest NPCs related to Geffen
//================= Description ===========================================
//= Welding Mask and Headset Quests.
//================= Current Version =======================================
//= 1.5
//=========================================================================
//== Blacksmith: 'Welding Mask' Quest ======================
geffen_in,144,166,4 script Blacksmith 1_M_SMITH,{
mes "[Blacksmith]";
mes "You've never heard of me? Why, I'm the Veteran Blacksmith of this land. I've spent 30 years in this hot and bloody hellfire, bending steel to my iron will!";
next;
mes "[Blacksmith]";
mes "But...";
mes "I am growing older and my prowess begins to fade with age. So I've invented something for young, hot, upcoming Blacksmiths, in hopes that they too will master my craft...";
next;
switch(select("What is it?:...")) {
case 1:
mes "[Blacksmith]";
mes "We Blacksmiths must always manipulate steel under extreme heat, and the hot air and melted metals are more than most people can stand.";
next;
mes "[Blacksmith]";
mes "For the sake of our craft, our beautiful, yet masculine faces are put at risk...";
next;
mes "[Blacksmith]";
mes "But with this wonder of technology, there's no need to worry! Behold, the ^3355FFWelding Mask^000000 !!";
next;
mes "[Blacksmith]";
mes "It works by covering your face with a fat metal plate. Truly, it's an item that everyone should want! If not yourself, it'd be a good idea to give this to a friend who is studying smithing.";
next;
mes "[Blacksmith]";
mes "So how about it ? If you give me ^2244FF50 Steel^000000 and ^4422FFonly 2000 Zeny^000000, I will make it for you right away~!!";
next;
switch(select("Hm... Not bad. Alright.:How does it work again?")) {
case 1:
if ((countitem(Steel) > 49) && (Zeny > 1999)){
mes "[Blacksmith]";
mes "Ah, I see that you appreciate a Blacksmith's work! Alright, I'll do it right away !!";
next;
delitem Steel,50;
Zeny -= 2000;
getitem Welding_Mask,1; // Welding_Mask
mes "[Blacksmith]";
mes "Hahaha~! Make good use of that!";
close;
}
else {
mes "[Blacksmith]";
mes "Hmmm...";
mes "You do not have the items I require.";
next;
mes "[Blacksmith]";
mes "A common Blacksmith would interpret this as a sign of disrepect, but I will forgive you. Just don't forget what I need if you want me to make you this mask.";
close;
}
case 2:
mes "[Blacksmith]";
mes "The ^3355FFWelding Mask^000000 protects your face by covering it with a fat metal plate. This invention is the result of 30 years of endless toil at the hammer and anvil.";
close;
}
case 2:
mes "[Blacksmith]";
mes "Ah...!";
mes "I guess this is the first time you've met a Blacksmith as great as me, and you're just speechless with awe. Please, take your time and speak up when you are ready.";
next;
mes "^3355FFThis guy seems";
mes "a little full";
mes "of himself.^000000";
close;
}
}
//== Eric: 'Headset' Quest =================================
geffen_in,30,71,4 script Eric 4_M_01,{
mes "[Eric]";
mes "Please listen";
mes "to my story";
mes "of my blessed";
mes "grandfather.";
next;
switch(select("Talk:Ask about Items needed:Manufacture:Quit")) {
case 1:
mes "[Eric]";
mes "My Grandfather, who passed away a few years ago, was special to me. He always stayed with me, and took care of me. He was much better than my old man, who was always busy working.";
next;
mes "[Eric]";
mes "To me, Grandfather's library was always like a fantasy land where I could escape. I spent most of my time there.";
next;
mes "[Eric]";
mes "I learned a lot of things from his books in the Library. Grandfather was interested in Alchemy and Music, and his Library was filled with many mysterious old books.";
next;
mes "[Eric]";
mes "One day...";
mes "As usual, I went to the Library and discovered an interesting schematic.";
next;
mes "[Eric]";
mes "It showed some instrument which looked like Ear Muffs that, when worn on the head, could transmit music or whispers to the ears through a thin wire.";
next;
mes "[Eric]";
mes "I guess...";
mes "It is my grand father's unfinished work. I met a few Alchemists and asked them to produce it, but they rejected my offer...";
next;
mes "[Eric]";
mes "In the end, I thought 'I've gotta make it myself.' So I researched for a few years, and now I fully understand how to make that thing. But, I could never gather the materials to make it!";
next;
mes "[Eric]";
mes "If I can get those articles, I would build it right away. If you are interested in my idea, would you bring them for me?";
next;
mes "[Eric]";
mes "All I wanna do is build this thing in honor of my grandfather and finish the work he started. If you ask me to keep it, I wouldn't mind.";
close;
case 2:
mes "[Eric]";
mes "40 ^3355FFSteel^000000";
mes "1 ^3355FFOridecon^000000";
mes "1 ^3355FFAlcohol^000000";
mes "1 ^3355FFCoal^000000";
mes "These are the things I need for Grandfather's masterpiece.";
close;
case 3:
if ((countitem(Steel) > 39) && (countitem(Oridecon) > 0) && (countitem(Alchol) > 0) && (countitem(Coal) > 0)) {
delitem Steel,40;
delitem Oridecon,1;
delitem Alchol,1;
delitem Coal,1;
getitem Headset,1;
mes "*Tap! Tap! Tap!*";
next;
mes "[Eric]";
mes "Thank you.";
mes "Because of you, I could accomplish my grandfather's wish. He would be happy if he looked down on me from Heaven.";
next;
mes "[Eric]";
mes "As I said, please take this. I am just proud that I can make this by myself.";
close;
}
else {
mes "[Eric]";
mes "Thank you for trying to help me, but you didn't bring all the items I need. I think you will find them all soon though.";
close;
}
case 4:
mes "[Eric]";
mes "N-no?";
mes "Well...";
mes "You have your own";
mes "worries, I suppose.";
mes "Farewell.";
close;
}
}
//== Number Match Game :: gef_yagu =========================
geffen,122,77,4 script Nia#yagu 8_F_GIRL,{
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.";
.@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.";
.@practice = 0;
break;
case 4:
.@name_record$ = $050908_minus1_yagu$;
if (.@name_record$ == "") //custom
.@name_record$ = "(null)";
.@score_record = $050908_minus1_yagu;
.@score_min = .@score_record / 60;
.@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) {
.@yagu100 = rand(1,9);
.@yagu10 = rand(1,9);
.@yagu1 = rand(1,9);
if ((.@yagu100 != .@yagu10) && (.@yagu100 != .@yagu1) && (.@yagu10 != .@yagu1)) {
// Store the actual number (unofficial).
.@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.
.@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;
}
.@input100 = .@input / 100;
.@input10 = (.@input % 100) / 10;
.@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;
}
.@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.
.@strike = 0;
if (.@yagu100 == .@input100)
.@strike += 1;
if (.@yagu10 == .@input10)
.@strike += 1;
if (.@yagu1 == .@input1)
.@strike += 1;
// Correct digits in incorrect locations.
.@ball = 0;
if ((.@yagu100 == .@input10) || (.@yagu100 == .@input1))
.@ball += 1;
if ((.@yagu10 == .@input100) || (.@yagu10 == .@input1))
.@ball += 1;
if ((.@yagu1 == .@input100) || (.@yagu1 == .@input10))
.@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.
.@end_time = gettimetick(2);
if (.@end_time < .@start_time)
.@end_time += 3600;
.@total_time = .@end_time - .@start_time;
.@total_min = .@total_time / 60;
.@total_sec = .@total_time % 60;
.@name_record$ = $050908_minus1_yagu$;
if (.@name_record$ == "") //custom
.@name_record$ = "(null)";
.@score_record = $050908_minus1_yagu;
.@score_min = .@score_record / 60;
.@score_sec = .@score_record % 60;
if (.@score_record >= .@total_time || !.@score_record) { //custom (second condition)
$050908_minus1_yagu$ = strcharinfo(0);
$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;
}
}
}
}