//===== eAthena Script =======================================
//= eAthena Jobchanger AKA Job Master
//===== By: ==================================================
//= eAthena Dev Team [LunatikBunnie] (Editted by Amada`)
//===== Current Version: =====================================
//= 1.4
//===== 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'
//= 1.4 Added NJ/GS, changed all job numbers to Job_* constants. 
//=    All credits go to pxxx [Skotlex]
//============================================================

// ------------------------------ 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 ==Job_Knight) || (lastJob ==Job_Crusader))) goto L_cHsword;
	if((Class ==Job_Novice_High) && ((lastJob ==Job_Wizard) || (lastJob ==Job_Sage))) goto L_cHmage;
	if((Class ==Job_Novice_High) && ((lastJob ==Job_Hunter) || (lastJob ==Job_Bard) || (lastJob ==Job_Dancer))) goto L_cHarcher;
	if((Class ==Job_Novice_High) && ((lastJob ==Job_Priest) || (lastJob ==Job_Monk))) goto L_cHacolyte;
	if((Class ==Job_Novice_High) && ((lastJob ==Job_Blacksmith) || (lastJob ==Job_Alchem))) goto L_cHmerchant;
	if((Class ==Job_Novice_High) && ((lastJob ==Job_Assassin) || (lastJob ==Job_Rogue))) goto L_cHthief;
	if(JobLevel <@MinimumJB) goto L_notEn;
	if(Class ==Job_Swordman) goto L_iSword;
	if(Class ==Job_Mage) goto L_iMage;
	if(Class ==Job_Archer) goto L_iArcher;
	if(Class ==Job_Acolyte) goto L_iAcolyte;
	if(Class ==Job_Merchant) goto L_iMerchant;
	if(Class ==Job_Thief) goto L_iThief;
	if(Class ==Job_Taekwon) goto L_iTaekwon;
	if(checkfalcon(0) || checkcart(0) || checkriding(0)) goto L_remove;
	if(lastJob ==Job_Knight) goto L_iKnight;
	if(lastJob ==Job_Priest) goto L_iPriest;
	if(lastJob ==Job_Wizard) goto L_iWizard;
	if(lastJob ==Job_Blacksmith) goto L_iBlacksmith;
	if(lastJob ==Job_Hunter) goto L_iHunter;
	if(lastJob ==Job_Assassin) goto L_iAssassin;
	if(lastJob ==Job_Crusader) goto L_iCrusader;
	if(lastJob ==Job_Monk) goto L_iMonk;
	if(lastJob ==Job_Sage) goto L_iSage;
	if(lastJob ==Job_Rogue) goto L_iRogue;
	if(lastJob ==Job_Alchem) goto L_iAlchemist;
	if(lastJob ==Job_Bard) goto L_iBard;
	if(lastJob ==Job_Dancer) goto L_iDancer;
	if((Class >=Job_Knight) && (Class <=Job_Crusader2)) 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,"Gunslinger",L_gun,"Ninja",L_ninja;
// Change to Swordsman
			L_sword:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Swordman;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Mage
			L_mage:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Mage;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Archer
			L_archer:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Archer;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Acolyte
			L_acolyte:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Acolyte;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Merchant
			L_merchant:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Merchant;
				if(@GivePlat) goto L_GivePlat;
				close;
// Change to Thief
			L_thief:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Thief;
				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 Job_SuperNovice;
				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 Gunslinger
			L_gun:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Gunslinger;
				callfunc "F_ClearJobVar";
				close;
// Change to Ninja
			L_ninja:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Ninja;
				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 Job_Knight;
				if(@GivePlat) goto L_GivePlat;
				close;
			L_crusader:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Crusader;
				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 Job_Wizard;
				if(@GivePlat) goto L_GivePlat;
				close;
			L_sage:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Sage;
				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 Job_Hunter;
				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 Job_Bard;
					if(@GivePlat) goto L_GivePlat;
					close;
				L_dancer:
					mes "Are you SURE?";
					menu "No",L_quit,"Yes",-;
					jobchange Job_Dancer;
					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 Job_Priest;
				if(@GivePlat) goto L_GivePlat;
				close;
			L_monk:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Monk;
				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 Job_Blacksmith;
				if(@GivePlat) goto L_GivePlat;
				close;
			L_alchemist:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Alchem;
				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 Job_Assassin;
				if(@GivePlat) goto L_GivePlat;
				close;
			L_rogue:
				mes "Are you SURE?";
				menu "No",L_quit,"Yes",-;
				jobchange Job_Rogue;
				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);
		if(lastJob == Job_Knight2) set lastJob,Job_Knight;
		if(lastJob == Job_Crusader2) set lastJob,Job_Crusader;
		jobchange Job_Novice_High;
		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 Job_Swordman_High;
		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 Job_Mage_High;
		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 Job_Archer_High;
		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 Job_Acolyte_High;
		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 Job_Merchant_High;
		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 Job_Thief_High;
		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 Job_Lord_Knight;
			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 Job_Paladin;
			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 Job_High_Priest;
			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 Job_Champion;
			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 Job_Whitesmith;
			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 Job_Creator;
			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 Job_High_Wizard;
			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 Job_Professor;
			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 Job_Sniper;
			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 Job_Clown;
			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 Job_Gypsy;
			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 Job_Assassin_Cross;
			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 Job_Stalker;
			if(@GivePlat) goto L_GivePlat;
			close;
// Giving Platinum Skills
	L_GivePlat:
		if (BaseClass==Job_SuperNovice) goto L_sSuperN;
		if (BaseClass==Job_Swordman) goto L_sSword;
		if (BaseClass==Job_Mage) goto L_sMage;
		if (BaseClass==Job_Archer) goto L_sArcher;
		if (BaseClass==Job_Acolyte) goto L_sAcolyte;
		if (BaseClass==Job_Merchant) goto L_sMerchant;
		if (BaseClass==Job_Thief) goto L_sThief;
			close;
		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 -------------------
