diff --git a/src/map/status.cpp b/src/map/status.cpp index 9148d70d4b..f59b482fcd 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -10325,12 +10325,26 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty target_class = MAPID_WIZARD; break; case SL_HIGH: - if( sd->status.base_level < 70 ){ + if( sd->status.base_level >= 70 ){ return 0; } - mask |= JOBL_UPPER; - target_class = MAPID_NOVICE_HIGH; + switch (sd->class_) { + case MAPID_SWORDMAN_HIGH: + case MAPID_MAGE_HIGH: + case MAPID_ARCHER_HIGH: + case MAPID_ACOLYTE_HIGH: + case MAPID_MERCHANT_HIGH: + case MAPID_THIEF_HIGH: + // Only these classes are allowed. + break; + default: + return 0; + } + + // Set these to pass the check below. + mask = sd->class_; + target_class = sd->class_; break; default: ShowError( "Unknown skill id %d for SC_SPIRIT.\n", val2 );