diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/pc.c | 6 | ||||
-rw-r--r-- | src/map/script.c | 38 |
2 files changed, 42 insertions, 2 deletions
diff --git a/src/map/pc.c b/src/map/pc.c index 7761364e0..2c78d3370 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -3640,7 +3640,8 @@ int pc_jobid2mapid(unsigned short b_class) class_ = MAPID_XMAS; break; default: - ShowError("pc_jobid2mapid: Unrecognized job %d!\n", b_class); + if (battle_config.error_log) + ShowError("pc_jobid2mapid: Unrecognized job %d!\n", b_class); return -1; } return class_; @@ -3790,7 +3791,8 @@ int pc_mapid2jobid(unsigned short class_, int sex) { case MAPID_BABY_ROGUE: return JOB_BABY_ROGUE; default: - ShowError("pc_mapid2jobid: Unrecognized job %d!\n", class_); + if (battle_config.error_log) + ShowError("pc_mapid2jobid: Unrecognized job %d!\n", class_); return -1; } } diff --git a/src/map/script.c b/src/map/script.c index 16da061b5..f55a108cf 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -3901,6 +3901,8 @@ struct script_function buildin_func[] = { {buildin_warpportal,"warpportal","iisii"}, // <--- [blackhole89] {buildin_homunculus_evolution,"homevolution",""}, //[orn] + {buildin_eaclass,"eaclass","*"}, //[Skotlex] + {buildin_roclass,"roclass","i*"}, //[Skotlex] {NULL,NULL,NULL}, }; @@ -7760,6 +7762,42 @@ int buildin_homunculus_evolution(struct script_state *st) return 0; } +//These two functions bring the eA MAPID_* class functionality to scripts. +int buildin_eaclass(struct script_state *st) +{ + int class_; + if( st->end>st->start+2 ) + class_ = conv_num(st,& (st->stack->stack_data[st->start+2])); + else { + struct map_session_data *sd; + sd=script_rid2sd(st); + if (!sd) { + push_val(st->stack,C_INT, -1); + return 0; + } + class_ = sd->status.class_; + } + push_val(st->stack,C_INT, pc_jobid2mapid(class_)); + return 0; +} + +int buildin_roclass(struct script_state *st) +{ + int class_ =conv_num(st,& (st->stack->stack_data[st->start+2])); + int sex; + if( st->end>st->start+3 ) + sex = conv_num(st,& (st->stack->stack_data[st->start+3])); + else { + struct map_session_data *sd; + if (st->rid && (sd=script_rid2sd(st))) + sex = sd->status.sex; + else + sex = 1; //Just use male when not found. + } + push_val(st->stack,C_INT,pc_mapid2jobid(class_, sex)); + return 0; +} + /*========================================== *Œg‘Ñ—‘›z‰»‹@Žg—p *------------------------------------------ |