|
@@ -10550,6 +10550,9 @@ void clif_parse_SelectArrow(int fd,struct map_session_data *sd)
|
|
case AC_MAKINGARROW:
|
|
case AC_MAKINGARROW:
|
|
skill_arrow_create(sd,RFIFOW(fd,2));
|
|
skill_arrow_create(sd,RFIFOW(fd,2));
|
|
break;
|
|
break;
|
|
|
|
+ case SA_CREATECON:
|
|
|
|
+ skill_produce_mix(sd,SA_CREATECON,RFIFOW(fd,2),0,0,0, 1);
|
|
|
|
+ break;
|
|
case WL_READING_SB:
|
|
case WL_READING_SB:
|
|
skill_spellbook(sd,RFIFOW(fd,2));
|
|
skill_spellbook(sd,RFIFOW(fd,2));
|
|
break;
|
|
break;
|
|
@@ -15015,7 +15018,37 @@ void clif_parse_debug(int fd,struct map_session_data *sd)
|
|
|
|
|
|
ShowDump(RFIFOP(fd,0), packet_len);
|
|
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
|
|
* Rune Knight
|
|
**/
|
|
**/
|