//===== eAthena Script =======================================
//= Thief Job Quest
//===== By: ==================================================
//= eAthena dev team
//===== Current Version: =====================================
//= 1.6
//===== Compatible With: =====================================
//= eAthena 1.0 +
//===== Description: =========================================
//= <Description>
//===== Additional Comments: =================================
//= Fully working
//= v1.1 Added instant job change for High Novice [Lupus]
//= 1.3 Added Baby Class support [Lupus]
//= v1.4 Optimised and moved first checker to Jfunc1-1 [massdriller]
//= Fixed possible EXP abuse [Lupus]
//= 1.5 Now saves/restores all quest skills [Lupus]
//= 1.6 Merged back JFunc [Lupus]
//============================================================
// == Monsters ==
//Spawn is included in this file so make shure its not elsewhere to!
job_thief1.gat,0,0,0,0 monster Orange Mushroom 1182,180,0,0,0
job_thief1.gat,0,0,0,0 monster Fabre 1184,50,0,0,0
job_thief1.gat,0,0,0,0 monster Chonchon 1183,50,0,0,0
job_thief1.gat,0,0,0,0 monster Spore 1014,30,0,0,0
// == NPCs ==
// -- Interviewer --
moc_prydb1.gat,39,129,5 script Thief Guide 69,{
mes "[Thief Guide]";
if(BaseJob == Job_Thief) {
mes "You're already a thief..... What do you want from me... go away!";
emotion e_swt;
close;
}
if(BaseClass == Job_Swordman) {
mes "What the heck...? Meh!~Here's another 'Bash' head. Do me a favor... why don't you go 'BASH', yourself in the head. Ha!";
emotion e_gg;
close;
}
if(BaseClass == Job_Mage) {
mes "What the heck...? Ehhh??? A Circus Sideshow? Make a fire without a Matchstick, will ya?";
emotion e_swt2;
close;
}
if(BaseClass == Job_Archer) {
mes "What the heck...? Hahahaha~are you a 'Kill Stealing' Archer...?";
emotion e_heh;
close;
}
if(BaseClass == Job_Acolyte) {
mes "What the heck...? Ohhhhhh~GOD... PORING's worshipper, Acolyte...";
mes "So why aren't you in church praying, instead of wandering about here, huh?";
close;
}
if(BaseClass == Job_Merchant) {
mes "What the heck...? Eeeeeek~Merchant Scammer here...!!!! I am gonna report you to the GM!!!";
emotion e_gasp;
close;
}
if(BaseClass != Job_Novice) {
mes "You already have a job. Stop bothering me and go help out some newbies or something.";
emotion e_no1;
close;
}
if(job_thief_q==2) goto L_1;
if(job_thief_q==1) goto L_Back;
mes "[Thief Guide]";
if(Sex) {
mes "Heh... You look like a well to do boy... what brought you down to this rat hole?";
}else{
mes "Heh... You look like a well to do girl... what brought you down to this rat hole?";
}
next;
M_Menu:
menu "'I didn't come here for the atmosphere.....",M_0,"Me? I'm just looking around...",M_End,"Just looking for the one truth",M_Truth;
M_0:
mes "[Thief Guide]";
mes "Hmph... you sound a little cocky.... Yah know, being a Thief isn't all it's cracked up to be....";
mes "That reminds me.... I must have been at lvl 9 or 10 when I did my first robbery....";
next;
mes "[Thief Guide]";
mes "Hahahaha... I can still remember the look on that guy's face...";
emotion e_heh;
next;
mes "[Thief Guide]";
mes "But anyways... I assume you're here to become a thief...";
next;
menu "You got it.",sM_0a, "Nope. Just wasting your time. ^ ^",sM_0b, "Why did you steal from that man?",sM_0c;
sM_0a:
goto L_Test;
sM_0b:
mes "[Thief Guide]";
mes "Wow... thanks... now get the HELL OUTA HERE!!";
emotion e_an;
close;
sM_0c:
mes "[Thief Guide]";
mes "Eh? Me?... Well... I really had no other choice at the time.... It was either I stole or I starved.";
mes "I really couldn't go hungry another day.";
close;
M_Truth:
mes "[Thief Guide]";
mes "To see one's light, you need to be under the magic of the book where the royalty looms.";
close;
M_End:
mes "[Thief Guide]";
mes "Must you people keep wasting my time!!?";
emotion e_pif;
close;
L_Test:
mes "[Thief Guide]";
mes "Okay then; first, fill out this application form.";
next;
mes "^0000FF(You fill out the form and hand it back)^000000";
next;
if(JobLevel < 10) goto sL_JobLvl;
mes "[Thief Guide]";
mes "Alrighty ^FF0000"+ strcharinfo(0) + "^000000, if that IS your real name..... looks like you've got quite a 'record' here.";
mes "Let's see.... aggravated assualt... felony larson..... hmm....";
next;
mes "[Thief Guide]";
mes "Ah, here we go...... you've got the job and skill requirements to become a Thief. Now all you've got to do is pass the ^FF0000Morroc Thief Test^000000.";
next;
L_Explain:
mes "[Thief Guide]";
mes " The test will require you to ^FF0000'sneak'^000000 into ^FF0000'Shibu's Farm'^000000, and ^FF0000'borrow'^000000 some ^AAAA00'Mushrooms'^000000.";
mes " There are ^ff00002^000000 kinds of ^AAAA00Mushrooms^000000 on the farm, ^FFBB00Orange Net Mushrooms^000000 and ^FFBB00Orange Gooey Mushrooms^000000.";
next;
mes "[Thief Guide]";
mes "'Shibu just happens to be the worst merchant scammer in Morroc, in case you're wondering why he's our target.";
next;
mes "[Thief Guide]";
mes " Bring the Mushrooms back here and someone will give you a score based on the type and the amount of mushrooms you get.";
mes " 1 Orange Net Mushroom = ^0000FF3 points^000000 while 1 Orange Gooey Mushroom = ^0000FF1 point^000000. You need ^FF000025^000000 points to pass the test.";
next;
mes "[Thief Guide]";
mes " In order to get into Shibu's Farm you'll need to talk to one of our 'associates'. You can find him just ouside of this pyramid standing near some columns.";
mes " He goes by the name ^DDCC00'Irrelevant Man'^000000.";
next;
mes "[Thief Guide]";
mes " Here are his exact coordinates just in case you are 'directionaly challenged': '^FF0000141, 125^000000'.";
mes " Find him and he'll show you a secrect way into the Farm.";
next;
mes "[Thief Guide]";
mes " This sounds easy but ^009900do know, there are Monsters who guard Mushrooms^000000?";
mes " Stop reading Fairy Tales and ^FF0000brace up your nerves; this will be the toughest experience ever^000000.";
next;
mes "[Thief Guide]";
mes " So, I will give you one tip. ^FF0000Elaborate the Strategy^000000 before you going inside the Farm.";
next;
mes "[Thief Guide]";
mes " Try to steal the mushrooms as quickly as you can. You may even have to ^0000FFunequip some weapons or armor to attack faster^000000.";
mes " Try not to get killed while doing this... at the very least try to give me the mushrooms first.... then you can go get yourself killed... HA!";
next;
mes "[Thief Guide]";
mes " If you don't have any questions... then GET moving!";
emotion e_go;
set job_thief_q,1;
close;
sL_JobLvl:
mes "[Thief Guide]";
mes "Err... I can see how ambitious you are, but we can't hand a gun to a baby only for that. Come back when you learn all Basic Skills.";
close;
L_Back:
if(countitem(1069)>0 || countitem(1070)>0) goto sL_1;//Items: Orange_Net_Mushroom, Orange_Gooey_Mushroom_,
mes "..... What are you doing here? You're supposed to be gathering mushrooms remember??";
mes "Don't tell me you forget what to do??? Jeeze... do you want me to explain it to you one more time?......";
emotion e_hmm;
next;
menu "Heh.. yeah I guess..",sM_1a, "Nope.",sM_1b;
sM_1a:
mes "[Thief Guide]";
mes "(~sigh~) There's always someone who gets left behind.... This is the last time so listen CAREFULLY!!....";
emotion e_pif;
next;
goto L_Explain;
sM_1b:
mes "[Thief Guide]";
mes ".... Then what is it??? Do you have something to tell me? YOUR the one who came TO ME...";
mes "What... you wanna a piece of me?? HUH!!??";
emotion e_ag;
close;
sL_1:
mes "What? You actually went and stole some mushrooms?? Are you some kinda idiot?";
mes "Haha... I can't believe you listened to me..... ";
emotion e_what;
next;
mes "[Thief Guide]";
mes ".... Psych!! Just kidding... heheheh! Speak with the guy next to me about rating the mushrooms you swiped.";
emotion e_heh;
close;
L_1:
mes "So how was the Mushroom Farm? Did yah have much fun?";
next;
menu "Yeah, kinda Cool.",M_Cool,"It was horrible.",M_Not;
M_Cool:
mes "[Thief Guide]";
mes " Wow! I like you! Fabulous! Everyone before you was #&$@ bloody As#$%^&s#!";
next;
mes "[Thief Guide]";
mes "...... You won't take my place, will you? If you have any ambition like that, I'll ^ff0000DESTROY YOU^000000!";
// mes "...... You won't take my place, will you? If you have any ambition like that, I will kick your ^ff0000'ASS OUT OF YOUR BUTT'^000000!";
// this is just too much lol.
// That line before was just too precious to delete. [KillerBox]
emotion e_gasp;
next;
mes "[Thief Guide]";
mes " Still, in order to pass the test you need to go get some mushrooms.";
close;
M_Not:
mes "[Thief Guide]";
mes " I know what yah mean. I was there before and it was awful: all those smelly mushrooms and aggressive monsters.";
next;
mes "[Thief Guide]";
mes " Eeewww! Yuuuckk! Still, in order to pass the test you need to go get some mushrooms.";
emotion e_wah;
close;
}
// -- Test Grader --
moc_prydb1.gat,42,133,2 script Comrade Brad 118,{
callfunc "F_ToHigh",Job_Thief_High,"Thief High",Job_Assassin_Cross,"Brad";
if(BaseJob == Job_Novice) goto L_Novice;
if(BaseJob == Job_Thief) goto L_Thief;
L_Other:
mes "[Brad]";
mes "Hey~ Hey~!! You don't look like a Thief. What the heck? You'd BETTER NOT be trying to start someting on THIEF TERRITORY!!";
emotion e_omg;
close;
L_Thief:
mes "[Brad]";
mes "We don't have any Special events for Thieves yet. Come back some other time, alright?";
close;
L_Novice:
mes "[Comrade Brad]";
if((job_thief_q == 2) && ((countitem(1069) > 0) || (countitem(1070) > 0))) goto L_4;//Items: Orange_Net_Mushroom, Orange_Gooey_Mushroom_,
if(job_thief_q >= 1) goto L_3;
mes "Errr? What's matter newbie? If you want to be a thief, speak to the girl beside me.";
close;
L_3:
mes "Go get some mushrooms so that I can grade them ok.";
close;
L_4:
mes "Good. You got some mushrooms from that crooked merchant Shibu";
next;
set @mushrm1,countitem(1069)*3;//Items: Orange_Net_Mushroom,
set @mushrm2,countitem(1070);//Items: Orange_Gooey_Mushroom_,
set @TotMush,@mushrm1 + @mushrm2;
set @money_thief,((countitem(1069) * 5) + (countitem(1070)* 2)) + 200;//Items: Orange_Net_Mushroom, Orange_Gooey_Mushroom_,
mes "[Comrade Brad]";
mes "Let's see you got:";
mes "^0000ff"+countitem(1069)+"^000000 Orange Net Mushrooms for ^ffbb00"+@mushrm1+"^000000 points,";//Items: Orange_Net_Mushroom,
mes "^0000ff"+countitem(1070)+"^000000 Orange Gooey Mushrooms for ^ffbb00"+@mushrm2+"^000000 points,";//Items: Orange_Gooey_Mushroom_,
mes "Giving you a total score of ^ff0000"+@TotMush+"^000000.";
next;
if (@TotMush > 25) goto L_High;
if (@TotMush == 25) goto L_Medium;
mes "[Comrade Brad]";
mes "Meh!.... looks like you failed. C'mon! You can do better than that! Go get some more mushrooms!!!";
close;
L_Medium:
mes "[Comrade Brad]";
mes "Good. You passed the Test.";
next;
goto L_Final;
L_High:
mes "[Comrade Brad]";
mes "Ooooh. Above 25, you will make an excellent thief.";
next;
L_Final:
mes "[Comrade Brad]";
mes "Congratulations ^ff0000"+strcharinfo(0)+"^000000, you passed the official Thief Test! You can now become a Thief!!";
emotion e_no1;
next;
if(SkillPoint > 0) goto sL_SkPoint;
delitem 1069, countitem(1069);//Items: Orange_Net_Mushroom,
delitem 1070, countitem(1070);//Items: Orange_Gooey_Mushroom_,
callfunc "Job_Change",Job_Thief;
callfunc "F_ClearJobVar"; // clears all job variables for the current player
mes "[Comrade Brad]";
mes "Here's a small reward for your hard work. Spend it any way you want to.";
next;
set Zeny,Zeny+@money_thief;
mes "[Comrade Brad]";
mes "From now on you must act, think, and even smell like a Thief.";
mes "You are one of us now, which means you have the trust and freindship of Thieves all over Rune Midgard";
next;
mes "[Comrade Brad]";
mes "However, If you bring disgrace to our Guild, or ever betray us, we will not hesitate to have you......";
mes "How shall I say, ^ff0000'REMOVED'^000000 from the Thief Guild.";
emotion e_gg;
next;
mes "[Comrade Brad]";
mes "Good luck and always remeber the ^0000cc'Thief Motto'^000000: ^ff0000DON'T Get Caught^000000l!";
close;
sL_SkPoint:
mes "[Comrade Brad]";
mes "But before that happens please use up all of your skill points, okay?";
close;
}
// -- Irrelevant Man --
moc_ruins.gat,141,125,3 script Irrelevant Man 118,{
if(BaseJob == Job_Thief) goto L_Thief;
if(BaseJob == Job_Novice) goto L_Novice;
L_Other:
if(@s_flag==1) goto L_1b;
if(@s_flag==2) goto L_1c;
if(@s_flag==3) goto L_1d;
if(@s_flag==4) goto L_1e;
set @s_flag, 0;
L_1a:
mes "[Irrelevant Man]";
mes "Howdy~ Howdy. What a Wonderful day today,isn't it?";
mes "I feel like going on a 'Picnic' in the Pyramids with a couple freinds of mine today.";
set @s_flag, @s_flag+1;
close;
L_1b:
mes "[Irrelevant Man]";
mes "'Lalalala, Home sweet Home.'";
mes "I like this saying. Home Sweet Home....";
set @s_flag, @s_flag+1;
close;
L_1c:
mes "[Irrelevant Man]";
mes "...... I could fly if I fell off............ ";
set @s_flag, @s_flag+1;
close;
L_1d:
mes "[Irrelevant Man]";
mes ".......Hmm?.....";
next;
mes "[Irrelevent Man]";
mes "Hey!! DON'T LOOK AT ME like that! I'M NOT some WACKO okay!!!";
set @s_flag, @s_flag+1;
emotion e_an;
close;
L_1e:
mes "[Irrelevant Man]";
mes "Dude! I got nothin to say with you! Mind your own business! Sheesh!!";
emotion e_pif;
close;
L_Thief:
mes "[Irrelevant Man]";
mes "Yah Hoo! Look at you! You became a Kool Thief!";
emotion e_no1;
next;
mes "[Irrelevant Man]";
mes "Don't worry about Shibu's Farm. Let the newbies handle that. Why don't yah go out and kill some stronger monsters?";
close;
L_Novice:
if(job_thief_q==2) goto L_3;
if(job_thief_q==1) goto L_2;
mes "[Irrelevant Man]";
mes "Hey!! Novice! Want to be Stronger and more Powerful!? Do you like hiding and sneeking around?";
mes "If so, Join the Thief Guild! You are always welcome! Join now!";
next;
mes "[Irrelevant Man]";
mes "You can get more information in the 1st floor basement of the Pyramid!";
close;
L_2:
mes "[Irrelevant Man]";
mes "Pssst......Pssst......hey you! You look like your gonna take the ^ff0000'Test'^000000. Am I right?";
next;
mes "[Irrelevant Man]";
mes "Lets see here.....(checks his list).... you're ^ff0000"+ strcharinfo(0) +"^000000 right? Good.";
next;
mes "[Irrelevant Man]";
mes "Okay! I'm gonna show you the way in but keep quite. I can't guarantee your safety so watch your back.";
next;
L_Warp:
set @TEMP,rand(5);
set job_thief_q,2;
if(@TEMP != 0) goto warpL03a;
warp "job_thief1.gat",228,106;
close;
warpL03a:
if(@TEMP != 1) goto warpL03b;
warp "job_thief1.gat",38,50;
close;
warpL03b:
if(@TEMP != 2) goto warpL03c;
warp "job_thief1.gat",66,331;
close;
warpL03c:
if(@TEMP != 3) goto warpL03d;
warp "job_thief1.gat",196,331;
close;
warpL03d:
warp "job_thief1.gat",309,234;
close;
L_3:
mes "[Irrelevant Man]";
mes "Muhahahaha~~ WHAT???~~ You HAVEN'T PASSED the Test yet? Are you some sort of Idiot!! Kakakaka!!";
emotion e_heh;
next;
mes "[Irrelevant Man]";
mes "Just kidding..... NOT!!. Anywho I'll let yah back in!";
next;
menu "Ready",M_Yes,"Not yet",M_No;
M_Yes:
goto L_Warp;
M_No:
mes "[Irrelevant Man]";
mes "Okay, let me know when you are.";
close;
}
//==============================================================================
// mapflag
//==============================================================================
job_thief1.gat mapflag nomemo
job_thief1.gat mapflag noteleport
job_thief1.gat mapflag nosave SavePoint
job_thief1.gat mapflag nopenalty
job_thief1.gat mapflag nobranch
job_thief1.gat mapflag noexp