//================= 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) Kisuka //= Copyright (C) Samuray22 //= Copyright (C) massdriller //= Copyright (C) Lupus //= Copyright (C) L0ne_W0lf //= 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 . //========================================================================= //= Mage Job Quest (Pre-Renewal) //================= Description =========================================== //= Job quest for Mage classes //================= Current Version ======================================= //= 2.0 //========================================================================= geffen_in,164,124,4 script Mage Guildsman 2_F_MAGICMASTER,{ if (Upper == 1) { if (ADVJOB == Job_High_Wizard || ADVJOB == Job_Professor) { if (Class == Job_Novice_High) { mes "[Mage Guildsman]"; mes "Whoa, long time no see! But weren't you supposed to be dead?"; next; mes "[Mage Guildsman]"; mes "Ah, you must have been reborn. Well, I'm glad to have you back."; next; if (getskilllv("NV_BASIC") < 9) { mes "[Mage Guildsman]"; mes "I'm sorry, but I don't think you're ready to learn magic yet. Why don't you go finish learning the Basic Skills first?"; next; mes "[Mage Guildsman]"; mes "Take your time. The more you learn, the more ready you'll be to learn magic again."; close; } mes "[Mage Guildsman]"; mes "Well, since you have passed the Mage test once, I will not question your qualification. You want to have your magic skills back immediately, don't you?"; next; skill 143,0,0; jobchange Job_Mage_High; skill 157,1,0; mes "[Mage Guildsman]"; mes "Wow, for some reason, you look way better than you did before. Anyway, I believe you will do a better job being a Mage as well."; close; } else { mes "[Mage Guildsman]"; mes "Is there anything more I can help you with? If not, why don't you go test your skills? The world is waiting for you~!"; close; } } else { mes "[Mage Guildsman]"; mes "What, are you interested in the Mage guild? I didn't want to tell you this, but you don't belong here."; next; mes "[Mage Guildsman]"; mes "I am not sure why you're still standing in front of me, but I can tell that you're not meant to be a Mage."; close; } } mes "[Mage Guildsman]"; mes "Yo. What's up?"; next; switch(select("I want to be a Mage.", "Tell me the Requirements.", "Pretty much nothing.")) { case 1: mes "[Mage Guildsman]"; if (BaseJob == Job_Mage) { mes "Hey, haven't you realized? You're aleady a Mage, silly!"; next; mes "[Mage Guildsman]"; mes "One of these days you'll realize the power inside of you when you can make Fire with your mind!"; close; } if (BaseJob != Job_Novice) { mes "Hey~ C'mon. Quit playing games. You can't be a Mage because you already have another Job."; close; } if (job_magician_q == 0) { mes "Wanna be a Mage, eh...?"; if (Sex == SEX_MALE) mes "Hey, look at you! You're kinda cute~! Not my type though..."; else { mes "Oooh, you're such a hot babe~!"; mes "I like girls like you~"; } next; mes "[Mage Guildsman]"; mes "Right, you said that you wanna be a Mage? Alright then, please sign the Mage Application."; next; if (select("Sign Up.", "Quit.") == 1) { mes "[Mage Guildsman]"; mes "Okay. Sign right there. Oh, you're very good at spelling. Alright. So your name is... " + strcharinfo(PC_NAME) + "."; next; mes "[Mage Guildsman]"; mes "Now it's time for"; mes "me to give you the test."; switch(rand(0,3)) { case 1: mes "Make me a ^3355FFMixed Solution No. 1^000000"; mes "and bring it back to me."; job_magician_q = 1; break; case 2: mes "Make me a ^3355FFMixed Solution No. 2^000000"; mes "and bring it back to me."; job_magician_q = 2; break; case 3: mes "Make me a ^3355FFMixed Solution No. 3^000000"; mes "and bring it back to me."; job_magician_q = 3; break; default: mes "Make me a ^3355FFMixed Solution No. 4^000000"; mes "and bring it back to me."; job_magician_q = 4; } next; getitem Empty_Cylinder,1; mes "[Mage Guildsman]"; mes "You can find the neccessary ingredients inside the Guide Book in this Guild. So you better look up what you need before you go."; next; mes "[Mage Guildsman]"; mes "Once you collect all the ingredients you, use the machine in the center of the room to mix the solution. Good luck!"; close; } mes "[Mage Guildsman]"; mes "Whaaaaat~?! Right after you tell me that you wanna become a Mage, you change your mind?! Be a bit more decisive!"; close; } mes "Yeah? Ready...?"; if (getskilllv("NV_BASIC") < 9) { mes "Oh, what a bummer. You haven't met the requirements yet."; next; mes "[Mage Guildsman]"; mes "Go back and reach Novice Job level 9 first. Don't forget that you also have to learn all of the Basic Skills before you come back."; close; } mes "" + strcharinfo(PC_NAME) + "'s test was..."; if (job_magician_q == 1) mes "Making Mixed Solution No. 1."; else if (job_magician_q == 2) mes "Making Mixed Solution No. 2."; else if (job_magician_q == 3) mes "Making Mixed Solution No. 3."; else mes "Making Mixed Solution No. 4."; next; mes "[Mage Guildsman]"; mes "Okay, let me"; mes "check if you made your"; mes "solution accurately..."; next; mes "[Mage Guildsman]"; if (countitem(Mage_Test_1) == 0 && countitem(Mage_Test_2) == 0 && countitem(Mage_Test_3) == 0 && countitem(Mage_Test_4) == 0 && countitem(Mage_Test_Etc) == 0) { mes "Hey, where's the Solution"; mes "I asked for...? I can't check it if you don't show it to me, right?"; close; } else { if ((job_magician_q == 1 && countitem(Mage_Test_1) == 0) || (job_magician_q == 2 && countitem(Mage_Test_2) == 0) || (job_magician_q == 3 && countitem(Mage_Test_3) == 0) || (job_magician_q == 4 && countitem(Mage_Test_4) == 0)) { mes "Wait."; mes "This isn't the"; mes "Solution I asked for!"; next; mes "[Mage Guildsman]"; if (job_magician_q == 1) mes "You're supposed to make Mixed Solution No. 1 and bring it back to me. Now go and try it again."; else if (job_magician_q == 2) mes "You're supposed to make Mixed Solution No. 2 and bring it back to me. Now go and try it again."; else if (job_magician_q == 3) mes "You're supposed to make Mixed Solution No. 3 and bring it back to me. Now go and try it again."; else mes "You're supposed to make Mixed Solution No. 4 and bring it back to me. Now go and try it again."; if (countitem(Mage_Test_1) != 0) delitem Mage_Test_1,1; else if (countitem(Mage_Test_2) != 0) delitem Mage_Test_2,1; else if (countitem(Mage_Test_3) != 0) delitem Mage_Test_3,1; else if (countitem(Mage_Test_4) != 0) delitem Mage_Test_4,1; else delitem Mage_Test_Etc,1; close; } } if (countitem(Mage_Test_1) != 0) delitem Mage_Test_1,1; else if (countitem(Mage_Test_2) != 0) delitem Mage_Test_2,1; else if (countitem(Mage_Test_3) != 0) delitem Mage_Test_3,1; else if (countitem(Mage_Test_4) != 0) delitem Mage_Test_4,1; else delitem Mage_Test_Etc,1; mes "Hmm. I can see that you tried really hard. For a beginner's attempt, this is really good."; mes "Great work!"; next; mes "[Mage Guildsman]"; mes "Alright! I'm pleased to say that you've passed the Mage Test. I will transform you right away!"; next; mes "[Mage Guildsman]"; mes "*Ahem*"; mes "Congratulations!"; mes "You are now a Mage!"; next; if (questprogress(1005)) { completequest 1005; } else if (questprogress(1006)) { completequest 1006; } else if (questprogress(1007)) { completequest 1007; } else { completequest 1008; } callfunc "Job_Change",Job_Mage; callfunc "F_ClearJobVar"; Zeny += 50; mes "[Mage Guildsman]"; mes "'Welcome to My World~'"; mes "Heh heh, I just wanted to say that. You know, it's a quote from a well-known movie~"; next; mes "[Mage Guildsman]"; mes "Now that you're a Mage just like us, let's be friends, okay?"; close; case 2: mes "[Mage Guildsman]"; mes "Wanna be a Mage, eh?"; if (Sex == SEX_MALE) mes "For a cutie like you, I'd be happy to explain the requirements!"; else mes "I'd be happy to explain the requirements for a pretty girl like you!"; next; mes "[Mage Guildsman]"; mes "First of all, you have to reach Novice Job Level 10 and learn all of the Basic Skills. Then, you'll have to pass the Mage Test."; next; if (job_magician_q != 0) { mes "[Mage Guildsman]"; mes "Your test is to"; switch(job_magician_q) { case 1: mes "make me a"; mes "^3355FFMixed Solution No. 1^000000"; mes "and bring it back to me."; setquest 1005; break; case 2: mes "make me a"; mes "^3355FFMixed Solution No. 2^000000"; mes "and bring it back to me."; setquest 1006; break; case 3: mes "make me a"; mes "^3355FFMixed Solution No. 3^000000"; mes "and bring it back to me."; setquest 1007; break; default: mes "make me a"; mes "^3355FFMixed Solution No. 4^000000"; mes "and bring it back to me."; setquest 1008; } next; mes "[Mage Guildsman]"; mes "You can look up the ingredients you'll need to make the Solution inside the Guide Book in this Guild."; } else { mes "[Mage Guildsman]"; mes "You will be informed as to which Mixed Solution you will need to create after signing the application form."; } next; mes "[Mage Guildsman]"; mes "Let me know when you are ready to become a Mage, alright?"; close; case 3: mes "[Mage Guildsman]"; mes "Nothing...?"; close; } } geffen_in,164,112,4 script Mixing Machine HIDDEN_NPC,{ mes "[Mixing Machine]"; mes "This machine is the property of the Geffen Mage Guild and is used only for mixing solutions for magic purposes."; next; if (select("Use Machine.", "Cancel.") == 1) { mes "[Mixing Machine]"; mes "Choose the"; mes "Solvent for"; mes "the Solution."; next; switch(select("Payon Solution.", "Morroc Solution.", "No Solvent.")) { case 1: if (countitem(Payon_Potion) == 0) { mes "[Mixing Machine]"; mes "Error."; mes "Cannot find the item."; mes "Please check again."; mes "Process Halting."; close; } .@mixitem2 = 1; break; case 2: if (countitem(Morocc_Potion) == 0) { mes "[Mixing Machine]"; mes "Error."; mes "Cannot find the item."; mes "Please check again."; mes "Process Halting."; close; } .@mixitem2 = 2; break; case 3: .@mixitem2 = 0; break; } while (1) { if (.@progress == 2) { mes "[Mixing Machine]"; if (.@mixitem1_1 != 0) mes "Jellopy: " + .@mixitem1_1 + " ea."; if (.@mixitem1_2 != 0) mes "Fluff: " + .@mixitem1_2 + " ea."; if (.@mixitem1_3 != 0) mes "Milk: " + .@mixitem1_3 + " ea."; if (.@mixitem2 == 0) mes "Solvent: None."; if (.@mixitem2 == 1) mes "Solvent: Payon Solution."; if (.@mixitem2 == 2) mes "Solvent: Morroc Solution."; next; mes "[Mixing Machine]"; mes "Please choose if you wish to begin mixing, or to re-enter the number of items to be mixed."; next; switch(select("Begin Mixing.", "Re-Enter Number of Items.", "Reset.")) { case 1: mes "[Mixing Machine]"; mes "Please place the items into the Mixing Receptacle. Make sure the item amounts are correct."; next; mes "[Mixing Machine]"; mes "You cannot adjust or restore items once they are placed into the Mixing Receptacle."; next; mes "[Mixing Machine]"; mes "If everything is correct, press the 'Mix' button when you are ready. Otherwise, press the 'Cancel' button."; next; if (select("Press 'Mix' Button.", "Press 'Cancel' Button.") == 1) { mes "[Mixing Machine]"; mes "Place items into the Mixing Receptacle now. Please wait."; next; mes "[Mixing Machine]"; if (countitem(Jellopy) < .@mixitem1_1) { mes "Insufficient Jellopy."; mes "Please Check again."; mes "Process Halted."; close; } else if (countitem(Fluff) < .@mixitem1_2) { mes "Insufficient Fluff."; mes "Please Check again."; mes "Process Halted."; close; } else if (countitem(Milk) < .@mixitem1_3) { mes "Insufficient Milk."; mes "Please Check again."; mes "Process Halted."; close; } else if (.@mixitem2 == 1 || .@mixitem2 == 2) { if (countitem(Payon_Potion) == 0 && countitem(Morocc_Potion) == 0) { mes "Solution not found."; mes "Please Check again."; mes "Process Halted."; close; } } if (.@mixitem1_1 != 0) delitem Jellopy,.@mixitem1_1; if (.@mixitem1_2 != 0) delitem Fluff,.@mixitem1_2; if (.@mixitem1_3 != 0) delitem Milk,.@mixitem1_3; if (.@mixitem2 == 1) delitem Payon_Potion,1; if (.@mixitem2 == 2) delitem Morocc_Potion,1; mes "Items are Ready."; mes "Close the Lid."; .@progress = 3; next; } break; case 2: .@continue = 0; next; break; case 3: .@mixitem1_1 = 0; .@mixitem1_2 = 0; .@mixitem1_3 = 0; .@progress = 0; .@continue = 0; mes "[Mixing Machine]"; mes "Reset Complete."; mes "Initiate again?"; next; if (select("Yes.", "No.") == 1) break; mes "[Mixing Machine]"; mes "Process Halted."; mes "Thank you."; close; } if (.@progress == 3) break; } else if (.@progress == 1) { mes "[Mixing Machine]"; mes "Nothing found."; next; } mes "[Mixing Machine]"; mes "Select items to mix."; while(1) { switch(select("Jellopy.", "Fluff.", "Milk.", "Ready to Mix.")) { case 1: while(1) { input(.@input, 0); if (.@input > 10000) { next; mes "[Mixing Machine]"; mes "Error: Item limit exceeded. Please enter values less than 10,000 try again."; next; continue; } if (countitem(Jellopy) > 0) .@mixitem1_1 += .@input; .@progress = 2; break; } break; case 2: while(1) { input(.@input, 0); if (.@input > 10000) { next; mes "[Mixing Machine]"; mes "Error: Item limit exceeded. Please enter values less than 10,000 try again."; next; continue; } if (countitem(Fluff) > 0) .@mixitem1_2 += .@input; .@progress = 2; break; } break; case 3: while(1) { input(.@input, 0); if (.@input > 10000) { next; mes "[Mixing Machine]"; mes "Error: Item limit exceeded. Please enter values less than 10,000 try again."; next; continue; } if (countitem(Milk) > 0) .@mixitem1_3 += .@input; .@progress = 2; break; } break; case 4: if (.@progress != 2) .@progress = 1; .@continue = 1; next; } if (.@continue) break; } } mes "[Mixing Machine]"; mes "Please enter the "; mes "Serial Number of"; mes "the Magic Powder."; next; while(1) { input(.@input); if (.@input == 0) { mes "[Mixing Machine]"; mes "Do you want to skip this Menu?"; next; if (select("Yes.", "No.") == 1) { break; } continue; } if (.@input < 1000 || .@input > 9999) { mes "[Mixing Machine]"; mes "Invalid Serial Number."; mes "Please try again."; next; continue; } mes "[Mixing Machine]"; mes "The Serial Number is #" + .@input + ", correct?"; next; if (select("Confirm.", "Cancel.") == 1) { if (.@input == 8472) .@magic_powder = 1; else if (.@input == 3735) .@magic_powder = 2; else if (.@input == 2750) .@magic_powder = 3; else if (.@input == 5429) .@magic_powder = 4; else .@magic_powder = 5; } break; } mes "[Mixing Machine]"; mes "Choose a"; mes "Catalyst Stone."; next; switch(select("Yellow Gemstone.", "Red Gemstone.", "Blue Gemstone.", "1carat Diamond.", "Skip.")) { case 1: .@mixitem3 = 1; break; case 2: .@mixitem3 = 2; break; case 3: .@mixitem3 = 3; break; case 4: .@mixitem3 = 4; break; case 5: break; } mes "[Mixing Machine]"; mes "All Set."; mes "Initiating"; mes "Mixing process."; mes "Please Wait."; next; mes "[Mixing Machine]"; mes "- Proverb of the Day -"; switch(rand(1,5)) { case 1: mes "An Eye for an Eye: When you take from a person, you must replace or repay in some way."; break; case 2: mes "Credibility is a Man's Currency: There's a value in genuine trust that cannot be measured."; break; case 3: mes "What Goes Around Comes Around: Ultimately, you will be treated in the way you treat others."; mes "It means 'When you harm Another you will be harmed by him in an unavoidable situation'."; break; case 4: mes "A good neighbor is better than a distant brother: When you need help, you can count on those close to you."; break; default: mes "Birds of a Feather Flock Together: You can look at a person's friends as an indicator of their character."; } next; if (.@mixitem1_1 == 2 && .@mixitem1_2 == 3 && .@mixitem1_3 == 1 && .@mixitem2 == 1 && .@mixitem3 == 1 && .@magic_powder == 1) { mes "[Mixing Machine]"; mes "Mage Test Solution No. 1."; getitem Mage_Test_1,1; next; } else if (.@mixitem1_1 == 3 && .@mixitem1_2 == 1 && .@mixitem1_3 == 1 && .@mixitem2 == 0 && .@mixitem3 == 2 && .@magic_powder == 2) { mes "[Mixing Machine]"; mes "Mage Test Solution No. 2."; getitem Mage_Test_2,1; next; } else if (.@mixitem1_1 == 6 && .@mixitem1_2 == 1 && .@mixitem1_3 == 0 && .@mixitem2 == 1 && .@mixitem3 == 3 && .@magic_powder == 3) { mes "[Mixing Machine]"; mes "Mage Test Solution No. 3."; getitem Mage_Test_3,1; next; } else if (.@mixitem1_1 == 2 && .@mixitem1_2 == 3 && .@mixitem1_3 == 0 && .@mixitem2 == 2 && .@mixitem3 == 4 && .@magic_powder == 4) { mes "[Mixing Machine]"; mes "Mage Test Solution No. 4."; getitem Mage_Test_4,1; next; } else { mes "[Mixing Machine]"; mes "Unexpected"; mes "Error Occurred."; getitem Mage_Test_Etc,1; next; } mes "[Mixing Machine]"; mes "Mixing Complete."; mes "Thank you."; close; } close; } // The Morroc Solution and Payon Solution traders // are also used in the Sage skill quests, and have // been moved to npc/quests/mage_solution.txt. // // pay_arche,122,100,0 script Dollshoi 4_M_ORIENT01,{} // moc_ruins,91,150,0 script Ponka-Hontas 4_F_04,{} geffen_in,177,112,4 script Bookshelf HIDDEN_NPC,{ mes "[Guide Book]"; mes "This Guide Book is the property of the Geffen Mage Association. Please handle with care."; next; switch(select("Solution No. 1.", "Solution No. 2.", "Solution No. 3.", "Solution No. 4.", "Close.")) { case 1: mes "[Mage Test Solution No. 1]"; mes "* Ingredients List *"; mes "2 Jellopy"; mes "3 Fluff"; mes "1 Milk"; next; mes "[Mage Test Solution No. 1]"; mes "* Solvent Agent *"; mes "Payon Solution"; mes "Where to Find:"; mes "A small spring in Payon, the Archer Village."; next; mes "[Mage Test Solution No. 1]"; mes "* Magic Power Serial Code *"; mes "8472"; next; mes "[Mage Test Solution No. 1]"; mes "* Catalyst *"; mes "Yellow Gemstone"; mes "(Provided by"; mes "Mixing Machine)"; close; case 2: mes "[Mage Test Solution No. 2]"; mes "* Ingredients List *"; mes "3 Jellopy"; mes "1 Fluff"; mes "1 Milk"; next; mes "[Mage Test Solution No. 2]"; mes "* Solvent Agent *"; mes "None"; next; mes "[Mage Test Solution No. 2]"; mes "* Magic Power Serial Code *"; mes "3735"; next; mes "[Mage Test Solution No. 2]"; mes "* Catalyst *"; mes "Red Gemstone"; mes "(Provided by"; mes "Mixing Machine)"; close; case 3: mes "[Mage Test Solution No. 3]"; mes "* Ingredients List *"; mes "6 Jellopy"; mes "1 Fluff"; next; mes "[Mage Test Solution No. 3]"; mes "* Solvent Agent *"; mes "Payon Solution"; mes "Where to Find:"; mes "A small spring in Payon, the Archer Village."; next; mes "[Mage Test Solution No. 3]"; mes "* Magic Power Serial Code *"; mes "2750"; next; mes "[Mage Test Solution No. 3]"; mes "* Catalyst *"; mes "Blue Gemstone"; mes "(Provided by"; mes "Mixing Machine)"; close; case 4: mes "[Mage Test Solution No. 4]"; mes "* Ingredients List *"; mes "2 Jellopy"; mes "3 Fluff"; next; mes "[Mage Test Solution No. 4]"; mes "* Solvent Agent *"; mes "Morroc Solution"; mes "Where to Find:"; mes "A small spring near entrance of pyramid in Morroc."; next; mes "[Mage Test Solution No. 4]"; mes "* Magic Power Serial Code *"; mes "5429"; next; mes "[Mage Test Solution No. 4]"; mes "* Catalyst *"; mes "1 carat Diamond"; mes "(Provided by"; mes "Mixing Machine)"; close; } close; }