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 <len>.W <openIdentity>.L <itemcount>.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 <len>.W <itemcount> W <tabcode>.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;
}