Resolved enchants not executing unequip script (#2676)

* Fixes #2668.
* Fixes enchant items not properly calling the unequip item script.
Thanks to @admkakaroto and @mrjnumber1!
This commit is contained in:
Aleos 2017-12-15 14:29:46 -05:00 committed by GitHub
parent 377ca7585c
commit b3e67d2172
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -9856,7 +9856,7 @@ bool pc_equipitem(struct map_session_data *sd,short n,int req_pos)
if(itemdb_isspecial(sd->inventory.u.items_inventory[n].card[0]))
; //No cards
else {
for( i = 0; i < id->slot; i++ ) {
for( i = 0; i < MAX_SLOTS; i++ ) {
struct item_data *data;
if (!sd->inventory.u.items_inventory[n].card[i])
continue;
@ -9879,7 +9879,7 @@ bool pc_equipitem(struct map_session_data *sd,short n,int req_pos)
if(itemdb_isspecial(sd->inventory.u.items_inventory[n].card[0]))
; //No cards
else {
for( i = 0; i < id->slot; i++ ) {
for( i = 0; i < MAX_SLOTS; i++ ) {
struct item_data *data;
if (!sd->inventory.u.items_inventory[n].card[i])
continue;
@ -9905,7 +9905,7 @@ bool pc_equipitem(struct map_session_data *sd,short n,int req_pos)
*------------------------------------------*/
bool pc_unequipitem(struct map_session_data *sd, int n, int flag) {
int i, iflag;
bool status_cacl = false;
bool status_calc = false;
nullpo_retr(false,sd);
@ -9993,11 +9993,12 @@ bool pc_unequipitem(struct map_session_data *sd, int n, int flag) {
if ( sd->inventory_data[n] ) {
if( sd->inventory_data[n]->combos_count ) {
if( pc_removecombo(sd,sd->inventory_data[n]) )
status_cacl = true;
} if(itemdb_isspecial(sd->inventory.u.items_inventory[n].card[0]))
status_calc = true;
}
if(itemdb_isspecial(sd->inventory.u.items_inventory[n].card[0]))
; //No cards
else {
for( i = 0; i < sd->inventory_data[n]->slot; i++ ) {
for( i = 0; i < MAX_SLOTS; i++ ) {
struct item_data *data;
if (!sd->inventory.u.items_inventory[n].card[i])
@ -10005,14 +10006,14 @@ bool pc_unequipitem(struct map_session_data *sd, int n, int flag) {
if ( ( data = itemdb_exists(sd->inventory.u.items_inventory[n].card[i]) ) != NULL ) {
if( data->combos_count ) {
if( pc_removecombo(sd,data) )
status_cacl = true;
status_calc = true;
}
}
}
}
}
if(flag&1 || status_cacl) {
if(flag&1 || status_calc) {
pc_checkallowskill(sd);
status_calc_pc(sd,SCO_NONE);
}
@ -10027,7 +10028,7 @@ bool pc_unequipitem(struct map_session_data *sd, int n, int flag) {
if(itemdb_isspecial(sd->inventory.u.items_inventory[n].card[0]))
; //No cards
else {
for( i = 0; i < sd->inventory_data[n]->slot; i++ ) {
for( i = 0; i < MAX_SLOTS; i++ ) {
struct item_data *data;
if (!sd->inventory.u.items_inventory[n].card[i])
continue;