Bladeren bron

Resolved enchants not executing unequip script (#2676)

* Fixes #2668.
* Fixes enchant items not properly calling the unequip item script.
Thanks to @admkakaroto and @mrjnumber1!
Aleos 7 jaren geleden
bovenliggende
commit
b3e67d2172
1 gewijzigde bestanden met toevoegingen van 10 en 9 verwijderingen
  1. 10 9
      src/map/pc.cpp

+ 10 - 9
src/map/pc.cpp

@@ -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;