diff options
Diffstat (limited to 'src/map/script.c')
-rw-r--r-- | src/map/script.c | 38 |
1 files changed, 38 insertions, 0 deletions
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 *------------------------------------------ |