Index: db/packet_db.txt =================================================================== --- db/packet_db.txt (revision 17352) +++ db/packet_db.txt (working copy) @@ -1647,6 +1647,7 @@ 0x0439,8,useitem,2:4 0x08d2,10 0x08d1,7 +0x846,4,cashshopreqtab,2 //2011-07-18 // 2011-11-02aRagexe packet_ver: 28 @@ -1689,7 +1690,7 @@ 0x0885,7,actionrequest,2:6 0x0889,10,useskilltoid,2:4:6 0x0870,-1,itemlistwindowselected,2:4:8 -0x0926,18,bookingregreq,2:4:6 +//0x0926,18,bookingregreq,2:4:6 0x0815,-1,reqopenbuyingstore,2:4:8:9:89 0x0817,2,reqclosebuyingstore,0 0x0360,6,reqclickbuyingstore,2 @@ -1698,6 +1699,7 @@ 0x0835,2,searchstoreinfonextpage,0 0x0838,12,searchstoreinfolistitemclick,2:6:10 0x0439,8,useitem,2:4 +0x0365,18,bookingregreq,2:4:6 //2012-04-10aRagexeRE packet_ver: 30 @@ -1730,7 +1732,6 @@ 0x0366,90,useskilltoposinfo,2:4:6:8:10 0x0889,6,getcharnamerequest,2 0x0884,6,solvecharname,2 -0x08E5,41,bookingregreq,2:4 //Added to prevent disconnections 0x08E6,4 0x08E7,10,bookingsearchreq,2 0x08E8,-1 @@ -1759,6 +1760,7 @@ 0x08CF,10 //Amulet spirits 0x0977,14 //Monster HP Bar 0x0916,26,guildinvite2,2 +0x091D,18,bookingregreq,2:4:6 //2012-04-18aRagexeRE [Special Thanks to Judas!] packet_ver:31 @@ -1782,6 +1784,7 @@ //2012-06-18 packet_ver: 32 0x0983,29 +0x0861,18,bookingregreq,2:4:6 //actually 05-03 //2012-07-02aRagexeRE (unstable) packet_ver: 33 @@ -1799,6 +1802,7 @@ 0x094a,6,getcharnamerequest,2 0x0953,5,walktoxy,2 0x0960,5,changedir,2:4 +0x0879,18,bookingregreq,2:4:6 //2013-03-20Ragexe (Judas) packet_ver: 34 Index: src/map/homunculus.c =================================================================== --- src/map/homunculus.c (revision 17352) +++ src/map/homunculus.c (working copy) @@ -807,6 +807,7 @@ if (hd->hungry_timer == INVALID_TIMER) hd->hungry_timer = add_timer(gettick()+hd->homunculusDB->hungryDelay,merc_hom_hungry,hd->master->bl.id,0); hd->regen.state.block = 0; //Restore HP/SP block. + hd->masterteleport_timer = INVALID_TIMER; } int merc_call_homunculus(struct map_session_data *sd) Index: src/map/pc.c =================================================================== --- src/map/pc.c (revision 17352) +++ src/map/pc.c (working copy) @@ -4048,7 +4048,7 @@ p = party_search(sd->status.party_id); if(fitem->first_get_charid > 0 && fitem->first_get_charid != sd->status.char_id) - { + { first_sd = map_charid2sd(fitem->first_get_charid); if(DIFF_TICK(tick,fitem->first_get_tick) < 0) { if (!(p && p->party.item&1 && @@ -4069,7 +4069,7 @@ } else if(fitem->third_get_charid > 0 && fitem->third_get_charid != sd->status.char_id) - { + { third_sd = map_charid2sd(fitem->third_get_charid); if(DIFF_TICK(tick,fitem->third_get_tick) < 0) { if(!(p && p->party.item&1 && @@ -9659,7 +9659,7 @@ *------------------------------------------*/ int pc_readdb(void) { - int i,j,k,tmp=0; + int i,j,k; FILE *fp; char line[24000],*p; @@ -9756,7 +9756,7 @@ sv_readdb(db_path, "re/level_penalty.txt", ',', 4, 4, -1, &pc_readdb_levelpenalty); for( k=1; k < 3; k++ ){ // fill in the blanks for( j = 0; j < RC_MAX; j++ ){ - tmp = 0; + int tmp = 0; for( i = 0; i < MAX_LEVEL*2; i++ ){ if( i == MAX_LEVEL+1 ) tmp = level_penalty[k][j][0];// reset Index: src/map/clif.c =================================================================== --- src/map/clif.c (revision 17352) +++ src/map/clif.c (working copy) @@ -6598,7 +6598,7 @@ WBUFW(buf,0)=0x109; WBUFW(buf,2)=len+8; WBUFL(buf,4)=account_id; - safestrncpy((char *)WBUFP(buf,8), mes, len); + safestrncpy((char *)WBUFP(buf,8), mes, len); clif_send(buf,len+8,&sd->bl,PARTY); } } @@ -14443,7 +14443,6 @@ } #endif - /// Adoption System /// @@ -16348,6 +16347,29 @@ // No need to do anything here } +//08c0 .W .L .W (ZC_ACK_SE_CASH_ITEM_LIST2) +void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd) { + short tab = RFIFOW(fd, 2); + int j; + + if( tab < 0 || tab > CASHSHOP_TAB_SEARCH ) + return; + + WFIFOHEAD(fd, 10 + ( cash_shop_items[tab].count * 6 ) ); + WFIFOW(fd, 0) = 0x8c0; + WFIFOW(fd, 2) = 10 + ( cash_shop_items[tab].count * 6 ); + WFIFOL(fd, 4) = tab; + WFIFOW(fd, 8) = cash_shop_items[tab].count; + + for( j = 0; j < cash_shop_items[tab].count; j++ ) { + WFIFOW(fd, 10 + ( 6 * j ) ) = cash_shop_items[tab].item[j]->nameid; + WFIFOL(fd, 12 + ( 6 * j ) ) = cash_shop_items[tab].item[j]->price; + } + + WFIFOSET(fd, 10 + ( cash_shop_items[tab].count * 6 )); +} + +//08ca .W W .W (ZC_ACK_SCHEDULER_CASHITEM) void clif_cashshop_list( int fd ){ int tab; @@ -17056,6 +17078,7 @@ { clif_parse_cashshop_close, "cashshopclose" }, { clif_parse_cashshop_list_request, "cashshopitemlist" }, { clif_parse_cashshop_buy, "cashshopbuy" }, + { clif_parse_CashShopReqTab, "cashshopreqtab"}, /* */ { clif_parse_MoveItem , "moveitem" }, { clif_parse_GuildInvite2 , "guildinvite2" }, Index: src/map/skill.c =================================================================== --- src/map/skill.c (revision 17352) +++ src/map/skill.c (working copy) @@ -905,7 +905,7 @@ case TF_POISON: case AS_SPLASHER: if(!sc_start2(src,bl,SC_POISON,(4*skill_lv+10),skill_lv,src->id,skill_get_time2(skill_id,skill_lv)) - && sd && skill_id==TF_POISON + && sd && skill_id==TF_POISON ) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); break; @@ -919,7 +919,7 @@ break; case MG_FROSTDIVER: - if(!sc_start(src,bl,SC_FREEZE,skill_lv*3+35,skill_lv,skill_get_time2(skill_id,skill_lv))) + if(!sc_start(src,bl,SC_FREEZE,skill_lv*3+35,skill_lv,skill_get_time2(skill_id,skill_lv)) && sd) clif_skill_fail(sd,skill_id,0,0); break; @@ -11799,7 +11799,7 @@ break; } - case UNT_TATAMIGAESHI: + case UNT_TATAMIGAESHI: case UNT_DEMONSTRATION: skill_attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); break; Index: src/map/battle.c =================================================================== --- src/map/battle.c (revision 17352) +++ src/map/battle.c (working copy) @@ -3640,8 +3640,8 @@ short s_ele = 0; unsigned int skillratio = 100; //Skill dmg modifiers. - TBL_PC *sd; -// TBL_PC *tsd; + TBL_PC *sd; +// TBL_PC *tsd; struct status_change *sc, *tsc; struct Damage ad; struct status_data *sstatus = status_get_status_data(src); @@ -3671,7 +3671,7 @@ flag.imdef = nk&NK_IGNORE_DEF?1:0; sd = BL_CAST(BL_PC, src); -// tsd = BL_CAST(BL_PC, target); +// tsd = BL_CAST(BL_PC, target); sc = status_get_sc(src); tsc = status_get_sc(target); Index: src/map/guild.c =================================================================== --- src/map/guild.c (revision 17352) +++ src/map/guild.c (working copy) @@ -82,7 +82,7 @@ if (sd->status.guild_id != guild_id) { //If player belongs to a different guild, kick him out. - intif_guild_leave(guild_id,account_id,char_id,0,"** Guild Mismatch **"); + intif_guild_leave(guild_id,account_id,char_id,0,"** Guild Mismatch **"); return NULL; }