diff options
-rw-r--r-- | db/const.txt | 2 | ||||
-rw-r--r-- | npc/custom/jobs/jobmaster.txt | 77 |
2 files changed, 56 insertions, 23 deletions
diff --git a/db/const.txt b/db/const.txt index 2f4030130..aceb66013 100644 --- a/db/const.txt +++ b/db/const.txt @@ -159,8 +159,10 @@ EAJL_2_2 0x200 EAJL_2 0x300 EAJL_UPPER 0x1000 EAJL_BABY 0x2000 +EAJ_THIRD 0x4000 EAJ_UPPERMASK 0x0fff EAJ_BASEMASK 0x00ff +EAJ_THIRDMASK 0x4fff EAJ_NOVICE 0x0 EAJ_SWORDMAN 0x1 diff --git a/npc/custom/jobs/jobmaster.txt b/npc/custom/jobs/jobmaster.txt index ff364159a..c67d6eb59 100644 --- a/npc/custom/jobs/jobmaster.txt +++ b/npc/custom/jobs/jobmaster.txt @@ -1,11 +1,11 @@ //===== rAthena Script ======================================= //= Job Master //===== By: ================================================== -//= rAthena Dev Team [Ori:LunatikBunnie] [Cur:Lance] +//= rAthena Dev Team [Ori:LunatikBunnie] //===== Current Version: ===================================== -//= 1.5a +//= 1.6 //===== Compatible With: ===================================== -//= rAthena SVN; 6674+ +//= rAthena SVN; 15624+ //===== Description: ========================================= //= Changes your job without asking too much //= For other info, please contact me at Lunatikbunnie@gmail.com @@ -16,17 +16,26 @@ //= All credits go to pxxx [Skotlex] //= 1.5 Rewrite everything from scratch. [Lance] //= 1.5a fixed Baby -> Super Baby change. Switched to JobName() [Lupus] +//= 1.6 Added support for both branches of 3rd classes, +//= unified response order, fixed minor quirk. +//===== TODO: ================================================ +//= Add baby 3rd classes +//= Could be restructured some more using eajobs //============================================================ 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){ + if(Class >= Job_Rune_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: @@ -90,7 +99,7 @@ prontera,153,193,6 script Job Master 123,{ } } mes "Are you sure you want to change to " + JobName(@target_job) + "?"; - if(select("No","Yes") == 2){ + if(select("Yes","No") == 1){ callfunc "Job_Change", @target_job; if(@target_job == Job_Gunslinger || @target_job == Job_Ninja || @target_job == Job_Taekwon) { callfunc "F_ClearJobVar"; @@ -104,7 +113,7 @@ prontera,153,193,6 script Job Master 123,{ 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){ + if(lastJob != 0 && Class >= Job_Swordman_High){ // lastJob could have been set before changing back to non-trans set @target_job, lastJob + 4001; } else { switch(Class){ @@ -157,7 +166,7 @@ prontera,153,193,6 script Job Master 123,{ 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){ + if(select("Yes","No")==1){ callfunc "Job_Change", @target_job; if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) { callfunc "F_ClearJobVar"; @@ -167,30 +176,52 @@ prontera,153,193,6 script Job Master 123,{ } close; } + + if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh; 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; + + if((Class >= Job_Knight) && (Class <= Job_Crusader2)){ + mes "Would you like to be reborn or change to 3rd class?"; + switch(select("I want to be reborn!", "I want to change to 3rd class!", "Cancel")) + { + case 1: + mes "Are you sure you want to be reborn?"; + if(select("Yes", "No")==1){ + 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; } - jobchange Job_Novice_High; - resetlvl(1); - skill 142,1,0; - skill 143,1,0; + break; + case 2: + goto L_Third; } close; } + if (Class >= Job_Lord_Knight && Class <= Job_Paladin2) + { + if(JobLevel < 70) goto L_cantCh; + goto L_Third; + } } mes "I'm sorry, there are no further classes for your job."; close; +L_Third: + set @target_job, roclass(eaclass() | EAJ_THIRD); + mes "Are you sure you want to change to " + JobName(@target_job) + "?"; + if(select("Yes", "No")==1){ + callfunc "Job_Change", @target_job; + } + close; L_GivePlat: if (BaseClass==Job_SuperNovice) goto L_sSuperN; if (BaseClass==Job_Swordman) goto L_sSword; @@ -259,7 +290,7 @@ L_remove: OnInit: // Variable Setup - set $@JC_MinimumJB, 40; //Minimum job level for changing between 2nd and advance Class (Default : 40) + set $@JC_MinimumJB, 40; //Minimum job level for changing to 2nd classes (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; |