summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorshennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-03-22 01:31:52 +0000
committershennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-03-22 01:31:52 +0000
commit1ab8da3d02f841c0e74af10ecc60b63d5c13f5e2 (patch)
treedcd5d83f11c5465b57cc1fb5d2ea80b5c35f40da /src/map
parentfea72d3f3c14ce84c86d347ed66339bb50e581f7 (diff)
downloadhercules-1ab8da3d02f841c0e74af10ecc60b63d5c13f5e2.tar.gz
hercules-1ab8da3d02f841c0e74af10ecc60b63d5c13f5e2.tar.bz2
hercules-1ab8da3d02f841c0e74af10ecc60b63d5c13f5e2.tar.xz
hercules-1ab8da3d02f841c0e74af10ecc60b63d5c13f5e2.zip
Fixed bugreport:5468 Swordsman upper classes and ranger are no longer allowed to use reins of mount (new mounts)
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15746 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map')
-rw-r--r--src/map/atcommand.c6
-rw-r--r--src/map/pc.c2
-rw-r--r--src/map/pc.h9
3 files changed, 16 insertions, 1 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 7de68236c..74021b3db 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -8337,6 +8337,12 @@ ACMD_FUNC(charcommands)
}
ACMD_FUNC(new_mount) {
+
+ if( pc_cant_newmount(sd) && !(sd->sc.option&OPTION_MOUNTING) ) {
+ clif_displaymessage(sd->fd,"Your character cannot mount a new mount");
+ return -1;
+ }
+
clif_displaymessage(sd->fd,"NOTICE: If you crash with mount your LUA is outdated");
if( !(sd->sc.option&OPTION_MOUNTING) ) {
clif_displaymessage(sd->fd,"You have mounted.");
diff --git a/src/map/pc.c b/src/map/pc.c
index c277279c8..d5a7c65cc 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -6945,7 +6945,7 @@ int pc_setoption(struct map_session_data *sd,int type)
status_calc_pc(sd,0); //Remove speed penalty.
}
- if (type&OPTION_MOUNTING && !(p_type&OPTION_MOUNTING) && ( sd->class_&MAPID_THIRDMASK ) != MAPID_RANGER ) {
+ if (type&OPTION_MOUNTING && !(p_type&OPTION_MOUNTING) && !pc_cant_newmount(sd) ) {
clif_status_load_notick(&sd->bl,SI_ALL_RIDING,2,1,0,0);
status_calc_pc(sd,0);
} else if (!(type&OPTION_MOUNTING) && p_type&OPTION_MOUNTING) {
diff --git a/src/map/pc.h b/src/map/pc.h
index 1a3b54ac2..a035092b5 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -621,6 +621,15 @@ enum e_pc_permission {
#define pc_iswug(sd) ( (sd)->sc.option&OPTION_WUG )
#define pc_isridingwug(sd) ( (sd)->sc.option&OPTION_WUGRIDER )
+/**
+ * New Mounts -- can this damn job not
+ **/
+#define pc_cant_newmount(sd) \
+ ( \
+ ( (sd)->class_&MAPID_THIRDMASK) == MAPID_RANGER || \
+ ( ((sd)->class_&MAPID_BASEMASK) == MAPID_SWORDMAN && (sd)->status.class_ != JOB_SWORDMAN ) \
+ )
+
#define pc_stop_walking(sd, type) unit_stop_walking(&(sd)->bl, type)
#define pc_stop_attack(sd) unit_stop_attack(&(sd)->bl)