
- Fixed a misleading message in the custom Job Changer. (bugreport:682) - Updated some NPC's facing directions. (bugreport:3030) - Added missing newline in some ShowWarning(). (bugreport:2940) - Fixed SC_BOSSMAPINFO time being off by 1 minutes (bugreport:3035) Now, the seconds are rounded up to the next whole minute. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13713 54d463be-8e91-2dee-dedb-b68131a5f0ec
270 lines
7.6 KiB
Plaintext
270 lines
7.6 KiB
Plaintext
//===== eAthena Script =======================================
|
|
//= eAthena Jobchanger AKA Job Master
|
|
//===== By: ==================================================
|
|
//= eAthena Dev Team [Ori:LunatikBunnie] [Cur:Lance]
|
|
//===== Current Version: =====================================
|
|
//= 1.5a
|
|
//===== Compatible With: =====================================
|
|
//= eAthena SVN Trunk 6674
|
|
//===== 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]
|
|
//= 1.5 Rewrite everything from scratch. [Lance]
|
|
//= 1.5a fixed Baby -> Super Baby change. Switched to JobName() [Lupus]
|
|
//============================================================
|
|
prontera,153,193,6 script Job Master 123,{
|
|
mes "^ff0000[Job Master]^000000";
|
|
if(Upper == 1 && Class >= Job_Lord_Knight) goto L_noReq;
|
|
if(SkillPoint != 0){
|
|
mes "I'm sorry, please use up all your skill points before changing jobs";
|
|
mes "Please come again soon!";
|
|
close;
|
|
}
|
|
if(JobLevel < 10) goto L_LvError;
|
|
switch(Class){
|
|
case Job_Novice_High:
|
|
case Job_Baby:
|
|
case Job_Novice:
|
|
skill 142,1,0;
|
|
skill 143,1,0;
|
|
mes "Welcome, please select the job you wish to change into";
|
|
if(lastJob != 0 && Class == Job_Novice_High){
|
|
switch(lastJob){
|
|
case Job_Knight:
|
|
case Job_Crusader:
|
|
set @target_job, Job_Swordman_High;
|
|
break;
|
|
case Job_Monk:
|
|
case Job_Priest:
|
|
set @target_job, Job_Acolyte_High;
|
|
break;
|
|
case Job_Alchemist:
|
|
case Job_Blacksmith:
|
|
set @target_job, Job_Merchant_High;
|
|
break;
|
|
case Job_Rogue:
|
|
case Job_Assassin:
|
|
set @target_job, Job_Thief_High;
|
|
break;
|
|
case Job_Wizard:
|
|
case Job_Sage:
|
|
set @target_job, Job_Mage_High;
|
|
break;
|
|
case Job_Hunter:
|
|
case Job_Bard:
|
|
case Job_Dancer:
|
|
set @target_job, Job_Archer_High;
|
|
break;
|
|
}
|
|
} else {
|
|
switch(select("Swordsman","Mage","Archer","Acolyte","Merchant","Thief",
|
|
"Super Novice","Taekwon","Gunslinger","Ninja")){
|
|
case 7:
|
|
if(Class == Job_Novice_High) goto L_noReq;
|
|
if($@JC_SupNovM > BaseLevel) goto L_BvError;
|
|
if(Upper == 2)
|
|
set @target_job, Job_Super_Baby;
|
|
else
|
|
set @target_job, Job_SuperNovice;
|
|
break;
|
|
case 8:
|
|
if(Class == Job_Novice_High) goto L_noReq;
|
|
if(Upper == 2) goto L_noReq;
|
|
set @target_job, Job_Taekwon;
|
|
break;
|
|
case 9:
|
|
case 10:
|
|
if(Class == Job_Novice_High || Upper == 2) goto L_noReq;
|
|
set @target_job, @menu + 15;
|
|
break;
|
|
default:
|
|
set @target_job, @menu;
|
|
if(Class == Job_Novice_High) set @target_job, @target_job + 4001;
|
|
break;
|
|
}
|
|
}
|
|
mes "Are you sure you want to change to " + JobName(@target_job) + "?";
|
|
if(select("No","Yes") == 2){
|
|
callfunc "Job_Change", @target_job;
|
|
if(@target_job == Job_Gunslinger || @target_job == Job_Ninja || @target_job == Job_Taekwon) {
|
|
callfunc "F_ClearJobVar";
|
|
} else {
|
|
if($@JC_Plat) goto L_GivePlat;
|
|
}
|
|
}
|
|
close;
|
|
break;
|
|
default:
|
|
if(JobLevel < $@JC_MinimumJB) goto L_LvError;
|
|
deletearray @job_opt, getarraysize(@job_opt);
|
|
if(Class < Job_Knight || Class == Job_Taekwon || (Class > Job_Baby && Class < Job_Baby_Knight) || (Class > Job_Novice_High && Class < Job_Lord_Knight)){
|
|
if(lastJob != 0){
|
|
set @target_job, lastJob + 4001;
|
|
} else {
|
|
switch(Class){
|
|
case Job_Swordman_High:
|
|
case Job_Baby_Swordman:
|
|
case Job_Swordman:
|
|
set @job_opt[0], Job_Knight;
|
|
set @job_opt[1], Job_Crusader;
|
|
break;
|
|
case Job_Mage_High:
|
|
case Job_Baby_Mage:
|
|
case Job_Mage:
|
|
set @job_opt[0], Job_Wizard;
|
|
set @job_opt[1], Job_Sage;
|
|
break;
|
|
case Job_Archer_High:
|
|
case Job_Baby_Archer:
|
|
case Job_Archer:
|
|
set @job_opt[0], Job_Hunter;
|
|
if(Sex == 0)
|
|
set @job_opt[1], Job_Dancer;
|
|
else
|
|
set @job_opt[1], Job_Bard;
|
|
break;
|
|
case Job_Acolyte_High:
|
|
case Job_Baby_Acolyte:
|
|
case Job_Acolyte:
|
|
set @job_opt[0], Job_Priest;
|
|
set @job_opt[1], Job_Monk;
|
|
break;
|
|
case Job_Merchant_High:
|
|
case Job_Baby_Merchant:
|
|
case Job_Merchant:
|
|
set @job_opt[0], Job_Blacksmith;
|
|
set @job_opt[1], Job_Alchemist;
|
|
break;
|
|
case Job_Thief_High:
|
|
case Job_Baby_Thief:
|
|
case Job_Thief:
|
|
set @job_opt[0], Job_Assassin;
|
|
set @job_opt[1], Job_Rogue;
|
|
break;
|
|
default:
|
|
set @job_opt[0], Job_Star_Gladiator;
|
|
set @job_opt[1], Job_Soul_Linker;
|
|
break;
|
|
}
|
|
mes "Welcome, please select the job you wish to change into";
|
|
set @target_job, @job_opt[select(JobName(@job_opt[0]), JobName(@job_opt[1]))-1];
|
|
if(Class > Job_Novice_High && Class < Job_Lord_Knight) set @target_job, @target_job + 4001;
|
|
}
|
|
mes "Are you sure you want to change to " + JobName(@target_job) + "?";
|
|
if(select("No","Yes")==2){
|
|
callfunc "Job_Change", @target_job;
|
|
if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) {
|
|
callfunc "F_ClearJobVar";
|
|
} else {
|
|
if($@JC_Plat) goto L_GivePlat;
|
|
}
|
|
}
|
|
close;
|
|
}
|
|
if(checkfalcon() || checkcart() || checkriding()) goto L_remove;
|
|
if((Class >=Job_Knight) && (Class <=Job_Crusader2)){
|
|
mes "Do you want to reborn?";
|
|
if(select("Yes","No")==1){
|
|
if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh;
|
|
set lastJob, Class;
|
|
if(Class == Job_Knight2){
|
|
set lastJob, Job_Knight;
|
|
} else {
|
|
if(Class == Job_Crusader2){
|
|
set lastJob, Job_Crusader;
|
|
}
|
|
}
|
|
jobchange Job_Novice_High;
|
|
resetlvl(1);
|
|
skill 142,1,0;
|
|
skill 143,1,0;
|
|
}
|
|
close;
|
|
}
|
|
}
|
|
mes "I'm sorry, there are no further classes for your job.";
|
|
close;
|
|
|
|
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;
|
|
close;
|
|
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_cantCh:
|
|
mes "I'm sorry, you do not meet the requirements to change";
|
|
mes "Please come again soon!";
|
|
close;
|
|
|
|
L_LvError:
|
|
mes "I'm sorry, you do not seem to have enough Job Levels";
|
|
mes "Please come again soon!";
|
|
close;
|
|
|
|
L_BvError:
|
|
mes "I'm sorry, you do not seem to have enough Base Levels";
|
|
mes "Please come again soon!";
|
|
close;
|
|
|
|
L_noReq:
|
|
mes "I'm sorry, you do not meet the requirements to change";
|
|
mes "Please come again soon!";
|
|
close;
|
|
|
|
L_remove:
|
|
mes "Please remove your cart,falcon or peco";
|
|
mes "Please come again soon!";
|
|
close;
|
|
|
|
OnInit:
|
|
// Variable Setup
|
|
set $@JC_MinimumJB, 40; //Minimum job level for changing between 2nd and advance Class (Default : 40)
|
|
set $@JC_Plat, 1; //Give Platinum skills on Jobchange (Default : 1-yes)
|
|
set $@JC_SupNovM, 45; //Base Level to change into Super Novice (Default : 45)
|
|
end;
|
|
}
|