Przeglądaj źródła

Fixed upgradeui and synthesisui atcommand

Cydh 5 lat temu
rodzic
commit
91fb8e8378
3 zmienionych plików z 16 dodań i 9 usunięć
  1. 4 0
      src/map/atcommand.cpp
  2. 11 8
      src/map/clif.cpp
  3. 1 1
      src/map/pc.hpp

+ 4 - 0
src/map/atcommand.cpp

@@ -10079,6 +10079,8 @@ ACMD_FUNC(synthesisui) {
 	}
 	if (!item_synthesis_open(sd, itemid))
 		return -1;
+	sd->state.lapine_ui |= 4;
+	sd->itemid = itemid;
 #else
 	clif_displaymessage(fd, "Client is not supported.");
 #endif
@@ -10096,6 +10098,8 @@ ACMD_FUNC(upgradeui) {
 	}
 	if (!item_upgrade_open(sd, itemid))
 		return -1;
+	sd->state.lapine_ui |= 4;
+	sd->itemid = itemid;
 #else
 	clif_displaymessage(fd, "Client is not supported.");
 #endif

+ 11 - 8
src/map/clif.cpp

@@ -20900,6 +20900,7 @@ void clif_parse_equipswitch_request_single( int fd, struct map_session_data* sd
 static void clif_lapine_ui_reset(map_session_data *sd) {
 	sd->state.lapine_ui = 0;
 	sd->last_lapine_box = 0;
+	sd->itemid = sd->itemindex = -1;
 }
 
 /*
@@ -20982,7 +20983,7 @@ void clif_parse_lapineSynthesis_submit(int fd, struct map_session_data* sd) {
 		return;
 	}
 
-	if (sd->state.lapine_ui != 1) {
+	if (!(sd->state.lapine_ui&1)) {
 		set_eof(sd->fd);
 		return;
 	}
@@ -21008,14 +21009,15 @@ void clif_parse_lapineSynthesis_submit(int fd, struct map_session_data* sd) {
 		return;
 	}
 
-	if (id->flag.delay_consume) {
+	if (!(sd->state.lapine_ui&4) && id->flag.delay_consume) {
 		item *it;
 		if (sd->itemindex == -1 || sd->itemid == -1 || !(it = &sd->inventory.u.items_inventory[sd->itemindex]) || it->nameid != itemid) {
 			//clif_synthesisui_result(sd, SYNTHESIS_INVALID_ITEM);
 			set_eof(sd->fd);
 			return;
 		}
-		pc_delitem(sd, sd->itemindex, 1, 0, 0, LOG_TYPE_CONSUME);
+		if (id->flag.delay_consume != 2)
+			pc_delitem(sd, sd->itemindex, 1, 0, 0, LOG_TYPE_CONSUME);
 	}
 
 	std::vector<s_item_synthesis_list> items;
@@ -21037,7 +21039,7 @@ void clif_parse_lapineSynthesis_submit(int fd, struct map_session_data* sd) {
 	}
 
 	clif_synthesisui_result(sd, item_synthesis_submit(sd, itemid, items));
-	sd->itemid = sd->itemindex = -1;
+	clif_lapine_ui_reset(sd);
 #endif
 }
 
@@ -21134,7 +21136,7 @@ void clif_parse_lapineUpgrade_submit(int fd, struct map_session_data* sd) {
 		return;
 	}
 
-	if (sd->state.lapine_ui != 2) {
+	if (!(sd->state.lapine_ui&2)) {
 		set_eof(sd->fd);
 		return;
 	}
@@ -21169,17 +21171,18 @@ void clif_parse_lapineUpgrade_submit(int fd, struct map_session_data* sd) {
 		return;
 	}
 
-	if (id->flag.delay_consume) {
+	if (!(sd->state.lapine_ui&4) && id->flag.delay_consume) {
 		if (sd->itemindex == -1 || sd->itemid == -1) {
 			//clif_lapine_upgrade_result(sd, LAPINE_UPRAGDE_FAILURE);
 			set_eof(sd->fd);
 			return;
 		}
-		pc_delitem(sd, sd->itemindex, 1, 0, 0, LOG_TYPE_CONSUME);
+		if (id->flag.delay_consume != 2)
+			pc_delitem(sd, sd->itemindex, 1, 0, 0, LOG_TYPE_CONSUME);
 	}
 
 	clif_lapine_upgrade_result(sd, item_upgrade_submit(sd, itemid, index));
-	sd->itemid = sd->itemindex = -1;
+	clif_lapine_ui_reset(sd);
 #endif
 }
 

+ 1 - 1
src/map/pc.hpp

@@ -311,7 +311,7 @@ struct map_session_data {
 		bool mail_writing; // Whether the player is currently writing a mail in RODEX or not
 		bool cashshop_open;
 		bool sale_open;
-		unsigned int lapine_ui : 2; // Lapine Synthesis/Upgrade UI is opened
+		unsigned int lapine_ui : 3; // Lapine Synthesis/Upgrade UI is opened
 		unsigned int block_action : 10;
 	} state;
 	struct {