summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/pc.c6
-rw-r--r--src/map/script.c38
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
*------------------------------------------