////////////////////////////////////////////// // Jobchanger eA-Jobsystem // ////////////////////////////////////////////// // script by icescope // ////////////////////////////////////////////// // V. 1.5 Added Rebirth controle // // V. 1.4.2 Killed bugs from 1.4.1 // // V. 1.4 Change to Baby, stat // // bonus on rebirth // // V. 1.3.4 Insert jump over Rebirth // // V. 1.3.3 Better walk through NPC // // V. 1.3.2 Added Price Controle // // V. 1.2 Added Platinums // // V. 1.1.1 (Labelfree) // ////////////////////////////////////////////// prontera,160,150,4 script Job Changer 800,{ if(!$multi_reb) set reb_times, 0; setarray @dialogues$, "Choose the Job which fits the best to you.", "You already have reached your last Job.", "Are you sure to choose ^00AA00", "Then make your choose later ^^", "Do you want to reborn?", "You are now reborn.", "^cc1100[Job Changer]^000000", "Error Message: Please Report this to an GM!", "Please come again soon.", "You don't have enough Base/JobLevel to change.", "Please use up all of your Skillpoints first.", "Please don't use a Cart/Peco Peco/Falcon if you want to change.", "This will need a payment of ", " zeny!!!", "You don't have enough zeny."; function SF_End_Message; function SF_yn; function SF_givePlat; if(skillpoint) SF_End_Message(@dialogues$[10]); if(checkfalcon() || checkcart() || checkriding()) SF_End_Message(@dialogues$[11]); mes @dialogues$[6]; set .@eaj, eaclass(); if((!(.@eaj&EAJ_BASEMASK)^EAJ_NOVICE)) { if(!(.@eaj&EAJL_2)) { // 1st Jobs if($1_Min>$min_B && $max_B>=JobLevel && $min_B<=JobLevel && $1_Min != JobLevel && !(.@eaj&EAJL_BABY)) SF_yn(roclass(.@eaj|EAJL_BABY),$fst_price); if(JobLevel<$1_Min) SF_End_Message(@dialogues$[9]); if(!lastjob2) { mes @dialogues$[0]; setarray .@jobs[1], roclass(.@eaj|EAJ_SWORDMAN), roclass(.@eaj|EAJ_MAGE), roclass(.@eaj|EAJ_ARCHER), roclass(.@eaj|EAJ_ACOLYTE), roclass(.@eaj|EAJ_MERCHANT), roclass(.@eaj|EAJ_THIEF), .@eaj|EAJL_2_1, roclass(.@eaj|EAJ_TAEKWON), roclass(.@eaj|EAJ_GUNSLINGER), roclass(.@eaj|EAJ_NINJA),roclass(.@eaj|EAJL_BABY); set .@selected$, callfunc("getJobName",(.@jobs[1]))+":"+callfunc("getJobName",(.@jobs[2]))+":"+callfunc("getJobName",(.@jobs[3]))+":"+callfunc("getJobName",(.@jobs[4]))+":"+callfunc("getJobName",(.@jobs[5]))+":"+callfunc("getJobName",(.@jobs[6])); if(.@jobs[8]^-1) set .@selected$,.@selected$+":"+callfunc("getJobName",roclass(.@jobs[7]))+":"+callfunc("getJobName",(.@jobs[8]))+":"+callfunc("getJobName",(.@jobs[9]))+":"+callfunc("getJobName",(.@jobs[10])); else set .@push, 6; if($min_B<=JobLevel && $max_B>= JobLevel && !(.@eaj&(EAJL_UPPER|EAJL_BABY))) { set .@push, .@push+1; set .@selected$, .@selected$+":"+callfunc("getJobName",(.@jobs[11])); } if(.@eaj&EAJL_BABY) { set .@push, .@push-1; set .@selected$, .@selected$+":"+callfunc("getJobName",roclass(.@jobs[7])); } set .@selected$, .@selected$+":Cancel"; if((select(.@selected$)+.@push)^13 ) SF_yn(.@jobs[@menu],$fst_price); SF_End_Message(@dialogues$[8]); } SF_yn(roclass((lastjob2&EAJ_BASEMASK)|EAJL_UPPER),$fst_price); } else if(!$multi_reb) SF_End_Message(@dialogues$[1]); } if(.@eaj&EAJL_2 || (!(roclass(.@eaj|EAJL_2)^-1) && $multi_reb) || ((.@eaj&EAJL_2) && !(roclass(.@eaj|EAJL_UPPER)^-1) && $multi_reb)) { // Rebirth if((.@eaj&(EAJL_UPPER|EAJL_BABY) || !(roclass(.@eaj|EAJL_UPPER)^-1)) && (!$multi_reb||!$allowBreb) ) SF_End_Message(@dialogues$[1]); if(reb_times>127 || (!$Reb_Base[reb_times]|!$Reb_Job[reb_times])) setarray .@needed, (!$Reb_Base[reb_times])?($Reb_Base[getarraysize($Reb_Base)-1]):($Reb_Base[reb_times]), (!$Reb_Job[reb_times])?($Reb_Job[getarraysize($Reb_Job)-1]):($Reb_Job[reb_times]); else setarray .@needed, $Reb_Base[reb_times], $Reb_Job[reb_times]; if(BaseLevel<.@needed || JobLevel<.@needed[1]) SF_End_Message(@dialogues$[9]); if($needReb) SF_yn(roclass(.@eaj|EAJL_UPPER),$reb_price); if((.@eaj&EAJL_BABY) && !$allowBreb) SF_End_Message(@dialogues$[1]); mes @dialogues$[4]; if($prices_on) mes @dialogues$[12]+$reb_price+@dialogues$[13]; if(select("No:Yes")-1) { if(zeny<$reb_price && $prices_on) SF_End_Message(@dialogues$[14]); if($prices_on) set zeny, zeny-$reb_price; if($Job_Tree) set lastjob2, .@eaj; if((roclass(.@eaj|EAJL_UPPER)^-1)) jobchange Job_Novice_High; else { if(.@eaj&EAJL_BABY) { jobchange Job_Baby; set statuspoint, $startBstats; } else { jobchange Job_Novice; set statuspoint, 100; } } resetlvl(1); skill 142,1,0; skill 143,1,0; if(!$inc_type) set statuspoint, statuspoint+(reb_times>0)*$extra_stats+(((reb_times-1)>0)*(reb_times-1))*$increasement; else set statuspoint, statuspoint+(reb_times>0)*$extra_stats*(pow($increasement,(reb_times-1))); if($multi_reb) set reb_times, reb_times+1; mes @dialogues$[5]; } else mes @dialogues$[3]; SF_End_Message(@dialogues$[8]); } else { if(JobLevel<$2_Min) SF_End_Message(@dialogues$[9]); if(!lastjob2) { // 2nd Jobs set .@choose1, roclass(.@eaj|EAJL_2_1); set .@choose2, roclass(.@eaj|EAJL_2_2); if(!(.@choose1^-1)) SF_End_Message(@dialogues$[1]); mes @dialogues$[0]; SF_yn(getd(".@choose"+select(callfunc("getJobName",(.@choose1))+":"+callfunc("getJobName",(.@choose2)))),$scn_price); } else { set .@choosed, roclass(lastjob2|EAJL_UPPER); SF_yn(.@choosed, $scn_price); } } SF_End_Message(@dialogues$[7]); function SF_End_Message { mes getarg(0); close; } function SF_yn { if(!((getarg(0)&EAJ_BASEMASK)^EAJ_NOVICE)) { if(BaseLevel<$SN_Min) SF_End_Message(@dialogues$[9]); else set getarg(0), roclass(getarg(0)); } mes @dialogues$[2]+callfunc("getJobName",getarg(0))+"^000000 as your Job ?"; if($prices_on) mes @dialogues$[12]+getarg(1)+@dialogues$[13]; if(select("No:Yes")-1) { if(zeny