|
@@ -1818,7 +1818,7 @@ int pc_calc_skilltree_normalize_job(struct map_session_data *sd)
|
|
|
c = MAPID_NOVICE;
|
|
|
}
|
|
|
// limit 2nd class and above to first class job levels (super novices are exempt)
|
|
|
- else if (sd->class_&JOBL_2 && !(sd->class_&JOBL_SUPER_NOVICE))
|
|
|
+ else if (sd->class_&JOBL_2 && (sd->class_&MAPID_UPPERMASK) != MAPID_SUPER_NOVICE)
|
|
|
{
|
|
|
// regenerate change_level_2nd
|
|
|
if (!sd->change_level_2nd)
|
|
@@ -5779,8 +5779,6 @@ int pc_jobid2mapid(unsigned short b_class)
|
|
|
//Reverts the map-style class id to the client-style one.
|
|
|
int pc_mapid2jobid(unsigned short class_, int sex)
|
|
|
{
|
|
|
- class_ &= JOBL_SUPER_NOVICE; // Quick conversion to get proper Super Novice ID.
|
|
|
-
|
|
|
switch(class_) {
|
|
|
//Novice And 1-1 Jobs
|
|
|
case MAPID_NOVICE: return JOB_NOVICE;
|
|
@@ -6245,7 +6243,7 @@ int pc_checkbaselevelup(struct map_session_data *sd) {
|
|
|
status_calc_pc(sd,SCO_FORCE);
|
|
|
status_percent_heal(&sd->bl,100,100);
|
|
|
|
|
|
- if(sd->class_&JOBL_SUPER_NOVICE) {
|
|
|
+ if ((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE) {
|
|
|
sc_start(&sd->bl,&sd->bl,status_skill2sc(PR_KYRIE),100,1,skill_get_time(PR_KYRIE,1));
|
|
|
sc_start(&sd->bl,&sd->bl,status_skill2sc(PR_IMPOSITIO),100,1,skill_get_time(PR_IMPOSITIO,1));
|
|
|
sc_start(&sd->bl,&sd->bl,status_skill2sc(PR_MAGNIFICAT),100,1,skill_get_time(PR_MAGNIFICAT,1));
|
|
@@ -7257,7 +7255,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
|
|
|
|
|
|
// Activate Steel body if a super novice dies at 99+% exp [celest]
|
|
|
// Super Novices have no kill or die functions attached when saved by their angel
|
|
|
- if (sd->class_&JOBL_SUPER_NOVICE && !sd->state.snovice_dead_flag) {
|
|
|
+ if (!sd->state.snovice_dead_flag && (sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE) {
|
|
|
unsigned int next = pc_nextbaseexp(sd);
|
|
|
|
|
|
if( next == 0 ) next = pc_thisbaseexp(sd);
|
|
@@ -8085,7 +8083,7 @@ bool pc_jobchange(struct map_session_data *sd,int job, char upper)
|
|
|
return false; //Nothing to change.
|
|
|
|
|
|
// changing from 1st to 2nd job
|
|
|
- if ((b_class&JOBL_2) && !(sd->class_&JOBL_2) && !(b_class&JOBL_SUPER_NOVICE)) {
|
|
|
+ if ((b_class&JOBL_2) && !(sd->class_&JOBL_2) && (sd->class_&MAPID_UPPERMASK) != MAPID_SUPER_NOVICE) {
|
|
|
sd->change_level_2nd = sd->status.job_level;
|
|
|
pc_setglobalreg (sd, "jobchange_level", sd->change_level_2nd);
|
|
|
}
|
|
@@ -8729,7 +8727,7 @@ bool pc_setregistry(struct map_session_data *sd,const char *reg,int val,int type
|
|
|
{
|
|
|
case 3: //Char reg
|
|
|
if( !strcmp(reg,"PC_DIE_COUNTER") && sd->die_counter != val ) {
|
|
|
- i = (!sd->die_counter && sd->class_&JOBL_SUPER_NOVICE);
|
|
|
+ i = (!sd->die_counter && (sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE);
|
|
|
sd->die_counter = val;
|
|
|
if( i )
|
|
|
status_calc_pc(sd,SCO_NONE); // Lost the bonus.
|