Pārlūkot izejas kodu

Added official elemental converter creation window handling, bugreport:5144

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15242 54d463be-8e91-2dee-dedb-b68131a5f0ec
shennetsind 13 gadi atpakaļ
vecāks
revīzija
779035c90b
3 mainītis faili ar 38 papildinājumiem un 1 dzēšanām
  1. 33 0
      src/map/clif.c
  2. 4 0
      src/map/clif.h
  3. 1 1
      src/map/skill.c

+ 33 - 0
src/map/clif.c

@@ -10550,6 +10550,9 @@ void clif_parse_SelectArrow(int fd,struct map_session_data *sd)
 		case AC_MAKINGARROW:
 			skill_arrow_create(sd,RFIFOW(fd,2));
 			break;
+		case SA_CREATECON:
+			skill_produce_mix(sd,SA_CREATECON,RFIFOW(fd,2),0,0,0, 1);
+			break;
 		case WL_READING_SB:
 			skill_spellbook(sd,RFIFOW(fd,2));
 			break;
@@ -15015,7 +15018,37 @@ void clif_parse_debug(int fd,struct map_session_data *sd)
 
 	ShowDump(RFIFOP(fd,0), packet_len);
 }
+/*==========================================
+ * Server tells client to display a window similar to Magnifier (item) one
+ * Server populates the window with avilable elemental converter options according to player's inventory
+ *------------------------------------------*/
+int clif_elementalconverter_list(struct map_session_data *sd) {
+	int i,c,view,fd;
+	
+	nullpo_ret(sd);
+
+	fd=sd->fd;
+	WFIFOHEAD(fd, MAX_SKILL_PRODUCE_DB *2+4);
+	WFIFOW(fd, 0)=0x1ad;
+
+	for(i=0,c=0;i<MAX_SKILL_PRODUCE_DB;i++){
+		if( skill_can_produce_mix(sd,skill_produce_db[i].nameid,23, 1) ){
+			if((view = itemdb_viewid(skill_produce_db[i].nameid)) > 0)
+				WFIFOW(fd,c*2+ 4)= view;
+			else
+				WFIFOW(fd,c*2+ 4)= skill_produce_db[i].nameid;
+			c++;
+		}
+	}
+	WFIFOW(fd,2) = c*2+4;
+	WFIFOSET(fd, WFIFOW(fd,2));
+	if (c > 0) {
+		sd->menuskill_id = SA_CREATECON;
+		sd->menuskill_val = c;
+	}
 
+	return 0;
+}
 /**
  * Rune Knight
  **/

+ 4 - 0
src/map/clif.h

@@ -635,6 +635,10 @@ void clif_search_store_info_click_ack(struct map_session_data* sd, short x, shor
  **/
 void clif_msgtable(int fd, int line);
 void clif_msgtable_num(int fd, int line, int num);
+/**
+ * Elemental Converter List
+ **/
+int clif_elementalconverter_list(struct map_session_data *sd);
 /**
  * Rune Knight
  **/

+ 1 - 1
src/map/skill.c

@@ -4722,7 +4722,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 
 	case SA_CREATECON:
 		if(sd) {
-			clif_skill_produce_mix_list(sd,AM_PHARMACY,23);
+			clif_elementalconverter_list(sd);
 			clif_skill_nodamage(src,bl,skillid,skilllv,1);
 		}
 		break;