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
This commit is contained in:
shennetsind 2011-12-24 13:03:14 +00:00
parent bc7e5584ad
commit 779035c90b
3 changed files with 38 additions and 1 deletions

View File

@ -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
**/ **/

View File

@ -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(int fd, int line);
void clif_msgtable_num(int fd, int line, int num); void clif_msgtable_num(int fd, int line, int num);
/**
* Elemental Converter List
**/
int clif_elementalconverter_list(struct map_session_data *sd);
/** /**
* Rune Knight * Rune Knight
**/ **/

View File

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