//===== eAthena Script =======================================
//= eAthena Jobchanger AKA Job Master
//===== By: ==================================================
//= eAthena Dev Team [LunatikBunnie] (Editted by Amada`)
//===== Current Version: =====================================
//= 1.3
//===== Compatible With: =====================================
//= Any Athena Version
//===== Description: =========================================
//= Changes your job without asking too much
//= For other info, please contact me at Lunatikbunnie@gmail.com 
//= Editted menu to avoid button mashing.
//= 1.3 Added TK/SL/SG, thanks to Haplo. Fixed minor bugs [Lupus]
//=    script leaves grabage variable: 'lastJob'
//============================================================

// ------------------------------ Start ------------------------------
prontera.gat,153,193,6	script	Job Master	123,{
// Variable Setup
	set @MinimumJB, 40; //Minimum job level for changing between 2nd and advance Class (Default : 40)
	set @GivePlat, 1; //Give Platinum skills on Jobchange (Default : 1-yes)
	set @SupNovM, 45; //Base Level to change into Super Novice (Default : 45)
// Check Jobtype
	if(Upper == 1 && Class >= Job_Lord_Knight) goto L_cantCh;
	if(SkillPoint != 0) goto L_skillUsed;
	if(Class == Job_Novice) goto L_novice;
	if(JobLevel <10) goto L_notEn;
	if((Class ==Job_Novice_High) && ((lastJob ==7) || (lastJob ==14))) goto L_cHsword;
	if((Class ==Job_Novice_High) && ((lastJob ==9) || (lastJob ==16))) goto L_cHmage;
	if((Class ==Job_Novice_High) && ((lastJob ==11) || (lastJob ==19) || (lastJob ==20))) goto L_cHarcher;
	if((Class ==Job_Novice_High) && ((lastJob ==8) || (lastJob ==15))) goto L_cHacolyte;
	if((Class ==Job_Novice_High) && ((lastJob ==10) || (lastJob ==18))) goto L_cHmerchant;
	if((Class ==Job_Novice_High) && ((lastJob ==12) || (lastJob ==17))) goto L_cHthief;
	if(JobLevel <@MinimumJB) goto L_notEn;
	if(Class ==1) goto L_iSword;
	if(Class ==2) goto L_iMage;
	if(Class ==3) goto L_iArcher;
	if(Class ==4) goto L_iAcolyte;
	if(Class ==5) goto L_iMerchant;
	if(Class ==6) goto L_iThief;
	if(Class ==4046) goto L_iTaekwon;
	if(checkfalcon(0) || checkcart(0) || checkriding(0)) goto L_remove;
	if(lastJob ==7) goto L_iKnight;
	if(lastJob ==8) goto L_iPriest;
	if(lastJob ==9) goto L_iWizard;
	if(lastJob ==10) goto L_iBlacksmith;
	if(lastJob ==11) goto L_iHunter;
	if(lastJob ==12) goto L_iAssassin;
	if(lastJob ==14) goto L_iCrusader;
	if(lastJob ==15) goto L_iMonk;
	if(lastJob ==16) goto L_iSage;
	if(lastJob ==17) goto L_iRogue;
	if(lastJob ==18) goto L_iAlchemist;
	if(lastJob ==19) goto L_iBard;
	if(lastJob ==20) goto L_iDancer;
	if((Class >=7) && (Class <=20)) goto L_rebirth;
	close;

// Novice
	L_novice:
		skill 142,1,0;
		skill 143,1,0;
		if(JobLevel<10) goto L_notEn;
		mes "^ff0000[Job Master]^000000";
		mes "Welcome, please select the job you wish to change into";
		menu "Swordsman",L_sword,"Mage",L_mage,"Archer",L_archer,"Acolyte",L_acolyte,"Merchant",L_merchant,"Thief",L_thief,"Super Novice",L_superN,"Taekwon",L_taekwon;
// Change to Swordsman
			L_sword:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 1;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Mage
			L_mage:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 2;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Archer
			L_archer:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 3;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Acolyte
			L_acolyte:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 4;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Merchant
			L_merchant:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 5;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Thief
			L_thief:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 6;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Super Novice
			L_superN:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				if(BaseLevel<@SupNovM) goto L_notSup;
				jobchange 23;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Taekwon
			L_taekwon:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Taekwon;
				callfunc "F_ClearJobVar";
				close;
// Change to Knight/Crusader
	L_iSword:
		mes "^ff0000[Job Master]^000000";
		mes "Welcome, please select the job you wish to change into";
		menu "Knight",L_knight,"Crusader",L_crusader;
			L_knight:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 7;
				if(@GivePlat) goto L_GivePlat;
				close;
			L_crusader:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 14;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Wizard/Sage
	L_iMage:
		mes "^ff0000[Job Master]^000000";
		mes "Welcome, please select the job you wish to change into";
		menu "Wizard",L_wizard,"Sage",L_sage;
			L_wizard:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 9;
				if(@GivePlat) goto L_GivePlat;
				close;
			L_sage:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 16;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Hunter/Bard/Dancer
	L_iArcher:
		mes "^ff0000[Job Master]^000000";
		mes "Welcome, please select the job you wish to change into";
		menu "Hunter",L_hunter,"Bard/Dancer",L_bandd;
			L_hunter:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 11;
				if(@GivePlat) goto L_GivePlat;
				close;
			L_bandd:
				if(sex==0) goto L_dancer;
				if(sex==1) goto L_bard;
				L_bard:
					mes "Are you SURE?";
					menu "No",L_quit,"Yes",-;
					jobchange 19;
					if(@GivePlat) goto L_GivePlat;
					close;
				L_dancer:
					mes "Are you SURE?";
					menu "No",L_quit,"Yes",-;
					jobchange 20;
					if(@GivePlat) goto L_GivePlat;
					close;
// Change to Priest/Monk
	L_iAcolyte:
		mes "^ff0000[Job Master]^000000";
		mes "Welcome, please select the job you wish to change into";
		menu "Priest",L_priest,"Monk",L_monk;
			L_priest:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 8;
				if(@GivePlat) goto L_GivePlat;
				close;
			L_monk:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 15;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Blacksmith/Alchemist
	L_iMerchant:
		mes "^ff0000[Job Master]^000000";
		mes "Welcome, please select the job you wish to change into";
		menu "Blacksmith",L_blacksmith,"Alchemist",L_alchemist;
			L_blacksmith:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 10;
				if(@GivePlat) goto L_GivePlat;
				close;
			L_alchemist:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 18;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Assassin/Rogue
	L_iThief:
		mes "^ff0000[Job Master]^000000";
		mes "Welcome, please select the job you wish to change into";
		menu "Assassin",L_assassin,"Rogue",L_rogue;
			L_assassin:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 12;
				if(@GivePlat) goto L_GivePlat;
				close;
			L_rogue:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange 17;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Star Gladiator/Soul Linker
	L_iTaekwon:
		mes "^ff0000[Job Master]^000000";
		mes "Welcome, please select the job you wish to change into";
		menu "Star Gladiator",L_SG,"Soul Linker",L_SL;
			L_SG:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Star_Gladiator;
				callfunc "F_ClearJobVar";
				close;
			L_SL:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Soul_Linker;
				callfunc "F_ClearJobVar";
				close;
// Rebirth
	L_rebirth:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to reborn?";
		next;
		mes "Are you SURE?";
		menu "No",L_quit,"Yes",-;
		if ((BaseLevel < 99) || (JobLevel < 50)) goto L_cantCh;
		set lastJob, readparam(19);
		jobchange 24;
		resetlvl(1);
		skill 142,1,0;
		skill 143,1,0;
		mes "^ff0000[Job Master]^000000";
		mes "You are now reborn.";
		mes "Please come again soon.";
		close;
	L_cHsword:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a High Swordsman?";
		next;
		menu "No",L_quit,"Yes",-;
		jobchange 25;
		mes "^ff0000[Job Master]^000000";
		mes "Thank you, please come again soon!";
		close;
	L_cHmage:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a High Mage?";
		next;
		menu "No",L_quit,"Yes",-;
		jobchange 26;
		mes "^ff0000[Job Master]^000000";
		mes "Thank you, please come again soon!";
		close;
	L_cHarcher:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a High Archer?";
		next;
		menu "No",L_quit,"Yes",-;
		jobchange 27;
		mes "^ff0000[Job Master]^000000";
		mes "Thank you, please come again soon!";
		close;
	L_cHacolyte:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a High Acolyte?";
		next;
		menu "No",L_quit,"Yes",-;
		jobchange 28;
		mes "^ff0000[Job Master]^000000";
		mes "Thank you, please come again soon!";
		close;
	L_cHmerchant:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a High Merchant?";
		next;
		menu "No",L_quit,"Yes",-;
		jobchange 29;
		mes "^ff0000[Job Master]^000000";
		mes "Thank you, please come again soon!";
		close;
	L_cHthief:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a High Thief?";
		next;
		menu "No",L_quit,"Yes",-;
		jobchange 30;
		mes "^ff0000[Job Master]^000000";
		mes "Thank you, please come again soon!";
		close;	
// Change to Lord Knight
	L_iKnight:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a Lord Knight?";
		menu "No",L_quit,"Yes",-;
			jobchange 31;
			if(@GivePlat) goto L_GivePlat;
			close;
// Change to Paladin
	L_iCrusader:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a Paladin?";
		menu "No",L_quit,"Yes",-;
			jobchange 38;
			if(@GivePlat) goto L_GivePlat;
			close;
// Change to High Priest
	L_iPriest:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a High Priest?";
		menu "No",L_quit,"Yes",-;
			jobchange 32;
			if(@GivePlat) goto L_GivePlat;
			close;
// Change to Champion
	L_iMonk:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a Champion?";
		menu "No",L_quit,"Yes",-;
			jobchange 39;
			if(@GivePlat) goto L_GivePlat;
			close;
// Change to Whitesmith
	L_iBlacksmith:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a Whitesmith?";
		menu "No",L_quit,"Yes",-;
			jobchange 34;
			if(@GivePlat) goto L_GivePlat;
			close;
// Change to Creator
	L_iAlchemist:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a Creator?";
		menu "No",L_quit,"Yes",-;
			jobchange 42;
			if(@GivePlat) goto L_GivePlat;
			close;
// Change to High Wizard
	L_iWizard:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a High Wizard?";
		menu "No",L_quit,"Yes",-;
			jobchange 33;
			if(@GivePlat) goto L_GivePlat;
			close;
// Change to Professor
	L_iSage:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a Professor?";
		menu "No",L_quit,"Yes",-;
			jobchange 40;
			if(@GivePlat) goto L_GivePlat;
			close;
// Change to Sniper
	L_iHunter:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a Sniper?";
		menu "No",L_quit,"Yes",-;
			jobchange 35;
			if(@GivePlat) goto L_GivePlat;
			close;
// Change to Clown
	L_iBard:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a Clown?";
		menu "No",L_quit,"Yes",-;
			jobchange 43;
			if(@GivePlat) goto L_GivePlat;
			close;
// Change to Gypsy
	L_iDancer:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a Gypsy?";
		menu "No",L_quit,"Yes",-;
			jobchange 44;
			if(@GivePlat) goto L_GivePlat;
			close;
// Change to Assassin Cross
	L_iAssassin:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into an Assassin Cross?";
		menu "No",L_quit,"Yes",-;
			jobchange 36;
			if(@GivePlat) goto L_GivePlat;
			close;
// Change to Stalker
	L_iRogue:
		mes "^ff0000[Job Master]^000000";
		mes "Do you want to change into a Stalker?";
		menu "No",L_quit,"Yes",-;
			jobchange 41;
			if(@GivePlat) goto L_GivePlat;
			close;
// Giving Platinum Skills
	L_GivePlat:
		if (BaseJob==Job_SuperNovice) goto L_sSuperN;
		if ((Class==Job_Swordman) || (Class==7) || (Class==13) || (Class==14)|| (Class==21) || (Class==4002) || (Class==4008)) goto L_sSword;
		if ((Class==Job_Mage) || (Class==9) || (Class==16) || (Class==4003) || (Class==4010) || (Class==4017)) goto L_sMage;
		if ((Class==Job_Archer) || (Class==11) || (Class==19) || (Class==20) || (Class==4004) || (Class==4012) || (Class==4020) || (Class==4021)) goto L_sArcher;
		if ((Class==Job_Acolyte) || (Class==8) || (Class==15) || (Class==50) || (Class==54) || (Class==61) || (Class==4005) || (Class==4009) || (Class==4016)) goto L_sAcolyte;
		if ((Class==Job_Merchant) || (Class==10) || (Class==18) || (Class==51) || (Class==56) || (Class==64) || (Class==4006) || (Class==4011) || (Class==4019)) goto L_sMerchant;
		if ((Class==Job_Thief) || (Class==12) || (Class==17) || (Class==52) || (Class==58) || (Class==63) || (Class==4007) || (Class==4013) || (Class==4018)) goto L_sThief;
		L_sSuperN:
			skill 142,1,0;
			close;
		L_sSword:
			skill 142,1,0;
			skill 144,1,0;
			skill 145,1,0;
			skill 146,1,0;
		L_sMage:
			skill 142,1,0;
			skill 157,1,0;
			close;
		L_sArcher:
			skill 142,1,0;
			skill 147,1,0;
			skill 148,1,0;
			close;
		L_sAcolyte:
			skill 142,1,0;
			skill 156,1,0;
			close;
		L_sMerchant:
			skill 142,1,0;
			skill 153,1,0;
			skill 154,1,0;
			skill 155,1,0;
			close;
		L_sThief:
			skill 142,1,0;
			skill 149,1,0;
			skill 150,1,0;
			skill 151,1,0;
			skill 152,1,0;
			close;
	L_quit:
		close;
// Errors
	L_cantCh:
		mes "^ff0000[Job Master]^000000";
		mes "I'm sorry, you do not meet the requirements to change";
		mes "Please come again soon!";
		close;
	L_skillUsed:
		mes "^ff0000[Job Master]^000000";
		mes "I'm sorry, please use up all your skill points before changing jobs";
		mes "Please come again soon!";
		close;
	L_notEn:
		mes "^ff0000[Job Master]^000000";
		mes "I'm sorry, you do not seem to have enough Job Levels";
		mes "Please come again soon!";
		close;
	L_notSup:
		mes "^ff0000[Job Master]^000000";
		mes "I'm sorry, you do not seem to have enough Base Levels";
		mes "Please come again soon!";
		close;
	L_remove:
		mes "^ff0000[Job Master]^000000";
		mes "Please remove your cart,falcon or peco";
		mes "Please come again soon!";
		close;
}
// ------------------------------ End -------------------
