//================= 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) L0ne_W0lf
//= Copyright (C) Lupus
//= Copyright (C) Samuray22
//= Copyright (C) Celestria
//=
//= 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/>.
//=========================================================================
//= Soul Linker Job Quest
//================= Description ===========================================
//= Job quest for Soul Linker class.
//================= Current Version =======================================
//= 1.6
//================= Variables Used ========================================
//= SOUL_Q = Job Change Phase. (Max 4)
//=========================================================================
morocc_in,174,30,6 script Kid#link1 4_M_KID2,{
if (Class == Job_Soul_Linker) {
mes "[Maia]";
mes "Best of luck in your";
mes "journeys. As you master";
mes "more Soul Linker skills,";
mes "you will be able to draw";
mes "more of the spirits' power";
mes "to endow upon your allies...";
close;
}
if (Class == Job_Star_Gladiator) {
mes "[Kid]";
if (Sex == 1) {
mes "Aren't you a warrior";
mes "of the sun? I'm familiar";
}
else {
mes "Aren't you a warrior of";
mes "the moon? I'm familiar";
}
mes "with your ways. After all,";
mes "the basis of both of our";
mes "skills is grounded in the";
mes "Taekwon Do job, right?";
close;
}
if (Class != Job_Taekwon) {
mes "[Kid]";
mes "Mm? I've got nothing to";
mes "offer you. But if you know";
mes "any well experienced";
mes "practitioners of Taekwon";
mes "Do, they might benefit";
mes "from what I know.";
close;
}
if (JobLevel < 40) {
mes "[Kid]";
mes "So you're studying";
mes "Taekwon Do. That's good,";
mes "that's very good. Just keep";
mes "refining those skills and";
mes "stick to your training.";
close;
}
else if (JobLevel > 39) {
if (SOUL_Q == 0) {
mes "[Kid]";
mes "...";
mes "Hey you.";
next;
mes "["+ strcharinfo(0) +"]";
mes "Did you call me?";
next;
mes "[Kid]";
mes "Yeah, I called you.";
mes "Now don't make me";
mes "raise my voice, and";
mes "just get over here.";
next;
if (select("You're awfully rude for a kid!", "Ignore him.") == 1) {
mes "[Kid]";
mes "You're lucky I'm";
mes "taking an interest";
mes "in you! I might look";
mes "like a kid, but I'm over";
mes "three hundred years old!";
emotion e_pif;
next;
mes "[Kid]";
mes "Now listen...";
mes "I know that you're a";
mes "disciple of Taekwon Do.";
mes "It's a respectable art, but";
mes "I've got a proposition for";
mes "you if you want to hear it.";
emotion e_heh;
next;
mes "[Kid]";
mes "I'm looking at you, and I can";
mes "already tell that you're very";
mes "spiritually inclined. You've";
mes "got a lot of potential I don't";
mes "wanna see wasted. Why don't";
mes "you become a ''Soul-Linker?''";
next;
if (select("Ha! Silly little boy~", "Soul Linker?") == 1) {
mes "[Kid]";
mes "You... You d-don't";
mes "believe me? I'm being";
mes "dead serious. Can you";
mes "forget the fact that I look";
mes "like a little kid for just one";
mes "minute? *Psh* ...Youngsters.";
close;
}
mes "[Kid]";
mes "Soul Linkers communicate";
mes "with spirits of fallen warriors";
mes "that still wish to fight in the";
mes "world of the living. Now, these";
mes "warrior spirits can't fight as";
mes "themselves in our world.";
next;
mes "[Kid]";
mes "However, since you're";
mes "spiritually inclined, these";
mes "spirits are attracted to you.";
mes "With enough training, you can";
mes "temporarily imbue the power of these spirits to your allies.";
next;
mes "[Kid]";
mes "Now, you can't imbue yourself";
mes "with the spirits' power. Also,";
mes "depending on your skills as";
mes "a Soul Linker, you can only";
mes "endow other characters of certain job classes with enchanced power.";
next;
mes "[Kid]";
mes "You'll have to enter";
mes "a wholly different world";
mes "to become a Soul Linker,";
mes "but I know it'll be possible";
mes "for you. So what do you say?";
next;
if (select("No. At least, not now...", "Alright. What do I have to do?") == 1) {
mes "[Kid]";
mes "Ah, alright. Well,";
mes "if you ever decide to";
mes "become a Soul Linker,";
mes "then please come back";
mes "and talk to me at any time.";
close;
}
SOUL_Q = 1;
setquest 6005;
mes "[Kid]";
mes "So you want to become";
mes "a Soul Linker? Great!";
mes "Alright, first I need you";
mes "to bring back a few items.";
mes "Don't worry, I'll explain";
mes "why you need them later.";
next;
mes "[Kid]";
mes "Now bring me";
mes "^0000FF1 3 Carat Diamond^000000,";
mes "^0000FF1 Immortal Heart^000000 and";
mes "^0000FF1 Witherless Rose^000000.";
mes "And try not to make me";
mes "wait too long, alright?";
close;
}
mes "[Kid]";
mes "Huh...?";
mes "Wait, where are";
mes "you going? I'm...";
mes "I'm talking to you!";
close;
}
else if (SOUL_Q == 1) {
if (Class == Job_Taekwon) {
mes "[Kid]";
mes "You're back, eh?";
mes "So did you bring";
mes "^0000FF1 3 Carat Diamond^000000,";
mes "^0000FF1 Immortal Heart^000000 and";
mes "^0000FF1 Witherless Rose^000000.";
mes "like I asked you to?";
next;
if (select("There you are.", "No, not yet...") == 1) {
if (countitem(Crystal_Jewel__) > 0 && countitem(Immortal_Heart) > 0 && countitem(Witherless_Rose) > 0) {
delitem Crystal_Jewel__,1;
delitem Immortal_Heart,1;
delitem Witherless_Rose,1;
SOUL_Q = 2;
changequest 6005,6006;
mes "[Kid]";
mes "Great, I see that you've";
mes "brought everything. But";
mes "before we begin, let me";
mes "introduce myself. My name";
mes "is Maia, and I've been alive for more than three hundred years.";
next;
mes "[Maia]";
mes "Without giving away too many";
mes "of the details, I've been divinely charged with the duty of finding";
mes "and recruiting more Soul Linkers. That's part of the reason why";
mes "I haven't, you know, passed on.";
next;
mes "[Maia]";
mes "Anyway, I still need to finish";
mes "preparations with the materials";
mes "that you just brought, so would";
mes "you come back in a little bit?";
mes "Then, we'll talk once again.";
close;
}
mes "[Kid]";
mes "Mm...?";
mes "Hey. You forgot";
mes "a few things. Now";
mes "go back and bring";
mes "everything that I ask";
mes "for this time, okay?";
emotion e_pif;
next;
mes "[Kid]";
mes "I know I just told you";
mes "what we need, but I'm";
mes "going to remind you again:";
mes "^0000FF1 3 Carat Diamond^000000,";
mes "^0000FF1 Immortal Heart^000000 and";
mes "^0000FF1 Witherless Rose^000000.";
close;
}
mes "[Kid]";
mes "Mm. That's fine.";
mes "Although I have all";
mes "the time to spare in";
mes "the world, I don't like";
mes "to wait for very long.";
close;
}
SOUL_Q = 0;
mes "[Kid]";
mes "You've become a warrior";
mes "of the Sun, the Moon and";
mes "the Stars instead? I had no";
mes "idea you had that potential.";
mes "I suppose I can't blame you...";
close;
}
else if (SOUL_Q == 2) {
if (SkillPoint) {
mes "[Maia]";
mes "You still have some";
mes "unallocated Skill Points.";
mes "Use them all to learn some";
mes "Taekwon Do skills, and then";
mes "return when you're ready.";
close;
}
if (.SoulLinkerTest == 1) {
mes "[Maia]";
mes "Right now, someone else";
mes "is completing the ceremony";
mes "to become a Soul Linker.";
mes "Would you please wait until";
mes "it's finished? Then, when I'm";
mes "available, I'll attend to you.";
close;
}
donpcevent "Timer#link3::OnEnable";
.SoulLinkerTest = 1;
mes "[Maia]";
mes "Great, I've finished";
mes "the preparations. Now";
mes "we'll proceed with the";
mes "ceremony to change";
mes "you into a Soul Linker.";
mes "Now close your eyes...";
close2;
warp "job_soul",30,30;
end;
}
else if (SOUL_Q > 2) {
mes "[Maia]";
mes "Are you ready to";
mes "enter the depths";
mes "of your mind again?";
next;
if (select("No", "Yes") == 1) {
mes "[Maia]";
mes "Well then, come";
mes "back to me when you";
mes "think you are ready.";
mes "Until then, I'll be";
mes "waiting right here.";
close;
}
if (.SoulLinkerTest == 1) {
mes "[Maia]";
mes "Right now, someone else";
mes "is completing the ceremony";
mes "to become a Soul Linker.";
mes "Would you please wait until";
mes "it's finished? Then, when I'm";
mes "available, I'll attend to you.";
close;
}
donpcevent "Timer#link3::OnEnable";
.SoulLinkerTest = 1;
mes "[Maia]";
mes "Alright then, close";
mes "your eyes and relax.";
mes "We'll go back into the";
mes "depths of your mind.";
close2;
warp "job_soul",30,30;
end;
}
}
OnInit:
.SoulLinkerTest = 0;
end;
}
job_soul,30,31,0 script Maia#link2::SLTester FAKE_NPC,3,3,{
OnTouch:
if (Class == Job_Taekwon) {
if (JobLevel < 40) {
set getvariableofnpc(.SoulLinkerTest,"Kid#link1"),0;
mes "[Maia]";
mes "Hm? How did you come";
mes "here? You're not qualified";
mes "for this ceremony yet. Come,I will bring you back to Morroc...";
close2;
warp "morocc",157,47;
end;
}
if (SOUL_Q == 2) {
mes "[Maia]";
mes "Do you recognize this";
mes "place? Right now, we're";
mes "inside your mind. The spirits";
mes "of warriors that have died";
mes "hover here, waiting for you";
mes "to call upon their power.";
next;
mes "[Maia]";
mes "Right now, there are only";
mes "a few of them here, but if";
mes "you continue to train, you";
mes "will be able to call upon";
mes "more spirits as a Soul Linker.";
next;
SOUL_Q = 3;
changequest 6006,6007;
mes "[Maia]";
mes "We can only remain in";
mes "your mind for 3 minutes.";
mes "I suggest that you speak";
mes "to the spirits while you";
mes "have the opportunity.";
close;
}
else if (SOUL_Q == 3) {
mes "[Maia]";
mes "Listen to what";
mes "spirits are tending to say.";
mes "There is a reason why";
mes "they cannot move on";
mes "to the next world.";
close;
}
else if (SOUL_Q == 4) {
mes "[Maia]";
mes "I believe that you are";
mes "now ready to become";
mes "a Soul Linker. However,";
mes "you may continue to";
mes "speak with the spirits";
mes "if that is what you wish.";
next;
if (select("Converse more with the spirits", "Become a Soul Linker") == 1) {
mes "[Maia]";
mes "Alright. Try to hurry";
mes "since we can remain in";
mes "your mind for a limited";
mes "time. Although, we can";
mes "go back inside your mind";
mes "if you talk to me later...";
close;
}
if (hascashmount()) {
mes "[Maia]";
mes "You are on a riding pet,";
mes "so you cannot change your job.";
mes "Please unequip your riding pet and try again!";
close;
}
mes "[Maia]";
mes "Then let us begin the";
mes "ceremony. These items will";
mes "be used to endow you with";
mes "the ability to borrow the power";
mes "of the fallen warriors and lend";
mes "it to your friends in battle.";
next;
mes "[Maia]";
mes "This Witherless Rose will";
mes "wither away instead of you...";
specialeffect EF_MAPPILLAR2,AREA,"Maia#link2";
next;
mes "[Maia]";
mes "This Witherless Rose will";
mes "wither away instead of you...";
mes "This Immortal Heart will cease";
mes "to pump blood, instead of yours. ";
next;
mes "[Maia]";
mes "This Witherless Rose will";
mes "wither away instead of you...";
mes "This Immortal Heart will cease";
mes "to pump blood, instead of yours. This Diamond will turn to dust,";
mes "in place of your mortal body.";
next;
mes "[Maia]";
mes "The dead who wish";
mes "to continue fighting...";
mes "Will fight for you! Use your";
mes "powers as a Soul Linker";
mes "wisely and for just purposes.";
next;
if (SkillPoint) {
mes "^0000ffYou still have unused skill points. Please use all remaining skill points and try again!^000000";
close;
}
completequest 6008;
callfunc "Job_Change",Job_Soul_Linker;
callfunc "F_ClearJobVar"; // clears all job variables for the current player
SOUL_Q = 0;
mes "[Maia]";
mes "I wish the best of luck";
mes "in your new life. Surround";
mes "yourself with allies, and the";
mes "spirits will be able to protect";
mes "you and help you fight in your battles. Farewell for now, friend.";
close2;
set getvariableofnpc(.SoulLinkerTest,"Kid#link1"),0;
donpcevent "Timer#link3::OnDisable";
warp "morocc",157,47;
end;
}
set getvariableofnpc(.SoulLinkerTest,"Kid#link1"),0;
mes "[Maia]";
mes "Hmm...?";
mes "The time for you";
mes "to be here has not";
mes "arrived. Let's go";
mes "back to Morroc...";
close2;
warp "morocc",157,47;
end;
}
set getvariableofnpc(.SoulLinkerTest,"Kid#link1"),0;
if (Class == Job_Soul_Linker) {
mes "[Maia]";
mes "The time has come for";
mes "you to venture out into the";
mes "wide world! More Soul Linkers";
mes "will definitely be needed in the ongoing battle against evil...";
}
else {
mes "[Maia]";
mes "That's strange...";
mes "You're not supposed to";
mes "be here. Let me guide";
mes "you back to Morroc...";
}
close2;
warp "morocc",157,47;
end;
}
job_soul,35,30,6 duplicate(SLTester) Maia#link6 4_M_KID2
job_soul,30,35,6 script Monk Spirit#link4 4_M_GRANDMONK,{
if (SOUL_Q == 2) {
mes "[Monk Spirit]";
mes "Who am I...?";
mes "I think... I think";
mes "it would be best if";
mes "you spoke to Maya first...";
mes "Who and what I am requires";
mes "a complicated explanation...";
close;
}
else if (SOUL_Q > 2) {
mes "[Monk Spirit]";
mes "In life, my peers did";
mes "their best to assure me";
mes "that I accomplish all that";
mes "I could as a Monk. Still...";
mes "Still I would never be fully";
mes "satisfied with my skills.";
next;
mes "[Monk Spirit]";
mes "In death, I had many regrets,";
mes "never having the chance to pass";
mes "my skills down to future Monks.";
mes "Lending my power to others ";
mes "is the only chance that I can";
mes "possibly have to do this.";
next;
SOUL_Q = 4;
if (!questprogress(6008)) {
changequest 6007,6008;
}
mes "[Monk Spirit]";
mes "I beg of you...";
mes "I need you to help";
mes "me fully realize the";
mes "true potential of the";
mes "Monks of today.";
close;
}
mes "[Monk Spirit]";
mes "...";
close;
}
job_soul,30,25,7 script Sage Spirit#link5 4_M_SAGE_A,{
if (SOUL_Q == 2) {
mes "[Sage Spirit]";
mes "Speak to Maia.";
mes "I'm afraid I may";
mes "confuse you if Maia";
mes "doesn't first explain";
mes "your present situation...";
close;
}
else if (SOUL_Q > 2) {
mes "[Sage Spirit]";
mes "My pursuit of knowledge";
mes "granted me incredible power:";
mes "in life, I could have destroyed";
mes "anything I wanted. Few Sages";
mes "could even reach my level...";
next;
mes "[Sage Spirit]";
mes "I died, but I was never able";
mes "to pass on to the next world.";
mes "I still want to use my abilities.I want to use my knowledge";
mes "to build what pleases me,";
mes "and to destroy as I please.";
next;
mes "[Sage Spirit]";
mes "It is enough if I can";
mes "lend my power to a Sage";
mes "that is worthy of receiving";
mes "it. But to do that, I shall";
mes "require your help. I beg you,";
mes "let me become your spirit ally.";
SOUL_Q = 4;
if (!questprogress(6008)) {
changequest 6007,6008;
}
next;
mes "[Sage Spirit]";
mes "I believe that you";
mes "are the only one who";
mes "has a chance of bringing";
mes "rest to my troubled soul...";
close;
}
mes "[Sage Spirit]";
mes "...";
close;
}
job_soul,25,30,5 script Alchemist Spirit#link7 4_F_ALCHE,{
if (SOUL_Q == 2) {
mes "[Alchemist Spirit]";
mes "Oh! I really want to";
mes "speak to you, but what";
mes "I have to say won't make";
mes "much sense unless you";
mes "talk to Maia first. But yes,";
mes "I really need your help.";
close;
}
else if (SOUL_Q > 2) {
mes "[Alchemist Spirit]";
mes "Without exagerrating, I was";
mes "the fastest Alchemist in my";
mes "time. In fact, I may even be";
mes "the fastest Alchemist ever.";
mes "But then I grew arrogant, and";
mes "killed myself in an accident.";
next;
mes "[Alchemist Spirit]";
mes "But death would not stifle";
mes "my skill. In fact, I've even";
mes "improved my skill since I've";
mes "passed away. I cannot go";
mes "on to the next world until I've";
mes "passed on my techniques...";
SOUL_Q = 4;
if (!questprogress(6008)) {
changequest 6007,6008;
}
next;
mes "[Alchemist Spirit]";
mes "I'm powerless as a spirit,";
mes "but with your help, I can";
mes "influence the Alchemists of";
mes "today and help them refine";
mes "their skills. I beseech you,";
mes "please give me this chance...";
close;
}
mes "[Alchemist Spirit]";
mes "...";
close;
}
job_soul,1,5,0 script Timer#link3 HIDDEN_NPC,{
end;
OnEnable:
initnpctimer;
end;
OnDisable:
stopnpctimer;
set getvariableofnpc(.SoulLinkerTest,"Kid#link1"),0;
end;
OnTimer60000:
OnTimer120000:
if (getmapusers("job_soul") == 0) {
stopnpctimer;
set getvariableofnpc(.SoulLinkerTest,"Kid#link1"),0;
}
end;
OnTimer180000:
OnTimer181000:
OnTimer182000:
mapwarp "job_soul","morocc",157,47;
end;
OnTimer183000:
mapwarp "job_soul","morocc",157,47;
set getvariableofnpc(.SoulLinkerTest,"Kid#link1"),0;
stopnpctimer;
}
sec_in02,35,153,0 script Soul Linker Var 4_M_OPERATION,{
callfunc "F_GM_NPC";
mes "[Soul Linker Var]";
mes "I can reset the Soul Linker";
mes "NPCs if a Soul Linker candidate";
mes "encounters a problem during the";
mes "end of the job quest. Please do";
mes "not use this function if players are still in the Quest Map.";
next;
if (callfunc("F_GM_NPC",1854,0) < 1) {
mes "[Soul Linker Var]";
mes "Password";
mes "is incorrect.";
close;
} else {
mes "[Soul Linker Var]";
mes "Would you like to";
mes "reset the Soul Linker";
mes "Global Variable?";
next;
switch(select("Reset", "Cancel")) {
case 1:
mes "[Soul Linker Var]";
mes "The Soul Linker";
mes "Job Quest NPCs";
mes "have been reset.";
set getvariableofnpc(.SoulLinkerTest,"Kid#link1"),0;
close;
case 2:
mes "[Soul Linker Var]";
mes "You have canceled";
mes "this command.";
close;
}
}
}