summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-05-30 19:10:36 +0000
committerrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-05-30 19:10:36 +0000
commitd0301ea03b9d46bc19635dcfa27becb9729e1725 (patch)
tree4f4aa7816ad3c2c49d2994f128c2c149e320bc61
parentc845207ead7f60b26fd20d9143c09f20416fede6 (diff)
downloadhercules-d0301ea03b9d46bc19635dcfa27becb9729e1725.tar.gz
hercules-d0301ea03b9d46bc19635dcfa27becb9729e1725.tar.bz2
hercules-d0301ea03b9d46bc19635dcfa27becb9729e1725.tar.xz
hercules-d0301ea03b9d46bc19635dcfa27becb9729e1725.zip
Fixed bugreport:5873 sex changed shouldn't now make exploits regarding item bonuses.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16167 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--src/char/char.c5
-rw-r--r--src/map/atcommand.c4
-rw-r--r--src/map/script.c4
3 files changed, 8 insertions, 5 deletions
diff --git a/src/char/char.c b/src/char/char.c
index c6c779a00..fbfbce285 100644
--- a/src/char/char.c
+++ b/src/char/char.c
@@ -2078,11 +2078,6 @@ int parse_fromlogin(int fd)
else if( class_[i] == JOB_KAGEROU || class_[i] == JOB_OBORO )
class_[i] = (sex ? JOB_KAGEROU : JOB_OBORO);
}
- // to avoid any problem with equipment and invalid sex, equipment is unequiped.
- if( SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `equip` = '0' WHERE `char_id` = '%d'", inventory_db, char_id[i]) )
- Sql_ShowDebug(sql_handle);
- if( SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `class`='%d', `weapon`='0', `shield`='0', `head_top`='0', `head_mid`='0', `head_bottom`='0' WHERE `char_id`='%d'", char_db, class_[i], char_id[i]) )
- Sql_ShowDebug(sql_handle);
if( guild_id[i] )// If there is a guild, update the guild_member data [Skotlex]
inter_guild_sex_changed(guild_id[i], acc, char_id[i], sex);
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 8d88566c7..11022f490 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -6515,8 +6515,12 @@ ACMD_FUNC(uptime)
*------------------------------------------*/
ACMD_FUNC(changesex)
{
+ int i;
nullpo_retr(-1, sd);
pc_resetskill(sd,4);
+ // to avoid any problem with equipment and invalid sex, equipment is unequiped.
+ for( i=0; i<EQI_MAX; i++ )
+ if( sd->equip_index[i] >= 0 ) pc_unequipitem(sd, sd->equip_index[i], 3);
chrif_changesex(sd);
return 0;
}
diff --git a/src/map/script.c b/src/map/script.c
index 5b38a0daf..e7a11309c 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -9684,10 +9684,14 @@ BUILDIN_FUNC(changebase)
*------------------------------------------*/
BUILDIN_FUNC(changesex)
{
+ int i;
TBL_PC *sd = NULL;
sd = script_rid2sd(st);
pc_resetskill(sd,4);
+ // to avoid any problem with equipment and invalid sex, equipment is unequiped.
+ for( i=0; i<EQI_MAX; i++ )
+ if( sd->equip_index[i] >= 0 ) pc_unequipitem(sd, sd->equip_index[i], 3);
chrif_changesex(sd);
return 0;
}