summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/char/char.c77
-rw-r--r--src/char/int_auction.c2
-rw-r--r--src/char/int_guild.c2
-rw-r--r--src/char/int_party.c2
-rw-r--r--src/char/int_rodex.c36
-rw-r--r--src/common/mmo.h24
-rw-r--r--src/common/utils.c22
-rw-r--r--src/common/utils.h1
-rw-r--r--src/login/lclif.c2
-rw-r--r--src/login/login.c104
-rw-r--r--src/login/login.h20
-rw-r--r--src/map/Makefile.in2
-rw-r--r--src/map/atcommand.c22
-rw-r--r--src/map/battle.c81
-rw-r--r--src/map/battle.h3
-rw-r--r--src/map/clif.c271
-rw-r--r--src/map/clif.h4
-rw-r--r--src/map/guild.c5
-rw-r--r--src/map/guild.h2
-rw-r--r--src/map/intif.c8
-rw-r--r--src/map/itemdb.c137
-rw-r--r--src/map/itemdb.h12
-rw-r--r--src/map/map.c7
-rw-r--r--src/map/map.h3
-rw-r--r--src/map/mob.c5
-rw-r--r--src/map/mob.h8
-rw-r--r--src/map/npc.c28
-rw-r--r--src/map/npc.h3
-rw-r--r--src/map/packets.h5684
-rw-r--r--src/map/packets_keys.h2170
-rw-r--r--src/map/packets_struct.h25
-rw-r--r--src/map/party.c5
-rw-r--r--src/map/pc.c404
-rw-r--r--src/map/pc.h32
-rw-r--r--src/map/rodex.c42
-rw-r--r--src/map/rodex.h2
-rw-r--r--src/map/script.c561
-rw-r--r--src/map/script.h3
-rw-r--r--src/map/skill.c55
-rw-r--r--src/map/status.c77
-rw-r--r--src/map/status.h6
-rw-r--r--src/map/storage.c4
-rw-r--r--src/map/unit.c2
-rw-r--r--src/plugins/HPMHooking/HPMHooking.Defs.inc76
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc52
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc13
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.Hooks.inc347
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc12
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc3
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.Hooks.inc163
-rw-r--r--src/plugins/db2sql.c15
51 files changed, 9179 insertions, 1467 deletions
diff --git a/src/char/char.c b/src/char/char.c
index 4687d4d6b..78b2d19fa 100644
--- a/src/char/char.c
+++ b/src/char/char.c
@@ -460,10 +460,10 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p)
(p->int_ != cp->int_) || (p->dex != cp->dex) || (p->luk != cp->luk) ||
(p->option != cp->option) ||
(p->party_id != cp->party_id) || (p->guild_id != cp->guild_id) ||
- (p->pet_id != cp->pet_id) || (p->weapon != cp->weapon) || (p->hom_id != cp->hom_id) ||
- (p->ele_id != cp->ele_id) || (p->shield != cp->shield) || (p->head_top != cp->head_top) ||
- (p->head_mid != cp->head_mid) || (p->head_bottom != cp->head_bottom) || (p->delete_date != cp->delete_date) ||
- (p->rename != cp->rename) || (p->slotchange != cp->slotchange) || (p->robe != cp->robe) ||
+ (p->pet_id != cp->pet_id) || (p->look.weapon != cp->look.weapon) || (p->hom_id != cp->hom_id) ||
+ (p->ele_id != cp->ele_id) || (p->look.shield != cp->look.shield) || (p->look.head_top != cp->look.head_top) ||
+ (p->look.head_mid != cp->look.head_mid) || (p->look.head_bottom != cp->look.head_bottom) || (p->delete_date != cp->delete_date) ||
+ (p->rename != cp->rename) || (p->slotchange != cp->slotchange) || (p->look.robe != cp->look.robe) ||
(p->show_equip != cp->show_equip) || (p->allow_party != cp->allow_party) || (p->font != cp->font) ||
(p->uniqueitem_counter != cp->uniqueitem_counter) || (p->hotkey_rowshift != cp->hotkey_rowshift)
) {
@@ -476,7 +476,7 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p)
opt |= OPT_SHOW_EQUIP;
if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `base_level`='%d', `job_level`='%d',"
- "`base_exp`='%u', `job_exp`='%u', `zeny`='%d',"
+ "`base_exp`='%"PRIu64"', `job_exp`='%"PRIu64"', `zeny`='%d',"
"`max_hp`='%d',`hp`='%d',`max_sp`='%d',`sp`='%d',`status_point`='%d',`skill_point`='%d',"
"`str`='%d',`agi`='%d',`vit`='%d',`int`='%d',`dex`='%d',`luk`='%d',"
"`option`='%u',`party_id`='%d',`guild_id`='%d',`pet_id`='%d',`homun_id`='%d',`elemental_id`='%d',"
@@ -490,11 +490,11 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p)
p->max_hp, p->hp, p->max_sp, p->sp, p->status_point, p->skill_point,
p->str, p->agi, p->vit, p->int_, p->dex, p->luk,
p->option, p->party_id, p->guild_id, p->pet_id, p->hom_id, p->ele_id,
- p->weapon, p->shield, p->head_top, p->head_mid, p->head_bottom,
+ p->look.weapon, p->look.shield, p->look.head_top, p->look.head_mid, p->look.head_bottom,
mapindex_id2name(p->last_point.map), p->last_point.x, p->last_point.y,
mapindex_id2name(p->save_point.map), p->save_point.x, p->save_point.y, p->rename,
(unsigned long)p->delete_date, // FIXME: platform-dependent size
- p->robe,p->slotchange,opt,p->font,p->uniqueitem_counter,
+ p->look.robe,p->slotchange,opt,p->font,p->uniqueitem_counter,
p->hotkey_rowshift,
p->account_id, p->char_id) )
{
@@ -927,7 +927,7 @@ int char_memitemdata_to_sql(const struct item *p_items, int guid, enum inventory
if (SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf)))
Sql_ShowDebug(inter->sql_handle);
}
-
+
aFree(deletes);
}
@@ -1072,8 +1072,8 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_SHORT, &p.class, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_INT, &p.base_level, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT, &p.job_level, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_UINT, &p.base_exp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &p.job_exp, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_UINT64, &p.base_exp, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT64, &p.job_exp, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_INT, &p.zeny, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_SHORT, &p.str, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_SHORT, &p.agi, 0, NULL, NULL)
@@ -1094,15 +1094,15 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 25, SQLDT_SHORT, &p.hair_color, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 26, SQLDT_SHORT, &p.clothes_color, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 27, SQLDT_SHORT, &p.body, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 28, SQLDT_SHORT, &p.weapon, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 29, SQLDT_SHORT, &p.shield, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_SHORT, &p.head_top, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p.head_mid, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p.head_bottom, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 28, SQLDT_SHORT, &p.look.weapon, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 29, SQLDT_SHORT, &p.look.shield, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_SHORT, &p.look.head_top, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p.look.head_mid, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p.look.head_bottom, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_STRING, &last_map, sizeof(last_map), NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_USHORT, &p.rename, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_UINT32, &p.delete_date, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p.robe, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p.look.robe, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_USHORT, &p.slotchange, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_LONG, &unban_time, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_ENUM, &sex, sizeof(sex), NULL, NULL)
@@ -1181,8 +1181,8 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_SHORT, &p->class, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT, &p->base_level, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_INT, &p->job_level, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &p->base_exp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_UINT, &p->job_exp, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT64, &p->base_exp, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_UINT64, &p->job_exp, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_INT, &p->zeny, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_SHORT, &p->str, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 11, SQLDT_SHORT, &p->agi, 0, NULL, NULL)
@@ -1208,11 +1208,11 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p->hair_color, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p->clothes_color, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_SHORT, &p->body, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_SHORT, &p->weapon, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_SHORT, &p->shield, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p->head_top, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_SHORT, &p->head_mid, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_SHORT, &p->head_bottom, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_SHORT, &p->look.weapon, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_SHORT, &p->look.shield, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p->look.head_top, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_SHORT, &p->look.head_mid, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_SHORT, &p->look.head_bottom, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_STRING, &last_map, sizeof(last_map), NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 40, SQLDT_SHORT, &p->last_point.x, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 41, SQLDT_SHORT, &p->last_point.y, 0, NULL, NULL)
@@ -1226,7 +1226,7 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 49, SQLDT_INT, &p->fame, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 50, SQLDT_USHORT, &p->rename, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 51, SQLDT_UINT32, &p->delete_date, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 52, SQLDT_SHORT, &p->robe, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 52, SQLDT_SHORT, &p->look.robe, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 53, SQLDT_USHORT, &p->slotchange, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 54, SQLDT_UINT, &opt, 0, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 55, SQLDT_UCHAR, &p->font, 0, NULL, NULL)
@@ -1909,10 +1909,23 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) {
return 0;
buf = WBUFP(buffer,0);
+
WBUFL(buf,0) = p->char_id;
- WBUFL(buf,4) = min(p->base_exp, INT32_MAX);
+#if PACKETVER >= 20170830
+ WBUFQ(buf,4) = min(p->base_exp, INT64_MAX);
+ offset += 4;
+ buf = WBUFP(buffer, offset);
+#else
+ WBUFL(buf,4) = min((uint32)(p->base_exp), INT32_MAX);
+#endif
WBUFL(buf,8) = p->zeny;
- WBUFL(buf,12) = min(p->job_exp, INT32_MAX);
+#if PACKETVER >= 20170830
+ WBUFQ(buf,12) = min(p->job_exp, INT64_MAX);
+ offset += 4;
+ buf = WBUFP(buffer, offset);
+#else
+ WBUFL(buf,12) = min((uint32)(p->job_exp), INT32_MAX);
+#endif
WBUFL(buf,16) = p->job_level;
WBUFL(buf,20) = 0; // probably opt1
WBUFL(buf,24) = 0; // probably opt2
@@ -1942,14 +1955,14 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) {
//When the weapon is sent and your option is riding, the client crashes on login!?
// FIXME[Haru]: is OPTION_HANBOK intended to be part of this list? And if it is, should the list also include other OPTION_ costumes?
- WBUFW(buf,56) = (p->option&(OPTION_RIDING|OPTION_DRAGON|OPTION_WUG|OPTION_WUGRIDER|OPTION_MADOGEAR|OPTION_HANBOK)) ? 0 : p->weapon;
+ WBUFW(buf,56) = (p->option&(OPTION_RIDING|OPTION_DRAGON|OPTION_WUG|OPTION_WUGRIDER|OPTION_MADOGEAR|OPTION_HANBOK)) ? 0 : p->look.weapon;
WBUFW(buf,58) = p->base_level;
WBUFW(buf,60) = min(p->skill_point, INT16_MAX);
- WBUFW(buf,62) = p->head_bottom;
- WBUFW(buf,64) = p->shield;
- WBUFW(buf,66) = p->head_top;
- WBUFW(buf,68) = p->head_mid;
+ WBUFW(buf,62) = p->look.head_bottom;
+ WBUFW(buf,64) = p->look.shield;
+ WBUFW(buf,66) = p->look.head_top;
+ WBUFW(buf,68) = p->look.head_mid;
WBUFW(buf,70) = p->hair_color;
WBUFW(buf,72) = p->clothes_color;
memcpy(WBUFP(buf,74), p->name, NAME_LENGTH);
@@ -1973,7 +1986,7 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) {
offset += 4;
#endif
#if PACKETVER >= 20110111
- WBUFL(buf,128) = p->robe;
+ WBUFL(buf,128) = p->look.robe;
offset += 4;
#endif
#if PACKETVER != 20111116 //2011-11-16 wants 136, ask gravity.
diff --git a/src/char/int_auction.c b/src/char/int_auction.c
index 2dd65f213..05914c3a0 100644
--- a/src/char/int_auction.c
+++ b/src/char/int_auction.c
@@ -113,7 +113,7 @@ unsigned int inter_auction_create(struct auction_data *auction)
StrBuf->Printf(&buf, ",'%d'", auction->item.card[j]);
for (j = 0; j < MAX_ITEM_OPTIONS; j++)
StrBuf->Printf(&buf, ",'%d','%d'", auction->item.option[j].index, auction->item.option[j].value);
-
+
StrBuf->AppendStr(&buf, ")");
stmt = SQL->StmtMalloc(inter->sql_handle);
diff --git a/src/char/int_guild.c b/src/char/int_guild.c
index b4b4bdde4..0102f11a0 100644
--- a/src/char/int_guild.c
+++ b/src/char/int_guild.c
@@ -138,7 +138,7 @@ int inter_guild_tosql(struct guild *g,int flag)
if (g->guild_id<=0 && g->guild_id != -1) return 0;
#ifdef NOISY
- ShowInfo("Save guild request ("CL_BOLD"%d"CL_RESET" - flag 0x%x).",g->guild_id, flag);
+ ShowInfo("Save guild request ("CL_BOLD"%d"CL_RESET" - flag 0x%x).\n",g->guild_id, flag);
#endif
SQL->EscapeStringLen(inter->sql_handle, esc_name, g->name, strnlen(g->name, NAME_LENGTH));
diff --git a/src/char/int_party.c b/src/char/int_party.c
index 4b6800699..764387981 100644
--- a/src/char/int_party.c
+++ b/src/char/int_party.c
@@ -633,7 +633,7 @@ int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
return 0; //Member not found?
mapif->party_withdraw(party_id, account_id, char_id);
-
+
j = p->party.member[i].lv;
if (p->party.member[i].online > 0)
p->party.count--;
diff --git a/src/char/int_rodex.c b/src/char/int_rodex.c
index 1fa76e4db..994e8110e 100644
--- a/src/char/int_rodex.c
+++ b/src/char/int_rodex.c
@@ -92,6 +92,19 @@ static int inter_rodex_fromsql(int char_id, int account_id, int8 opentype, int64
return -1;
}
break;
+
+ case RODEX_OPENTYPE_UNSET:
+ if (SQL_ERROR == SQL->StmtPrepare(stmt,
+ "SELECT `mail_id`, `sender_name`, `sender_id`, `receiver_name`, `receiver_id`, `receiver_accountid`,"
+ "`title`, `body`, `zeny`, `type`, `is_read`, `send_date`, `expire_date`, `weight`"
+ "FROM `%s` WHERE `expire_date` > '%d' AND (`receiver_id` = '%d' or `receiver_accountid` = '%d') AND `mail_id` > '%"PRId64"'"
+ "ORDER BY `mail_id` ASC", rodex_db, (int)time(NULL), char_id, account_id, mail_id)
+ ) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return -1;
+ }
+ break;
}
if (SQL_ERROR == SQL->StmtExecute(stmt)
@@ -173,7 +186,18 @@ static int inter_rodex_fromsql(int char_id, int account_id, int8 opentype, int64
msg.type &= ~MAIL_TYPE_ZENY;
}
+#if PACKETVER >= 20170419
+ if (opentype == RODEX_OPENTYPE_UNSET) {
+ if (msg.receiver_id != 0)
+ msg.opentype = RODEX_OPENTYPE_MAIL;
+ else
+ msg.opentype = RODEX_OPENTYPE_ACCOUNT;
+ } else {
+ msg.opentype = opentype;
+ }
+#else
msg.opentype = opentype;
+#endif
#if PACKETVER < 20160601
// NPC Message Type isn't supported in old clients
msg.type &= ~MAIL_TYPE_NPC;
@@ -200,8 +224,8 @@ static bool inter_rodex_hasnew(int char_id, int account_id)
{
int count = 0;
char *data;
-
- if (SQL_ERROR == SQL->Query(inter->sql_handle,
+
+ if (SQL_ERROR == SQL->Query(inter->sql_handle,
"SELECT count(*) FROM `%s` WHERE ("
"(`expire_date` > '%d' AND (`receiver_id` = '%d' OR `receiver_accountid` = '%d')) OR"
"(`sender_id` = '%d' AND `expire_date` <= '%d' AND `send_date` + '%d' > '%d')"
@@ -212,7 +236,7 @@ static bool inter_rodex_hasnew(int char_id, int account_id)
Sql_ShowDebug(inter->sql_handle);
return -1;
}
-
+
if (SQL_SUCCESS != SQL->NextRow(inter->sql_handle))
return false;
@@ -407,12 +431,12 @@ void mapif_parse_rodex_updatemail(int fd)
if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `is_read` = 1 WHERE `mail_id` = '%"PRId64"'", rodex_db, mail_id))
Sql_ShowDebug(inter->sql_handle);
break;
-
+
case 1: // Get Zeny
if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `zeny` = 0, `type` = `type` & (~2) WHERE `mail_id` = '%"PRId64"'", rodex_db, mail_id))
Sql_ShowDebug(inter->sql_handle);
break;
-
+
case 2: // Get Items
if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `mail_id` = '%"PRId64"'", rodex_item_db, mail_id))
Sql_ShowDebug(inter->sql_handle);
@@ -436,7 +460,7 @@ void mapif_rodex_send(int fd, int sender_id, int receiver_id, int receiver_accou
{
Assert_retv(sender_id >= 0);
Assert_retv(receiver_id + receiver_accountid > 0);
-
+
WFIFOHEAD(fd,15);
WFIFOW(fd,0) = 0x3897;
WFIFOL(fd,2) = sender_id;
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 9bb9837ab..52f68b719 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -276,7 +276,11 @@ STATIC_ASSERT(MAX_ITEM_OPTIONS <= 5, "This value is limited by the client and da
#define RODEX_BODY_LENGTH (500 + 1)
#define RODEX_MAX_ITEM (5)
#define RODEX_EXPIRE (1 * 15 * 24 * 60 * 60)
+#if PACKETVER >= 20170419
+#define RODEX_MAIL_PER_PAGE 32
+#else
#define RODEX_MAIL_PER_PAGE 7
+#endif
// The following system marks a different job ID system used by the map server,
// which makes a lot more sense than the normal one. [Skotlex]
@@ -418,7 +422,7 @@ enum e_item_bound_type {
#endif
};
-enum {
+enum e_option {
OPTION_NOTHING = 0x00000000,
OPTION_SIGHT = 0x00000001,
OPTION_HIDE = 0x00000002,
@@ -593,7 +597,7 @@ struct mmo_charstatus {
int mother;
int child;
- unsigned int base_exp,job_exp;
+ uint64 base_exp, job_exp;
int zeny;
int bank_vault;
@@ -612,10 +616,14 @@ struct mmo_charstatus {
int spear_faith, spear_calls;
int sword_faith, sword_calls;
- short weapon; // enum weapon_type
- short shield; // view-id
- short head_top,head_mid,head_bottom;
- short robe;
+ struct {
+ short weapon; ///< Weapon view sprite id.
+ short shield; ///< Shield view sprite id.
+ short head_top; ///< Top headgear view sprite id.
+ short head_mid; ///< Middle headgear view sprite id.
+ short head_bottom; ///< Bottom headgear view sprite id.
+ short robe; ///< Robe view sprite id.
+ } look;
char name[NAME_LENGTH];
int base_level, job_level;
@@ -847,6 +855,7 @@ enum rodex_opentype {
RODEX_OPENTYPE_MAIL = 0,
RODEX_OPENTYPE_ACCOUNT = 1,
RODEX_OPENTYPE_RETURN = 2,
+ RODEX_OPENTYPE_UNSET = 3,
};
enum MAIL_TYPE {
@@ -913,7 +922,7 @@ enum {
};
//These mark the ID of the jobs, as expected by the client. [Skotlex]
-enum {
+enum e_class {
JOB_NOVICE,
JOB_SWORDMAN,
JOB_MAGE,
@@ -1132,6 +1141,7 @@ enum ammo_type {
A_KUNAI, //7
A_CANNONBALL, //8
A_THROWWEAPON, //9
+ MAX_AMMO_TYPE
};
enum e_char_server_type {
diff --git a/src/common/utils.c b/src/common/utils.c
index bcfc153e3..0d76a885e 100644
--- a/src/common/utils.c
+++ b/src/common/utils.c
@@ -359,6 +359,28 @@ unsigned int get_percentage(const unsigned int A, const unsigned int B)
return (unsigned int)floor(result);
}
+/// calculates the value of A / B, in percent (rounded down)
+uint64 get_percentage64(const uint64 A, const uint64 B)
+{
+ double result;
+
+ if( B == 0 )
+ {
+ ShowError("get_percentage(): division by zero! (A=%"PRIu64",B=%"PRIu64")\n", A, B);
+ return ~0U;
+ }
+
+ result = 100 * ((double)A / (double)B);
+
+ if( result > UINT_MAX )
+ {
+ ShowError("get_percentage(): result percentage too high! (A=%"PRIu64",B=%"PRIu64",result=%g)\n", A, B, result);
+ return UINT_MAX;
+ }
+
+ return (uint64)floor(result);
+}
+
/**
* Applies a percentual rate modifier.
*
diff --git a/src/common/utils.h b/src/common/utils.h
index 9d3c323ef..e77c63cf2 100644
--- a/src/common/utils.h
+++ b/src/common/utils.h
@@ -44,6 +44,7 @@ bool exists(const char* filename);
/// calculates the value of A / B, in percent (rounded down)
unsigned int get_percentage(const unsigned int A, const unsigned int B);
+uint64 get_percentage64(const uint64 A, const uint64 B);
int64 apply_percentrate64(int64 value, int rate, int maxrate);
int apply_percentrate(int value, int rate, int maxrate);
diff --git a/src/login/lclif.c b/src/login/lclif.c
index f32538610..47b2526c4 100644
--- a/src/login/lclif.c
+++ b/src/login/lclif.c
@@ -284,7 +284,7 @@ bool lclif_send_server_list(struct login_session_data *sd)
packet->server_list[n].ip = htonl((subnet_char_ip) ? subnet_char_ip : server[i].ip);
packet->server_list[n].port = sockt->ntows(htons(server[i].port)); // [!] LE byte order here [!]
safestrncpy(packet->server_list[n].name, server[i].name, 20);
- packet->server_list[n].usercount = server[i].users;
+ packet->server_list[n].usercount = login->convert_users_to_colors(server[i].users);
if (server[i].type == CST_PAYING && sd->expiration_time > time(NULL))
packet->server_list[n].property = CST_NORMAL;
diff --git a/src/login/login.c b/src/login/login.c
index ae584206f..3db9558b8 100644
--- a/src/login/login.c
+++ b/src/login/login.c
@@ -1604,7 +1604,7 @@ bool login_config_read_account(const char *filename, struct config_t *config, bo
/**
* Frees login->config->client_hash_nodes
**/
-void clear_client_hash_nodes(void)
+void login_clear_client_hash_nodes(void)
{
struct client_hash_node *node = login->config->client_hash_nodes;
@@ -1618,7 +1618,7 @@ void clear_client_hash_nodes(void)
}
/**
- * Reads information from login_configuration.permission.hash.md5_hashes.
+ * Reads information from login_configuration.permission.hash.md5_hashes (unused function)
*
* @param setting The setting to read from.
*/
@@ -1627,7 +1627,7 @@ void login_config_set_md5hash(struct config_setting_t *setting)
int i;
int count = libconfig->setting_length(setting);
- clear_client_hash_nodes();
+ login->clear_client_hash_nodes();
// There's no need to parse if it's disabled or if there's no list
if (count <= 0 || !login->config->client_hash_check)
@@ -1702,7 +1702,7 @@ bool login_config_read_permission_hash(const char *filename, struct config_t *co
libconfig->setting_lookup_bool_real(setting, "enabled", &login->config->client_hash_check);
if ((setting = libconfig->lookup(config, "login_configuration/permission/hash/MD5_hashes")) != NULL)
- login_config_set_md5hash(setting);
+ login->config_set_md5hash(setting);
return true;
}
@@ -1710,7 +1710,7 @@ bool login_config_read_permission_hash(const char *filename, struct config_t *co
/**
* Clears login->config->dnsbl_servers, freeing any allocated memory.
*/
-void clear_dnsbl_servers(void)
+void login_clear_dnsbl_servers(void)
{
while (VECTOR_LENGTH(login->config->dnsbl_servers) > 0) {
aFree(&VECTOR_POP(login->config->dnsbl_servers));
@@ -1728,7 +1728,7 @@ void login_config_set_dnsbl_servers(struct config_setting_t *setting)
int i;
int count = libconfig->setting_length(setting);
- clear_dnsbl_servers();
+ login->clear_dnsbl_servers();
// There's no need to parse if it's disabled
if (count <= 0 || !login->config->use_dnsbl)
@@ -1772,7 +1772,7 @@ bool login_config_read_permission_blacklist(const char *filename, struct config_
libconfig->setting_lookup_bool_real(setting, "enabled", &login->config->use_dnsbl);
if ((setting = libconfig->lookup(config, "login_configuration/permission/DNS_blacklist/dnsbl_servers")) != NULL)
- login_config_set_dnsbl_servers(setting);
+ login->config_set_dnsbl_servers(setting);
return true;
}
@@ -1806,15 +1806,47 @@ bool login_config_read_permission(const char *filename, struct config_t *config,
libconfig->setting_lookup_bool_real(setting, "check_client_version", &login->config->check_client_version);
libconfig->setting_lookup_uint32(setting, "client_version_to_connect", &login->config->client_version_to_connect);
- if (!login_config_read_permission_hash(filename, config, imported))
+ if (!login->config_read_permission_hash(filename, config, imported))
retval = false;
- if (!login_config_read_permission_blacklist(filename, config, imported))
+ if (!login->config_read_permission_blacklist(filename, config, imported))
retval = false;
return retval;
}
/**
+ * Reads 'login_configuration.users_count' and initializes required variables.
+ *
+ * @param filename Path to configuration file (used in error and warning messages).
+ * @param config The current config being parsed.
+ * @param imported Whether the current config is imported from another file.
+ *
+ * @retval false in case of error.
+ */
+bool login_config_read_users(const char *filename, struct config_t *config, bool imported)
+{
+ struct config_setting_t *setting = NULL;
+ bool retval = true;
+
+ nullpo_retr(false, filename);
+ nullpo_retr(false, config);
+
+ if ((setting = libconfig->lookup(config, "login_configuration/users_count")) == NULL) {
+ if (imported)
+ return true;
+ ShowError("login_config_read: login_configuration/users_count was not found in %s!\n", filename);
+ return false;
+ }
+
+ libconfig->setting_lookup_bool_real(setting, "send_user_count_description", &login->config->send_user_count_description);
+ libconfig->setting_lookup_uint32(setting, "low", &login->config->users_low);
+ libconfig->setting_lookup_uint32(setting, "medium", &login->config->users_medium);
+ libconfig->setting_lookup_uint32(setting, "high", &login->config->users_high);
+
+ return retval;
+}
+
+/**
* Reads the 'login-config' configuration file and initializes required variables.
*
* @param filename Path to configuration file.
@@ -1833,15 +1865,17 @@ bool login_config_read(const char *filename, bool imported)
if (!libconfig->load_file(&config, filename))
return false; // Error message is already shown by libconfig->load_file
- if (!login_config_read_inter(filename, &config, imported))
+ if (!login->config_read_inter(filename, &config, imported))
retval = false;
- if (!login_config_read_console(filename, &config, imported))
+ if (!login->config_read_console(filename, &config, imported))
retval = false;
- if (!login_config_read_log(filename, &config, imported))
+ if (!login->config_read_log(filename, &config, imported))
retval = false;
- if (!login_config_read_account(filename, &config, imported))
+ if (!login->config_read_account(filename, &config, imported))
retval = false;
- if (!login_config_read_permission(filename, &config, imported))
+ if (!login->config_read_permission(filename, &config, imported))
+ retval = false;
+ if (!login->config_read_users(filename, &config, imported))
retval = false;
if (!loginlog_config_read("conf/common/inter-server.conf", imported)) // Only inter-server
@@ -1866,6 +1900,30 @@ bool login_config_read(const char *filename, bool imported)
return retval;
}
+/**
+ * Convert users count to colors.
+ *
+ * @param users Actual users count.
+ *
+ * @retval users count or color id.
+ **/
+uint16 login_convert_users_to_colors(uint16 users)
+{
+#if PACKETVER >= 20170726
+ if (!login->config->send_user_count_description)
+ return 4;
+ if (users <= login->config->users_low)
+ return 0;
+ else if (users <= login->config->users_medium)
+ return 1;
+ else if (users <= login->config->users_high)
+ return 2;
+ return 3;
+#else
+ return users;
+#endif
+}
+
//--------------------------------------
// Function called at exit of the server
//--------------------------------------
@@ -1877,8 +1935,8 @@ int do_final(void)
HPM->event(HPET_FINAL);
- clear_client_hash_nodes();
- clear_dnsbl_servers();
+ login->clear_client_hash_nodes();
+ login->clear_dnsbl_servers();
login_log(0, "login server", 100, "login server shutdown");
@@ -2168,6 +2226,20 @@ void login_defaults(void) {
login->config_set_defaults = login_config_set_defaults;
login->config_read = login_config_read;
+ login->config_read_inter = login_config_read_inter;
+ login->config_read_console = login_config_read_console;
+ login->config_read_log = login_config_read_log;
+ login->config_read_account = login_config_read_account;
+ login->config_read_permission = login_config_read_permission;
+ login->config_read_permission_hash = login_config_read_permission_hash;
+ login->config_read_permission_blacklist = login_config_read_permission_blacklist;
+ login->config_read_users = login_config_read_users;
+ login->config_set_dnsbl_servers = login_config_set_dnsbl_servers;
+
+ login->clear_dnsbl_servers = login_clear_dnsbl_servers;
+ login->clear_client_hash_nodes = login_clear_client_hash_nodes;
+ login->config_set_md5hash = login_config_set_md5hash;
+ login->convert_users_to_colors = login_convert_users_to_colors;
login->LOGIN_CONF_NAME = NULL;
login->NET_CONF_NAME = NULL;
}
diff --git a/src/login/login.h b/src/login/login.h
index 5632e6529..d5c9972c0 100644
--- a/src/login/login.h
+++ b/src/login/login.h
@@ -32,6 +32,8 @@
struct mmo_account;
struct AccountDB;
+struct config_t;
+struct config_setting_t;
enum E_LOGINSERVER_ST
{
@@ -119,6 +121,11 @@ struct Login_Config {
bool use_dnsbl; ///< dns blacklist blocking ?
VECTOR_DECL(char *) dnsbl_servers; ///< dnsbl servers
+ bool send_user_count_description;
+ uint32 users_low;
+ uint32 users_medium;
+ uint32 users_high;
+
bool client_hash_check; ///< flags for checking client md5
// TODO: VECTOR candidate
struct client_hash_node *client_hash_nodes; ///< linked list containg md5 hash for each gm group
@@ -209,6 +216,19 @@ struct login_interface {
void (*parse_request_connection) (int fd, struct login_session_data* sd, const char *ip, uint32 ipl);
void (*config_set_defaults) (void);
bool (*config_read) (const char *filename, bool included);
+ bool (*config_read_inter) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_console) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_log) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_account) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_permission) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_permission_hash) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_permission_blacklist) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_users) (const char *filename, struct config_t *config, bool imported);
+ void (*clear_dnsbl_servers) (void);
+ void (*config_set_dnsbl_servers) (struct config_setting_t *setting);
+ void (*clear_client_hash_nodes) (void);
+ void (*config_set_md5hash) (struct config_setting_t *setting);
+ uint16 (*convert_users_to_colors) (uint16 users);
char *LOGIN_CONF_NAME;
char *NET_CONF_NAME; ///< Network configuration filename
};
diff --git a/src/map/Makefile.in b/src/map/Makefile.in
index 55712cc69..6147285e9 100644
--- a/src/map/Makefile.in
+++ b/src/map/Makefile.in
@@ -50,7 +50,7 @@ MAP_OBJ = $(addprefix obj_sql/, $(patsubst %c,%o,$(MAP_C)))
MAP_H = atcommand.h battle.h battleground.h buyingstore.h channel.h chat.h \
chrif.h clif.h date.h duel.h elemental.h guild.h homunculus.h HPMmap.h \
instance.h intif.h irc-bot.h itemdb.h log.h mail.h map.h mapreg.h \
- mercenary.h mob.h npc.h packets.h packets_struct.h party.h path.h \
+ mercenary.h mob.h npc.h packets.h packets_keys.h packets_struct.h party.h path.h \
pc.h pc_groups.h pet.h quest.h rodex.h script.h searchstore.h skill.h \
status.h storage.h trade.h unit.h vending.h
MAP_PH =
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 872c31330..d9f4810ee 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -1723,6 +1723,8 @@ ACMD(bodystyle)
&& (sd->job & MAPID_THIRDMASK) != MAPID_WARLOCK
&& (sd->job & MAPID_THIRDMASK) != MAPID_SHADOW_CHASER
&& (sd->job & MAPID_THIRDMASK) != MAPID_MINSTRELWANDERER
+ && (sd->job & MAPID_THIRDMASK) != MAPID_SORCERER
+ && (sd->job & MAPID_THIRDMASK) != MAPID_SURA
) {
clif->message(fd, msg_fd(fd, 35)); // This job has no alternate body styles.
return false;
@@ -3906,6 +3908,8 @@ ACMD(mapinfo)
strcat(atcmd_output, msg_fd(fd,1096)); // PartyLock |
if (map->list[m_id].flag.guildlock)
strcat(atcmd_output, msg_fd(fd,1097)); // GuildLock |
+ if (map->list[m_id].flag.noautoloot)
+ strcat(atcmd_output, msg_fd(fd, 1063)); // NoAutoloot |
if (map->list[m_id].flag.noviewid != EQP_NONE)
strcat(atcmd_output, msg_fd(fd,1079)); // NoViewID |
clif->message(fd, atcmd_output);
@@ -4864,21 +4868,19 @@ ACMD(undisguiseguild)
*------------------------------------------*/
ACMD(exp)
{
- char output[CHAT_SIZE_MAX];
- double nextb, nextj;
-
- memset(output, '\0', sizeof(output));
+ double percentb = 0.0, percentj = 0.0;
+ uint64 nextb, nextj;
nextb = pc->nextbaseexp(sd);
- if (nextb)
- nextb = sd->status.base_exp*100.0/nextb;
+ if (nextb != 0)
+ percentb = sd->status.base_exp * 100.0 / nextb;
nextj = pc->nextjobexp(sd);
- if (nextj)
- nextj = sd->status.job_exp*100.0/nextj;
+ if (nextj != 0)
+ percentj = sd->status.job_exp * 100.0 / nextj;
- sprintf(output, msg_fd(fd,1148), sd->status.base_level, nextb, sd->status.job_level, nextj); // Base Level: %d (%.3f%%) | Job Level: %d (%.3f%%)
- clif->message(fd, output);
+ sprintf(atcmd_output, msg_fd(fd,1148), sd->status.base_level, percentb, sd->status.job_level, percentj); // Base Level: %d (%.3f%%) | Job Level: %d (%.3f%%)
+ clif->message(fd, atcmd_output);
return true;
}
diff --git a/src/map/battle.c b/src/map/battle.c
index b5ad62407..8983e93c9 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -875,7 +875,7 @@ int64 battle_calc_masteryfix(struct block_list *src, struct block_list *target,
}
#else
if( skill_id != ASC_BREAKER && weapon ) // Adv Katar Mastery is does not applies to ASC_BREAKER, but other masteries DO apply >_>
- if( sd->status.weapon == W_KATAR && (skill2_lv=pc->checkskill(sd,ASC_KATAR)) > 0 )
+ if (sd->weapontype == W_KATAR && (skill2_lv=pc->checkskill(sd,ASC_KATAR)) > 0)
damage += damage * (10 + 2 * skill2_lv) / 100;
#endif
@@ -993,11 +993,7 @@ int64 battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int64
// FIXME: wflag is undocumented
int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_list *target, int nk, int s_ele, int s_ele_, int64 damage, int cflag, int wflag){
struct map_session_data *sd, *tsd;
-#ifdef RENEWAL
- short cardfix = 100;
-#else
- short cardfix = 1000;
-#endif
+ int cardfix = 1000;
short t_class, s_class, s_race2, t_race2;
struct status_data *sstatus, *tstatus;
int i;
@@ -1073,24 +1069,14 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
if( tsd->sc.data[SC_PROTECT_MDEF] )
cardfix = cardfix * ( 100 - tsd->sc.data[SC_PROTECT_MDEF]->val1 ) / 100;
}
-#ifdef RENEWAL
- if ( cardfix != 100 )
- damage += damage * (cardfix - 100) / 100;
-#else
if ( cardfix != 1000 )
damage = damage * cardfix / 1000;
-#endif
break;
case BF_WEAPON:
t_race2 = status->get_race2(target);
if( cflag&2 ){
if( sd && !(nk&NK_NO_CARDFIX_ATK) ){
- short cardfix_ =
-#ifdef RENEWAL
- 100;
-#else
- 1000;
-#endif
+ int cardfix_ = 1000;
if( sd->state.arrow_atk ){
cardfix = cardfix * (100 + sd->right_weapon.addrace[tstatus->race] + sd->arrow_addrace[tstatus->race]) / 100;
if( !(nk&NK_NO_ELEFIX) ){
@@ -1190,16 +1176,11 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
#ifndef RENEWAL
if( wflag&BF_LONG )
cardfix = cardfix * (100 + sd->bonus.long_attack_atk_rate) / 100;
+#endif
if( (cflag&1) && cardfix_ != 1000 )
damage = damage * cardfix_ / 1000;
else if( cardfix != 1000 )
damage = damage * cardfix / 1000;
-#else
- if ((cflag & 1) && cardfix_ != 100)
- damage += damage * (cardfix_ - 100) / 100;
- else if (cardfix != 100)
- damage += damage * (cardfix - 100) / 100;
-#endif
}
}else{
// Target side
@@ -1249,13 +1230,8 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
#endif
if( tsd->sc.data[SC_PROTECT_DEF] )
cardfix = cardfix * (100 - tsd->sc.data[SC_PROTECT_DEF]->val1) / 100;
-#ifdef RENEWAL
- if ( cardfix != 100 )
- damage += damage * (cardfix - 100) / 100;
-#else
if( cardfix != 1000 )
damage = damage * cardfix / 1000;
-#endif
}
}
break;
@@ -1287,13 +1263,8 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
cardfix = cardfix*(100 - tsd->subsize[sstatus->size]) / 100;
cardfix = cardfix*(100 - tsd->subrace2[s_race2]) / 100;
cardfix = cardfix * (100 - tsd->bonus.misc_def_rate) / 100;
-#ifdef RENEWAL
- if ( cardfix != 100 )
- damage += damage * (cardfix - 100) / 100;
-#else
if ( cardfix != 1000 )
damage = damage * cardfix / 1000;
-#endif
}
break;
}
@@ -2032,7 +2003,7 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block
skillratio += 100 + 100 * skill_lv + 100 * (skill_lv / 2);
break;
case RG_BACKSTAP:
- if( sd && sd->status.weapon == W_BOW && battle_config.backstab_bow_penalty )
+ if (sd != NULL && sd->weapontype == W_BOW && battle_config.backstab_bow_penalty)
skillratio += (200 + 40 * skill_lv) / 2;
else
skillratio += 200 + 40 * skill_lv;
@@ -2053,10 +2024,10 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block
case CR_HOLYCROSS:
{
int ratio = 35 * skill_lv;
- #ifdef RENEWAL
- if(sd && sd->status.weapon == W_2HSPEAR)
- ratio *= 2;
- #endif
+#ifdef RENEWAL
+ if (sd != NULL && sd->weapontype == W_2HSPEAR)
+ ratio *= 2;
+#endif
skillratio += ratio;
break;
}
@@ -2714,7 +2685,7 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block
skillratio += 2*sc->data[SC_TRUESIGHT]->val1;
if( sc->data[SC_LKCONCENTRATION] )
skillratio += sc->data[SC_LKCONCENTRATION]->val2;
- if( sd && sd->status.weapon == W_KATAR && (i=pc->checkskill(sd,ASC_KATAR)) > 0 )
+ if (sd != NULL && sd->weapontype == W_KATAR && (i=pc->checkskill(sd,ASC_KATAR)) > 0)
skillratio += skillratio * (10 + 2 * i) / 100;
#endif
if( (!skill_id || skill_id == KN_AUTOCOUNTER) && sc->data[SC_CRUSHSTRIKE] ){
@@ -3023,7 +2994,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
status_change_end(bl,SC_DEEP_SLEEP,INVALID_TIMER);
}
if( s_sd && t_sd && sc->data[SC_COLD] && flag&BF_WEAPON ){
- switch(s_sd->status.weapon){
+ switch (s_sd->weapontype) {
case W_MACE:
case W_2HMACE:
case W_1HAXE:
@@ -3165,7 +3136,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
if( (sce = sc->data[SC_STONEHARDSKIN]) && flag&(BF_SHORT|BF_WEAPON) && damage > 0 ) {
sce->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX);
if( src->type == BL_PC ) {
- if (s_sd && s_sd->status.weapon != W_BOW)
+ if (s_sd != NULL && s_sd->weapontype != W_BOW)
skill->break_equip(src, EQP_WEAPON, 3000, BCT_SELF);
} else
skill->break_equip(src, EQP_WEAPON, 3000, BCT_SELF);
@@ -4575,8 +4546,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
if(!skill_id) {
//Skills ALWAYS use ONLY your right-hand weapon (tested on Aegis 10.2)
- if (sd && sd->weapontype1 == 0 && sd->weapontype2 > 0)
- {
+ if (sd && sd->weapontype1 == W_FIST && sd->weapontype2 != W_FIST) {
flag.rh=0;
flag.lh=1;
}
@@ -4649,7 +4619,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
short cri = sstatus->cri;
if (sd != NULL) {
// if show_katar_crit_bonus is enabled, it already done the calculation in status.c
- if (!battle_config.show_katar_crit_bonus && sd->status.weapon == W_KATAR) {
+ if (!battle_config.show_katar_crit_bonus && sd->weapontype == W_KATAR) {
cri <<= 1;
}
@@ -4822,8 +4792,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
if ((temp = pc->checkskill(sd,BS_WEAPONRESEARCH)) > 0)
hitrate += hitrate * ( 2 * temp ) / 100;
- if( (sd->status.weapon == W_1HSWORD || sd->status.weapon == W_DAGGER) &&
- (temp = pc->checkskill(sd, GN_TRAINING_SWORD))>0 )
+ if ((sd->weapontype == W_1HSWORD || sd->weapontype == W_DAGGER) && (temp = pc->checkskill(sd, GN_TRAINING_SWORD)) > 0)
hitrate += 3 * temp;
}
@@ -4957,7 +4926,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
(!skill_id && sc && sc->data[SC_HLIF_CHANGE]?4:0)|
(sc && sc->data[SC_WEAPONPERFECT]?8:0);
if (flag.arrow && sd)
- switch(sd->status.weapon) {
+ switch (sd->weapontype) {
case W_BOW:
case W_REVOLVER:
case W_GATLING:
@@ -5583,7 +5552,8 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
if(wd.damage < 1) wd.damage = 1;
if(wd.damage2 < 1) wd.damage2 = 1;
#endif
- } else if(sd->status.weapon == W_KATAR && !skill_id) { //Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2)
+ } else if (sd->weapontype == W_KATAR && skill_id == 0) {
+ // Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2)
temp = pc->checkskill(sd,TF_DOUBLE);
wd.damage2 = wd.damage * (1 + (temp * 2))/100;
@@ -5702,7 +5672,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
}
//Reject Sword bugreport:4493 by Daegaladh
if (wd.damage != 0 && tsc != NULL && tsc->data[SC_SWORDREJECT] != NULL
- && (sd == NULL || sd->weapontype1 == W_DAGGER || sd->weapontype1 == W_1HSWORD || sd->status.weapon == W_2HSWORD)
+ && (sd == NULL || sd->weapontype1 == W_DAGGER || sd->weapontype1 == W_1HSWORD || sd->weapontype == W_2HSWORD)
&& rnd()%100 < tsc->data[SC_SWORDREJECT]->val2
) {
ATK_RATER(50);
@@ -6100,9 +6070,9 @@ bool battle_check_arrows(struct map_session_data *sd)
}
//Ammo check by Ishizu-chan
if (sd->inventory_data[index]) {
- switch (sd->status.weapon) {
+ switch (sd->weapontype) {
case W_BOW:
- if (sd->inventory_data[index]->look != A_ARROW) {
+ if (sd->inventory_data[index]->subtype != A_ARROW) {
clif->arrow_fail(sd, 0);
return false;
}
@@ -6111,13 +6081,13 @@ bool battle_check_arrows(struct map_session_data *sd)
case W_RIFLE:
case W_GATLING:
case W_SHOTGUN:
- if (sd->inventory_data[index]->look != A_BULLET) {
+ if (sd->inventory_data[index]->subtype != A_BULLET) {
clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0);
return false;
}
break;
case W_GRENADE:
- if (sd->inventory_data[index]->look != A_GRENADE) {
+ if (sd->inventory_data[index]->subtype != A_GRENADE) {
clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0);
return false;
}
@@ -6161,7 +6131,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
if (sd)
{
- sd->state.arrow_atk = (sd->status.weapon == W_BOW || (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE));
+ sd->state.arrow_atk = (sd->weapontype == W_BOW || (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE));
if (sd->state.arrow_atk)
{
if (battle->check_arrows(sd) == false)
@@ -6187,7 +6157,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
return ATK_BLOCK;
}
}
- if( tsc && tsc->data[SC_BLADESTOP_WAIT] && !is_boss(src) && (src->type == BL_PC || tsd == NULL || distance_bl(src, target) <= (tsd->status.weapon == W_FIST ? 1 : 2)) )
+ if( tsc && tsc->data[SC_BLADESTOP_WAIT] && !is_boss(src) && (src->type == BL_PC || tsd == NULL || distance_bl(src, target) <= (tsd->weapontype == W_FIST ? 1 : 2)) )
{
uint16 skill_lv = tsc->data[SC_BLADESTOP_WAIT]->val1;
int duration = skill->get_time2(MO_BLADESTOP,skill_lv);
@@ -7097,6 +7067,7 @@ static const struct battle_data {
{ "vending_over_max", &battle_config.vending_over_max, 1, 0, 1, },
{ "show_steal_in_same_party", &battle_config.show_steal_in_same_party, 0, 0, 1, },
{ "party_hp_mode", &battle_config.party_hp_mode, 0, 0, 1, },
+ { "party_change_leader_same_map", &battle_config.party_change_leader_same_map, 0, 0, 1, },
{ "show_party_share_picker", &battle_config.party_show_share_picker, 1, 0, 1, },
{ "show_picker_item_type", &battle_config.show_picker_item_type, 112, 0, INT_MAX, },
{ "party_update_interval", &battle_config.party_update_interval, 1000, 100, INT_MAX, },
diff --git a/src/map/battle.h b/src/map/battle.h
index e6129ca7c..4a63887c4 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -298,6 +298,7 @@ struct Battle_Config {
int show_steal_in_same_party;
int party_share_type;
int party_hp_mode;
+ int party_change_leader_same_map;
int party_show_share_picker;
int show_picker_item_type;
int attack_attr_none;
@@ -545,7 +546,7 @@ struct Battle_Config {
int player_warp_keep_direction;
int atcommand_levelup_events; // Enable atcommands trigger level up events for NPCs
-
+
int bow_unequip_arrow;
int max_summoner_parameter; // Summoner Max Stats
diff --git a/src/map/clif.c b/src/map/clif.c
index 28b20c9e2..4dc36be6d 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -293,7 +293,11 @@ unsigned char clif_bl_type(struct block_list *bl)
case BL_NPC:
vd = status->get_viewdata(bl);
nullpo_retr(CLUT_NPC, vd);
+#if PACKETVER >= 20170726
+ return CLUT_EVENT;
+#else
return pc->db_checkid(vd->class) ? CLUT_PC : CLUT_EVENT;
+#endif
case BL_PET:
vd = status->get_viewdata(bl);
nullpo_retr(CLUT_NPC, vd);
@@ -679,7 +683,7 @@ void clif_authok(struct map_session_data *sd)
p.font = sd->status.font;
#endif
// Some clients smaller than 20160330 cant be tested [4144]
-#if PACKETVER >= 20141016 && PACKETVER < 20160330
+#if PACKETVER >= 20141022 && PACKETVER < 20160330
p.sex = sd->status.sex;
#endif
clif->send(&p,sizeof(p),&sd->bl,SELF);
@@ -888,8 +892,8 @@ void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, un
}
#if PACKETVER < 4
- *rhand = sd->status.weapon;
- *lhand = sd->status.shield;
+ *rhand = sd->status.look.weapon;
+ *lhand = sd->status.look.shield;
#else
if (sd->equip_index[EQI_HAND_R] >= 0 &&
sd->inventory_data[sd->equip_index[EQI_HAND_R]])
@@ -1067,14 +1071,17 @@ void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enu
#endif
#if PACKETVER >= 20120221
if (battle_config.show_monster_hp_bar && bl->type == BL_MOB && status_get_hp(bl) < status_get_max_hp(bl)) {
- const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
p.maxHP = status_get_max_hp(bl);
p.HP = status_get_hp(bl);
- p.isBoss = (md->spawn != NULL && md->spawn->state.boss) ? 1 : 0;
} else {
p.maxHP = -1;
p.HP = -1;
- p.isBoss = 0;
+ }
+ if (bl->type == BL_MOB) {
+ const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
+ p.isBoss = (md->spawn != NULL) ? md->spawn->state.boss : BTYPE_NONE;
+ } else {
+ p.isBoss = BTYPE_NONE;
}
#endif
#if PACKETVER >= 20150513
@@ -1216,14 +1223,17 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) {
#endif
#if PACKETVER >= 20120221
if (battle_config.show_monster_hp_bar && bl->type == BL_MOB && status_get_hp(bl) < status_get_max_hp(bl)) {
- const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
p.maxHP = status_get_max_hp(bl);
p.HP = status_get_hp(bl);
- p.isBoss = (md->spawn != NULL && md->spawn->state.boss) ? 1 : 0;
} else {
p.maxHP = -1;
p.HP = -1;
- p.isBoss = 0;
+ }
+ if (bl->type == BL_MOB) {
+ const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
+ p.isBoss = (md->spawn != NULL) ? md->spawn->state.boss : BTYPE_NONE;
+ } else {
+ p.isBoss = BTYPE_NONE;
}
#endif
#if PACKETVER >= 20150513
@@ -1315,14 +1325,17 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd,
#endif
#if PACKETVER >= 20120221
if (battle_config.show_monster_hp_bar && bl->type == BL_MOB && status_get_hp(bl) < status_get_max_hp(bl)) {
- const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
p.maxHP = status_get_max_hp(bl);
p.HP = status_get_hp(bl);
- p.isBoss = (md->spawn != NULL && md->spawn->state.boss) ? 1 : 0;
} else {
p.maxHP = -1;
p.HP = -1;
- p.isBoss = 0;
+ }
+ if (bl->type == BL_MOB) {
+ const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
+ p.isBoss = (md->spawn != NULL) ? md->spawn->state.boss : BTYPE_NONE;
+ } else {
+ p.isBoss = BTYPE_NONE;
}
#endif
#if PACKETVER >= 20150513
@@ -1491,8 +1504,8 @@ bool clif_spawn(struct block_list *bl)
}
if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count > 0)
clif->spiritcharm(sd);
- if (sd->status.robe)
- clif->refreshlook(bl,bl->id,LOOK_ROBE,sd->status.robe,AREA);
+ if (sd->status.look.robe != 0)
+ clif->refreshlook(bl, bl->id, LOOK_ROBE, sd->status.look.robe, AREA);
}
break;
case BL_MOB:
@@ -2414,9 +2427,9 @@ void clif_addcards2(unsigned short *cards, struct item* item) {
int clif_add_item_options(struct ItemOptions *buf, const struct item *it)
{
int i = 0, j = 0, total_options = 0;
-
+
nullpo_ret(buf);
-
+
// Append the buffer with existing options first.
for (i = 0; i < MAX_ITEM_OPTIONS; i++) {
if (it->option[i].index) {
@@ -2433,7 +2446,7 @@ void clif_addcards2(unsigned short *cards, struct item* item) {
WBUFW(buf, j * 5 + 2) = 0;
WBUFB(buf, j * 5 + 4) = 0;
}
-
+
return total_options;
}
@@ -2488,7 +2501,7 @@ void clif_additem(struct map_session_data *sd, int n, int amount, int fail)
#endif
#if PACKETVER >= 20160921
p.favorite = sd->status.inventory[n].favorite;
- p.look = sd->inventory_data[n]->look;
+ p.look = sd->inventory_data[n]->view_sprite;
#endif
}
p.result = (unsigned char)fail;
@@ -2597,7 +2610,7 @@ void clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *it, struc
#endif
#if PACKETVER >= 20100629
- p->wItemSpriteNumber = (id->equip&EQP_VISIBLE) ? id->look : 0;
+ p->wItemSpriteNumber = (id->equip&EQP_VISIBLE) ? id->view_sprite : 0;
#endif
#if PACKETVER >= 20120925
@@ -3033,27 +3046,50 @@ void clif_updatestatus(struct map_session_data *sd,int type)
WFIFOL(fd,4)=sd->status.zeny;
len = packet_len(0xb1);
break;
+// [4144] unconfirment exact version can be from 20170405 to 20170913
+#if PACKETVER >= 20170830
case SP_BASEEXP:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=sd->status.base_exp;
+ WFIFOW(fd, 0) = 0xacb;
+ WFIFOQ(fd, 4) = sd->status.base_exp;
+ len = packet_len(0xacb);
+ break;
+ case SP_JOBEXP:
+ WFIFOW(fd, 0) = 0xacb;
+ WFIFOQ(fd, 4) = sd->status.job_exp;
+ len = packet_len(0xacb);
+ break;
+ case SP_NEXTBASEEXP:
+ WFIFOW(fd, 0) = 0xacb;
+ WFIFOQ(fd, 4) = pc->nextbaseexp(sd);
+ len = packet_len(0xacb);
+ break;
+ case SP_NEXTJOBEXP:
+ WFIFOW(fd, 0) = 0xacb;
+ WFIFOQ(fd, 4) = pc->nextjobexp(sd);
+ len = packet_len(0xacb);
+ break;
+#else
+ case SP_BASEEXP:
+ WFIFOW(fd, 0) = 0xb1;
+ WFIFOL(fd, 4) = (uint32)(sd->status.base_exp);
len = packet_len(0xb1);
break;
case SP_JOBEXP:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=sd->status.job_exp;
+ WFIFOW(fd, 0) = 0xb1;
+ WFIFOL(fd, 4) = (uint32)(sd->status.job_exp);
len = packet_len(0xb1);
break;
case SP_NEXTBASEEXP:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=pc->nextbaseexp(sd);
+ WFIFOW(fd, 0) = 0xb1;
+ WFIFOL(fd, 4) = (uint32)pc->nextbaseexp(sd);
len = packet_len(0xb1);
break;
case SP_NEXTJOBEXP:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=pc->nextjobexp(sd);
+ WFIFOW(fd, 0) = 0xb1;
+ WFIFOL(fd, 4) = (uint32)pc->nextjobexp(sd);
len = packet_len(0xb1);
break;
-
+#endif
/**
* SP_U<STAT> are used to update the amount of points necessary to increase that stat
**/
@@ -3183,7 +3219,9 @@ void clif_changelook(struct block_list *bl,int type,int val)
struct status_change* sc;
struct view_data* vd;
enum send_target target = AREA;
+#if PACKETVER >= 4
int val2 = 0;
+#endif
nullpo_retv(bl);
sd = BL_CAST(BL_PC, bl);
@@ -3307,17 +3345,22 @@ void clif_changelook(struct block_list *bl,int type,int val)
#if PACKETVER < 4
clif->sendlook(bl, bl->id, type, val, 0, target);
#else
- if(type == LOOK_WEAPON || type == LOOK_SHIELD) {
- nullpo_retv(vd);
- type = LOOK_WEAPON;
- val = vd->weapon;
- val2 = vd->shield;
- }
- if (clif->isdisguised(bl)) {
- clif->sendlook(bl, bl->id, type, val, val2, AREA_WOS);
- clif->sendlook(bl, -bl->id, type, val, val2, SELF);
+ if (bl->type != BL_NPC) {
+ if(type == LOOK_WEAPON || type == LOOK_SHIELD) {
+ nullpo_retv(vd);
+ type = LOOK_WEAPON;
+ val = vd->weapon;
+ val2 = vd->shield;
+ }
+ if (clif->isdisguised(bl)) {
+ clif->sendlook(bl, bl->id, type, val, val2, AREA_WOS);
+ clif->sendlook(bl, -bl->id, type, val, val2, SELF);
+ } else {
+ clif->sendlook(bl, bl->id, type, val, val2, target);
+ }
} else {
- clif->sendlook(bl, bl->id, type, val, val2, target);
+ struct npc_data *nd = BL_UCAST(BL_NPC, bl);
+ npc->refresh(nd);
}
#endif
}
@@ -3527,7 +3570,7 @@ void clif_equipitemack(struct map_session_data *sd,int n,int pos,enum e_EQUIP_IT
p.wearLocation = pos;
#if PACKETVER >= 20100629
if (result == EIA_SUCCESS && sd->inventory_data[n]->equip&EQP_VISIBLE)
- p.wItemSpriteNumber = sd->inventory_data[n]->look;
+ p.wItemSpriteNumber = sd->inventory_data[n]->view_sprite;
else
p.wItemSpriteNumber = 0;
#endif
@@ -4309,8 +4352,8 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl) {
clif->specialeffect_single(bl,421,sd->fd);
if (tsd->bg_id != 0 && map->list[tsd->bl.m].flag.battleground)
clif->sendbgemblem_single(sd->fd,tsd);
- if (tsd->status.robe)
- clif->refreshlook(&sd->bl,bl->id,LOOK_ROBE,tsd->status.robe,SELF);
+ if (tsd->status.look.robe != 0)
+ clif->refreshlook(&sd->bl, bl->id, LOOK_ROBE, tsd->status.look.robe, SELF);
}
break;
case BL_MER: // Devotion Effects
@@ -6402,7 +6445,7 @@ void clif_vendinglist(struct map_session_data* sd, unsigned int id, struct s_ven
// [4144] date 20160921 not confirmend. Can be bigger or smaller
#if PACKETVER >= 20160921
WFIFOL(fd, offset + 47 + i * item_length) = pc->item_equippoint(sd, data);
- WFIFOW(fd, offset + 51 + i * item_length) = data->look;
+ WFIFOW(fd, offset + 51 + i * item_length) = data->view_sprite;
#endif
}
WFIFOSET(fd,WFIFOW(fd,2));
@@ -9449,8 +9492,8 @@ void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) {
// Character Looks
#if PACKETVER < 4
- clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon);
- clif->changelook(&sd->bl,LOOK_SHIELD,sd->status.shield);
+ clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon);
+ clif->changelook(&sd->bl, LOOK_SHIELD, sd->status.look.shield);
#else
clif->changelook(&sd->bl,LOOK_WEAPON,0);
#endif
@@ -14025,7 +14068,7 @@ void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd)
/* it sends the request when the criteria doesn't match (and of course we let it fail) */
/* so restoring the old parse_globalmes method. */
if ((sd->job & MAPID_UPPERMASK) == MAPID_SUPER_NOVICE) {
- unsigned int next = pc->nextbaseexp(sd);
+ uint64 next = pc->nextbaseexp(sd);
if( next == 0 ) next = pc->thisbaseexp(sd);
if( next ) {
int percent = (int)( ( (float)sd->status.base_exp/(float)next )*1000. );
@@ -16695,20 +16738,34 @@ void clif_party_show_picker(struct map_session_data * sd, struct item * item_dat
/// exp type:
/// 0 = normal exp gain/loss
/// 1 = quest exp gain/loss
-void clif_displayexp(struct map_session_data *sd, unsigned int exp, char type, bool is_quest) {
+void clif_displayexp(struct map_session_data *sd, uint64 exp, char type, bool is_quest)
+{
int fd;
+// [4144] unconfirment exact version can be from 20170405 to 20170913
+#if PACKETVER >= 20170830
+ const int cmd = 0xacc;
+#else
+ const int cmd = 0x7f6;
+#endif
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd, packet_len(0x7f6));
- WFIFOW(fd,0) = 0x7f6;
- WFIFOL(fd,2) = sd->bl.id;
- WFIFOL(fd,6) = exp;
- WFIFOW(fd,10) = type;
- WFIFOW(fd,12) = is_quest?1:0;// Normal exp is shown in yellow, quest exp is shown in purple.
- WFIFOSET(fd,packet_len(0x7f6));
+ WFIFOHEAD(fd, packet_len(cmd));
+ WFIFOW(fd, 0) = cmd;
+ WFIFOL(fd, 2) = sd->bl.id;
+// [4144] unconfirment exact version can be from 20170405 to 20170913
+#if PACKETVER >= 20170830
+ WFIFOQ(fd, 6) = exp;
+ WFIFOW(fd, 14) = type;
+ WFIFOW(fd, 16) = is_quest ? 1 : 0; // Normal exp is shown in yellow, quest exp is shown in purple.
+#else
+ WFIFOL(fd, 6) = (uint32)exp;
+ WFIFOW(fd, 10) = type;
+ WFIFOW(fd, 12) = is_quest ? 1 : 0; // Normal exp is shown in yellow, quest exp is shown in purple.
+#endif
+ WFIFOSET(fd, packet_len(cmd));
}
/// Displays digital clock digits on top of the screen (ZC_SHOWDIGIT).
@@ -19344,7 +19401,7 @@ void clif_parse_rodex_checkname(int fd, struct map_session_data *sd)
int char_id = 0, base_level = 0;
short class = 0;
char name[NAME_LENGTH];
-
+
safestrncpy(name, rPacket->Name, NAME_LENGTH);
rodex->check_player(sd, name, &base_level, &char_id, &class);
@@ -19431,8 +19488,9 @@ void clif_rodex_send_maillist(int fd, struct map_session_data *sd, int8 open_typ
WFIFOHEAD(fd, sizeof(*packet) + (sizeof(*inner) + RODEX_TITLE_LENGTH) * RODEX_MAIL_PER_PAGE);
packet = WFIFOP(fd, 0);
packet->PacketType = ((page_start == (VECTOR_LENGTH(sd->rodex.messages) - 1)) ? rodexmailList : rodexnextpage);
+#if PACKETVER < 20170419
packet->opentype = open_type;
-
+#endif
inner = WFIFOP(fd, size);
while (page_start >= 0 && count < RODEX_MAIL_PER_PAGE) {
@@ -19445,7 +19503,11 @@ void clif_rodex_send_maillist(int fd, struct map_session_data *sd, int8 open_typ
inner->MailID = msg->id;
inner->Isread = msg->is_read == true ? 1 : 0;
inner->type = msg->type;
+#if PACKETVER >= 20170419
+ inner->openType = msg->opentype;
+#else
inner->regDateTime = (int)time(NULL) - msg->send_date;
+#endif
inner->expireDateTime = msg->expire_date - (int)time(NULL);
if (open_type == RODEX_OPENTYPE_RETURN) {
inner->expireDateTime += RODEX_EXPIRE;
@@ -19463,12 +19525,80 @@ void clif_rodex_send_maillist(int fd, struct map_session_data *sd, int8 open_typ
}
packet->PacketLength = size;
+#if PACKETVER < 20170419
packet->cnt = count;
+#endif
packet->IsEnd = page_start > 0 ? 0 : 1;
WFIFOSET(fd, size);
#endif
}
+void clif_rodex_send_mails_all(int fd, struct map_session_data *sd)
+{
+#if PACKETVER >= 20170419
+ struct PACKET_ZC_MAIL_LIST *packet;
+ struct maillistinfo *inner;
+ int16 size = sizeof(*packet);
+ int packetMailCount = 0;
+ int mailListCount = 0;
+ int mailsSize = VECTOR_LENGTH(sd->rodex.messages);
+ int i;
+
+ nullpo_retv(sd);
+
+ WFIFOHEAD(fd, sizeof(*packet) + (sizeof(*inner) + RODEX_TITLE_LENGTH) * RODEX_MAIL_PER_PAGE);
+ packet = WFIFOP(fd, 0);
+ packet->PacketType = rodexmailList;
+ inner = WFIFOP(fd, size);
+
+ i = mailsSize - 1;
+ while (i >= 0) {
+ struct rodex_message *msg = &VECTOR_INDEX(sd->rodex.messages, i);
+ --i;
+
+ if (msg->is_deleted)
+ continue;
+
+ inner->MailID = msg->id;
+ inner->Isread = msg->is_read == true ? 1 : 0;
+ inner->type = msg->type;
+ inner->openType = msg->opentype;
+ inner->expireDateTime = msg->expire_date - (int)time(NULL);
+ if (msg->opentype == RODEX_OPENTYPE_RETURN) {
+ inner->expireDateTime += RODEX_EXPIRE;
+ }
+ inner->Titlelength = (int16)strlen(msg->title) + 1;
+ if (msg->opentype != RODEX_OPENTYPE_RETURN) {
+ strncpy(inner->SenderName, msg->sender_name, sizeof(msg->sender_name));
+ } else {
+ strncpy(inner->SenderName, msg->receiver_name, sizeof(msg->receiver_name));
+ }
+ strncpy(inner->title, msg->title, inner->Titlelength);
+ size += sizeof(*inner) + inner->Titlelength;
+ inner = WFIFOP(fd, size);
+ packetMailCount ++;
+ mailListCount ++;
+ if (packetMailCount == RODEX_MAIL_PER_PAGE) {
+ packet->PacketLength = size;
+ packet->IsEnd = mailListCount > mailsSize ? 1 : 0;
+ WFIFOSET(fd, size);
+ WFIFOHEAD(fd, sizeof(*packet) + (sizeof(*inner) + RODEX_TITLE_LENGTH) * RODEX_MAIL_PER_PAGE);
+ packet = WFIFOP(fd, 0);
+ packet->PacketType = rodexmailList;
+ size = sizeof(*packet);
+ inner = WFIFOP(fd, size);
+ packetMailCount = 0;
+ }
+ }
+
+ if (packetMailCount > 0 || mailListCount == 0) {
+ packet->PacketLength = size;
+ packet->IsEnd = 1;
+ WFIFOSET(fd, size);
+ }
+#endif
+}
+
void clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_type, int count)
{
#if PACKETVER >= 20131218
@@ -19482,8 +19612,9 @@ void clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_type
WFIFOHEAD(fd, sizeof(*packet) + (sizeof(*inner) + RODEX_TITLE_LENGTH) * RODEX_MAIL_PER_PAGE);
packet = WFIFOP(fd, 0);
packet->PacketType = rodexmailList;
+#if PACKETVER < 20170419
packet->opentype = open_type;
-
+#endif
inner = WFIFOP(fd, size);
i = VECTOR_LENGTH(sd->rodex.messages) - 1;
@@ -19498,7 +19629,11 @@ void clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_type
inner->MailID = msg->id;
inner->Isread = msg->is_read == true ? 1 : 0;
inner->type = msg->type;
+#if PACKETVER >= 20170419
+ inner->openType = msg->opentype;
+#else
inner->regDateTime = (int)time(NULL) - msg->send_date;
+#endif
inner->expireDateTime = msg->expire_date - (int)time(NULL);
if (open_type == RODEX_OPENTYPE_RETURN) {
inner->expireDateTime += RODEX_EXPIRE;
@@ -19516,7 +19651,9 @@ void clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_type
}
packet->PacketLength = size;
+#if PACKETVER < 20170419
packet->cnt = count;
+#endif
packet->IsEnd = 1;
WFIFOSET(fd, size);
#endif
@@ -19547,7 +19684,7 @@ void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, struct rod
nullpo_retv(sd);
nullpo_retv(msg);
-
+
fd = sd->fd;
body_len = (int)strlen(msg->body) + 1;
size = sizeof(*sPacket);
@@ -19624,7 +19761,7 @@ void clif_parse_rodex_request_zeny(int fd, struct map_session_data *sd) __attrib
void clif_parse_rodex_request_zeny(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_ZENY_FROM_MAIL *rPacket = RFIFOP(fd, 0);
-
+
rodex->get_zeny(sd, rPacket->opentype, rPacket->MailID);
}
@@ -19665,7 +19802,7 @@ void clif_rodex_request_items(struct map_session_data *sd, int8 opentype, int64
nullpo_retv(sd);
fd = sd->fd;
-
+
WFIFOHEAD(fd, sizeof(*sPacket));
sPacket = WFIFOP(fd, 0);
sPacket->PacketType = rodexgetitem;
@@ -19679,7 +19816,7 @@ void clif_rodex_request_items(struct map_session_data *sd, int8 opentype, int64
void clif_rodex_icon(int fd, bool show)
{
// packet add date is 20140716, but from players reports it wrong. Using closer known correct version.
-#if PACKETVER >= 20150513
+#if PACKETVER >= 20141112
WFIFOHEAD(fd, 3);
WFIFOW(fd, 0) = rodexicon;
WFIFOB(fd, 2) = (show == true ? 1 : 0);
@@ -19691,14 +19828,22 @@ void clif_parse_rodex_refresh_maillist(int fd, struct map_session_data *sd) __at
void clif_parse_rodex_refresh_maillist(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_REFRESH_MAIL_LIST *packet = RFIFOP(fd, 0);
+#if PACKETVER >= 20170419
+ rodex->refresh(sd, RODEX_OPENTYPE_UNSET, packet->Upper_MailID);
+#else
rodex->refresh(sd, packet->opentype, packet->Upper_MailID);
+#endif
}
void clif_parse_rodex_open_mailbox(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
void clif_parse_rodex_open_mailbox(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_OPEN_MAIL *packet = RFIFOP(fd, 0);
- rodex->open(sd, packet->opentype);
+#if PACKETVER >= 20170419
+ rodex->open(sd, RODEX_OPENTYPE_UNSET, packet->Upper_MailID);
+#else
+ rodex->open(sd, packet->opentype, packet->Upper_MailID);
+#endif
rodex->clean(sd, 1);
}
@@ -19926,9 +20071,10 @@ void packetdb_loaddb(void) {
memset(packet_db,0,sizeof(packet_db));
#define packet(id, size, ...) packetdb_addpacket((id), (size), ##__VA_ARGS__, 0xFFFF)
-#define packetKeys(a,b,c) do { clif->cryptKey[0] = (a); clif->cryptKey[1] = (b); clif->cryptKey[2] = (c); } while(0)
#include "packets.h" /* load structure data */
#undef packet
+#define packetKeys(a,b,c) do { clif->cryptKey[0] = (a); clif->cryptKey[1] = (b); clif->cryptKey[2] = (c); } while(0)
+#include "packets_keys.h"
#undef packetKeys
}
void clif_bc_ready(void) {
@@ -20782,4 +20928,5 @@ void clif_defaults(void) {
clif->pRodexRequestItems = clif_parse_rodex_request_items;
clif->rodex_request_items = clif_rodex_request_items;
clif->rodex_icon = clif_rodex_icon;
+ clif->rodex_send_mails_all = clif_rodex_send_mails_all;
}
diff --git a/src/map/clif.h b/src/map/clif.h
index ac8cc8d35..851c823ea 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -385,6 +385,7 @@ enum clif_messages {
MSG_SECONDS_UNTIL_USE = 0x746, ///< %d seconds left until you can use
MSG_NPC_WORK_IN_PROGRESS = 0x783, // FIXME[Haru]: This seems to be 0x784 in the msgstringtable files I found.
MSG_REINS_CANT_USE_MOUNTED = 0x78b, // FIXME[Haru]: This seems to be 0x785 in the msgstringtalbe files I found.
+ MSG_PARTY_LEADER_SAMEMAP = 0x82e, //< It is only possible to change the party leader while on the same map.
};
/**
@@ -783,7 +784,7 @@ struct clif_interface {
void (*equiptickack) (struct map_session_data* sd, int flag);
void (*viewequip_ack) (struct map_session_data* sd, struct map_session_data* tsd);
void (*equpcheckbox) (struct map_session_data* sd);
- void (*displayexp) (struct map_session_data *sd, unsigned int exp, char type, bool is_quest);
+ void (*displayexp) (struct map_session_data *sd, uint64 exp, char type, bool is_quest);
void (*font) (struct map_session_data *sd);
void (*progressbar) (struct map_session_data * sd, unsigned int color, unsigned int second);
void (*progressbar_abort) (struct map_session_data * sd);
@@ -1377,6 +1378,7 @@ struct clif_interface {
void (*rodex_send_mail_result) (int fd, struct map_session_data *sd, int8 result);
void (*rodex_send_maillist) (int fd, struct map_session_data *sd, int8 open_type, int64 page_start);
void (*rodex_send_refresh) (int fd, struct map_session_data *sd, int8 open_type, int count);
+ void (*rodex_send_mails_all) (int fd, struct map_session_data *sd);
void (*pRodexReadMail) (int fd, struct map_session_data *sd);
void (*rodex_read_mail) (struct map_session_data *sd, int8 opentype, struct rodex_message *msg);
void (*pRodexNextMaillist) (int fd, struct map_session_data *sd);
diff --git a/src/map/guild.c b/src/map/guild.c
index 838df3943..bb0484477 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -1282,7 +1282,8 @@ struct DBData create_expcache(union DBKey key, va_list args)
/*====================================================
* Return taxed experience from player sd to guild
*---------------------------------------------------*/
-unsigned int guild_payexp(struct map_session_data *sd,unsigned int exp) {
+uint64 guild_payexp(struct map_session_data *sd, uint64 exp)
+{
struct guild *g;
struct guild_expcache *c;
int per;
@@ -1823,7 +1824,7 @@ int guild_gm_change(int guild_id, int char_id)
nullpo_ret(g);
ARR_FIND(0, MAX_GUILD, i, g->member[i].char_id == char_id);
-
+
if (i == MAX_GUILD ) {
// Not part of the guild
return 0;
diff --git a/src/map/guild.h b/src/map/guild.h
index 71e989870..9296f9ec0 100644
--- a/src/map/guild.h
+++ b/src/map/guild.h
@@ -100,7 +100,7 @@ struct guild_interface {
struct map_session_data *(*getavailablesd) (struct guild *g);
int (*getindex) (const struct guild *g, int account_id, int char_id);
int (*getposition) (struct guild *g, struct map_session_data *sd);
- unsigned int (*payexp) (struct map_session_data *sd,unsigned int exp);
+ uint64 (*payexp) (struct map_session_data *sd, uint64 exp);
int (*getexp) (struct map_session_data *sd,int exp); // [Celest]
/* */
int (*create) (struct map_session_data *sd, const char *name);
diff --git a/src/map/intif.c b/src/map/intif.c
index c33fbe55f..60edc8d8b 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -2433,7 +2433,9 @@ int intif_rodex_requestinbox(int char_id, int account_id, int8 flag, int8 openty
void intif_parse_RequestRodexOpenInbox(int fd)
{
struct map_session_data *sd;
+#if PACKETVER < 20170419
int8 opentype = RFIFOB(fd, 8);
+#endif
int8 flag = RFIFOB(fd, 9);
int8 is_end = RFIFOB(fd, 10);
int count = RFIFOL(fd, 11);
@@ -2461,10 +2463,14 @@ void intif_parse_RequestRodexOpenInbox(int fd)
}
if (is_end == true) {
+#if PACKETVER >= 20170419
+ clif->rodex_send_mails_all(sd->fd, sd);
+#else
if (flag == 0)
clif->rodex_send_maillist(sd->fd, sd, opentype, VECTOR_LENGTH(sd->rodex.messages) - 1);
else
clif->rodex_send_refresh(sd->fd, sd, opentype, count);
+#endif
}
}
@@ -2508,7 +2514,7 @@ void intif_parse_RodexNotifications(int fd)
/// Updates a mail
/// flag:
/// 0 - user Read
-/// 1 - user got Zeny
+/// 1 - user got Zeny
/// 2 - user got Items
/// 3 - delete
int intif_rodex_updatemail(int64 mail_id, int8 flag)
diff --git a/src/map/itemdb.c b/src/map/itemdb.c
index 2b0847e1a..7fedb19ae 100644
--- a/src/map/itemdb.c
+++ b/src/map/itemdb.c
@@ -1336,11 +1336,11 @@ void itemdb_read_options(void)
if (!libconfig->load_file(&item_options_db, filepath))
return;
-
+
#ifdef ENABLE_CASE_CHECK
script->parser_current_file = filepath;
#endif // ENABLE_CASE_CHECK
-
+
if ((ito=libconfig->setting_get_member(item_options_db.root, "item_options_db")) == NULL) {
ShowError("itemdb_read_options: '%s' could not be loaded.\n", filepath);
libconfig->destroy(&item_options_db);
@@ -1399,7 +1399,7 @@ void itemdb_read_options(void)
ShowError("itemdb_read_options: Script code not found for entry %s (Id: %d) in '%s', skipping...\n", str, t_opt.index, filepath);
continue;
}
-
+
/* Set Script */
t_opt.script = *str ? script->parse(str, filepath, t_opt.index, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL;
@@ -1416,11 +1416,11 @@ void itemdb_read_options(void)
count++;
}
-
+
#ifdef ENABLE_CASE_CHECK
script->parser_current_file = NULL;
#endif // ENABLE_CASE_CHECK
-
+
libconfig->destroy(&item_options_db);
VECTOR_CLEAR(duplicate_id);
@@ -1638,9 +1638,9 @@ int itemdb_gendercheck(struct item_data *id)
return 1;
if (id->nameid == WEDDING_RING_F) //Bride Ring
return 0;
- if (id->look == W_MUSICAL && id->type == IT_WEAPON) //Musical instruments are always male-only
+ if (id->subtype == W_MUSICAL && id->type == IT_WEAPON) //Musical instruments are always male-only
return 1;
- if (id->look == W_WHIP && id->type == IT_WEAPON) //Whips are always female-only
+ if (id->subtype == W_WHIP && id->type == IT_WEAPON) //Whips are always female-only
return 0;
return (battle_config.ignore_items_gender) ? 2 : id->sex;
@@ -1788,10 +1788,14 @@ int itemdb_validate_entry(struct item_data *entry, int n, const char *source) {
memset(&entry->stack, '\0', sizeof(entry->stack));
}
- if (entry->type == IT_WEAPON && (entry->look < 0 || entry->look >= MAX_SINGLE_WEAPON_TYPE)) {
- ShowWarning("itemdb_validate_entry: Invalid View for weapon items. View value %d for item %d (%s) in '%s', defaulting to 1.\n",
- entry->look, entry->nameid, entry->jname, source);
- entry->look = 1;
+ if (entry->type == IT_WEAPON && (entry->subtype <= 0 || entry->subtype >= MAX_SINGLE_WEAPON_TYPE)) {
+ ShowWarning("itemdb_validate_entry: Invalid View for weapon items. View value %d for item %d (%s) in '%s', defaulting to W_DAGGER.\n",
+ entry->subtype, entry->nameid, entry->jname, source);
+ entry->subtype = W_DAGGER;
+ } else if (entry->type == IT_AMMO && (entry->subtype <= 0 || entry->subtype >= MAX_AMMO_TYPE)) {
+ ShowWarning("itemdb_validate_entry: Invalid View for ammunition items. View value %d for item %d (%s) in '%s', defaulting to A_ARROW.\n",
+ entry->subtype, entry->nameid, entry->jname, source);
+ entry->subtype = A_ARROW;
}
entry->wlv = cap_value(entry->wlv, REFINE_TYPE_ARMOR, REFINE_TYPE_MAX);
@@ -1803,10 +1807,10 @@ int itemdb_validate_entry(struct item_data *entry, int n, const char *source) {
if( entry->type != IT_ARMOR && entry->type != IT_WEAPON && !entry->flag.no_refine )
entry->flag.no_refine = 1;
-
+
if (entry->type != IT_ARMOR && entry->type != IT_WEAPON && !entry->flag.no_options)
entry->flag.no_options = 1;
-
+
if (entry->flag.available != 1) {
entry->flag.available = 1;
entry->view_id = 0;
@@ -1986,6 +1990,14 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
else if( !inherit )
id.type = IT_ETC;
+ if (itemdb->lookup_const(it, "Subtype", &i32) && i32 >= 0) {
+ if (id.type == IT_WEAPON || id.type == IT_AMMO)
+ id.subtype = i32;
+ else
+ ShowWarning("itemdb_readdb_libconfig_sub: Field 'Subtype' is only allowed for IT_WEAPON or IT_AMMO (Item #%d: %s). Ignoring.\n",
+ id.nameid, id.name);
+ }
+
if( itemdb->lookup_const(it, "Buy", &i32) )
id.value_buy = i32;
else if( !inherit )
@@ -2025,7 +2037,7 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
itemdb->jobmask2mapid(id.class_base, UINT64_MAX);
}
- if( itemdb->lookup_const(it, "Upper", &i32) && i32 >= 0 )
+ if (itemdb->lookup_const_mask(it, "Upper", &i32) && i32 >= 0)
id.class_upper = (unsigned int)i32;
else if( !inherit )
id.class_upper = ITEMUPPER_ALL;
@@ -2035,7 +2047,7 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
else if( !inherit )
id.sex = 2;
- if( itemdb->lookup_const(it, "Loc", &i32) && i32 >= 0 )
+ if (itemdb->lookup_const_mask(it, "Loc", &i32) && i32 >= 0)
id.equip = i32;
if( itemdb->lookup_const(it, "WeaponLv", &i32) && i32 >= 0 )
@@ -2054,12 +2066,27 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
if( (t = libconfig->setting_get_member(it, "Refine")) )
id.flag.no_refine = libconfig->setting_get_bool(t) ? 0 : 1;
-
+
if ((t = libconfig->setting_get_member(it, "DisableOptions")))
id.flag.no_options = libconfig->setting_get_bool(t) ? 1 : 0;
- if( itemdb->lookup_const(it, "View", &i32) && i32 >= 0 )
- id.look = i32;
+ if (itemdb->lookup_const(it, "ViewSprite", &i32) && i32 >= 0)
+ id.view_sprite = i32;
+
+ if (itemdb->lookup_const(it, "View", &i32) && i32 >= 0) { // TODO: Remove (Deprecated - 2016-09-04 [Haru])
+ if ((id.type == IT_WEAPON || id.type == IT_AMMO) && id.subtype == 0) {
+ ShowWarning("itemdb_readdb_libconfig_sub: The 'View' field is deprecated. Please rename it to 'Subtype' (or 'ViewSprite'). (Item #%d: %s)\n",
+ id.nameid, id.name);
+ id.subtype = i32;
+ } else if ((id.type != IT_WEAPON && id.type != IT_AMMO) && id.view_sprite == 0) {
+ ShowWarning("itemdb_readdb_libconfig_sub: The 'View' field is deprecated. Please rename it to 'ViewSprite' (or 'Subtype'). (Item #%d: %s)\n",
+ id.nameid, id.name);
+ id.view_sprite = i32;
+ } else {
+ ShowWarning("itemdb_readdb_libconfig_sub: The 'View' field is deprecated. Please rename it to 'Subtype' or 'ViewSprite'. (Item #%d: %s)\n",
+ id.nameid, id.name);
+ }
+ }
if( (t = libconfig->setting_get_member(it, "BindOnEquip")) )
id.flag.bindonequip = libconfig->setting_get_bool(t) ? 1 : 0;
@@ -2197,21 +2224,76 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
bool itemdb_lookup_const(const struct config_setting_t *it, const char *name, int *value)
{
+ const char *str = NULL;
+
nullpo_retr(false, name);
nullpo_retr(false, value);
- if (libconfig->setting_lookup_int(it, name, value))
- {
+
+ if (libconfig->setting_lookup_int(it, name, value)) {
return true;
}
- else
- {
+
+ if (libconfig->setting_lookup_string(it, name, &str)) {
+ if (*str && script->get_constant(str, value))
+ return true;
+ }
+
+ return false;
+}
+
+bool itemdb_lookup_const_mask(const struct config_setting_t *it, const char *name, int *value)
+{
+ const struct config_setting_t *t = NULL;
+
+ nullpo_retr(false, it);
+ nullpo_retr(false, name);
+ nullpo_retr(false, value);
+
+ if ((t = libconfig->setting_get_member(it, name)) == NULL) {
+ return false;
+ }
+
+ if (config_setting_is_scalar(t)) {
const char *str = NULL;
- if (libconfig->setting_lookup_string(it, name, &str))
- {
- if (*str && script->get_constant(str, value))
+
+ if (config_setting_is_number(t)) {
+ *value = libconfig->setting_get_int(t);
+ return true;
+ }
+
+ if ((str = libconfig->setting_get_string(t)) != NULL) {
+ int i32 = -1;
+ if (script->get_constant(str, &i32) && i32 >= 0) {
+ *value = i32;
return true;
+ }
+ }
+
+ return false;
+ }
+
+ if (config_setting_is_aggregate(t) && libconfig->setting_length(t) >= 1) {
+ const struct config_setting_t *elem = NULL;
+ int i = 0;
+
+ *value = 0;
+
+ while ((elem = libconfig->setting_get_elem(t, i++)) != NULL) {
+ const char *str = libconfig->setting_get_string(elem);
+ int i32 = -1;
+
+ if (str == NULL)
+ return false;
+
+ if (!script->get_constant(str, &i32) || i32 < 0)
+ return false;
+
+ *value |= i32;
}
+
+ return true;
}
+
return false;
}
@@ -2369,10 +2451,10 @@ int itemdb_final_sub(union DBKey key, struct DBData *data, va_list ap)
int itemdb_options_final_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct item_option *ito = DB->data2ptr(data);
-
+
if (ito->script != NULL)
script->free_code(ito->script);
-
+
return 0;
}
@@ -2637,4 +2719,5 @@ void itemdb_defaults(void) {
itemdb->id2combo = itemdb_id2combo;
itemdb->is_item_usable = itemdb_is_item_usable;
itemdb->lookup_const = itemdb_lookup_const;
+ itemdb->lookup_const_mask = itemdb_lookup_const_mask;
}
diff --git a/src/map/itemdb.h b/src/map/itemdb.h
index 35cd154cb..d2d3b6c73 100644
--- a/src/map/itemdb.h
+++ b/src/map/itemdb.h
@@ -337,7 +337,7 @@ enum item_class_upper {
ITEMUPPER_UPPER = 0x02,
ITEMUPPER_BABY = 0x04,
ITEMUPPER_THIRD = 0x08,
- ITEMUPPER_THURDUPPER = 0x10,
+ ITEMUPPER_THIRDUPPER = 0x10,
ITEMUPPER_THIRDBABY = 0x20,
ITEMUPPER_ALL = 0x3f, // Sum of all the above
};
@@ -454,10 +454,10 @@ struct item_data {
uint16 nameid;
char name[ITEM_NAME_LENGTH],jname[ITEM_NAME_LENGTH];
- //Do not add stuff between value_buy and view_id (see how getiteminfo works)
int value_buy;
int value_sell;
int type;
+ int subtype;
int maxchance; //For logs, for external game info, for scripts: Max drop chance of this item (e.g. 0.01% , etc.. if it = 0, then monsters don't drop it, -1 denotes items sold in shops only) [Lupus]
int sex;
int equip;
@@ -466,7 +466,7 @@ struct item_data {
int def;
int range;
int slot;
- int look;
+ int view_sprite;
int elv;
int wlv;
int view_id;
@@ -474,8 +474,6 @@ struct item_data {
int elvmax;/* maximum level for this item */
int delay;
-//Lupus: I rearranged order of these fields due to compatibility with ITEMINFO script command
-// some script commands should be revised as well...
uint64 class_base[3]; ///< Specifies if the base can wear this item (split in 3 indexes per type: 1-1, 2-1, 2-2)
unsigned class_upper : 6; ///< Specifies if the upper-type can equip it (bitfield, 0x01: normal, 0x02: upper, 0x04: baby normal, 0x08: third normal, 0x10: third upper, 0x20: third baby)
struct {
@@ -524,7 +522,8 @@ struct item_data {
#define itemdb_type(n) (itemdb->search(n)->type)
#define itemdb_atk(n) (itemdb->search(n)->atk)
#define itemdb_def(n) (itemdb->search(n)->def)
-#define itemdb_look(n) (itemdb->search(n)->look)
+#define itemdb_subtype(n) (itemdb->search(n)->subtype)
+#define itemdb_sprite(n) (itemdb->search(n)->view_sprite)
#define itemdb_weight(n) (itemdb->search(n)->weight)
#define itemdb_equip(n) (itemdb->search(n)->equip)
#define itemdb_usescript(n) (itemdb->search(n)->script)
@@ -648,6 +647,7 @@ struct itemdb_interface {
struct item_combo * (*id2combo) (unsigned short id);
bool (*is_item_usable) (struct item_data *item);
bool (*lookup_const) (const struct config_setting_t *it, const char *name, int *value);
+ bool (*lookup_const_mask) (const struct config_setting_t *it, const char *name, int *value);
};
#ifdef HERCULES_CORE
diff --git a/src/map/map.c b/src/map/map.c
index f8aebcfa6..5a647625f 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -447,6 +447,11 @@ int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) {
struct status_change *sc = status->get_sc(bl);
if (sc && (sc->option&OPTION_INVISIBLE))
continue;
+ if (bl->type == BL_NPC) {
+ const struct npc_data *nd = BL_UCCAST(BL_NPC, bl);
+ if (nd->class_ == FAKE_NPC || nd->class_ == HIDDEN_WARP_CLASS)
+ continue;
+ }
}
if (flag&0x1) {
struct unit_data *ud = unit->bl2ud(bl);
@@ -1835,7 +1840,7 @@ void map_addiddb(struct block_list *bl)
struct mob_data *md = BL_UCAST(BL_MOB, bl);
idb_put(map->mobid_db,bl->id,bl);
- if( md->state.boss )
+ if (md->state.boss == BTYPE_MVP)
idb_put(map->bossid_db, bl->id, bl);
}
diff --git a/src/map/map.h b/src/map/map.h
index d4284b3f7..5835b5abc 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -519,7 +519,7 @@ struct spawn_data {
//0: Normal mob | 1: Standard summon, attacks mobs
//2: Alchemist Marine Sphere | 3: Alchemist Summon Flora | 4: Summon Zanzou
unsigned int dynamic : 1; ///< Whether this data is indexed by a map's dynamic mob list
- unsigned int boss : 1; ///< 0: Non-boss monster | 1: Boss monster
+ uint8 boss; ///< 0: Non-boss monster | 1: Boss monster | 2: MVP
} state;
char name[NAME_LENGTH], eventname[EVENT_NAME_LENGTH]; //Name/event
};
@@ -852,6 +852,7 @@ struct map_data {
unsigned noknockback : 1;
unsigned notomb : 1;
unsigned nocashshop : 1;
+ unsigned noautoloot : 1;
uint32 noviewid; ///< noviewid (bitmask - @see enum equip_pos)
} flag;
struct point save;
diff --git a/src/map/mob.c b/src/map/mob.c
index 98f8865a9..208617b5d 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -1354,7 +1354,7 @@ int mob_unlocktarget(struct mob_data *md, int64 tick) {
md->ud.target_to = 0;
unit->set_target(&md->ud, 0);
}
- if(battle_config.official_cell_stack_limit && map->count_oncell(md->bl.m, md->bl.x, md->bl.y, BL_CHAR|BL_NPC, 1) > battle_config.official_cell_stack_limit) {
+ if(battle_config.official_cell_stack_limit && map->count_oncell(md->bl.m, md->bl.x, md->bl.y, BL_CHAR|BL_NPC, 0x1 | 0x2) > battle_config.official_cell_stack_limit) {
unit->walktoxy(&md->bl, md->bl.x, md->bl.y, 8);
}
@@ -1904,6 +1904,7 @@ void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct ite
if( sd
&& (drop_rate <= sd->state.autoloot || pc->isautolooting(sd, ditem->item_data.nameid))
+ && (!map->list[sd->bl.m].flag.noautoloot)
&& (battle_config.idle_no_autoloot == 0 || DIFF_TICK(sockt->last_tick, sd->idletime) < battle_config.idle_no_autoloot)
&& (battle_config.homunculus_autoloot?1:!flag)
#ifdef AUTOLOOT_DISTANCE
@@ -2685,7 +2686,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
return 5; // Note: Actually, it's 4. Oh well...
// MvP tomb [GreenBox]
- if (battle_config.mvp_tomb_enabled && md->spawn->state.boss && map->list[md->bl.m].flag.notomb != 1)
+ if (battle_config.mvp_tomb_enabled && md->spawn->state.boss == BTYPE_MVP && map->list[md->bl.m].flag.notomb != 1)
mob->mvptomb_create(md, mvp_sd ? mvp_sd->status.name : NULL, time(NULL));
if( !rebirth ) {
diff --git a/src/map/mob.h b/src/map/mob.h
index 7f2accedf..83e022899 100644
--- a/src/map/mob.h
+++ b/src/map/mob.h
@@ -69,6 +69,12 @@ struct hplugin_data_store;
// Disable this to make monsters not do any path search when looking for a target (old behavior).
#define ACTIVEPATHSEARCH
+enum e_bosstype {
+ BTYPE_NONE = 0,
+ BTYPE_BOSS = 1,
+ BTYPE_MVP = 2,
+};
+
//Mob skill states.
enum MobSkillState {
MSS_ANY = -1,
@@ -181,10 +187,10 @@ struct mob_data {
unsigned int spotted: 1;
unsigned int npc_killmonster: 1; //for new killmonster behavior
unsigned int rebirth: 1; // NPC_Rebirth used
- unsigned int boss : 1;
enum MobSkillState skillstate;
unsigned char steal_flag; //number of steal tries (to prevent steal exploit on mobs with few items) [Lupus]
unsigned char attacked_count; //For rude attacked.
+ uint8 boss;
int provoke_flag; // Celest
} state;
struct guardian_data* guardian_data;
diff --git a/src/map/npc.c b/src/map/npc.c
index 6beff2b77..0702b2525 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -114,6 +114,8 @@ bool npc_db_checkid(int id)
return true;
if (id >= MAX_NPC_CLASS2_START && id < MAX_NPC_CLASS2_END) // Second range
return true;
+ if (pc->db_checkid(id))
+ return true;
// Anything else is invalid
return false;
}
@@ -2706,6 +2708,7 @@ struct npc_data *npc_create_npc(enum npc_subtype subtype, int m, int x, int y, u
nd->area_size = AREA_SIZE + 1;
nd->class_ = class_;
nd->speed = 200;
+ nd->vd.class = 0;
return nd;
}
@@ -3656,6 +3659,18 @@ void npc_setclass(struct npc_data* nd, short class_) {
clif->spawn(&nd->bl);// fade in
}
+void npc_refresh(struct npc_data* nd)
+{
+ nullpo_retv(nd);
+
+ if (map->list[nd->bl.m].users) {
+ // using here CLR_TRICKDEAD because other flags show effects.
+ // probably need use other flag or other way to refresh npc.
+ clif->clearunit_area(&nd->bl, CLR_TRICKDEAD); // fade out
+ clif->spawn(&nd->bl); // fade in
+ }
+}
+
// @commands (script based)
int npc_do_atcmd_event(struct map_session_data* sd, const char* command, const char* message, const char* eventname)
{
@@ -3843,7 +3858,12 @@ const char *npc_parse_mob(const char *w1, const char *w2, const char *w3, const
memset(&mobspawn, 0, sizeof(struct spawn_data));
- mobspawn.state.boss = (strcmp(w2,"boss_monster") == 0 ? 1 : 0);
+ if (strcmp(w2, "boss_monster") == 0)
+ mobspawn.state.boss = BTYPE_MVP;
+ else if (strcmp(w2, "miniboss_monster") == 0)
+ mobspawn.state.boss = BTYPE_BOSS;
+ else
+ mobspawn.state.boss = BTYPE_NONE;
// w1=<map name>,<x>,<y>,<xs>,<ys>
// w3=<mob name>{,<mob level>}
@@ -4300,6 +4320,8 @@ const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, co
map->list[m].flag.reset=state;
else if (!strcmpi(w3,"notomb"))
map->list[m].flag.notomb=state;
+ else if (!strcmpi(w3, "noautoloot"))
+ map->list[m].flag.noautoloot = state;
else if (!strcmpi(w3,"adjust_unit_duration")) {
int skill_id, k;
char skill_name[MAP_ZONE_MAPFLAG_LENGTH], modifier[MAP_ZONE_MAPFLAG_LENGTH];
@@ -4660,7 +4682,7 @@ int npc_parsesrcfile(const char* filepath, bool runOnInit) {
{
p = npc->parse_duplicate(w1,w2,w3,w4, p, buffer, filepath, (runOnInit?NPO_ONINIT:NPO_NONE), &success);
}
- else if( (strcmp(w2,"monster") == 0 || strcmp(w2,"boss_monster") == 0) )
+ else if (strcmp(w2,"monster") == 0 || strcmp(w2,"boss_monster") == 0 || strcmp(w2,"miniboss_monster") == 0)
{
p = npc->parse_mob(w1, w2, w3, w4, p, buffer, filepath, &success);
}
@@ -4992,7 +5014,6 @@ int do_init_npc(bool minimal) {
npc_viewdb[i].class = i;
for( i = MAX_NPC_CLASS2_START; i < MAX_NPC_CLASS2_END; i++ )
npc_viewdb2[i - MAX_NPC_CLASS2_START].class = i;
-
npc->ev_db = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, EVENT_NAME_LENGTH);
npc->ev_label_db = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, NAME_LENGTH);
npc->name_db = strdb_alloc(DB_OPT_BASE, NAME_LENGTH);
@@ -5187,4 +5208,5 @@ void npc_defaults(void) {
npc->market_delfromsql = npc_market_delfromsql;
npc->market_delfromsql_sub = npc_market_delfromsql_sub;
npc->db_checkid = npc_db_checkid;
+ npc->refresh = npc_refresh;
}
diff --git a/src/map/npc.h b/src/map/npc.h
index 3bd11d536..8bb38f252 100644
--- a/src/map/npc.h
+++ b/src/map/npc.h
@@ -70,7 +70,7 @@ struct npc_parse;
struct npc_data {
struct block_list bl;
struct unit_data *ud;
- struct view_data *vd;
+ struct view_data vd;
unsigned int option;
struct npc_data *master_nd;
short class_;
@@ -309,6 +309,7 @@ struct npc_interface {
void (*market_delfromsql) (struct npc_data *nd, unsigned short index);
void (*market_delfromsql_sub) (const char *npcname, unsigned short index);
bool (*db_checkid) (const int id);
+ void (*refresh) (struct npc_data* nd);
/**
* For the Secure NPC Timeout option (check config/Secure.h) [RR]
**/
diff --git a/src/map/packets.h b/src/map/packets.h
index c471e8a6b..3fcf1648a 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -18,7 +18,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-//Included directly by clif.h in packet_loaddb()
+//Included directly by clif.c in packet_loaddb()
#ifndef MAP_PACKETS_H
#define MAP_PACKETS_H
@@ -27,10 +27,6 @@
#define packet(a,b,...)
#endif
-#ifndef packetKeys
- #define packetKeys(a,b,c)
-#endif
-
/*
* packet syntax
* - packet(packet_id,length)
@@ -2997,6 +2993,40 @@ packet(0x96e,-1,clif->ackmergeitems);
// 2014 Packet Data
+// 2014-01-08cRagexe
+#if PACKETVER == 20140108
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0936,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2014-01-15eRagexe
#if PACKETVER == 20140115
// shuffle packets
@@ -3045,6 +3075,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x09eb,-1); // ZC_ACK_READ_RODEX
#endif
+// 2014-01-22aRagexe
+#if PACKETVER == 20140122
+// shuffle packets
+ packet(0x0360,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0811,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0863,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0870,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0871,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0872,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0890,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0893,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0899,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x089d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08a2,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08aa,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0917,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x091a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0925,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x092f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0940,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0941,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0942,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x094c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0950,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0952,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0955,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0957,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x095d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
// 2014-01-22aRagexeRE
#if PACKETVER >= 20140122
// new packets
@@ -3057,6 +3121,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x09f9,143); // ZC_ADD_QUEST_EX
#endif
+// 2014-01-29aRagexe
+#if PACKETVER == 20140129
+// shuffle packets
+ packet(0x0281,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0367,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0884,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0885,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0889,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0921,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0924,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x092c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0958,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0961,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2014-01-29bRagexeRE
#if PACKETVER >= 20140129
// new packets
@@ -3072,37 +3170,72 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif // PACKETVER_RE
#endif
-// 2014-02-05bRagexe - Themon
-#if PACKETVER >= 20140205
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0202,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x023B,26,clif->pFriendsListAdd,2);
- packet(0x0361,5,clif->pHomMenu,2,4);
- packet(0x0938,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK
+// 2014-02-05bRagexe
+#if PACKETVER == 20140205
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0938,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-02-12aRagexe
+#if PACKETVER == 20140212
+// shuffle packets
+ packet(0x02c4,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0369,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0438,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x086e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0874,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0877,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0878,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x087e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0888,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x088c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x08a0,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a1,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a7,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08ac,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08ad,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0919,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0928,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0930,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0934,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0936,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x093d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0944,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0952,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0953,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0960,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
#endif
// 2014-02-12aRagexeRE
@@ -3113,6 +3246,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x09e8,11,clif->pRodexOpenMailbox); // CZ_OPEN_RODEXBOX
#endif
+// 2014-02-19aRagexe
+#if PACKETVER == 20140219
+// shuffle packets
+ packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0360,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0364,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0802,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0838,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x085d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0860,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0868,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x086f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x087c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0889,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0898,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x089f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a6,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08aa,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08ac,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0921,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0927,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0939,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0949,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0953,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x095a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0961,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+#endif
+
// 2014-02-19aRagexeRE
#if PACKETVER >= 20140219
// Warning hercules using this packets for items manipulation. In RagexeRE from 20140129 and before 20140305, this actions broken.
@@ -3125,6 +3292,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif // PACKETVER_RE
#endif
+// 2014-02-26aRagexe
+#if PACKETVER == 20140226
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0362,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0877,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0887,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0894,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0895,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0921,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0931,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0941,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0962,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2014-02-26aRagexeRE
#if PACKETVER >= 20140226
// new packets
@@ -3135,37 +3336,38 @@ packet(0x96e,-1,clif->ackmergeitems);
// changed packet sizes
#endif
-// 2014-03-05bRagexe - Themon
-#if PACKETVER >= 20140305
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0815,5,clif->pChangeDir,2,4);
- packet(0x0202,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0436,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0361,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0438,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x07E4,26,clif->pFriendsListAdd,2);
- packet(0x0934,5,clif->pHomMenu,2,4);
- packet(0x095e,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0878,4,clif->pDull); // CZ_GANGSI_RANK
+// 2014-03-05aRagexe
+#if PACKETVER == 20140305
+// shuffle packets
+ packet(0x0202,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x07e4,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0878,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0934,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
// 2014-03-05aRagexeRE
@@ -3189,6 +3391,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x09f4,3); // ZC_ACK_ITEM_FROM_RODEX
#endif
+// 2014-03-12dRagexe
+#if PACKETVER == 20140312
+// shuffle packets
+ packet(0x0202,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x023b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x085e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x086f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0889,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x088d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0891,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0894,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x089b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x089e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a6,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a9,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08ad,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x091b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x091c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x091e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x092a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0948,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x094b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x094c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0957,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x095d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x095e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
// 2014-03-12bRagexeRE
#if PACKETVER >= 20140312
// new packets
@@ -3201,6 +3437,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a0d,-1); // ZC_INVENTORY_ITEMLIST_EQUIP_V6
#endif
+// 2014-03-26aRagexe
+#if PACKETVER == 20140326
+// shuffle packets
+ packet(0x0362,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0365,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x07ec,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x083c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0865,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0867,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0869,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x086b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x087f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0887,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0898,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08aa,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08ac,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x08ad,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0918,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0928,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x092a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0942,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0945,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0946,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0959,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x095a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x095c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0969,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+#endif
+
// 2014-03-26cRagexeRE
#if PACKETVER >= 20140326
// changed packet sizes
@@ -3213,37 +3483,38 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a08,7,clif->pDull/*,XXX*/); // CZ_REQ_OPEN_WRITE_RODEX
#endif
-// 2014-04-02gRagexe - Themon
-#if PACKETVER >= 20140402
- packet(0x0946,7,clif->pActionRequest,2,6);
- packet(0x0868,10,clif->pUseSkillToId,2,4,6);
- packet(0x093F,5,clif->pWalkToXY,2);
- packet(0x0950,6,clif->pTickSend,2);
- packet(0x0360,5,clif->pChangeDir,2,4);
- packet(0x0958,6,clif->pTakeItem,2);
- packet(0x0882,6,clif->pDropItem,2,4);
- packet(0x095C,8,clif->pMoveToKafra,2,4);
- packet(0x085B,8,clif->pMoveFromKafra,2,4);
- packet(0x0364,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x092D,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x088A,6,clif->pGetCharNameRequest,2);
- packet(0x07EC,6,clif->pSolveCharName,2);
- packet(0x0965,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x085D,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0933,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x091F,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x023B,6,clif->pReqClickBuyingStore,2);
- packet(0x0867,2,clif->pReqCloseBuyingStore,0);
- packet(0x0944,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x08AC,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0883,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0920,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0890,26,clif->pPartyInvite2,2);
- packet(0x089A,26,clif->pFriendsListAdd,2);
- packet(0x0896,5,clif->pHomMenu,2,4);
- packet(0x0926,36,clif->pStoragePassword,0);
- packet(0x088c,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x094c,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+// 2014-04-02fRagexe
+#if PACKETVER == 20140402
+// shuffle packets
+ packet(0x023b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0360,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0364,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07ec,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x085b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x085d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0867,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0868,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0882,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0883,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x088c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0890,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0896,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x089a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08ac,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0920,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0926,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0933,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x093f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0944,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0946,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x094c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0950,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0965,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
// 2014-04-02eRagexeRE
@@ -3255,6 +3526,40 @@ packet(0x96e,-1,clif->ackmergeitems);
// changed packet sizes
#endif
+// 2014-04-09aRagexe
+#if PACKETVER == 20140409
+// shuffle packets
+ packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x085b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0868,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x086a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0873,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0875,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x087e,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0883,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0884,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x088a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0890,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0893,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0896,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a2,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08a6,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x08a7,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a9,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0918,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x092e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0942,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0947,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x095a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x095e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+#endif
+
// 2014-04-09aRagexeRE
#if PACKETVER >= 20140409
// changed packet sizes
@@ -3262,37 +3567,38 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x09f4,12); // ZC_ACK_ITEM_FROM_RODEX
#endif
-// 2014-04-16aRagexe - Themon
-#if PACKETVER >= 20140416
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0202,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x023B,26,clif->pFriendsListAdd,2);
- packet(0x0361,5,clif->pHomMenu,2,4);
- packet(0x095C,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK
+// 2014-04-16aRagexe
+#if PACKETVER == 20140416
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x095c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
// 2014-04-16aRagexeRE
@@ -3308,6 +3614,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a08,26,clif->pRodexOpenWriteMail); // CZ_REQ_OPEN_WRITE_RODEX
#endif
+// 2014-04-23aRagexe
+#if PACKETVER == 20140423
+// shuffle packets
+ packet(0x022d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0436,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0811,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x083c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x085a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x085b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0862,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0863,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0866,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x086b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x086f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0873,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0890,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0895,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0896,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0898,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x089d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08a8,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08ad,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x091a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0920,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x094f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x095e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+#endif
+
// 2014-04-23aRagexeRE
#if PACKETVER >= 20140423
// new packets
@@ -3324,12 +3664,114 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a17,6); // ZC_DYNAMICNPC_CREATE_RESULT
#endif
+// 2014-05-08aRagexe
+#if PACKETVER == 20140508
+// shuffle packets
+ packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0281,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x02c4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x035f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0360,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0362,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0363,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0365,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0366,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0367,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0436,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0438,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x07e4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x07ec,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0811,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0815,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0817,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0835,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0838,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x083c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+#endif
+
// 2014-05-08bRagexeRE
#if PACKETVER >= 20140508
// changed packet sizes
packet(0x0a15,12); // ZC_GOLDPCCAFE_POINT
#endif
+// 2014-05-14bRagexe
+#if PACKETVER == 20140514
+// shuffle packets
+ packet(0x0437,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0817,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0865,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0867,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0868,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0876,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0877,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0885,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0886,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x088b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0895,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x089c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a5,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0918,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0921,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0925,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x092c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0958,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0962,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0965,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x096a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+#endif
+
+// 2014-05-21bRagexe
+#if PACKETVER == 20140521
+// shuffle packets
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0869,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x089c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08ac,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0968,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2014-05-21aRagexeRE
#if PACKETVER >= 20140521
// changed packet sizes
@@ -3337,6 +3779,74 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a14,10); // ZC_CHECK_RECEIVE_CHARACTER_NAME
#endif
+// 2014-05-28aRagexe
+#if PACKETVER == 20140528
+// shuffle packets
+ packet(0x0202,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x085f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0862,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0872,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0875,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0877,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0879,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x088a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x088f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0894,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0896,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08a8,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x091d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0929,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0930,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0938,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x093a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x093f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x094a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x094b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x095f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0963,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0966,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// 2014-06-05aRagexe
+#if PACKETVER == 20140605
+// shuffle packets
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0369,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0921,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0931,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x094c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
/* Roulette System [Yommy/Hercules] */
// 2014-06-05aRagexe
#if PACKETVER >= 20140605
@@ -3349,6 +3859,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a1d,14,clif->pDull/*,XXX*/); // CZ_REQ_CLOSE_ROULETTE
#endif
+// 2014-06-11cRagexe
+#if PACKETVER == 20140611
+// shuffle packets
+ packet(0x0364,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0438,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x07e4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0838,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0864,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0867,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0878,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0891,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0893,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0894,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a1,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a2,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0924,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x094f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0950,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0951,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0952,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0957,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0958,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0963,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0965,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
/* Roulette System [Yommy/Hercules] */
// 2014-06-11bRagexe / RE. moved by 4144
#if PACKETVER >= 20140611
@@ -3370,6 +3914,108 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a1d,2,clif->pRouletteClose,0); // CZ_REQ_CLOSE_ROULETTE
#endif
+// 2014-06-12aRagexe
+#if PACKETVER == 20140612
+// shuffle packets
+ packet(0x0364,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0438,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x07e4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0838,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0864,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0867,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0878,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0891,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0893,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0894,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a1,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a2,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0924,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x094f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0950,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0951,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0952,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0957,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0958,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0963,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0965,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// 2014-06-13aRagexe
+#if PACKETVER == 20140613
+// shuffle packets
+ packet(0x0364,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0438,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x07e4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0838,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0864,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0867,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0878,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0891,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0893,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0894,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a1,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a2,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0924,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x094f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0950,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0951,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0952,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0957,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0958,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0963,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0965,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// 2014-06-18aRagexe
+#if PACKETVER == 20140618
+// shuffle packets
+ packet(0x085d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0860,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0861,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x086c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0878,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0884,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0885,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0886,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0890,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0892,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a6,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a7,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08ac,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0917,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x091f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0929,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0935,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0938,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0939,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x093b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0945,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0954,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0957,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x095e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0962,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0967,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+#endif
+
// 2014-06-18cRagexeRE
#if PACKETVER >= 20140618
// changed packet sizes
@@ -3377,6 +4023,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a22,5); // ZC_RECV_ROULETTE_ITEM
#endif
+// 2014-06-25aRagexe
+#if PACKETVER == 20140625
+// shuffle packets
+ packet(0x0202,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x023b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0815,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0817,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0835,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0861,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0875,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x087b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0885,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0886,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0888,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x088a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0897,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a1,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a2,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0923,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0928,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0940,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0946,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0959,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0960,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0968,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0969,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2014-06-25aRagexeRE
#if PACKETVER >= 20140625
// new packets
@@ -3386,6 +4066,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a24,36); // ZC_ACH_UPDATE
#endif
+// 2014-07-02aRagexe
+#if PACKETVER == 20140702
+// shuffle packets
+ packet(0x022d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0438,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x07e4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0835,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x086c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0887,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0892,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0895,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08a0,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a2,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0925,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0933,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0940,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2014-07-02aRagexeRE
#if PACKETVER >= 20140702
// new packets
@@ -3393,12 +4107,114 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a2a,6,clif->pDull/*,XXX*/); // CZ_ACK_AU_BOT
#endif
+// 2014-07-09aRagexe
+#if PACKETVER == 20140709
+// shuffle packets
+ packet(0x0364,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0860,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0866,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0869,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0875,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0877,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0879,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x087a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0887,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0888,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0894,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0897,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0898,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08ad,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0925,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x092f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0931,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0934,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0939,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x093f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0940,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x094d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x094f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0961,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+#endif
+
+// 2014-07-16aRagexe
+#if PACKETVER == 20140716
+// shuffle packets
+ packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0811,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0868,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0871,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0881,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x088d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0896,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x089a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x089f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08a2,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08a4,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08ac,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0918,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x091f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0926,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x092c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0938,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x093b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0947,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0952,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0959,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+#endif
+
// 2014-07-16aRagexeRE
#if PACKETVER >= 20140716
// changed packet sizes
packet(0x09e7,3); // ZC_NOTIFY_UNREAD_RODEX
#endif
+// 2014-07-23aRagexe
+#if PACKETVER == 20140723
+// shuffle packets
+ packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0368,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0436,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0819,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0838,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x085f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x087d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0888,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0891,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0896,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0898,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x089e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08a2,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08ad,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0927,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x092f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0934,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0935,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0939,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x093d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0945,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0947,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0948,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0960,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
// 2014-07-23aRagexeRE
#if PACKETVER >= 20140723
// new packets
@@ -3408,12 +4224,250 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a24,56); // ZC_ACH_UPDATE
#endif
+// 2014-07-30aRagexe
+#if PACKETVER == 20140730
+// shuffle packets
+ packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0366,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0367,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0437,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x07ec,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0802,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0815,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0817,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x087d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x087f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0889,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x088b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0892,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a0,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a6,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a7,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a9,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x08ad,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0924,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x092a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0934,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0940,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0946,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+#endif
+
+// 2014-08-06aRagexe
+#if PACKETVER == 20140806
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0948,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-08-13aRagexe
+#if PACKETVER == 20140813
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0868,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0878,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0882,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0895,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0897,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0899,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a3,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a7,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0967,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-08-14aRagexe
+#if PACKETVER == 20140814
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0868,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0878,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0882,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0895,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0897,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0899,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a3,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a7,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0967,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-08-20aRagexe
+#if PACKETVER == 20140820
+// shuffle packets
+ packet(0x035f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0835,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0861,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0864,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0869,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x086c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0872,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0876,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0891,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0899,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x089b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a3,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a7,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x091d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x092f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0937,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x093a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0951,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0952,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0956,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0958,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
// 2014-08-20aRagexeRE
#if PACKETVER >= 20140820
// new packets
packet(0x0a2d,-1); // ZC_EQUIPWIN_MICROSCOPE_V6
#endif
+// 2014-08-27aRagexe
+#if PACKETVER == 20140827
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0943,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-09-03aRagexe
+#if PACKETVER == 20140903
+// shuffle packets
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0931,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0943,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0945,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2014-09-03aRagexeRE
#if PACKETVER >= 20140903
// new packets
@@ -3422,6 +4476,74 @@ packet(0x96e,-1,clif->ackmergeitems);
// changed packet sizes
#endif
+// 2014-09-17aRagexe
+#if PACKETVER == 20140917
+// shuffle packets
+ packet(0x022d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0364,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0365,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0367,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0838,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0864,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0889,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0895,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0897,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0898,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a8,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0919,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x091e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x092a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0930,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0949,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x094f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0951,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0955,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0956,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0957,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x095a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x095c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x095e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0966,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+#endif
+
+// 2014-09-24cRagexe
+#if PACKETVER == 20140924
+// shuffle packets
+ packet(0x0366,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0367,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0815,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0862,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0864,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0865,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0867,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x086b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x086d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0886,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x088b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0894,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0898,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x089c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a5,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a7,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0918,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x091b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0925,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0926,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0928,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x092d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0934,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0949,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0952,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+#endif
+
// 2014-09-24bRagexeRE
#if PACKETVER >= 20140924
// new packets
@@ -3432,82 +4554,322 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a34,6); // ZC_UPDATE_TAIWANCASH
#endif
+// 2014-10-01aRagexe
+#if PACKETVER == 20141001
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0365,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0884,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0885,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x089d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08ad,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x092a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0937,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0939,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0952,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+#endif
+
// 2014-10-01bRagexeRE
#if PACKETVER >= 20141001
// changed packet sizes
packet(0x0a24,66); // ZC_ACH_UPDATE
#endif
+// 2014-10-08aRagexe
+#if PACKETVER == 20141008
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0942,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2014-10-08bRagexeRE
#if PACKETVER >= 20141008
// changed packet sizes
packet(0x0a05,49); // ZC_ACK_ADD_ITEM_RODEX
#endif
-// 2014-10-16aRagexe - YomRawr
-#if PACKETVER >= 20141016
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0967,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x022D,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x086E,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x094B,26,clif->pFriendsListAdd,2);
- packet(0x0364,5,clif->pHomMenu,2,4);
- packet(0x0936,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0922,4,clif->pDull); // CZ_GANGSI_RANK
+// 2014-10-15bRagexe
+#if PACKETVER == 20141015
+// shuffle packets
+ packet(0x022d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0922,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0936,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0967,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-10-22bRagexe - YomRawr
-#if PACKETVER >= 20141022
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x08AD,5,clif->pChangeDir,2,4);
- packet(0x094E,6,clif->pTakeItem,2);
- packet(0x087D,6,clif->pDropItem,2,4);
- packet(0x0878,8,clif->pMoveToKafra,2,4);
- packet(0x08AA,8,clif->pMoveFromKafra,2,4);
- packet(0x023B,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0835,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0940,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0955,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x093B,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0896,26,clif->pPartyInvite2,2);
- packet(0x091A,26,clif->pFriendsListAdd,2);
- packet(0x0899,5,clif->pHomMenu,2,4);
- packet(0x0438,36,clif->pStoragePassword,0);
- packet(0x08ab,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x092b,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+// 2014-10-16aRagexe
+#if PACKETVER == 20141016
+// shuffle packets
+ packet(0x022d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0922,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0936,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0967,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-10-22bRagexe
+#if PACKETVER == 20141022
+// shuffle packets
+ packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0878,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0896,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0899,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08aa,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08ad,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0940,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x094e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0955,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-10-29aRagexe
+#if PACKETVER == 20141029
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0940,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-11-05aRagexe
+#if PACKETVER == 20141105
+// shuffle packets
+ packet(0x022d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x035f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0360,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x085c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0863,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0864,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0865,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0871,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0874,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0875,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0877,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0879,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0887,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0892,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0898,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a0,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a5,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a7,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08ad,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x091e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x092b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x093e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0944,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0948,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0950,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0957,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x095f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0968,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2014-11-12cRagexe
+#if PACKETVER == 20141112
+// shuffle packets
+ packet(0x0362,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0438,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x07e4,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0835,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0838,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x083c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0863,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0869,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x086c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0871,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0885,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0886,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0887,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x08a0,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a1,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08ab,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0919,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0926,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0929,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0943,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x094b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x094c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0955,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x095d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0960,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0962,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+#endif
+
+// 2014-11-19dRagexe
+#if PACKETVER == 20141119
+// shuffle packets
+ packet(0x0202,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x085a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0861,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0865,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0866,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0872,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0873,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0875,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x087c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0885,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0887,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0888,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x088d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0895,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a8,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08aa,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0918,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0920,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0921,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0929,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0933,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0938,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0940,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0941,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0942,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0948,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x094c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0963,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
#endif
// 2014-11-19bRagexeRE
@@ -3518,6 +4880,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a05,53); // ZC_ACK_ADD_ITEM_RODEX
#endif
+// 2014-11-26aRagexe
+#if PACKETVER == 20141126
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0367,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0871,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0884,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0896,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ad,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0920,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0942,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0965,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2014-11-26aRagexeRE
#if PACKETVER >= 20141126
// new packets
@@ -3525,6 +4921,142 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a37,57); // ZC_ITEM_PICKUP_ACK_V7
#endif
+// 2014-12-03aRagexe
+#if PACKETVER == 20141203
+// shuffle packets
+ packet(0x0202,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0281,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0362,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0367,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0368,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0861,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x086d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x086e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x087b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0880,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0889,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0898,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08a5,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08aa,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0917,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x091c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0928,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x092a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0936,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0957,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x095c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0962,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+#endif
+
+// 2014-12-10bRagexe
+#if PACKETVER == 20141210
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0885,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08ac,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0917,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0927,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x092b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0947,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0954,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0955,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0958,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0961,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0963,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0967,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-12-24aRagexe
+#if PACKETVER == 20141224
+// shuffle packets
+ packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0438,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0835,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x085a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x085e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0865,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x086c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0870,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x087b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x089b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a3,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a8,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08ac,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0930,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0932,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0945,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0946,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0949,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x094f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0950,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0953,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0956,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x095b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x095f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+#endif
+
+// 2014-12-31aRagexe
+#if PACKETVER == 20141231
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2015-01-07aRagexeRE
#if PACKETVER == 20150107
// shuffle packets
@@ -3593,6 +5125,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
+// 2015-01-21aRagexe
+#if PACKETVER == 20150121
+// shuffle packets
+ packet(0x0281,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x089e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ab,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0918,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0919,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0955,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0959,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0963,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0967,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2015-01-28aRagexe
#if PACKETVER == 20150128
// shuffle packets
@@ -3626,12 +5192,81 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0963,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x0968,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
#endif
+
// 2015-01-28aRagexeRE
#if PACKETVER >= 20150128
// new packets
packet(0x0a38,3);
#endif
+// 2015-01-29aRagexe
+#if PACKETVER == 20150129
+// shuffle packets
+ packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x023b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0368,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0838,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0864,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x086d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0870,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0874,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0875,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0888,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08ab,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0929,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x093a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0944,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0963,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0968,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+#endif
+
+// 2015-01-30aRagexe
+#if PACKETVER == 20150130
+// shuffle packets
+ packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x023b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0368,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0838,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0864,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x086d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0870,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0874,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0875,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0888,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08ab,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0929,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x093a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0944,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0963,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0968,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+#endif
+
// 2015-02-04aRagexe
#if PACKETVER == 20150204
// shuffle packets
@@ -3666,6 +5301,74 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
+// 2015-02-11aRagexe
+#if PACKETVER == 20150211
+// shuffle packets
+ packet(0x023b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0368,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0369,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0436,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0437,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x07e4,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0817,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0819,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0835,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0862,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0863,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0870,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0873,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x087f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0882,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0883,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0885,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0886,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x089c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a0,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08aa,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0919,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0920,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0951,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0957,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0958,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// 2015-02-17aRagexe
+#if PACKETVER == 20150217
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2015-02-25aRagexeRE
#if PACKETVER == 20150225
// shuffle packets
@@ -3734,6 +5437,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x096a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
#endif
+// 2015-03-04aRagexe
+#if PACKETVER == 20150304
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0862,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x086d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0879,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0892,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x093a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0947,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x095d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0960,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0961,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2015-03-11aRagexeRE
#if PACKETVER == 20150311
// shuffle packets
@@ -3775,6 +5512,40 @@ packet(0x96e,-1,clif->ackmergeitems);
// changed packet sizes
#endif
+// 2015-03-18aRagexe
+#if PACKETVER == 20150318
+// shuffle packets
+ packet(0x0202,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x023b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0281,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0367,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x07e4,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0802,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0862,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0863,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0873,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0885,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0889,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x088c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x089c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a4,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x091d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0920,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0927,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0928,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0936,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0937,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0938,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x093a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x093c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x094c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0951,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0958,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0959,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0960,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
// 2015-03-25aRagexe
#if PACKETVER == 20150325
// shuffle packets
@@ -3843,6 +5614,74 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0964,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
+// 2015-04-08aRagexe
+#if PACKETVER == 20150408
+// shuffle packets
+ packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x085a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0865,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0868,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x086b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x086e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0878,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x087e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x087f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0888,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0889,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0891,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0898,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a2,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a4,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x091e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0922,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0946,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0955,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0957,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0959,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0963,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// 2015-04-15aRagexe
+#if PACKETVER == 20150415
+// shuffle packets
+ packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0364,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0366,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0368,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0802,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0817,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0835,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x085e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0863,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0867,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0868,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0869,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x086c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0880,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0891,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0898,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a0,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0922,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x093c,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x093e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0941,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0946,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0953,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x095c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0960,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
// 2015-04-15aRagexeRE
#if PACKETVER >= 20150415
// changed packet sizes
@@ -3959,37 +5798,71 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2015-05-13aRagexe
-#if PACKETVER >= 20150513
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0924,5,clif->pChangeDir,2,4);
- packet(0x0958,6,clif->pTakeItem,2);
- packet(0x0885,6,clif->pDropItem,2,4);
- packet(0x0879,8,clif->pMoveToKafra,2,4);
- packet(0x0864,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x022D,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0883,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x02C4,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0960,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x094A,26,clif->pPartyInvite2,2);
- packet(0x0927,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x08A8,26,clif->pFriendsListAdd,2);
- packet(0x0817,5,clif->pHomMenu,2,4);
- packet(0x0923,36,clif->pStoragePassword,0);
- packet(0x0a27,8); // ZC_RECOVERY2
+#if PACKETVER == 20150513
+// shuffle packets
+ packet(0x022d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x02c4,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0864,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0883,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0885,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a8,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0923,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0924,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0927,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x094a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0960,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-05-20aRagexe
+#if PACKETVER == 20150520
+// shuffle packets
+ packet(0x0202,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0361,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0835,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x085e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0865,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0868,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x087d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0880,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0882,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x089c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a2,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08ad,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0924,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0931,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0936,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x093d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0940,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0945,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x094e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x095b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0960,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0961,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
// 2015-05-20aRagexeRE
@@ -4033,12 +5906,80 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
+// 2015-06-03aRagexe
+#if PACKETVER == 20150603
+// shuffle packets
+ packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0437,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0819,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0860,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0864,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0867,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0873,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0877,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0881,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0884,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0897,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x089a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x089d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089e,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a1,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08ad,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x091b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0922,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x093b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x093f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0955,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0956,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0960,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0969,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x096a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+#endif
+
// 2015-06-03bRagexeRE
#if PACKETVER >= 20150603
// new packets
packet(0x0a3e,-1);
#endif
+// 2015-06-10aRagexe
+#if PACKETVER == 20150610
+// shuffle packets
+ packet(0x022d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0438,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x07e4,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0835,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0870,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0872,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0877,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x087e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0884,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0885,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0888,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x088d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x088f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0897,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a0,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08ac,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0925,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x092c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x092e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0932,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x093e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0940,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0946,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0949,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0957,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x095d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0964,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
// 2015-06-17aRagexeRE
#if PACKETVER == 20150617
// shuffle packets
@@ -4107,12 +6048,250 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
+// 2015-06-24aRagexe
+#if PACKETVER == 20150624
+// shuffle packets
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0365,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0870,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0940,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0941,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0966,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2015-06-24aRagexeRE
#if PACKETVER >= 20150624
// new packets
packet(0x0a3f,9);
#endif
+// 2015-07-02aRagexe
+#if PACKETVER == 20150702
+// shuffle packets
+ packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0281,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x07e4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0802,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x086d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x087d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x087e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0883,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x088e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0893,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a0,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a4,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a5,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a6,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08ad,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0919,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0923,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0928,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x093e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x093f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0946,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0954,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0956,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0958,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x095f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0960,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0968,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2015-07-08cRagexe
+#if PACKETVER == 20150708
+// shuffle packets
+ packet(0x022d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0368,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0872,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x087f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0884,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x089d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a5,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08ad,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x092a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x093c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0962,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-07-15aRagexe
+#if PACKETVER == 20150715
+// shuffle packets
+ packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0362,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0436,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0437,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0835,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x083c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x086f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0873,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0879,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x087c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x087f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0886,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0895,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0896,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0897,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0899,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x089a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a4,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08ac,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0917,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x093e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0944,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0950,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0956,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0961,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0965,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2015-07-29aRagexe
+#if PACKETVER == 20150729
+// shuffle packets
+ packet(0x0437,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0438,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x085b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0860,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x086e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x086f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0870,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0880,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0881,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0886,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x089a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a3,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ac,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08ad,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0920,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x092b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x092f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x093a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x093f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0940,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x094f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0955,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0961,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// 2015-08-05aRagexe
+#if PACKETVER == 20150805
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-08-12aRagexe
+#if PACKETVER == 20150812
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2015-08-12aRagexeRE
#if PACKETVER >= 20150812
// new packets
@@ -4187,18 +6366,154 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0969,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
#endif
+// 2015-09-02aRagexe
+#if PACKETVER == 20150902
+// shuffle packets
+ packet(0x023b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0360,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0367,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0802,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x083c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x085b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0863,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x087b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0886,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0887,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0889,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x088d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0892,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0897,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0899,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08a9,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0923,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0928,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x092d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0941,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0947,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x094f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0953,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x095b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0960,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// 2015-09-09aRagexe
+#if PACKETVER == 20150909
+// shuffle packets
+ packet(0x023b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0361,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0437,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0861,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0871,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x087b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0883,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0886,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0895,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0928,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0940,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0941,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0962,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
// 2015-09-09aRagexeRE
#if PACKETVER >= 20150909
// new packets
packet(0x0a41,18);
#endif
+// 2015-09-16aRagexe
+#if PACKETVER == 20150916
+// shuffle packets
+ packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0817,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0835,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0869,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0873,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0877,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0881,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x089b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x089c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08ac,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0920,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0924,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x092e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x092f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0934,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0936,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x093e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0942,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0948,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x095a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0960,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0961,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0969,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+#endif
+
// 2015-09-16aRagexeRE
#if PACKETVER >= 20150916
// new packets
packet(0x0a42,43);
#endif
+// 2015-09-23bRagexe
+#if PACKETVER == 20150923
+// shuffle packets
+ packet(0x0361,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0817,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x085c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x085d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0864,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x086e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x086f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0870,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0879,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0886,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x088e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0892,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0895,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a0,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a2,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a5,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08a6,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x092b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0930,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0936,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x093b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0951,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0961,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+#endif
+
// 2015-10-01aRagexe
#if PACKETVER == 20151001
// shuffle packets
@@ -4308,6 +6623,74 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
#endif
+// 2015-10-21aRagexe
+#if PACKETVER == 20151021
+// shuffle packets
+ packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x02c4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-10-22aRagexe
+#if PACKETVER == 20151022
+// shuffle packets
+ packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x02c4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2015-10-28cRagexeRE
#if PACKETVER == 20151028
// shuffle packets
@@ -4349,75 +6732,105 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2015-10-29aRagexe
-#if PACKETVER >= 20151029
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0202,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x023B,26,clif->pFriendsListAdd,2);
- packet(0x0361,5,clif->pHomMenu,2,4);
- packet(0x0860,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK
+#if PACKETVER == 20151029
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0860,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
// 2015-11-04aRagexe
-#if PACKETVER >= 20151104
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0363,5,clif->pWalkToXY,2);
- packet(0x0886,6,clif->pTickSend,2);
- packet(0x0928,5,clif->pChangeDir,2,4);
- packet(0x0964,6,clif->pTakeItem,2);
- packet(0x0437,6,clif->pDropItem,2,4);
- packet(0x088B,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x0887,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0815,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0436,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x023B,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0811,18,clif->pPartyBookingRegisterReq,2,4,6);
- packet(0x093A,-1,clif->pItemListWindowSelected,2,4,8,12);
- packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x08A5,26,clif->pPartyInvite2,2);
- packet(0x07EC,26,clif->pFriendsListAdd,2);
- packet(0x088D,5,clif->pHomMenu,2,4);
- packet(0x0940,36,clif->pStoragePassword,2,4,20);
- packet(0x08a3,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x0939,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
-// new packets
- packet(0x0a46,14,clif->pDull/*,XXX*/);
- packet(0x0a47,3);
- packet(0x0a48,2,clif->pDull/*,XXX*/);
-// changed packet sizes
- packet(0x0a45,2);
+#if PACKETVER == 20151104
+// shuffle packets
+ packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0363,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0437,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07ec,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0811,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0815,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0886,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0887,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x088b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x088d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a3,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a5,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0928,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0939,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093a,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES
+ packet(0x0940,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD
+ packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+#endif
+
+// 2015-11-11aRagexe
+#if PACKETVER == 20151111
+// shuffle packets
+ packet(0x02c4,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085d,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES
+ packet(0x0862,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0871,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0885,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x089c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0942,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x094a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0958,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0966,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0967,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0969,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
// 2015-11-18aRagexeRE
@@ -4463,6 +6876,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a4c,28);
#endif
+// 2015-11-25bRagexe
+#if PACKETVER == 20151125
+// shuffle packets
+ packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0366,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES
+ packet(0x0438,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0802,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0838,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0863,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0883,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0884,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD
+ packet(0x0885,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088c,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x089f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x08a9,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08ad,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0920,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x092a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x092e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0939,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x093e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0951,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0956,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0957,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0959,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
// 2015-12-02bRagexeRE
#if PACKETVER == 20151202
// shuffle packets
@@ -4497,37 +6944,72 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
+// 2015-12-09aRagexe
+#if PACKETVER == 20151209
+// shuffle packets
+ packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x07e4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x07ec,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0811,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0819,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x085b,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD
+ packet(0x085d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0861,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0866,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x087a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x087f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0894,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08a1,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0920,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x092d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0930,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0932,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES
+ packet(0x093b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0948,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x094a,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0956,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x095c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0961,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0964,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+#endif
+
// 2015-12-16aRagexe
-#if PACKETVER >= 20151216
- packet(0x089D,7,clif->pActionRequest,2,6);
- packet(0x0968,10,clif->pUseSkillToId,2,4,6);
- packet(0x08A2,5,clif->pWalkToXY,2);
- packet(0x085B,6,clif->pTickSend,2);
- packet(0x022D,5,clif->pChangeDir,2,4);
- packet(0x08A9,6,clif->pTakeItem,2);
- packet(0x0966,6,clif->pDropItem,2,4);
- packet(0x08AC,8,clif->pMoveToKafra,2,4);
- packet(0x0864,8,clif->pMoveFromKafra,2,4);
- packet(0x0865,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0874,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x088B,6,clif->pGetCharNameRequest,2);
- packet(0x089E,6,clif->pSolveCharName,2);
- packet(0x0436,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0960,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0954,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0361,6,clif->pReqClickBuyingStore,2);
- packet(0x083C,2,clif->pReqCloseBuyingStore,0);
- packet(0x0870,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0949,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0947,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x086E,26,clif->pPartyInvite2,2);
- packet(0x091D,26,clif->pFriendsListAdd,2);
- packet(0x0362,5,clif->pHomMenu,2,4);
- packet(0x0885,36,clif->pStoragePassword,0);
- packet(0x0364,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x086a,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+#if PACKETVER == 20151216
+// shuffle packets
+ packet(0x022d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0361,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0364,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0436,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x085b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0864,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0865,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x086a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0870,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0874,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0885,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x089e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a2,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a9,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08ac,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0947,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0949,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0954,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0960,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0966,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0968,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
#endif
// 2015-12-23bRagexeRE
@@ -4564,14 +7046,143 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0967,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
-// 2016-01-27aRagexeRE
-#if PACKETVER >= 20160127
-// new packets
- packet(0x0a4d,-1);
-// changed packet sizes
+// 2015-12-30aRagexe
+#if PACKETVER == 20151230
+// shuffle packets
+ packet(0x02c4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x07ec,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0861,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0869,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0886,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x088e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0897,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0923,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0949,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-01-06aRagexeRE
+#if PACKETVER == 20160106
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07ec,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0861,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0878,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x087a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x087f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0885,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0889,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x088a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0891,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a0,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0940,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-01-27bRagexeRE
+// 2016-01-13aRagexeRE
+#if PACKETVER == 20160113
+// shuffle packets
+ packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x023b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x035f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0815,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x085b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0864,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x086d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0873,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0888,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x088b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0892,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0893,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a0,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a6,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08aa,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0919,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0924,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0930,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0932,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x093c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0941,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x094d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0967,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// 2016-01-20aRagexeRE
+#if PACKETVER == 20160120
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0865,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-01-27aRagexeRE
#if PACKETVER == 20160127
// shuffle packets
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -4605,6 +7216,13 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
+// 2016-01-27aRagexeRE
+#if PACKETVER >= 20160127
+// new packets
+ packet(0x0a4d,-1);
+// changed packet sizes
+#endif
+
// 2016-02-03aRagexeRE
#if PACKETVER == 20160203
// shuffle packets
@@ -4639,6 +7257,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
+// 2016-02-11aRagexeRE
+#if PACKETVER == 20160211
+// shuffle packets
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0870,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0886,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2016-02-17cRagexeRE
#if PACKETVER == 20160217
// shuffle packets
@@ -4673,6 +7325,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#endif
+// 2016-02-24bRagexeRE
+#if PACKETVER == 20160224
+// shuffle packets
+ packet(0x022d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0364,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0436,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0861,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x086b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0884,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0885,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0888,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a9,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0920,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0929,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0936,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0938,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0961,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2016-03-02bRagexeRE
#if PACKETVER == 20160302
// shuffle packets
@@ -4752,6 +7438,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2016-03-16aRagexeRE
+#if PACKETVER == 20160316
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0922,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-03-16aRagexeRE
#if PACKETVER >= 20160316
// new packets
packet(0x0a52,20,clif->pDull/*,XXX*/);
@@ -4770,6 +7490,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2016-03-23aRagexeRE
+#if PACKETVER == 20160323
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0867,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0869,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0872,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0878,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0883,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0896,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x091b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0926,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0927,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0933,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x093c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-03-23aRagexeRE
#if PACKETVER >= 20160323
// new packets
packet(0x0a68,3);
@@ -4823,6 +7577,74 @@ packet(0x96e,-1,clif->ackmergeitems);
// changed packet sizes
#endif
+// 2016-04-06aRagexeRE
+#if PACKETVER == 20160406
+// shuffle packets
+ packet(0x0364,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x07e4,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x085a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0869,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0877,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0878,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0879,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0884,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0892,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0895,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0898,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a1,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a9,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08ac,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0927,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0933,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0934,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0940,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0949,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x094d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0953,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0962,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+#endif
+
+// 2016-04-14bRagexeRE
+#if PACKETVER == 20160414
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0363,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0862,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0880,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0885,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0918,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0922,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0927,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0931,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0934,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0945,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0953,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2016-04-20aRagexeRE
#if PACKETVER == 20160420
// shuffle packets
@@ -4858,6 +7680,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2016-04-27aRagexeRE
+#if PACKETVER == 20160427
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0835,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0940,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-04-27aRagexeRE
#if PACKETVER >= 20160427
// new packets
// changed packet sizes
@@ -4865,6 +7721,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2016-05-04aRagexeRE
+#if PACKETVER == 20160504
+// shuffle packets
+ packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0363,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0365,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x083c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x085f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x086b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x087f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0884,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0886,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0887,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x088d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0890,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0893,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0898,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x089d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08ad,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0918,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0921,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0922,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0924,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x093e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0940,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0941,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0948,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0952,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0969,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+#endif
+
+// 2016-05-04aRagexeRE
#if PACKETVER >= 20160504
// new packets
packet(0x0a70,2,clif->pDull/*,XXX*/);
@@ -4916,6 +7806,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2016-05-18aRagexeRE
+#if PACKETVER == 20160518
+// shuffle packets
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0874,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a9,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0928,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-05-18aRagexeRE
#if PACKETVER >= 20160518
// new packets
packet(0x0a76,80);
@@ -4966,6 +7890,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2016-06-01aRagexeRE
+#if PACKETVER == 20160601
+// shuffle packets
+ packet(0x0202,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x02c4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0863,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0870,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x088f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0895,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a7,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08ac,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0924,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x095f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-06-01aRagexeRE
#if PACKETVER >= 20160601
// new packets
packet(0x0a79,-1);
@@ -5054,6 +8012,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2016-06-22aRagexeRE
+#if PACKETVER == 20160622
+// shuffle packets
+ packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x035f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x07e4,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0861,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0865,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0867,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0880,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0887,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0890,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0891,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0892,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x089a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x089e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a2,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a8,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x092f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0936,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0937,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x093b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x093f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0946,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0959,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0965,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0969,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+#endif
+
+// 2016-06-22aRagexeRE
#if PACKETVER >= 20160622
// new packets
packet(0x0a82,46);
@@ -5067,6 +8059,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2016-06-29aRagexeRE
+#if PACKETVER == 20160629
+// shuffle packets
+ packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x022d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x035f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0363,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x085c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x085e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0860,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0861,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0863,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0867,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x086b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0881,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0885,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0893,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x091e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0922,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0925,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0926,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x093e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0946,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0948,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0957,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x095a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0968,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0969,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// 2016-06-29aRagexeRE
#if PACKETVER >= 20160629
// new packets
packet(0x0a89,32);
@@ -5239,15 +8265,6 @@ packet(0x96e,-1,clif->ackmergeitems);
// changed packet sizes
#endif
-// 2016-07-27aRagexeRE
-#if PACKETVER >= 20160727
-// new packets
- packet(0x0a91,-1);
- packet(0x0a92,-1);
- packet(0x0a93,3);
-// changed packet sizes
-#endif
-
// 2016-07-27bRagexeRE
#if PACKETVER == 20160727
// shuffle packets
@@ -5282,6 +8299,49 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
#endif
+// 2016-07-27aRagexeRE
+#if PACKETVER >= 20160727
+// new packets
+ packet(0x0a91,-1);
+ packet(0x0a92,-1);
+ packet(0x0a93,3);
+// changed packet sizes
+#endif
+
+// 2016-08-03bRagexeRE
+#if PACKETVER == 20160803
+// shuffle packets
+ packet(0x0364,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x085d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0878,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0881,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0886,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0887,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0888,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x088b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0891,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0895,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x08a1,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x091b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0929,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0930,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0932,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0934,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0937,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x093a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093e,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x093f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0952,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0955,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0956,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0959,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x095a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
// 2016-08-03bRagexeRE
#if PACKETVER >= 20160803
// new packets
@@ -5290,6 +8350,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a81,4);
#endif
+// 2016-08-10aRagexeRE
+#if PACKETVER == 20160810
+// shuffle packets
+ packet(0x0361,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0819,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0838,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x085d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x085e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x085f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0860,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x086f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0875,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0879,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x087a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0885,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0888,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0890,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x089d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x089f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a9,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x091c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0926,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x092b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x092d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0935,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0943,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x094b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0959,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x095b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0967,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+#endif
+
// 2016-08-31bRagexeRE
#if PACKETVER == 20160831
// shuffle packets
@@ -5365,6 +8459,40 @@ packet(0x96e,-1,clif->ackmergeitems);
// changed packet sizes
#endif
+// 2016-09-13aRagexeRE
+#if PACKETVER == 20160913
+// shuffle packets
+ packet(0x0361,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0817,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0865,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0874,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0875,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0879,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0887,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0889,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0891,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0892,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a5,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0935,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0949,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x094a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0950,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0952,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0954,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0962,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0963,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0968,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
// 2016-09-21bRagexeRE
#if PACKETVER == 20160921
// shuffle packets
@@ -5407,6 +8535,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0a37,59); // ZC_ITEM_PICKUP_ACK_V7
#endif
+// 2016-09-28dRagexeRE
+#if PACKETVER == 20160928
+// shuffle packets
+ packet(0x0202,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0366,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0811,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0838,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0864,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0866,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0872,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0878,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x087f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0889,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0897,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x089a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a9,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0919,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x091e,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0927,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x092d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0944,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0953,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0955,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0957,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+#endif
+
// 2016-09-28cRagexeRE
#if PACKETVER >= 20160928
// new packets
@@ -5423,6 +8585,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2016-10-05aRagexeRE
+#if PACKETVER == 20161005
+// shuffle packets
+ packet(0x0202,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0838,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0863,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0886,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0891,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0892,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x089b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a0,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08ac,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08ad,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0918,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0919,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x092b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0931,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0932,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x093b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0942,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0945,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x094a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x094d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0952,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x095b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0967,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+#endif
+
+// 2016-10-05aRagexeRE
#if PACKETVER >= 20161005
// new packets
packet(0x0aa0,2,clif->pDull/*,XXX*/);
@@ -5467,6 +8663,40 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0967,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
#endif
+// 2016-10-19aRagexeRE
+#if PACKETVER == 20161019
+// shuffle packets
+ packet(0x022d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0361,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0889,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0892,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0963,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2016-10-26bRagexeRE
#if PACKETVER == 20161026
// shuffle packets
@@ -5509,6 +8739,74 @@ packet(0x96e,-1,clif->ackmergeitems);
// changed packet sizes
#endif
+// 2016-11-02aRagexeRE
+#if PACKETVER == 20161102
+// shuffle packets
+ packet(0x0361,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0367,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0436,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0802,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0838,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x083c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0874,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0886,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x088f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0890,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a2,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08aa,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x091b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0922,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0925,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0936,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0949,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0964,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0965,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0966,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+#endif
+
+// 2016-11-03aRagexeRE
+#if PACKETVER == 20161103
+// shuffle packets
+ packet(0x0361,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0367,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0436,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0802,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0838,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x083c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0874,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0886,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x088f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0890,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a2,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08aa,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x091b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0922,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0925,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0936,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0949,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0964,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0965,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0966,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+#endif
+
// 2016-11-09bRagexeRE
#if PACKETVER == 20161109
// shuffle packets
@@ -5543,6 +8841,108 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
+// 2016-11-16cRagexeRE
+#if PACKETVER == 20161116
+// shuffle packets
+ packet(0x0368,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0369,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0835,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x085f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0864,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x086f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0885,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x088b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x088f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0890,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0892,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0893,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a1,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a2,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08aa,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08ac,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0920,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0925,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x092a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0931,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x093c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x094a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0952,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0957,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x095b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0967,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// 2016-11-23aRagexeRE
+#if PACKETVER == 20161123
+// shuffle packets
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0437,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0861,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0862,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0866,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0871,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0880,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0882,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x088b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a9,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08aa,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0926,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x092a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x092f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0930,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0941,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x094d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x094f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x095a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x095b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0962,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x096a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+#endif
+
+// 2016-11-30bRagexeRE
+#if PACKETVER == 20161130
+// shuffle packets
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0931,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0943,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0954,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0959,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
// 2016-11-30aRagexeRE
#if PACKETVER >= 20161130
// new packets
@@ -5675,6 +9075,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2016-12-28aRagexeRE
+#if PACKETVER == 20161228
+// shuffle packets
+ packet(0x0362,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x085a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0865,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x086a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x086c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0870,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0871,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0875,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x087f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0886,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0889,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0893,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a2,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a3,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a5,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08ab,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08ac,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08ad,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0929,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x092c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0934,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0935,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x093d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0944,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+#endif
+
+// 2016-12-28aRagexeRE
#if PACKETVER >= 20161228
// new packets
// changed packet sizes
@@ -5682,6 +9116,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2017-01-04bRagexeRE
+#if PACKETVER == 20170104
+// shuffle packets
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x085a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x087f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0896,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-01-04bRagexeRE
#if PACKETVER >= 20170104
// new packets
packet(0x0ab2,7);
@@ -5690,6 +9158,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2017-01-11aRagexeRE
+#if PACKETVER == 20170111
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0877,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x087f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a1,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a3,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a6,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0940,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x094c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0961,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0969,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-01-11aRagexeRE
#if PACKETVER >= 20170111
// new packets
packet(0x0ab4,4);
@@ -5702,6 +9204,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2017-01-18aRagexeRE
+#if PACKETVER == 20170118
+// shuffle packets
+ packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0862,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0865,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x086f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0873,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08ad,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x091f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0927,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0933,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0958,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0962,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// 2017-01-18aRagexeRE
#if PACKETVER >= 20170118
// new packets
packet(0x0aba,2);
@@ -5746,6 +9282,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2017-02-01aRagexeRE
+#if PACKETVER == 20170201
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0815,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0875,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0879,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0881,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0884,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0885,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0886,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a4,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0919,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0920,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0938,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x094c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0966,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-02-01aRagexeRE
#if PACKETVER >= 20170201
// new packets
packet(0x0abc,-1);
@@ -5787,6 +9357,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2017-02-15aRagexeRE
+#if PACKETVER == 20170215
+// shuffle packets
+ packet(0x02c4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x035f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0360,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x083c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0876,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x087c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x087d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0883,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x088b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0890,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0896,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a2,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08a8,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0925,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x092d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0942,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x095f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0962,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0969,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+#endif
+
+// 2017-02-15aRagexeRE
#if PACKETVER >= 20170215
// new packets
packet(0x0abd,10);
@@ -5794,6 +9398,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2017-02-22aRagexeRE
+#if PACKETVER == 20170222
+// shuffle packets
+ packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0866,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0870,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0871,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0877,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0889,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0894,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a3,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a8,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0937,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0939,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0943,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0962,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-02-22aRagexeRE
#if PACKETVER >= 20170222
// new packets
packet(0x0abe,116);
@@ -5838,8 +9476,8 @@ packet(0x96e,-1,clif->ackmergeitems);
// 2017-02-28aRagexeRE
#if PACKETVER >= 20170228
// new packets
- packet(0x0ac0,26);
- packet(0x0ac1,26);
+ packet(0x0ac0,26,clif->pRodexOpenMailbox); // CZ_OPEN_RODEXBOX
+ packet(0x0ac1,26,clif->pRodexRefreshMaillist); // CZ_REQ_REFRESH_RODEX
packet(0x0ac2,-1);
packet(0x0ac3,2);
packet(0x0ac4,-1);
@@ -6051,6 +9689,74 @@ packet(0x96e,-1,clif->ackmergeitems);
// changed packet sizes
#endif
+// 2017-04-12aRagexeRE
+#if PACKETVER == 20170412
+// shuffle packets
+ packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0365,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0863,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0869,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x086d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0878,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0879,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0890,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0893,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0898,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x089a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x089c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a1,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x091a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0929,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x092e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0938,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0942,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0945,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0949,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x094f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0952,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0959,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x095c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x095d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+#endif
+
+// 2017-04-19bRagexeRE
+#if PACKETVER == 20170419
+// shuffle packets
+ packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0819,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0838,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0862,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0868,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x086a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0872,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0881,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0897,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0898,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x089d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08aa,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0920,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0922,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0930,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0931,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0935,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x093a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0942,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x095c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0963,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0965,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
// 2017-04-19bRagexeRE
#if PACKETVER >= 20170419
// new packets
@@ -6060,6 +9766,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2017-04-26dRagexeRE
+#if PACKETVER == 20170426
+// shuffle packets
+ packet(0x0281,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0866,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0887,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0899,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a2,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0927,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0940,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0958,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0963,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-04-26dRagexeRE
#if PACKETVER >= 20170426
// new packets
// changed packet sizes
@@ -6067,6 +9807,40 @@ packet(0x96e,-1,clif->ackmergeitems);
#endif
// 2017-05-02dRagexeRE
+#if PACKETVER == 20170502
+// shuffle packets
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0875,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0894,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x089c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x093c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0950,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-05-02dRagexeRE
#if PACKETVER >= 20170502
// new packets
packet(0x0ace,4);
@@ -6107,498 +9881,866 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
#endif
-
-/* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */
-#if PACKETVER >= 20110817
- packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20110824
- packetKeys(0x35C91401,0x262A5556,0x28FA03AA); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20110831
- packetKeys(0x3AD67ED0,0x44703C69,0x6F876809); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20110906
- packetKeys(0x3AD67ED0,0x44703C69,0x6F876809); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111005
- packetKeys(0x291E6762,0x77CD391A,0x60AC2F16); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111012
- packetKeys(0x7F3C2D29,0x59B01DE6,0x1DBB44CA); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111021
- packetKeys(0x357D55DC,0x5A8D759F,0x245C30F5); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111025
- packetKeys(0x50AE1A63,0x3CE579B5,0x29C10406); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111102
- packetKeys(0x5324329D,0x5D545D52,0x06137269); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111109
- packetKeys(0x0B642BDA,0x6ECB1D1C,0x61C7454B); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111122
- packetKeys(0x3B550F07,0x1F666C7C,0x60304EF5); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111207
- packetKeys(0x2A610886,0x3E09165E,0x57C11888); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111214
- packetKeys(0x5151306B,0x7AE32886,0x53060628); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111220
- packetKeys(0x05D53871,0x7D0027B4,0x29975333); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111228
- packetKeys(0x0FF87E93,0x6CFF7860,0x3A3D1DEC); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120104
- packetKeys(0x262034A1,0x674542A5,0x73A50BA5); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120111
- packetKeys(0x2B412AFC,0x4FF94487,0x6705339D); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120120
- packetKeys(0x504345D0,0x3D427B1B,0x794C2DCC); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120202
- packetKeys(0x2CFC0A71,0x2BA91D8D,0x087E39E0); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120207
- packetKeys(0x1D373F5D,0x5ACD604D,0x1C4D7C4D); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120214
- packetKeys(0x7A255EFA,0x30977276,0x2D4A0448); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120229
- packetKeys(0x520B4C64,0x2800407D,0x47651458); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120307
- packetKeys(0x382A6DEF,0x5CBE7202,0x61F46637); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120314
- packetKeys(0x689C1729,0x11812639,0x60F82967); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120321
- packetKeys(0x21F9683F,0x710C5CA5,0x1FD910E9); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120328
- packetKeys(0x75B8553B,0x37F20B12,0x385C2B40); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120404
- packetKeys(0x0036310C,0x2DCD0BED,0x1EE62A78); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120410
- packetKeys(0x01581359,0x452D6FFA,0x6AFB6E2E); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120418
- packetKeys(0x01540E48,0x13041224,0x31247924); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120424
- packetKeys(0x411D1DBB,0x4CBA4848,0x1A432FC4); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120509
- packetKeys(0x16CF3301,0x1F472B9B,0x0B4A3CD2); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120515
- packetKeys(0x4A715EF9,0x79103E4F,0x405C1238); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120525
- packetKeys(0x70EB4CCB,0x0487713C,0x398D4B08); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120605
- packetKeys(0x68CA3080,0x31B74BDD,0x505208F1); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120612
- packetKeys(0x32E45D64,0x35643564,0x35643564); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120618
- packetKeys(0x261F261F,0x261F261F,0x261F261F); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120702
- packetKeys(0x25733B31,0x53486CFD,0x398649BD); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120716
- packetKeys(0x76052205,0x22052205,0x22052205); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20130320
- packetKeys(0x3F094C49,0x55F86C1E,0x58AA359A); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20130514
- packetKeys(0x75794A38,0x58A96BC1,0x296E6FB8); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20130522
- packetKeys(0x6948050B,0x06511D9D,0x725D4DF1); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20130529
- packetKeys(0x023A6C87,0x14BF1F1E,0x5CC70CC9); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20130605
- packetKeys(0x646E08D9,0x5F153AB5,0x61B509B5); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20130612
- packetKeys(0x6D166F66,0x3C000FCF,0x295B0FCB); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20130618
- packetKeys(0x434115DE,0x34A10FE9,0x6791428E); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20130626
- packetKeys(0x38F453EF,0x6A040FD8,0X65BD6668); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20130703
- packetKeys(0x4FF90E23,0x0F1432F2,0x4CFA1EDA); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20130807
- packetKeys(0x7E241DE0,0x5E805580,0x3D807D80); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20130814
- packetKeys(0x23A23148,0x0C41420E,0x53785AD7); /* Themon */
-#endif
-
-#if PACKETVER >= 20131218
- packetKeys(0x6A596301,0x76866D0E,0x32294A45);
-#endif
-
-#if PACKETVER >= 20131223
- packetKeys(0x631C511C,0x111C111C,0x111C111C);
-#endif
-
-#if PACKETVER >= 20131230
- packetKeys(0x611B7097,0x01F957A1,0x768A0FCB);
-#endif
-
-// 2014 Packet Keys
-
-#if PACKETVER >= 20140115
- packetKeys(0x63224335,0x0F3A1F27,0x6D217B24); /* Thanks to Yommy */
-#endif
-
-#if PACKETVER >= 20140205
- packetKeys(0x63DC7BDC,0x7BDC7BDC,0x7BDC7BDC); /* Themon */
-#endif
-
-#if PACKETVER >= 20140305
- packetKeys(0x116763F2,0x41117DAC,0x7FD13C45); /* Themon */
-#endif
-
-#if PACKETVER >= 20140402
- packetKeys(0x15D3271C,0x004D725B,0x111A3A37); /* Themon */
-#endif
-
-#if PACKETVER >= 20140416
- packetKeys(0x04810281,0x42814281,0x42814281); /* Themon */
-#endif
-
-#if PACKETVER >= 20141016
- packetKeys(0x2DFF467C,0x444B37EE,0x2C1B634F); /* YomRawr */
-#endif
-
-#if PACKETVER >= 20141022
- packetKeys(0x290551EA,0x2B952C75,0x2D67669B); /* YomRawr */
-#endif
-
-// 2015 Packet Keys
-
-#if PACKETVER == 20150107
- packetKeys(0x6C494A14,0x4DDB6427,0x3E6D7B65); /* 4144 */
-#endif
-
-#if PACKETVER == 20150114
- packetKeys(0x21C96102,0x13142934,0x1ABF4EA3); /* 4144 */
-#endif
-
-#if PACKETVER == 20150128
- packetKeys(0x77CA2D55,0x28B608F0,0x75B47957); /* 4144 */
-#endif
-
-#if PACKETVER == 20150204
- packetKeys(0x134529DB,0x5B4F6CEF,0x29EF11EF); /* 4144 */
-#endif
-
-#if PACKETVER == 20150225
- packetKeys(0x57FD4B7B,0x19CC16FB,0x0D255D72); /* 4144 */
-#endif
-
-#if PACKETVER == 20150226
- packetKeys(0x57FD4B7B,0x19CC16FB,0x0D255D72); /* 4144 */
-#endif
-
-#if PACKETVER == 20150311
- packetKeys(0x48C45D97,0x06CE09B0,0x5836642F); /* 4144 */
-#endif
-
-#if PACKETVER == 20150325
- packetKeys(0x68F62B8C,0x337C3468,0x38FC0AC7); /* 4144 */
-#endif
-
-#if PACKETVER == 20150401
- packetKeys(0x207F3A08,0x57E6160C,0x02A60382); /* 4144 */
-#endif
-
-#if PACKETVER == 20150422
- packetKeys(0x10D22CE2,0x69E279E2,0x79E279E2); /* 4144 */
-#endif
-
-#if PACKETVER == 20150429
- packetKeys(0x2BF61A71,0x565D5DDF,0x0FB90019); /* 4144 */
-#endif
-
-#if PACKETVER == 20150507
- packetKeys(0x55B54373,0x58967821,0x67F41832); /* 4144 */
-#endif
-
-#if PACKETVER >= 20150513
- packetKeys(0x62C86D09,0x75944F17,0x112C133D); /* Dastgir */
-#endif
-
-#if PACKETVER == 20150527
- packetKeys(0x35AE7BAE,0x3BAE3BAE,0x3BAE3BAE); /* 4144 */
-#endif
-
-#if PACKETVER == 20150617
- packetKeys(0x250F7E09,0x25416076,0x029A780E); /* 4144 */
-#endif
-
-#if PACKETVER == 20150618
- packetKeys(0x250F7E09,0x25416076,0x029A780E); /* 4144 */
-#endif
-
-#if PACKETVER == 20150819
- packetKeys(0x1A2400E0,0x736E5686,0x10F315D5); /* 4144 */
-#endif
-
-#if PACKETVER == 20150826
- packetKeys(0x77883C56,0x1829359F,0x0DE635B6); /* 4144 */
-#endif
-
-#if PACKETVER >= 20151001
- packetKeys(0x5CFF4561,0x32514AD1,0x06D126D1); /* Dastgir */
-#endif
-
-#if PACKETVER == 20151007
- packetKeys(0x3C6447A8,0x032170D7,0x6490476C); /* 4144 */
-#endif
-
-#if PACKETVER == 20151014
- packetKeys(0x402728A8,0x5D0E309F,0x240018FD); /* 4144 */
-#endif
-
-#if PACKETVER == 20151028
- packetKeys(0x45B945B9,0x45B945B9,0x45B945B9); /* 4144 */
-#endif
-
-#if PACKETVER >= 20151029
- packetKeys(0x45B945B9,0x45B945B9,0x45B945B9); /* Dastgir */
-#endif
-
-#if PACKETVER >= 20151104
- packetKeys(0x4C17382A,0x7ED174C9,0x29961E4F); /* ossi0110 */
-#endif
-
-#if PACKETVER == 20151118
- packetKeys(0x734C3241,0x6E846F34,0x731C06D6); /* 4144 */
-#endif
-
-#if PACKETVER == 20151202
- packetKeys(0x4EDE52DE,0x52DE52DE,0x52DE52DE); /* 4144 */
-#endif
-
-#if PACKETVER >= 20151216
- packetKeys(0x25DD643D,0x61AC39DE,0x77A8206D); /* Dastgir */
-#endif
-
-#if PACKETVER == 20151223
- packetKeys(0x347D68D0,0x2C705320,0x7B4A199D); /* 4144 */
-#endif
-
-#if PACKETVER == 20160127
- packetKeys(0x6B1E7146,0x612C47E6,0x274E56EE); /* 4144 */
-#endif
-
-#if PACKETVER == 20160203
- packetKeys(0x3E1411AF,0x6C744497,0x7CFA1BDE); /* 4144 */
-#endif
-
-#if PACKETVER == 20160217
- packetKeys(0x25895A8E,0x09421C19,0x763A2D7A); /* 4144 */
-#endif
-
-#if PACKETVER == 20160302
- packetKeys(0x7B4441B9,0x5BBC63AF,0x45DA0E71); /* 4144 */
-#endif
-
-#if PACKETVER == 20160309
- packetKeys(0x21587520,0x353A7706,0x1B722B25); /* 4144 */
-#endif
-
-#if PACKETVER == 20160330
- packetKeys(0x02050940,0x545336FF,0x7E7D4902); /* 4144 */
-#endif
-
-#if PACKETVER == 20160420
- packetKeys(0x67D2163A,0x3068215B,0x4835474D); /* 4144 */
+// 2017-05-24aRagexeRE
+#if PACKETVER == 20170524
+// shuffle packets
+ packet(0x0364,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0368,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0802,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x085e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0860,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0864,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0866,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0868,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0873,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0874,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x087d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0882,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x088d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0894,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a1,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0923,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0925,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0934,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0946,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0958,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x095b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0964,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0967,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0968,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
#endif
-#if PACKETVER == 20160511
- packetKeys(0x3C666FE2,0x27E84E3E,0x53E11BA5); /* 4144 */
+// 2017-05-31aRagexeRE
+#if PACKETVER == 20170531
+// shuffle packets
+ packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0369,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x07e4,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x07ec,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0819,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x085f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0861,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0868,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0873,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0875,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0878,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x087b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0885,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x088d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0894,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a2,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x08ac,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x08ad,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0933,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0937,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0940,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0945,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0963,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0968,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+#endif
+
+// 2017-06-07bRagexeRE
+#if PACKETVER == 20170607
+// shuffle packets
+ packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x07e4,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x085e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0862,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0863,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0864,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0871,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0873,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0875,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0885,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x088a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0897,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a9,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08ab,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0917,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0918,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0919,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0925,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0927,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0931,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0934,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0938,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x093d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0942,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0944,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0949,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// 2017-06-14bRagexeRE
+#if PACKETVER == 20170614
+// shuffle packets
+ packet(0x023b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0361,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0364,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0367,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0437,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0838,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x083c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0860,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0865,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0866,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0867,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x086b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x086c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0877,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x087e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0889,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0899,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a2,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08ad,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0928,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x092f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0936,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0944,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0957,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0963,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
-#if PACKETVER == 20160525
- packetKeys(0x485C45B6,0x47DC6192,0x76B34A36); /* 4144 */
+// 2017-06-14bRagexeRE
+#if PACKETVER >= 20170614
+// new packets
+ packet(0x0acf,52);
+ packet(0x0ad0,11);
+ packet(0x0ad1,-1);
#endif
-#if PACKETVER == 20160608
- packetKeys(0x11D74609,0x77C43E8A,0x44290F53); /* 4144 */
+// 2017-06-21aRagexeRE
+#if PACKETVER == 20170621
+// shuffle packets
+ packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0365,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0366,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0802,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0885,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0889,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a8,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0956,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0957,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0961,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-#if PACKETVER == 20160615
- packetKeys(0x062C5C26,0x6CF47E82,0x4DD53480); /* 4144 */
+// 2017-06-21aRagexeRE
+#if PACKETVER >= 20170621
+// changed packet sizes
+ packet(0x0acf,57);
#endif
-#if PACKETVER == 20160630
- packetKeys(0x0DF31CCC,0x54281606,0x5C4C6855); /* 4144 */
+// 2017-06-28bRagexeRE
+#if PACKETVER == 20170628
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0863,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-#if PACKETVER == 20160706
- packetKeys(0x33A766D0,0x743F04F8,0x0FA0276C); /* 4144 */
+// 2017-07-05aRagexeRE
+#if PACKETVER == 20170705
+// shuffle packets
+ packet(0x0202,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0886,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x088d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x089d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0930,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0932,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0934,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x094c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-#if PACKETVER == 20160713
- packetKeys(0x714F2495,0x7DDC6F32,0x3FD8533D); /* 4144 */
+// 2017-07-05aRagexeRE
+#if PACKETVER >= 20170705
+// changed packet sizes
+ packet(0x0acf,64);
#endif
-#if PACKETVER == 20160720
- packetKeys(0x4F8A19C0,0x2D8E085C,0x37BB67D6); /* 4144 */
+// 2017-07-12bRagexeRE
+#if PACKETVER == 20170712
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0944,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-#if PACKETVER == 20160727
- packetKeys(0x3C6952AB,0x26E4077F,0x37E25DF7); /* 4144 */
+// 2017-07-19aRagexeRE
+#if PACKETVER == 20170719
+// shuffle packets
+ packet(0x022d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0367,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0368,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0369,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x07e4,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0863,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x087d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0881,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0882,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0885,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0891,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0898,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x08a6,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a8,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x091b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x092c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x092e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x092f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x093d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x093e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0944,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0946,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
#endif
-#if PACKETVER == 20160831
- packetKeys(0x564E13B0,0x7F680549,0x382D273B); /* 4144 */
+// 2017-07-19aRagexeRE
+#if PACKETVER >= 20170719
+// new packets
+ packet(0x0ad2,30);
+ packet(0x0ad3,-1);
+ packet(0x0ad4,-1);
+ packet(0x0ad5,2);
+ packet(0x0ad6,2);
+ packet(0x0ad7,8);
+ packet(0x0ad8,8);
+ packet(0x0ad9,-1);
+// changed packet sizes
#endif
-#if PACKETVER == 20160907
- packetKeys(0x32E5237D,0x57BD4DBD,0x5DBD5DBD); /* 4144 */
+// 2017-07-26cRagexeRE
+#if PACKETVER == 20170726
+// shuffle packets
+ packet(0x0363,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0369,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0438,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0838,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0873,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0874,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0878,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0881,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0888,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x088e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a3,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08a7,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08aa,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08ab,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08ac,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x091d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0921,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0923,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0943,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x094f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0950,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0952,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0954,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x095a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0963,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+#endif
+
+// 2017-07-26cRagexeRE
+#if PACKETVER >= 20170726
+// new packets
+ packet(0x0ada,30);
#endif
-#if PACKETVER == 20160921
- packetKeys(0x11CD15CD,0x15CD15CD,0x15CD15CD); /* 4144 */
+// 2017-08-01aRagexeRE
+#if PACKETVER == 20170801
+// shuffle packets
+ packet(0x022d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0281,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a6,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x094f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-#if PACKETVER == 20161012
- packetKeys(0x5E2311F2,0x14FD012C,0x76EB64F6); /* 4144 */
+// 2017-08-16cRagexeRE
+#if PACKETVER == 20170816
+// shuffle packets
+ packet(0x022d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x035f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0362,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0438,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0862,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0864,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x087e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0881,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0882,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0888,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0889,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a3,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a7,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a9,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08ac,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x091c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0921,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0925,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x093a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x093d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0940,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0941,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0950,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0959,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0960,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
#endif
-#if PACKETVER == 20161026
- packetKeys(0x2CB86AE6,0x7D12660E,0x1B004DEB); /* 4144 */
+// 2017-08-23aRagexeRE
+#if PACKETVER == 20170823
+// shuffle packets
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x086d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08ac,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-#if PACKETVER == 20161109
- packetKeys(0x0A5277C0,0x2DB17506,0x0E8F26DA); /* 4144 */
+// 2017-08-30bRagexeRE
+#if PACKETVER == 20170830
+// shuffle packets
+ packet(0x0281,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x02c4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0363,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0364,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0860,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0865,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x086a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0875,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0884,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0885,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0888,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0899,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a8,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091e,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0921,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0925,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x092e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0939,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0940,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0942,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0943,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0947,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0951,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0959,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
#endif
-#if PACKETVER == 20161207
- packetKeys(0x52D267AA,0x4FE42156,0x1292153E); /* 4144 */
+// 2017-08-30aRagexeRE
+#if PACKETVER >= 20170830
+// new packets
+ packet(0x0adb,-1);
+// changed packet sizes
+ packet(0x006d,157); // HC_ACCEPT_MAKECHAR
+ packet(0x08e3,157); // HC_UPDATE_CHARINFO
+ packet(0x0a49,20);
#endif
-#if PACKETVER == 20161214
- packetKeys(0x4DDE217B,0x07863AE0,0x5B591656); /* 4144 */
+// 2017-09-06cRagexeRE
+#if PACKETVER == 20170906
+// shuffle packets
+ packet(0x0202,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0281,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0860,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0866,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a2,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a3,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a7,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0953,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-#if PACKETVER == 20161221
- packetKeys(0x69CB4F56,0x793C165E,0x673A2354); /* 4144 */
+// 2017-09-06cRagexeRE
+#if PACKETVER >= 20170906
+// new packets
+ packet(0x0adc,6);
#endif
-#if PACKETVER == 20170125
- packetKeys(0x066E04FE,0x3004224A,0x04FF0458); /* 4144 */
+// 2017-09-13bRagexeRE
+#if PACKETVER == 20170913
+// shuffle packets
+ packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x035f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0437,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x07e4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0817,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0835,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x085a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0860,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0865,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0866,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x088c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0890,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0891,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0892,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a6,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a7,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08aa,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08ab,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08ac,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ad,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x091b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x091d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0920,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0923,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0925,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0927,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x095a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x095c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+#endif
+
+// 2017-09-13bRagexeRE
+#if PACKETVER >= 20170913
+// new packets
+ packet(0x0add,22);
#endif
-#if PACKETVER == 20170208
- packetKeys(0x6A764E5F,0x0609570D,0x28AE07FA); /* 4144 */
+// 2017-09-20bRagexeRE
+#if PACKETVER == 20170920
+// shuffle packets
+ packet(0x0369,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0436,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x07ec,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x085a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0861,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0862,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0864,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0865,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x086a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x086c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0874,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0875,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0889,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x088e,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x089b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0919,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0921,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0923,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0926,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0937,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0939,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0945,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x094c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x095d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0961,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0966,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x096a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
#endif
-#if PACKETVER == 20170228
- packetKeys(0x771D4F2B,0x20EF1F4C,0x0D5135C8); /* 4144 */
+#if PACKETVER >= 20170920
+// new packets
+ packet(0x0ade,6);
+ packet(0x0adf,58);
#endif
-#if PACKETVER == 20170308
- packetKeys(0x653470A9,0x6B316A71,0x5C712C71); /* 4144 */
+// 2017-09-27bRagexeRE
+#if PACKETVER == 20170927
+// shuffle packets
+ packet(0x02c4,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x035f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0361,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0362,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x085c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0873,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0875,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x087d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x087e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x088b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0899,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a3,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08a5,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a6,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08ad,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x091e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0922,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0923,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0927,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x093b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0942,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0945,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x094b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x094d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0959,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x095a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+#endif
+
+#if PACKETVER >= 20170927
+// new packets
+ packet(0x0ae0,30);
+// changed packet sizes
#endif
-#if PACKETVER == 20170315
- packetKeys(0x399A0856,0x56642A94,0x7F77157D); /* 4144 */
+// 2017-10-02cRagexeRE
+#if PACKETVER == 20171002
+// shuffle packets
+ packet(0x022d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0363,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0885,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0897,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0928,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x092d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0934,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x093d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x093e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0943,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x095f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-#if PACKETVER == 20170322
- packetKeys(0x2050167B,0x01731233,0x40337033); /* 4144 */
+// 2017-10-11bRagexeRE
+#if PACKETVER == 20171011
+// shuffle packets
+ packet(0x023b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0882,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0950,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0954,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-#if PACKETVER == 20170329
- packetKeys(0x18B31A80,0x1B0B1D56,0x16857D6A); /* 4144 */
+// 2017-10-18aRagexeRE
+#if PACKETVER == 20171018
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0889,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a6,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0938,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0944,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x094f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-#if PACKETVER == 20170405
- packetKeys(0x1FDE7DAC,0x2F9F5B63,0x3F2062AF); /* 4144 */
+// 2017-10-25eRagexeRE
+#if PACKETVER == 20171025
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-#if PACKETVER == 20170517
- packetKeys(0x2CC4749A,0x1FA954DC,0x72276857); /* 4144 */
+// 2017-11-01bRagexeRE
+#if PACKETVER == 20171101
+// shuffle packets
+ packet(0x022d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0368,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0369,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0835,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x085b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0860,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x086c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0872,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0876,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0886,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0890,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0895,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0899,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a0,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08ab,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08ad,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0939,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x094a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0957,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x095a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0962,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0966,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
#endif
-#if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3)
- packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3);
+// 2017-11-01bRagexeRE
+#if PACKETVER >= 20171101
+// new packets
+ packet(0x0ae1,28);
#endif
#endif /* MAP_PACKETS_H */
diff --git a/src/map/packets_keys.h b/src/map/packets_keys.h
new file mode 100644
index 000000000..005c3790b
--- /dev/null
+++ b/src/map/packets_keys.h
@@ -0,0 +1,2170 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2017 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MAP_PACKETS_KEYS_H
+#define MAP_PACKETS_KEYS_H
+
+#ifndef packetKeys
+ #define packetKeys(a,b,c)
+#endif
+
+/* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */
+
+// 2010-11-23aRagexe, 2010-11-23aRagexeRE
+#if PACKETVER == 20101123
+ packetKeys(0x49357D72,0x22C370A1,0x5F836591);
+#endif
+
+// 2010-11-24aRagexe, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-24dRagexe, 2010-11-24eRagexe, 2010-11-24fRagexe
+#if PACKETVER == 20101124
+ packetKeys(0x49357D72,0x22C370A1,0x5F836591);
+#endif
+
+// 2010-11-26aRagexe, 2010-11-26aRagexeRE
+#if PACKETVER == 20101126
+ packetKeys(0x49357D72,0x22C370A1,0x5F836591);
+#endif
+
+// 2010-11-30aRagexe, 2010-11-30aRagexeRE
+#if PACKETVER == 20101130
+ packetKeys(0x3726593C,0x0EFD5EE8,0x79036DF9);
+#endif
+
+// 2010-12-07aRagexeRE, 2010-12-07bRagexe
+#if PACKETVER == 20101207
+ packetKeys(0x66111112,0x2B7B53AA,0x04E76DF8);
+#endif
+
+// 2010-12-14aRagexe, 2010-12-14aRagexeRE
+#if PACKETVER == 20101214
+ packetKeys(0x5E535D06,0x4E297F0E,0x400B6AD8);
+#endif
+
+// 2010-12-21aRagexe, 2010-12-21aRagexeRE
+#if PACKETVER == 20101221
+ packetKeys(0x0448466A,0x41554AC9,0x5B4710B2);
+#endif
+
+// 2010-12-28aRagexe, 2010-12-28aRagexeRE
+#if PACKETVER == 20101228
+ packetKeys(0x50C638A5,0x4BF86B20,0x480C3746);
+#endif
+
+// 2011-01-04aRagexe, 2011-01-04aRagexeRE
+#if PACKETVER == 20110104
+ packetKeys(0x55DB401F,0x047D4E02,0x6D8F2EA3);
+#endif
+
+// 2011-01-11aRagexe, 2011-01-11aRagexeRE
+#if PACKETVER == 20110111
+ packetKeys(0x2D5F6302,0x2A361CD6,0x39D661D6);
+#endif
+
+// 2011-01-18aRagexe, 2011-01-18aRagexeRE
+#if PACKETVER == 20110118
+ packetKeys(0x3C777D2D,0x00541A1D,0x5E0053A2);
+#endif
+
+// 2011-01-25aRagexe, 2011-01-25aRagexeRE
+#if PACKETVER == 20110125
+ packetKeys(0x6BB84BB0,0x4C004382,0x10AE3260);
+#endif
+
+// 2011-01-26aRagexe, 2011-01-26aRagexeRE, 2011-01-26bRagexe, 2011-01-26bRagexeRE
+#if PACKETVER == 20110126
+ packetKeys(0x6BB84BB0,0x4C004382,0x10AE3260);
+#endif
+
+// 2011-01-31aRagexe, 2011-01-31aRagexeRE, 2011-01-31bRagexe, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE
+#if PACKETVER == 20110131
+ packetKeys(0x6BB84BB0,0x4C004382,0x10AE3260);
+#endif
+
+// 2011-02-01aRagexe
+#if PACKETVER == 20110201
+ packetKeys(0x68871E62,0x60D17266,0x74726DAA);
+#endif
+
+// 2011-02-08aRagexe, 2011-02-08aRagexeRE
+#if PACKETVER == 20110208
+ packetKeys(0x72BA4E9D,0x281E1DF1,0x208255AA);
+#endif
+
+// 2011-02-10aRagexe, 2011-02-10bRagexe
+#if PACKETVER == 20110210
+ packetKeys(0x72BA4E9D,0x281E1DF1,0x208255AA);
+#endif
+
+// 2011-02-15aRagexe, 2011-02-15aRagexeRE
+#if PACKETVER == 20110215
+ packetKeys(0x1B174D76,0x32005014,0x7B8B72D5);
+#endif
+
+// 2011-02-22aRagexe, 2011-02-22aRagexeRE
+#if PACKETVER == 20110222
+ packetKeys(0x48F73B56,0x155F7D66,0x44AB57CE);
+#endif
+
+// 2011-02-23aRagexe, 2011-02-23aRagexeRE, 2011-02-23bRagexe, 2011-02-23bRagexeRE
+#if PACKETVER == 20110223
+ packetKeys(0x48F73B56,0x155F7D66,0x44AB57CE);
+#endif
+
+// 2011-02-24aRagexe, 2011-02-24aRagexeRE
+#if PACKETVER == 20110224
+ packetKeys(0x48F73B56,0x155F7D66,0x44AB57CE);
+#endif
+
+// 2011-02-25aRagexe, 2011-02-25aRagexeRE, 2011-02-25bRagexe
+#if PACKETVER == 20110225
+ packetKeys(0x48F73B56,0x155F7D66,0x44AB57CE);
+#endif
+
+// 2011-02-28aRagexe, 2011-02-28aRagexeRE
+#if PACKETVER == 20110228
+ packetKeys(0x26385EBF,0x7A8C7534,0x60AE2C34);
+#endif
+
+// 2011-03-08aRagexe, 2011-03-08aRagexeRE
+#if PACKETVER == 20110308
+ packetKeys(0x003F1B20,0x7A1E12A3,0x34994AAD);
+#endif
+
+// 2011-03-09aRagexe, 2011-03-09aRagexeRE, 2011-03-09bRagexe, 2011-03-09bRagexeRE, 2011-03-09cRagexe, 2011-03-09cRagexeRE, 2011-03-09dRagexe, 2011-03-09dRagexeRE
+#if PACKETVER == 20110309
+ packetKeys(0x003F1B20,0x7A1E12A3,0x34994AAD);
+#endif
+
+// 2011-03-15aRagexe, 2011-03-15aRagexeRE
+#if PACKETVER == 20110315
+ packetKeys(0x62967D7D,0x34833D1A,0x26D45ECA);
+#endif
+
+// 2011-03-16aRagexe
+#if PACKETVER == 20110316
+ packetKeys(0x62967D7D,0x34833D1A,0x26D45ECA);
+#endif
+
+// 2011-03-22aRagexe, 2011-03-22aRagexeRE
+#if PACKETVER == 20110322
+ packetKeys(0x5870617C,0x638D5376,0x739F4817);
+#endif
+
+// 2011-03-29aRagexe, 2011-03-29aRagexeRE
+#if PACKETVER == 20110329
+ packetKeys(0x06900BB7,0x45DB687B,0x197B017B);
+#endif
+
+// 2011-03-30aRagexe, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE
+#if PACKETVER == 20110330
+ packetKeys(0x06900BB7,0x45DB687B,0x197B017B);
+#endif
+
+// 2011-04-05aRagexe, 2011-04-05aRagexeRE
+#if PACKETVER == 20110405
+ packetKeys(0x248D5C37,0x1C6A1B37,0x1F644FDB);
+#endif
+
+// 2011-04-12aRagexeRE, 2011-04-12bRagexe
+#if PACKETVER == 20110412
+ packetKeys(0x3DE86BFC,0x0DD47F80,0x42481C9B);
+#endif
+
+// 2011-04-19aRagexe, 2011-04-19aRagexeRE
+#if PACKETVER == 20110419
+ packetKeys(0x26073204,0x62013A51,0x22AC58E0);
+#endif
+
+// 2011-04-26aRagexe, 2011-04-26aRagexeRE
+#if PACKETVER == 20110426
+ packetKeys(0x392813F9,0x09905054,0x40DB732E);
+#endif
+
+// 2011-05-03aRagexe, 2011-05-03aRagexeRE
+#if PACKETVER == 20110503
+ packetKeys(0x28BE32EE,0x1D506FCB,0x63832421);
+#endif
+
+// 2011-05-11aRagexe, 2011-05-11aRagexeRE
+#if PACKETVER == 20110511
+ packetKeys(0x6A715733,0x3C5C0D74,0x408A48EC);
+#endif
+
+// 2011-05-17aRagexe, 2011-05-17bRagexeRE
+#if PACKETVER == 20110517
+ packetKeys(0x07FE0C72,0x46766BAD,0x5EB5126A);
+#endif
+
+// 2011-05-23aRagexe
+#if PACKETVER == 20110523
+ packetKeys(0x69166916,0x69166916,0x69166916);
+#endif
+
+// 2011-05-26aRagexeRE, 2011-05-26bRagexe
+#if PACKETVER == 20110526
+ packetKeys(0x69166916,0x69166916,0x69166916);
+#endif
+
+// 2011-05-31aRagexe, 2011-05-31aRagexeRE
+#if PACKETVER == 20110531
+ packetKeys(0x5ABA2C7C,0x3CD22073,0x78953988);
+#endif
+
+// 2011-06-07aRagexe, 2011-06-07aRagexeRE
+#if PACKETVER == 20110607
+ packetKeys(0x76B0426C,0x0DD74DEB,0x1F92228E);
+#endif
+
+// 2011-06-08aRagexe, 2011-06-08aRagexeRE, 2011-06-08bRagexe, 2011-06-08bRagexeRE, 2011-06-08cRagexe, 2011-06-08cRagexeRE
+#if PACKETVER == 20110608
+ packetKeys(0x76B0426C,0x0DD74DEB,0x1F92228E);
+#endif
+
+// 2011-06-09aRagexe, 2011-06-09aRagexeRE
+#if PACKETVER == 20110609
+ packetKeys(0x76B0426C,0x0DD74DEB,0x1F92228E);
+#endif
+
+// 2011-06-14aRagexe, 2011-06-14bRagexeRE
+#if PACKETVER == 20110614
+ packetKeys(0x5749027B,0x71710972,0x5B096475);
+#endif
+
+// 2011-06-20aRagexe
+#if PACKETVER == 20110620
+ packetKeys(0x3A1760D4,0x254E0DF9,0x440E2357);
+#endif
+
+// 2011-06-27aRagexe
+#if PACKETVER == 20110627
+ packetKeys(0x3EFC29BD,0x699E4B11,0x7B900A13);
+#endif
+
+// 2011-07-05aRagexe
+#if PACKETVER == 20110705
+ packetKeys(0x48801A5E,0x68FC7726,0x081D7F6E);
+#endif
+
+// 2011-07-11bRagexe
+#if PACKETVER == 20110711
+ packetKeys(0x489C544B,0x33BA1C25,0x2DE66E4E);
+#endif
+
+// 2011-07-13aRagexe, 2011-07-13aRagexeRE, 2011-07-13bRagexe, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE
+#if PACKETVER == 20110713
+ packetKeys(0x489C544B,0x33BA1C25,0x2DE66E4E);
+#endif
+
+// 2011-07-18aRagexe
+#if PACKETVER == 20110718
+ packetKeys(0x08464674,0x1EEB3BD5,0x33395199);
+#endif
+
+// 2011-07-26aRagexe, 2011-07-26aRagexeRE
+#if PACKETVER == 20110726
+ packetKeys(0x41E5730B,0x119C6C11,0x5356524A);
+#endif
+
+// 2011-08-02aRagexe
+#if PACKETVER == 20110802
+ packetKeys(0x607C08A1,0x65B20528,0x360571E9);
+#endif
+
+// 2011-08-09aRagexe
+#if PACKETVER == 20110809
+ packetKeys(0x742A559A,0x047F425D,0x5C8C2CA0);
+#endif
+
+// 2011-08-16aRagexe, 2011-08-16aRagexeRE
+#if PACKETVER == 20110816
+ packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED);
+#endif
+
+// 2011-08-17aRagexe, 2011-08-17aRagexeRE, 2011-08-17bRagexe, 2011-08-17bRagexeRE
+#if PACKETVER == 20110817
+ packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED);
+#endif
+
+// 2011-08-23aRagexe, 2011-08-23aRagexeRE
+#if PACKETVER == 20110823
+ packetKeys(0x35C91401,0x262A5556,0x28FA03AA);
+#endif
+
+// 2011-08-24aRagexe, 2011-08-24aRagexeRE, 2011-08-24bRagexeRE
+#if PACKETVER == 20110824
+ packetKeys(0x35C91401,0x262A5556,0x28FA03AA);
+#endif
+
+// 2011-08-31aRagexe, 2011-08-31aRagexeRE, 2011-08-31bRagexe, 2011-08-31bRagexeRE, 2011-08-31cRagexe, 2011-08-31cRagexeRE, 2011-08-31dRagexeRE, 2011-08-31eRagexeRE
+#if PACKETVER == 20110831
+ packetKeys(0x3AD67ED0,0x44703C69,0x6F876809);
+#endif
+
+// 2011-09-06aRagexe, 2011-09-06aRagexeRE
+#if PACKETVER == 20110906
+ packetKeys(0x350124EC,0x39A14595,0x0DE56125);
+#endif
+
+// 2011-09-14aRagexe, 2011-09-14aRagexeRE
+#if PACKETVER == 20110914
+ packetKeys(0x350124EC,0x39A14595,0x0DE56125);
+#endif
+
+// 2011-09-20aRagexe, 2011-09-20aRagexeRE, 2011-09-20aRagexeRE2
+#if PACKETVER == 20110920
+ packetKeys(0x79C91A12,0x20450CC0,0x584B2A38);
+#endif
+
+// 2011-09-28aRagexe, 2011-09-28aRagexe-retry, 2011-09-28aRagexeRE
+#if PACKETVER == 20110928
+ packetKeys(0x26567512,0x4B0732DF,0x57D266C6);
+#endif
+
+// 2011-09-29aRagexe, 2011-09-29aRagexeRE
+#if PACKETVER == 20110929
+ packetKeys(0x26567512,0x4B0732DF,0x57D266C6);
+#endif
+
+// 2011-10-04aRagexe, 2011-10-04aRagexeRE
+#if PACKETVER == 20111004
+ packetKeys(0x291E6762,0x77CD391A,0x60AC2F16);
+#endif
+
+// 2011-10-05aRagexe, 2011-10-05aRagexeRE
+#if PACKETVER == 20111005
+ packetKeys(0x291E6762,0x77CD391A,0x60AC2F16);
+#endif
+
+// 2011-10-10aRagexe, 2011-10-10bRagexeRE
+#if PACKETVER == 20111010
+ packetKeys(0x7F3C2D29,0x59B01DE6,0x1DBB44CA);
+#endif
+
+// 2011-10-12aRagexeRE, 2011-10-12bRagexe
+#if PACKETVER == 20111012
+ packetKeys(0x7F3C2D29,0x59B01DE6,0x1DBB44CA);
+#endif
+
+// 2011-10-17aRagexe, 2011-10-17aRagexeRE
+#if PACKETVER == 20111017
+ packetKeys(0x357D55DC,0x5A8D759F,0x245C30F5);
+#endif
+
+// 2011-10-19aRagexeRE, 2011-10-19bRagexeRE
+#if PACKETVER == 20111019
+ packetKeys(0x357D55DC,0x5A8D759F,0x245C30F5);
+#endif
+
+// 2011-10-21aRagexe, 2011-10-21aRagexeRE, 2011-10-21cRagexe
+#if PACKETVER == 20111021
+ packetKeys(0x357D55DC,0x5A8D759F,0x245C30F5);
+#endif
+
+// 2011-10-25aRagexe, 2011-10-25aRagexeRE
+#if PACKETVER == 20111025
+ packetKeys(0x50AE1A63,0x3CE579B5,0x29C10406);
+#endif
+
+// 2011-11-01cRagexe, 2011-11-01cRagexeRE
+#if PACKETVER == 20111101
+ packetKeys(0x5324329D,0x5D545D52,0x06137269);
+#endif
+
+// 2011-11-02aRagexe, 2011-11-02aRagexeRE
+#if PACKETVER == 20111102
+ packetKeys(0x5324329D,0x5D545D52,0x06137269);
+#endif
+
+// 2011-11-08aRagexe, 2011-11-08aRagexeRE
+#if PACKETVER == 20111108
+ packetKeys(0x0B642BDA,0x6ECB1D1C,0x61C7454B);
+#endif
+
+// 2011-11-09aRagexe, 2011-11-09aRagexeRE, 2011-11-09bRagexe, 2011-11-09cRagexe, 2011-11-09dRagexe, 2011-11-09eRagexe
+#if PACKETVER == 20111109
+ packetKeys(0x0B642BDA,0x6ECB1D1C,0x61C7454B);
+#endif
+
+// 2011-11-14aRagexe, 2011-11-14aRagexeRE
+#if PACKETVER == 20111114
+ packetKeys(0x419D0DB0,0x74916BF4,0x027371B4);
+#endif
+
+// 2011-11-16aRagexe, 2011-11-16aRagexeRE
+#if PACKETVER == 20111116
+ packetKeys(0x419D0DB0,0x74916BF4,0x027371B4);
+#endif
+
+// 2011-11-22aRagexe, 2011-11-22aRagexeRE
+#if PACKETVER == 20111122
+ packetKeys(0x3B550F07,0x1F666C7C,0x60304EF5);
+#endif
+
+// 2011-11-23aRagexe
+#if PACKETVER == 20111123
+ packetKeys(0x3B550F07,0x1F666C7C,0x60304EF5);
+#endif
+
+// 2011-12-07aRagexe, 2011-12-07aRagexeRE
+#if PACKETVER == 20111207
+ packetKeys(0x2A610886,0x3E09165E,0x57C11888);
+#endif
+
+// 2011-12-13aRagexe, 2011-12-13aRagexeRE
+#if PACKETVER == 20111213
+ packetKeys(0x5151306B,0x7AE32886,0x53060628);
+#endif
+
+// 2011-12-14aRagexe, 2011-12-14aRagexeRE, 2011-12-14bRagexeRE, 2011-12-14cRagexeRE
+#if PACKETVER == 20111214
+ packetKeys(0x5151306B,0x7AE32886,0x53060628);
+#endif
+
+// 2011-12-20bRagexe, 2011-12-20bRagexeRE
+#if PACKETVER == 20111220
+ packetKeys(0x05D53871,0x7D0027B4,0x29975333);
+#endif
+
+// 2011-12-27aRagexe, 2011-12-27aRagexeRE
+#if PACKETVER == 20111227
+ packetKeys(0x0FF87E93,0x6CFF7860,0x3A3D1DEC);
+#endif
+
+// 2011-12-28aRagexe, 2011-12-28aRagexeRE
+#if PACKETVER == 20111228
+ packetKeys(0x0FF87E93,0x6CFF7860,0x3A3D1DEC);
+#endif
+
+// 2012-01-03aRagexe, 2012-01-03bRagexeRE
+#if PACKETVER == 20120103
+ packetKeys(0x262034A1,0x674542A5,0x73A50BA5);
+#endif
+
+// 2012-01-04aRagexe, 2012-01-04aRagexeRE, 2012-01-04bRagexe
+#if PACKETVER == 20120104
+ packetKeys(0x262034A1,0x674542A5,0x73A50BA5);
+#endif
+
+// 2012-01-10aRagexeRE, 2012-01-10bRagexe
+#if PACKETVER == 20120110
+ packetKeys(0x2B412AFC,0x4FF94487,0x6705339D);
+#endif
+
+// 2012-01-17aRagexe, 2012-01-17aRagexeRE
+#if PACKETVER == 20120117
+ packetKeys(0x24E32C2E,0x48DD17A5,0x64F8771A);
+#endif
+
+// 2012-01-18aRagexe
+#if PACKETVER == 20120118
+ packetKeys(0x24E32C2E,0x48DD17A5,0x64F8771A);
+#endif
+
+// 2012-01-20aRagexe, 2012-01-20aRagexeRE
+#if PACKETVER == 20120120
+ packetKeys(0x504345D0,0x3D427B1B,0x794C2DCC);
+#endif
+
+// 2012-01-31aRagexe, 2012-01-31cRagexeRE
+#if PACKETVER == 20120131
+ packetKeys(0x2CFC0A71,0x2BA91D8D,0x087E39E0);
+#endif
+
+// 2012-02-01aRagexeRE
+#if PACKETVER == 20120201
+ packetKeys(0x2CFC0A71,0x2BA91D8D,0x087E39E0);
+#endif
+
+// 2012-02-02aRagexe, 2012-02-02aRagexeRE, 2012-02-02bRagexe, 2012-02-02bRagexeRE
+#if PACKETVER == 20120202
+ packetKeys(0x2CFC0A71,0x2BA91D8D,0x087E39E0);
+#endif
+
+// 2012-02-07bRagexe, 2012-02-07bRagexeRE
+#if PACKETVER == 20120207
+ packetKeys(0x1D373F5D,0x5ACD604D,0x1C4D7C4D);
+#endif
+
+// 2012-02-08aRagexe
+#if PACKETVER == 20120208
+ packetKeys(0x1D373F5D,0x5ACD604D,0x1C4D7C4D);
+#endif
+
+// 2012-02-09aRagexe
+#if PACKETVER == 20120209
+ packetKeys(0x1D373F5D,0x5ACD604D,0x1C4D7C4D);
+#endif
+
+// 2012-02-14bRagexe, 2012-02-14bRagexeRE
+#if PACKETVER == 20120214
+ packetKeys(0x7A255EFA,0x30977276,0x2D4A0448);
+#endif
+
+// 2012-02-15aRagexe
+#if PACKETVER == 20120215
+ packetKeys(0x7A255EFA,0x30977276,0x2D4A0448);
+#endif
+
+// 2012-02-21aRagexe, 2012-02-21aRagexeRE
+#if PACKETVER == 20120221
+ packetKeys(0x1CA5130F,0x43ED240A,0x7FEA3BE0);
+#endif
+
+// 2012-02-22aRagexe, 2012-02-22aRagexeRE
+#if PACKETVER == 20120222
+ packetKeys(0x1CA5130F,0x43ED240A,0x7FEA3BE0);
+#endif
+
+// 2012-02-28bRagexe, 2012-02-28bRagexeRE
+#if PACKETVER == 20120228
+ packetKeys(0x520B4C64,0x2800407D,0x47651458);
+#endif
+
+// 2012-02-29aRagexe, 2012-02-29aRagexeRE
+#if PACKETVER == 20120229
+ packetKeys(0x520B4C64,0x2800407D,0x47651458);
+#endif
+
+// 2012-03-07aRagexe, 2012-03-07aRagexeRE, 2012-03-07bRagexe, 2012-03-07bRagexeRE, 2012-03-07cRagexe, 2012-03-07cRagexeRE, 2012-03-07dRagexe, 2012-03-07dRagexeRE, 2012-03-07eRagexeRE, 2012-03-07fRagexeRE
+#if PACKETVER == 20120307
+ packetKeys(0x382A6DEF,0x5CBE7202,0x61F46637);
+#endif
+
+// 2012-03-14aRagexe, 2012-03-14aRagexeRE, 2012-03-14bRagexe, 2012-03-14bRagexeRE, 2012-03-14cRagexe, 2012-03-14cRagexeRE
+#if PACKETVER == 20120314
+ packetKeys(0x689C1729,0x11812639,0x60F82967);
+#endif
+
+// 2012-03-20aRagexe, 2012-03-20aRagexeRE
+#if PACKETVER == 20120320
+ packetKeys(0x21F9683F,0x710C5CA5,0x1FD910E9);
+#endif
+
+// 2012-03-21aRagexeRE
+#if PACKETVER == 20120321
+ packetKeys(0x21F9683F,0x710C5CA5,0x1FD910E9);
+#endif
+
+// 2012-03-28aRagexe, 2012-03-28aRagexeRE, 2012-03-28bRagexe, 2012-03-28bRagexeRE, 2012-03-28cRagexe, 2012-03-28cRagexeRE, 2012-03-28dRagexe, 2012-03-28dRagexeRE, 2012-03-28eRagexeRE, 2012-03-28fRagexeRE, 2012-03-28gRagexeRE
+#if PACKETVER == 20120328
+ packetKeys(0x75B8553B,0x37F20B12,0x385C2B40);
+#endif
+
+// 2012-04-04aRagexe, 2012-04-04aRagexeRE
+#if PACKETVER == 20120404
+ packetKeys(0x0036310C,0x2DCD0BED,0x1EE62A78);
+#endif
+
+// 2012-04-10aRagexe, 2012-04-10aRagexeRE
+#if PACKETVER == 20120410
+ packetKeys(0x01581359,0x452D6FFA,0x6AFB6E2E);
+#endif
+
+// 2012-04-17aRagexe, 2012-04-17aRagexeRE
+#if PACKETVER == 20120417
+ packetKeys(0x01540E48,0x13041224,0x31247924);
+#endif
+
+// 2012-04-18aRagexeRE
+#if PACKETVER == 20120418
+ packetKeys(0x01540E48,0x13041224,0x31247924);
+#endif
+
+// 2012-04-24aRagexe, 2012-04-24aRagexeRE
+#if PACKETVER == 20120424
+ packetKeys(0x411D1DBB,0x4CBA4848,0x1A432FC4);
+#endif
+
+// 2012-05-02aRagexeRE
+#if PACKETVER == 20120502
+ packetKeys(0x37A91D19,0x10190019,0x00190019);
+#endif
+
+// 2012-05-03aRagexe, 2012-05-03aRagexeRE, 2012-05-03bRagexe
+#if PACKETVER == 20120503
+ packetKeys(0x37A91D19,0x10190019,0x00190019);
+#endif
+
+// 2012-05-08aRagexe, 2012-05-08aRagexeRE
+#if PACKETVER == 20120508
+ packetKeys(0x16CF3301,0x1F472B9B,0x0B4A3CD2);
+#endif
+
+// 2012-05-09aRagexeRE, 2012-05-09bRagexeRE
+#if PACKETVER == 20120509
+ packetKeys(0x16CF3301,0x1F472B9B,0x0B4A3CD2);
+#endif
+
+// 2012-05-15aRagexe, 2012-05-15aRagexeRE
+#if PACKETVER == 20120515
+ packetKeys(0x4A715EF9,0x79103E4F,0x405C1238);
+#endif
+
+// 2012-05-22aRagexe
+#if PACKETVER == 20120522
+ packetKeys(0x70EB4CCB,0x0487713C,0x398D4B08);
+#endif
+
+// 2012-05-23aRagexe, 2012-05-23aRagexeRE, 2012-05-23bRagexeRE
+#if PACKETVER == 20120523
+ packetKeys(0x70EB4CCB,0x0487713C,0x398D4B08);
+#endif
+
+// 2012-05-25aRagexeRE
+#if PACKETVER == 20120525
+ packetKeys(0x70EB4CCB,0x0487713C,0x398D4B08);
+#endif
+
+// 2012-05-29bRagexe, 2012-05-29bRagexeRE, 2012-05-29bragexe
+#if PACKETVER == 20120529
+ packetKeys(0x53415DDE,0x34953E16,0x27623DF2);
+#endif
+
+// 2012-06-01aRagexeRE
+#if PACKETVER == 20120601
+ packetKeys(0x68CA3080,0x31B74BDD,0x505208F1);
+#endif
+
+// 2012-06-04aRagexe, 2012-06-04aragexe
+#if PACKETVER == 20120604
+ packetKeys(0x68CA3080,0x31B74BDD,0x505208F1);
+#endif
+
+// 2012-06-05aRagexeRE
+#if PACKETVER == 20120605
+ packetKeys(0x68CA3080,0x31B74BDD,0x505208F1);
+#endif
+
+// 2012-06-12aRagexe, 2012-06-12aRagexeRE, 2012-06-12aragexe
+#if PACKETVER == 20120612
+ packetKeys(0x32E45D64,0x35643564,0x35643564);
+#endif
+
+// 2012-06-18aRagexe, 2012-06-18aRagexeRE, 2012-06-18aragexe
+#if PACKETVER == 20120618
+ packetKeys(0x261F261F,0x261F261F,0x261F261F);
+#endif
+
+// 2012-06-26aRagexe, 2012-06-26aRagexeRE, 2012-06-26aragexe
+#if PACKETVER == 20120626
+ packetKeys(0x02277E66,0x045723F1,0x7107392C);
+#endif
+
+// 2012-06-27aRagexe, 2012-06-27aRagexeRE, 2012-06-27aragexe
+#if PACKETVER == 20120627
+ packetKeys(0x02277E66,0x045723F1,0x7107392C);
+#endif
+
+// 2012-07-02aRagexe, 2012-07-02aRagexeRE, 2012-07-02aragexe
+#if PACKETVER == 20120702
+ packetKeys(0x25733B31,0x53486CFD,0x398649BD);
+#endif
+
+// 2012-07-10aRagexe, 2012-07-10aRagexeRE
+#if PACKETVER == 20120710
+ packetKeys(0x0E8B7AFB,0x6930362D,0x42D33A57);
+#endif
+
+// 2012-07-12aRagexe, 2012-07-12aRagexeRE
+#if PACKETVER == 20120712
+ packetKeys(0x0E8B7AFB,0x6930362D,0x42D33A57);
+#endif
+
+// 2012-07-16aRagexe, 2012-07-16aRagexeRE
+#if PACKETVER == 20120716
+ packetKeys(0x76052205,0x22052205,0x22052205);
+#endif
+
+// 2012-07-24aRagexe, 2012-07-24aRagexeRE
+#if PACKETVER == 20120724
+ packetKeys(0x783D5BC6,0x3AAC2176,0x66616F02);
+#endif
+
+// 2012-08-01aRagexe, 2012-08-01aRagexeRE, 2012-08-01bRagexe, 2012-08-01bRagexeRE
+#if PACKETVER == 20120801
+ packetKeys(0x71FB6768,0x5843166B,0x6CB445C6);
+#endif
+
+// 2012-08-08aRagexe, 2012-08-08aRagexeRE, 2012-08-08bRagexe, 2012-08-08bRagexeRE, 2012-08-08cRagexe, 2012-08-08cRagexeRE, 2012-08-08dRagexeRE
+#if PACKETVER == 20120808
+ packetKeys(0x5D5068BB,0x36732065,0x47CF7367);
+#endif
+
+// 2012-08-14aRagexe, 2012-08-14aRagexeRE, 2012-08-14bRagexe, 2012-08-14bRagexeRE
+#if PACKETVER == 20120814
+ packetKeys(0x203E21BD,0x047459FB,0x56AF5A97);
+#endif
+
+// 2012-08-22aRagexe, 2012-08-22aRagexeRE, 2012-08-22bRagexe, 2012-08-22bRagexeRE, 2012-08-22cRagexe, 2012-08-22cRagexeRE
+#if PACKETVER == 20120822
+ packetKeys(0x06A92E7B,0x3D324F29,0x5FD63004);
+#endif
+
+// 2012-08-30aRagexe, 2012-08-30aRagexeRE, 2012-08-30bRagexeRE
+#if PACKETVER == 20120830
+ packetKeys(0x0AF1363D,0x4AB33E3B,0x48421DBE);
+#endif
+
+// 2012-09-05aRagexe, 2012-09-05aRagexeRE
+#if PACKETVER == 20120905
+ packetKeys(0x04F50D80,0x092F5C4D,0x29BF3DCF);
+#endif
+
+// 2012-09-11aRagexe, 2012-09-11aRagexeRE
+#if PACKETVER == 20120911
+ packetKeys(0x1F3D1145,0x02DB3C32,0x4BE34C49);
+#endif
+
+// 2012-09-19aRagexe, 2012-09-19aRagexeRE
+#if PACKETVER == 20120919
+ packetKeys(0x72E00F24,0x4EA02D80,0x7C803480);
+#endif
+
+// 2012-09-25aRagexe, 2012-09-25aRagexeRE
+#if PACKETVER == 20120925
+ packetKeys(0x43A66E22,0x36C2229F,0x08172ECE);
+#endif
+
+// 2012-09-26aRagexe, 2012-09-26aRagexeRE
+#if PACKETVER == 20120926
+ packetKeys(0x43A66E22,0x36C2229F,0x08172ECE);
+#endif
+
+// 2012-10-10aRagexe, 2012-10-10aRagexeRE, 2012-10-10bRagexe, 2012-10-10bRagexeRE
+#if PACKETVER == 20121010
+ packetKeys(0x169733E2,0x4C4640DC,0x31636531);
+#endif
+
+// 2012-10-11aRagexeRE
+#if PACKETVER == 20121011
+ packetKeys(0x169733E2,0x4C4640DC,0x31636531);
+#endif
+
+// 2012-10-17aRagexe, 2012-10-17aRagexeRE, 2012-10-17bRagexe, 2012-10-17bRagexeRE
+#if PACKETVER == 20121017
+ packetKeys(0x340C0C31,0x33205EA8,0x55964BFF);
+#endif
+
+// 2012-10-24aRagexe, 2012-10-24aRagexeRE
+#if PACKETVER == 20121024
+ packetKeys(0x6166335C,0x45393483,0x7EDC5478);
+#endif
+
+// 2012-10-31aRagexe, 2012-10-31aRagexeRE
+#if PACKETVER == 20121031
+ packetKeys(0x66EB7ADB,0x242864BB,0x354A4CDE);
+#endif
+
+// 2012-11-07aRagexe, 2012-11-07aRagexeRE
+#if PACKETVER == 20121107
+ packetKeys(0x49967892,0x48025276,0x1E192CA3);
+#endif
+
+// 2012-11-14aRagexe, 2012-11-14aRagexeRE
+#if PACKETVER == 20121114
+ packetKeys(0x3473545C,0x2706445C,0x79647616);
+#endif
+
+// 2012-11-21aRagexe, 2012-11-21aRagexeRE
+#if PACKETVER == 20121121
+ packetKeys(0x6EB54B0B,0x3F2A6BE5,0x0B2866E6);
+#endif
+
+// 2012-11-28aRagexe, 2012-11-28aRagexeRE
+#if PACKETVER == 20121128
+ packetKeys(0x146D4D5E,0x5C3D161B,0x759250B8);
+#endif
+
+// 2012-12-05aRagexe, 2012-12-05aRagexeRE, 2012-12-05bRagexe, 2012-12-05bRagexeRE
+#if PACKETVER == 20121205
+ packetKeys(0x218C64B6,0x4EFE17AE,0x27EA5E74);
+#endif
+
+// 2012-12-12aRagexe, 2012-12-12aRagexeRE, 2012-12-12bRagexe, 2012-12-12bRagexeRE, 2012-12-12cRagexeRE
+#if PACKETVER == 20121212
+ packetKeys(0x7F8026F0,0x32EE2A4B,0x73746C0E);
+#endif
+
+// 2012-12-18aRagexe, 2012-12-18aRagexeRE, 2012-12-18bRagexe, 2012-12-18bRagexeRE
+#if PACKETVER == 20121218
+ packetKeys(0x6A5450A2,0x4322498A,0x2C6574FB);
+#endif
+
+// 2012-12-27aRagexe, 2012-12-27aRagexeRE
+#if PACKETVER == 20121227
+ packetKeys(0x71773018,0x36A14EEB,0x28CD5A20);
+#endif
+
+// 2013-01-03aRagexe, 2013-01-03aRagexeRE
+#if PACKETVER == 20130103
+ packetKeys(0x1E1A559A,0x199A799A,0x799A799A);
+#endif
+
+// 2013-01-07aRagexe
+#if PACKETVER == 20130107
+ packetKeys(0x1E1A559A,0x199A799A,0x799A799A);
+#endif
+
+// 2013-01-09aRagexe, 2013-01-09aRagexeRE
+#if PACKETVER == 20130109
+ packetKeys(0x6435360F,0x0A283678,0x64A04AC7);
+#endif
+
+// 2013-01-15aRagexeRE, 2013-01-15bRagexe
+#if PACKETVER == 20130115
+ packetKeys(0x273C25CD,0x06AA48AF,0x45A01BD4);
+#endif
+
+// 2013-01-16aRagexe, 2013-01-16aRagexeRE, 2013-01-16bRagexe
+#if PACKETVER == 20130116
+ packetKeys(0x273C25CD,0x06AA48AF,0x45A01BD4);
+#endif
+
+// 2013-01-21aRagexe, 2013-01-21aRagexeRE
+#if PACKETVER == 20130121
+ packetKeys(0x5DD874B0,0x7D98233F,0x28FF5566);
+#endif
+
+// 2013-01-30aRagexe, 2013-01-30aRagexeRE
+#if PACKETVER == 20130130
+ packetKeys(0x1EA57961,0x27786856,0x30301FA0);
+#endif
+
+// 2013-02-06aRagexe, 2013-02-06aRagexeRE
+#if PACKETVER == 20130206
+ packetKeys(0x1D8F4227,0x675812AA,0x29132929);
+#endif
+
+// 2013-02-15aRagexe, 2013-02-15aRagexeRE, 2013-02-15bRagexe
+#if PACKETVER == 20130215
+ packetKeys(0x69FB1C38,0x7D386860,0x62805311);
+#endif
+
+// 2013-02-20aRagexe, 2013-02-20bRagexeRE
+#if PACKETVER == 20130220
+ packetKeys(0x0D555256,0x28C26722,0x72220A22);
+#endif
+
+// 2013-02-27aRagexe, 2013-02-27aRagexeRE
+#if PACKETVER == 20130227
+ packetKeys(0x44F86842,0x43786A7A,0x71654528);
+#endif
+
+// 2013-03-06aRagexe, 2013-03-06aRagexeRE, 2013-03-06bRagexeRE
+#if PACKETVER == 20130306
+ packetKeys(0x7E274326,0x7D182DF2,0x4FC27DFA);
+#endif
+
+// 2013-03-13aRagexe, 2013-03-13aRagexeRE, 2013-03-13bRagexeRE, 2013-03-13cRagexeRE
+#if PACKETVER == 20130313
+ packetKeys(0x560021C3,0x6A5D110F,0x52BD40A5);
+#endif
+
+// 2013-03-20bRagexeRE, 2013-03-20cRagexeRE, 2013-03-20dRagexe, 2013-03-20eRagexe
+#if PACKETVER == 20130320
+ packetKeys(0x3F094C49,0x55F86C1E,0x58AA359A);
+#endif
+
+// 2013-03-27bRagexe, 2013-03-27bRagexeRE
+#if PACKETVER == 20130327
+ packetKeys(0x114B1BA0,0x2C4F0AE2,0x5FA1183F);
+#endif
+
+// 2013-04-03aRagexe, 2013-04-03aRagexeRE
+#if PACKETVER == 20130403
+ packetKeys(0x424A43AE,0x4A9D5EBE,0x4B3518A9);
+#endif
+
+// 2013-04-10aRagexe, 2013-04-10aRagexeRE
+#if PACKETVER == 20130410
+ packetKeys(0x3AD52ACA,0x314D1AED,0x086E415E);
+#endif
+
+// 2013-04-17aRagexe, 2013-04-17aRagexeRE
+#if PACKETVER == 20130417
+ packetKeys(0x7FB13B83,0x6E003749,0x07A02B94);
+#endif
+
+// 2013-04-24aRagexe, 2013-04-24aRagexeRE
+#if PACKETVER == 20130424
+ packetKeys(0x79F679F6,0x79F679F6,0x79F679F6);
+#endif
+
+// 2013-05-02aRagexe, 2013-05-02aRagexeRE, 2013-05-02bRagexe
+#if PACKETVER == 20130502
+ packetKeys(0x62E733B9,0x62204281,0x7F044DCA);
+#endif
+
+// 2013-05-08bRagexe, 2013-05-08bRagexeRE, 2013-05-08cRagexe, 2013-05-08dRagexe, 2013-05-08eRagexe, 2013-05-08fRagexe
+#if PACKETVER == 20130508
+ packetKeys(0x25421E49,0x175200BA,0x6C0B5239);
+#endif
+
+// 2013-05-15aRagexe, 2013-05-15aRagexeRE
+#if PACKETVER == 20130515
+ packetKeys(0x75794A38,0x58A96BC1,0x296E6FB8);
+#endif
+
+// 2013-05-22Ragexe, 2013-05-22aRagexe, 2013-05-22aRagexeRE
+#if PACKETVER == 20130522
+ packetKeys(0x6948050B,0x06511D9D,0x725D4DF1);
+#endif
+
+// 2013-05-29Ragexe, 2013-05-29aRagexe, 2013-05-29aRagexeRE
+#if PACKETVER == 20130529
+ packetKeys(0x023A6C87,0x14BF1F1E,0x5CC70CC9);
+#endif
+
+// 2013-06-05Ragexe, 2013-06-05aRagexe, 2013-06-05bRagexe, 2013-06-05cRagexeRE
+#if PACKETVER == 20130605
+ packetKeys(0x646E08D9,0x5F153AB5,0x61B509B5);
+#endif
+
+// 2013-06-12aRagexe, 2013-06-12bRagexe, 2013-06-12bRagexeRE, 2013-06-12cRagexe, 2013-06-12dRagexe, 2013-06-12eRagexe
+#if PACKETVER == 20130612
+ packetKeys(0x6D166F66,0x3C000FCF,0x295B0FCB);
+#endif
+
+// 2013-06-18aRagexe, 2013-06-18aRagexeRE
+#if PACKETVER == 20130618
+ packetKeys(0x434115DE,0x34A10FE9,0x6791428E);
+#endif
+
+// 2013-06-26aRagexeRE, 2013-06-26bRagexe, 2013-06-26bRagexeRE, 2013-06-26cRagexe
+#if PACKETVER == 20130626
+ packetKeys(0x38F453EF,0x6A040FD8,0x65BD6668);
+#endif
+
+// 2013-07-03aRagexe, 2013-07-03bRagexeRE
+#if PACKETVER == 20130703
+ packetKeys(0x4FF90E23,0x0F1432F2,0x4CFA1EDA);
+#endif
+
+// 2013-07-10aRagexeRE, 2013-07-10bRagexe, 2013-07-10bRagexeRE, 2013-07-10cRagexeRE, 2013-07-10dRagexeRE, 2013-07-10eRagexeRE
+#if PACKETVER == 20130710
+ packetKeys(0x4A9C4237,0x4CCF3F8F,0x458F758F);
+#endif
+
+// 2013-07-17cRagexe, 2013-07-17cRagexeRE, 2013-07-17dRagexeRE, 2013-07-17eRagexeRE
+#if PACKETVER == 20130717
+ packetKeys(0x5EE5520C,0x5F9E00CF,0x2BED4F91);
+#endif
+
+// 2013-07-24eRagexe, 2013-07-24eRagexeRE, 2013-07-24fRagexeRE
+#if PACKETVER == 20130724
+ packetKeys(0x3C243BF5,0x42CC4E2F,0x02106EC6);
+#endif
+
+// 2013-07-31cRagexe, 2013-07-31cRagexeRE
+#if PACKETVER == 20130731
+ packetKeys(0x1E9D11A6,0x21A232B8,0x6A9E02B7);
+#endif
+
+// 2013-08-07aRagexe, 2013-08-07aRagexeRE
+#if PACKETVER == 20130807
+ packetKeys(0x7E241DE0,0x5E805580,0x3D807D80);
+#endif
+
+// 2013-08-14aRagexe, 2013-08-14aRagexeRE
+#if PACKETVER == 20130814
+ packetKeys(0x23A23148,0x0C41420E,0x53785AD7);
+#endif
+
+// 2013-08-21bRagexe, 2013-08-21dRagexeRE
+#if PACKETVER == 20130821
+ packetKeys(0x51673F38,0x01663512,0x5CFF0B3D);
+#endif
+
+// 2013-08-28bRagexe, 2013-08-28bRagexeRE, 2013-08-28cRagexe, 2013-08-28cRagexeRE
+#if PACKETVER == 20130828
+ packetKeys(0x02EF7A9A,0x4882042F,0x76796678);
+#endif
+
+// 2013-09-04aRagexe, 2013-09-04bRagexeRE
+#if PACKETVER == 20130904
+ packetKeys(0x41AF20C5,0x0997799E,0x4AE803A0);
+#endif
+
+// 2013-09-11aRagexe, 2013-09-11aRagexeRE, 2013-09-11bRagexe, 2013-09-11bRagexeRE
+#if PACKETVER == 20130911
+ packetKeys(0x232B3F47,0x0AD0515F,0x1CA31828);
+#endif
+
+// 2013-09-17aRagexe, 2013-09-17aRagexeRE
+#if PACKETVER == 20130917
+ packetKeys(0x5C9164C5,0x32B62F83,0x52864548);
+#endif
+
+// 2013-09-25aRagexe, 2013-09-25aRagexeRE, 2013-09-25bRagexe, 2013-09-25bRagexeRE, 2013-09-25cRagexe
+#if PACKETVER == 20130925
+ packetKeys(0x4B9C279A,0x0C7849C4,0x72A77646);
+#endif
+
+// 2013-10-02aRagexe, 2013-10-02aRagexeRE
+#if PACKETVER == 20131002
+ packetKeys(0x63A466F7,0x635362F3,0x41F369F3);
+#endif
+
+// 2013-10-08aRagexe, 2013-10-08bRagexeRE
+#if PACKETVER == 20131008
+ packetKeys(0x64924AAD,0x08CA0445,0x1CBC36DE);
+#endif
+
+// 2013-10-16aRagexe, 2013-10-16aRagexeRE, 2013-10-16bRagexe, 2013-10-16bRagexeRE
+#if PACKETVER == 20131016
+ packetKeys(0x33AD7A93,0x720C7C49,0x12C4205A);
+#endif
+
+// 2013-10-23aRagexe, 2013-10-23aRagexeRE
+#if PACKETVER == 20131023
+ packetKeys(0x02EF6163,0x2B774814,0x58EC3036);
+#endif
+
+// 2013-10-30aRagexe, 2013-10-30aRagexeRE
+#if PACKETVER == 20131030
+ packetKeys(0x4A6A3EFF,0x7E2D5237,0x01CA019E);
+#endif
+
+// 2013-11-06aRagexe, 2013-11-06aRagexeRE
+#if PACKETVER == 20131106
+ packetKeys(0x143E528F,0x5CA05899,0x44B85B23);
+#endif
+
+// 2013-11-07aRagexe, 2013-11-07cRagexe
+#if PACKETVER == 20131107
+ packetKeys(0x143E528F,0x5CA05899,0x44B85B23);
+#endif
+
+// 2013-11-08aRagexe
+#if PACKETVER == 20131108
+ packetKeys(0x143E528F,0x5CA05899,0x44B85B23);
+#endif
+
+// 2013-11-13aRagexeRE, 2013-11-13bRagexe
+#if PACKETVER == 20131113
+ packetKeys(0x44EA14CD,0x49311C88,0x40C86C31);
+#endif
+
+// 2013-11-20dRagexe, 2013-11-20eRagexeRE
+#if PACKETVER == 20131120
+ packetKeys(0x541E5172,0x1B1D30A0,0x28AA7CE5);
+#endif
+
+// 2013-11-27aRagexeRE, 2013-11-27bRagexe, 2013-11-27bRagexeRE
+#if PACKETVER == 20131127
+ packetKeys(0x21426A48,0x5C505D6A,0x046D06AD);
+#endif
+
+// 2013-12-04dRagexeRE, 2013-12-04eRagexe, 2013-12-04eRagexeRE
+#if PACKETVER == 20131204
+ packetKeys(0x792760B2,0x5AF45387,0x36165603);
+#endif
+
+// 2013-12-11cRagexeRE, 2013-12-11dRagexe, 2013-12-11eRagexeRE
+#if PACKETVER == 20131211
+ packetKeys(0x55B0394E,0x4D341FF2,0x60BC1DC3);
+#endif
+
+// 2013-12-18aRagexeRE, 2013-12-18bRagexe
+#if PACKETVER == 20131218
+ packetKeys(0x6A596301,0x76866D0E,0x32294A45);
+#endif
+
+// 2013-12-23aRagexeRE, 2013-12-23bRagexe, 2013-12-23bRagexeRE, 2013-12-23cRagexe, 2013-12-23xRagexeRE
+#if PACKETVER == 20131223
+ packetKeys(0x631C511C,0x111C111C,0x111C111C);
+#endif
+
+// 2013-12-30aRagexe, 2013-12-30aRagexeRE
+#if PACKETVER == 20131230
+ packetKeys(0x611B7097,0x01F957A1,0x768A0FCB);
+#endif
+
+// 2014-01-08bRagexeRE, 2014-01-08cRagexe, 2014-01-08cRagexeRE, 2014-01-08dRagexe
+#if PACKETVER == 20140108
+ packetKeys(0x4A1E26F2,0x231E7EFE,0x61FE19FE);
+#endif
+
+// 2014-01-15aRagexe, 2014-01-15bRagexe, 2014-01-15cRagexeRE, 2014-01-15dRagexeRE, 2014-01-15eRagexe, 2014-01-15eRagexeRE
+#if PACKETVER == 20140115
+ packetKeys(0x63224335,0x0F3A1F27,0x6D217B24);
+#endif
+
+// 2014-01-22aRagexe, 2014-01-22aRagexeRE
+#if PACKETVER == 20140122
+ packetKeys(0x6123177B,0x05B42C99,0x71702594);
+#endif
+
+// 2014-01-29aRagexe, 2014-01-29bRagexeRE, 2014-01-29cRagexe
+#if PACKETVER == 20140129
+ packetKeys(0x2E52163C,0x605E518B,0x3C7A62CB);
+#endif
+
+// 2014-02-05bRagexe, 2014-02-05bRagexeRE
+#if PACKETVER == 20140205
+ packetKeys(0x63DC7BDC,0x7BDC7BDC,0x7BDC7BDC);
+#endif
+
+// 2014-02-12aRagexe, 2014-02-12aRagexeRE
+#if PACKETVER == 20140212
+ packetKeys(0x46837074,0x65292E89,0x77237F9C);
+#endif
+
+// 2014-02-19aRagexe, 2014-02-19aRagexeRE, 2014-02-19bRagexeRE
+#if PACKETVER == 20140219
+ packetKeys(0x4E3C5327,0x3A6B5469,0x2CE36AED);
+#endif
+
+// 2014-02-26aRagexe, 2014-02-26aRagexeRE, 2014-02-26bRagexeRE
+#if PACKETVER == 20140226
+ packetKeys(0x36D71056,0x52122F5E,0x6FF76E99);
+#endif
+
+// 2014-03-05aRagexe, 2014-03-05aRagexeRE, 2014-03-05bRagexe, 2014-03-05bRagexeRE
+#if PACKETVER == 20140305
+ packetKeys(0x116763F2,0x41117DAC,0x7FD13C45);
+#endif
+
+// 2014-03-12bRagexeRE, 2014-03-12dRagexe
+#if PACKETVER == 20140312
+ packetKeys(0x48911E4E,0x58CB2EB3,0x05232619);
+#endif
+
+// 2014-03-19aRagexeRE
+#if PACKETVER == 20140319
+ packetKeys(0x3DA44383,0x1ABB165F,0x5B6846B9);
+#endif
+
+// 2014-03-26aRagexe, 2014-03-26cRagexeRE
+#if PACKETVER == 20140326
+ packetKeys(0x68E72AF6,0x27DB4C3D,0x348F2677);
+#endif
+
+// 2014-04-02eRagexeRE, 2014-04-02fRagexe, 2014-04-02fRagexeRE, 2014-04-02gRagexe
+#if PACKETVER == 20140402
+ packetKeys(0x15D3271C,0x004D725B,0x111A3A37);
+#endif
+
+// 2014-04-09aRagexe, 2014-04-09aRagexeRE, 2014-04-09bRagexe
+#if PACKETVER == 20140409
+ packetKeys(0x7F6C390F,0x139C254C,0x7F25708C);
+#endif
+
+// 2014-04-16aRagexe, 2014-04-16aRagexeRE, 2014-04-16bRagexe
+#if PACKETVER == 20140416
+ packetKeys(0x04810281,0x42814281,0x42814281);
+#endif
+
+// 2014-04-23aRagexe, 2014-04-23aRagexeRE
+#if PACKETVER == 20140423
+ packetKeys(0x7E0D6B56,0x74673CD3,0x2EBA4940);
+#endif
+
+// 2014-04-30aRagexeRE
+#if PACKETVER == 20140430
+ packetKeys(0x400145D8,0x3FE50155,0x11624F70);
+#endif
+
+// 2014-05-08aRagexe, 2014-05-08bRagexe, 2014-05-08bRagexeRE
+#if PACKETVER == 20140508
+ packetKeys(0x087E57EC,0x25224F4A,0x024F12C6);
+#endif
+
+// 2014-05-14bRagexe, 2014-05-14bRagexeRE, 2014-05-14cRagexeRE
+#if PACKETVER == 20140514
+ packetKeys(0x4BE46730,0x047926E0,0x37773BBB);
+#endif
+
+// 2014-05-21aRagexeRE, 2014-05-21bRagexe
+#if PACKETVER == 20140521
+ packetKeys(0x14ED2D86,0x17371C33,0x2D0473C8);
+#endif
+
+// 2014-05-28aRagexe, 2014-05-28aRagexeRE
+#if PACKETVER == 20140528
+ packetKeys(0x579445EB,0x26734878,0x7C861628);
+#endif
+
+// 2014-06-05aRagexe, 2014-06-05aRagexeRE, 2014-06-05bRagexe
+#if PACKETVER == 20140605
+ packetKeys(0x5ABC4223,0x04DD2636,0x0D5850E0);
+#endif
+
+// 2014-06-11bRagexeRE, 2014-06-11cRagexe, 2014-06-11dRagexe, 2014-06-11eRagexe, 2014-06-11hRagexe
+#if PACKETVER == 20140611
+ packetKeys(0x4FC83479,0x3AB04D1F,0x477B4010);
+#endif
+
+// 2014-06-12aRagexe
+#if PACKETVER == 20140612
+ packetKeys(0x4FC83479,0x3AB04D1F,0x477B4010);
+#endif
+
+// 2014-06-13aRagexe
+#if PACKETVER == 20140613
+ packetKeys(0x4FC83479,0x3AB04D1F,0x477B4010);
+#endif
+
+// 2014-06-18aRagexe, 2014-06-18cRagexeRE
+#if PACKETVER == 20140618
+ packetKeys(0x2DB507BB,0x11BA12E7,0x7F447760);
+#endif
+
+// 2014-06-25aRagexe, 2014-06-25aRagexeRE, 2014-06-25bRagexe
+#if PACKETVER == 20140625
+ packetKeys(0x09987045,0x644B1051,0x1A091CB8);
+#endif
+
+// 2014-07-02aRagexe, 2014-07-02aRagexeRE
+#if PACKETVER == 20140702
+ packetKeys(0x5C4574F4,0x5D446386,0x48BD24C9);
+#endif
+
+// 2014-07-09aRagexe, 2014-07-09aRagexeRE
+#if PACKETVER == 20140709
+ packetKeys(0x2C7A6E92,0x324F1B85,0x29916FC2);
+#endif
+
+// 2014-07-16aRagexe, 2014-07-16aRagexeRE, 2014-07-16bRagexe, 2014-07-16cRagexe
+#if PACKETVER == 20140716
+ packetKeys(0x0EB20408,0x6D6C4292,0x4F6E4CF3);
+#endif
+
+// 2014-07-23aRagexe, 2014-07-23aRagexeRE, 2014-07-23bRagexe, 2014-07-23bRagexeRE
+#if PACKETVER == 20140723
+ packetKeys(0x42A21713,0x51CE6EAD,0x102F7B0B);
+#endif
+
+// 2014-07-30aRagexe, 2014-07-30bRagexeRE
+#if PACKETVER == 20140730
+ packetKeys(0x63CE4E53,0x04F969A3,0x690954DB);
+#endif
+
+// 2014-08-06aRagexe, 2014-08-06aRagexeRE, 2014-08-06bRagexe
+#if PACKETVER == 20140806
+ packetKeys(0x0D5B69AC,0x3C001F20,0x0C201420);
+#endif
+
+// 2014-08-13aRagexe, 2014-08-13aRagexeRE, 2014-08-13bRagexe
+#if PACKETVER == 20140813
+ packetKeys(0x7AD51E0A,0x28C72C46,0x210205BD);
+#endif
+
+// 2014-08-14aRagexe
+#if PACKETVER == 20140814
+ packetKeys(0x7AD51E0A,0x28C72C46,0x210205BD);
+#endif
+
+// 2014-08-20aRagexe, 2014-08-20aRagexeRE
+#if PACKETVER == 20140820
+ packetKeys(0x374F15D0,0x64C87DEC,0x65CE2A41);
+#endif
+
+// 2014-08-27aRagexe
+#if PACKETVER == 20140827
+ packetKeys(0x53814CA2,0x27DE193E,0x503E683E);
+#endif
+
+// 2014-09-03aRagexe, 2014-09-03aRagexeRE
+#if PACKETVER == 20140903
+ packetKeys(0x2F386F34,0x0F935365,0x76A43888);
+#endif
+
+// 2014-09-17aRagexe
+#if PACKETVER == 20140917
+ packetKeys(0x180118EA,0x440134CF,0x3A99179D);
+#endif
+
+// 2014-09-24bRagexeRE, 2014-09-24cRagexe, 2014-09-24cRagexeRE
+#if PACKETVER == 20140924
+ packetKeys(0x6F5222D8,0x593B798C,0x4CBD655E);
+#endif
+
+// 2014-10-01aRagexe, 2014-10-01bRagexeRE, 2014-10-01cRagexeRE
+#if PACKETVER == 20141001
+ packetKeys(0x6D882C11,0x7DF959E2,0x4F3F60E8);
+#endif
+
+// 2014-10-08aRagexe, 2014-10-08bRagexe, 2014-10-08bRagexeRE, 2014-10-08cRagexe, 2014-10-08cRagexeRE, 2014-10-08dRagexe
+#if PACKETVER == 20141008
+ packetKeys(0x754365B3,0x36B326B3,0x26B326B3);
+#endif
+
+// 2014-10-15bRagexe, 2014-10-15bRagexeRE, 2014-10-15cRagexe, 2014-10-15dRagexe
+#if PACKETVER == 20141015
+ packetKeys(0x2DFF467C,0x444B37EE,0x2C1B634F);
+#endif
+
+// 2014-10-16aRagexe, 2014-10-16aRagexeRE
+#if PACKETVER == 20141016
+ packetKeys(0x2DFF467C,0x444B37EE,0x2C1B634F);
+#endif
+
+// 2014-10-22aRagexeRE, 2014-10-22bRagexe
+#if PACKETVER == 20141022
+ packetKeys(0x290551EA,0x2B952C75,0x2D67669B);
+#endif
+
+// 2014-10-29aRagexe, 2014-10-29aRagexeRE
+#if PACKETVER == 20141029
+ packetKeys(0x1AFD581D,0x2E1D4E1D,0x4E1D4E1D);
+#endif
+
+// 2014-11-05aRagexe, 2014-11-05aRagexeRE, 2014-11-05bRagexe, 2014-11-05bRagexeRE
+#if PACKETVER == 20141105
+ packetKeys(0x7F310819,0x5FF45401,0x2D303DD9);
+#endif
+
+// 2014-11-12aRagexeRE, 2014-11-12cRagexe, 2014-11-12dRagexe
+#if PACKETVER == 20141112
+ packetKeys(0x430C0C27,0x067153CF,0x5E5439A9);
+#endif
+
+// 2014-11-19bRagexeRE, 2014-11-19dRagexe
+#if PACKETVER == 20141119
+ packetKeys(0x7A7E7EDE,0x24EB02E3,0x71603607);
+#endif
+
+// 2014-11-26aRagexe, 2014-11-26aRagexeRE, 2014-11-26bRagexe, 2014-11-26bRagexeRE, 2014-11-26cRagexe, 2014-11-26cRagexeRE, 2014-11-26dRagexe, 2014-11-26dRagexeRE, 2014-11-26eRagexeRE
+#if PACKETVER == 20141126
+ packetKeys(0x01E14C42,0x56D73044,0x4B3278DF);
+#endif
+
+// 2014-12-03aRagexe, 2014-12-03aRagexeRE
+#if PACKETVER == 20141203
+ packetKeys(0x66CB52E4,0x1EB84093,0x33563E18);
+#endif
+
+// 2014-12-10bRagexe, 2014-12-10cRagexe, 2014-12-10cRagexeRE
+#if PACKETVER == 20141210
+ packetKeys(0x0B0B1DD3,0x26EF1797,0x4F40370B);
+#endif
+
+// 2014-12-17aRagexeRE
+#if PACKETVER == 20141217
+ packetKeys(0x01AB478C,0x0FDE58F2,0x1DAC7303);
+#endif
+
+// 2014-12-23cRagexeRE
+#if PACKETVER == 20141223
+ packetKeys(0x2E8936E6,0x34463C46,0x67CD3885);
+#endif
+
+// 2014-12-24aRagexe
+#if PACKETVER == 20141224
+ packetKeys(0x2E8936E6,0x34463C46,0x67CD3885);
+#endif
+
+// 2014-12-31aRagexe, 2014-12-31aRagexeRE
+#if PACKETVER == 20141231
+ packetKeys(0x154C347E,0x54B26512,0x52126A12);
+#endif
+
+// 2015-01-07aRagexe, 2015-01-07aRagexeRE
+#if PACKETVER == 20150107
+ packetKeys(0x6C494A14,0x4DDB6427,0x3E6D7B65);
+#endif
+
+// 2015-01-14aRagexe, 2015-01-14aRagexeRE, 2015-01-14bRagexe, 2015-01-14cRagexe, 2015-01-14dRagexe
+#if PACKETVER == 20150114
+ packetKeys(0x21C96102,0x13142934,0x1ABF4EA3);
+#endif
+
+// 2015-01-21aRagexe, 2015-01-21aRagexeRE, 2015-01-21bRagexeRE
+#if PACKETVER == 20150121
+ packetKeys(0x0B9D2AF5,0x658A3346,0x379E3654);
+#endif
+
+// 2015-01-28aRagexe, 2015-01-28aRagexeRE
+#if PACKETVER == 20150128
+ packetKeys(0x77CA2D55,0x28B608F0,0x75B47957);
+#endif
+
+// 2015-01-29aRagexe
+#if PACKETVER == 20150129
+ packetKeys(0x77CA2D55,0x28B608F0,0x75B47957);
+#endif
+
+// 2015-01-30aRagexe
+#if PACKETVER == 20150130
+ packetKeys(0x77CA2D55,0x28B608F0,0x75B47957);
+#endif
+
+// 2015-02-04aRagexe, 2015-02-04cRagexeRE
+#if PACKETVER == 20150204
+ packetKeys(0x134529DB,0x5B4F6CEF,0x29EF11EF);
+#endif
+
+// 2015-02-11aRagexe, 2015-02-11aRagexeRE
+#if PACKETVER == 20150211
+ packetKeys(0x33911A25,0x1E6945FD,0x7385623A);
+#endif
+
+// 2015-02-17aRagexe, 2015-02-17aRagexeRE
+#if PACKETVER == 20150217
+ packetKeys(0x731B731B,0x731B731B,0x731B731B);
+#endif
+
+// 2015-02-25aRagexeRE, 2015-02-25bRagexeRE, 2015-02-25cRagexeRE, 2015-02-25dRagexeRE, 2015-02-25eRagexe, 2015-02-25eRagexeRE, 2015-02-25fRagexe, 2015-02-25gRagexe, 2015-02-25hRagexe, 2015-02-25iRagexe, 2015-02-25jRagexe
+#if PACKETVER == 20150225
+ packetKeys(0x57FD4B7B,0x19CC16FB,0x0D255D72);
+#endif
+
+// 2015-02-26aRagexe, 2015-02-26aRagexeRE
+#if PACKETVER == 20150226
+ packetKeys(0x57FD4B7B,0x19CC16FB,0x0D255D72);
+#endif
+
+// 2015-03-04aRagexe, 2015-03-04aRagexeRE, 2015-03-04bRagexeRE
+#if PACKETVER == 20150304
+ packetKeys(0x1A657B1C,0x7E1806E7,0x55396A5C);
+#endif
+
+// 2015-03-11aRagexe, 2015-03-11aRagexeRE, 2015-03-11bRagexe, 2015-03-11bRagexeRE
+#if PACKETVER == 20150311
+ packetKeys(0x48C45D97,0x06CE09B0,0x5836642F);
+#endif
+
+// 2015-03-18aRagexe, 2015-03-18aRagexeRE, 2015-03-18bRagexe, 2015-03-18bRagexeRE, 2015-03-18cRagexeRE
+#if PACKETVER == 20150318
+ packetKeys(0x1B3738E7,0x0AD4238F,0x7D252A1F);
+#endif
+
+// 2015-03-25aRagexe, 2015-03-25bRagexeRE, 2015-03-25cRagexeRE
+#if PACKETVER == 20150325
+ packetKeys(0x68F62B8C,0x337C3468,0x38FC0AC7);
+#endif
+
+// 2015-04-01aRagexe, 2015-04-01bRagexeRE
+#if PACKETVER == 20150401
+ packetKeys(0x207F3A08,0x57E6160C,0x02A60382);
+#endif
+
+// 2015-04-08aRagexe, 2015-04-08aRagexeRE
+#if PACKETVER == 20150408
+ packetKeys(0x39812C9D,0x23DA516E,0x59A33DD2);
+#endif
+
+// 2015-04-15aRagexe, 2015-04-15aRagexeRE
+#if PACKETVER == 20150415
+ packetKeys(0x7EC44F6A,0x7DE57139,0x60DA5436);
+#endif
+
+// 2015-04-22aRagexe, 2015-04-22aRagexeRE
+#if PACKETVER == 20150422
+ packetKeys(0x10D22CE2,0x69E279E2,0x79E279E2);
+#endif
+
+// 2015-04-29aRagexe, 2015-04-29aRagexeRE
+#if PACKETVER == 20150429
+ packetKeys(0x2BF61A71,0x565D5DDF,0x0FB90019);
+#endif
+
+// 2015-05-07bRagexe, 2015-05-07bRagexeRE, 2015-05-07cRagexe
+#if PACKETVER == 20150507
+ packetKeys(0x55B54373,0x58967821,0x67F41832);
+#endif
+
+// 2015-05-13aRagexe, 2015-05-13aRagexeRE
+#if PACKETVER == 20150513
+ packetKeys(0x62C86D09,0x75944F17,0x112C133D);
+#endif
+
+// 2015-05-20aRagexe, 2015-05-20aRagexeRE
+#if PACKETVER == 20150520
+ packetKeys(0x17430238,0x44DE585F,0x56A40616);
+#endif
+
+// 2015-05-27aRagexe, 2015-05-27aRagexeRE
+#if PACKETVER == 20150527
+ packetKeys(0x35AE7BAE,0x3BAE3BAE,0x3BAE3BAE);
+#endif
+
+// 2015-06-03aRagexe, 2015-06-03bRagexeRE
+#if PACKETVER == 20150603
+ packetKeys(0x1DDD245D,0x309446E0,0x58E53F1F);
+#endif
+
+// 2015-06-10aRagexe, 2015-06-10aRagexeRE
+#if PACKETVER == 20150610
+ packetKeys(0x2FC406D3,0x7B3E32F5,0x02B80B47);
+#endif
+
+// 2015-06-17aRagexe, 2015-06-17aRagexeRE
+#if PACKETVER == 20150617
+ packetKeys(0x250F7E09,0x25416076,0x029A780E);
+#endif
+
+// 2015-06-18aRagexe, 2015-06-18aRagexeRE
+#if PACKETVER == 20150618
+ packetKeys(0x250F7E09,0x25416076,0x029A780E);
+#endif
+
+// 2015-06-24aRagexe, 2015-06-24aRagexeRE
+#if PACKETVER == 20150624
+ packetKeys(0x440B0E24,0x1BEA7A4C,0x2C646784);
+#endif
+
+// 2015-07-01bRagexeRE
+#if PACKETVER == 20150701
+ packetKeys(0x4DD55F9B,0x70C67B03,0x78C60DB6);
+#endif
+
+// 2015-07-02aRagexe
+#if PACKETVER == 20150702
+ packetKeys(0x4DD55F9B,0x70C67B03,0x78C60DB6);
+#endif
+
+// 2015-07-08bRagexeRE, 2015-07-08cRagexe, 2015-07-08cRagexeRE, 2015-07-08dRagexeRE
+#if PACKETVER == 20150708
+ packetKeys(0x451C5E19,0x5661750B,0x2F4644AC);
+#endif
+
+// 2015-07-15aRagexe, 2015-07-15aRagexeRE
+#if PACKETVER == 20150715
+ packetKeys(0x1F805483,0x67745585,0x7FCE189C);
+#endif
+
+// 2015-07-22bRagexeRE
+#if PACKETVER == 20150722
+ packetKeys(0x41FA53D4,0x2CF044E2,0x663A3F1D);
+#endif
+
+// 2015-07-29aRagexe, 2015-07-29aRagexeRE
+#if PACKETVER == 20150729
+ packetKeys(0x08EE40A9,0x206F3D7F,0x0AE37339);
+#endif
+
+// 2015-08-05aRagexe, 2015-08-05dRagexeRE
+#if PACKETVER == 20150805
+ packetKeys(0x1C3F243F,0x243F243F,0x243F243F);
+#endif
+
+// 2015-08-12aRagexe, 2015-08-12aRagexeRE
+#if PACKETVER == 20150812
+ packetKeys(0x0B6F64A8,0x5BCC47EC,0x00EC08EC);
+#endif
+
+// 2015-08-19aRagexe, 2015-08-19aRagexeRE, 2015-08-19bRagexeRE
+#if PACKETVER == 20150819
+ packetKeys(0x1A2400E0,0x736E5686,0x10F315D5);
+#endif
+
+// 2015-08-26aRagexe, 2015-08-26aRagexeRE, 2015-08-26bRagexe, 2015-08-26bRagexeRE
+#if PACKETVER == 20150826
+ packetKeys(0x77883C56,0x1829359F,0x0DE635B6);
+#endif
+
+// 2015-09-02aRagexe, 2015-09-02aRagexeRE
+#if PACKETVER == 20150902
+ packetKeys(0x4EDB18C1,0x6B9355BA,0x38AA6239);
+#endif
+
+// 2015-09-09aRagexe, 2015-09-09aRagexeRE
+#if PACKETVER == 20150909
+ packetKeys(0x19AB2BF0,0x04754299,0x48770736);
+#endif
+
+// 2015-09-16aRagexe, 2015-09-16aRagexeRE, 2015-09-16cRagexe, 2015-09-16cRagexeRE
+#if PACKETVER == 20150916
+ packetKeys(0x17F83A19,0x116944F4,0x1CC541E9);
+#endif
+
+// 2015-09-23bRagexe, 2015-09-23bRagexeRE, 2015-09-23cRagexe, 2015-09-23eRagexe, 2015-09-23eRagexeRE, 2015-09-23fRagexe, 2015-09-23fRagexeRE
+#if PACKETVER == 20150923
+ packetKeys(0x765742B9,0x22D61C2F,0x7DA94FB2);
+#endif
+
+// 2015-10-01aRagexe, 2015-10-01bRagexeRE
+#if PACKETVER == 20151001
+ packetKeys(0x5CFF4561,0x32514AD1,0x06D126D1);
+#endif
+
+// 2015-10-07aRagexe, 2015-10-07aRagexeRE
+#if PACKETVER == 20151007
+ packetKeys(0x3C6447A8,0x032170D7,0x6490476C);
+#endif
+
+// 2015-10-14bRagexe, 2015-10-14bRagexeRE
+#if PACKETVER == 20151014
+ packetKeys(0x402728A8,0x5D0E309F,0x240018FD);
+#endif
+
+// 2015-10-21aRagexe
+#if PACKETVER == 20151021
+ packetKeys(0x0311104D,0x46C326D6,0x00E82720);
+#endif
+
+// 2015-10-22aRagexe, 2015-10-22aRagexeRE
+#if PACKETVER == 20151022
+ packetKeys(0x0311104D,0x46C326D6,0x00E82720);
+#endif
+
+// 2015-10-28cRagexe, 2015-10-28cRagexeRE, 2015-10-28dRagexe, 2015-10-28dRagexeRE
+#if PACKETVER == 20151028
+ packetKeys(0x45B945B9,0x45B945B9,0x45B945B9);
+#endif
+
+// 2015-10-29aRagexe, 2015-10-29aRagexeRE
+#if PACKETVER == 20151029
+ packetKeys(0x45B945B9,0x45B945B9,0x45B945B9);
+#endif
+
+// 2015-11-04aRagexe, 2015-11-04aRagexeRE
+#if PACKETVER == 20151104
+ packetKeys(0x4C17382A,0x7ED174C9,0x29961E4F);
+#endif
+
+// 2015-11-11aRagexe, 2015-11-11aRagexeRE, 2015-11-11bRagexe
+#if PACKETVER == 20151111
+ packetKeys(0x46097C77,0x5F193871,0x29140A21);
+#endif
+
+// 2015-11-18aRagexe, 2015-11-18aRagexeRE
+#if PACKETVER == 20151118
+ packetKeys(0x734C3241,0x6E846F34,0x731C06D6);
+#endif
+
+// 2015-11-25bRagexe, 2015-11-25bRagexeRE, 2015-11-25cRagexeRE, 2015-11-25dRagexe, 2015-11-25dRagexeRE
+#if PACKETVER == 20151125
+ packetKeys(0x237446C0,0x5EFB343A,0x0EDF06C5);
+#endif
+
+// 2015-12-02aRagexe, 2015-12-02bRagexeRE
+#if PACKETVER == 20151202
+ packetKeys(0x4EDE52DE,0x52DE52DE,0x52DE52DE);
+#endif
+
+// 2015-12-09aRagexe, 2015-12-09aRagexeRE
+#if PACKETVER == 20151209
+ packetKeys(0x652C5898,0x7A351FB3,0x67EA2886);
+#endif
+
+// 2015-12-16aRagexe, 2015-12-16aRagexeRE
+#if PACKETVER == 20151216
+ packetKeys(0x25DD643D,0x61AC39DE,0x77A8206D);
+#endif
+
+// 2015-12-23bRagexe, 2015-12-23bRagexeRE
+#if PACKETVER == 20151223
+ packetKeys(0x347D68D0,0x2C705320,0x7B4A199D);
+#endif
+
+// 2015-12-30aRagexe
+#if PACKETVER == 20151230
+ packetKeys(0x54C51241,0x33883499,0x3CDA35F0);
+#endif
+
+// 2016-01-06aRagexe, 2016-01-06aRagexeRE
+#if PACKETVER == 20160106
+ packetKeys(0x40520265,0x33FE26FC,0x7136294F);
+#endif
+
+// 2016-01-13aRagexe, 2016-01-13aRagexeRE, 2016-01-13bRagexe, 2016-01-13bRagexeRE, 2016-01-13cRagexeRE
+#if PACKETVER == 20160113
+ packetKeys(0x18005C4B,0x19A94A72,0x73F678EC);
+#endif
+
+// 2016-01-20aRagexe, 2016-01-20aRagexeRE
+#if PACKETVER == 20160120
+ packetKeys(0x51495149,0x51495149,0x51495149);
+#endif
+
+// 2016-01-27aRagexeRE, 2016-01-27bRagexeRE, 2016-01-27cRagexe, 2016-01-27dRagexe
+#if PACKETVER == 20160127
+ packetKeys(0x6B1E7146,0x612C47E6,0x274E56EE);
+#endif
+
+// 2016-02-03aRagexe, 2016-02-03aRagexeRE
+#if PACKETVER == 20160203
+ packetKeys(0x3E1411AF,0x6C744497,0x7CFA1BDE);
+#endif
+
+// 2016-02-11aRagexe, 2016-02-11aRagexeRE
+#if PACKETVER == 20160211
+ packetKeys(0x613813EA,0x05251DAB,0x1FD35E33);
+#endif
+
+// 2016-02-17aRagexe, 2016-02-17aRagexeRE, 2016-02-17bRagexeRE, 2016-02-17cRagexeRE
+#if PACKETVER == 20160217
+ packetKeys(0x25895A8E,0x09421C19,0x763A2D7A);
+#endif
+
+// 2016-02-24aRagexe, 2016-02-24aRagexeRE, 2016-02-24bRagexeRE
+#if PACKETVER == 20160224
+ packetKeys(0x7088019A,0x13471F02,0x42356A7D);
+#endif
+
+// 2016-03-02bRagexe, 2016-03-02bRagexeRE
+#if PACKETVER == 20160302
+ packetKeys(0x7B4441B9,0x5BBC63AF,0x45DA0E71);
+#endif
+
+// 2016-03-09aRagexeRE, 2016-03-09cRagexe
+#if PACKETVER == 20160309
+ packetKeys(0x21587520,0x353A7706,0x1B722B25);
+#endif
+
+// 2016-03-16aRagexe, 2016-03-16aRagexeRE
+#if PACKETVER == 20160316
+ packetKeys(0x62363E36,0x3E363E36,0x3E363E36);
+#endif
+
+// 2016-03-18aRagexe
+#if PACKETVER == 20160318
+ packetKeys(0x62363E36,0x3E363E36,0x3E363E36);
+#endif
+
+// 2016-03-23aRagexe, 2016-03-23aRagexeRE, 2016-03-23bRagexe
+#if PACKETVER == 20160323
+ packetKeys(0x73E35A83,0x62142FA8,0x12BA36BD);
+#endif
+
+// 2016-03-30aRagexe, 2016-03-30aRagexeRE, 2016-03-30bRagexe
+#if PACKETVER == 20160330
+ packetKeys(0x02050940,0x545336FF,0x7E7D4902);
+#endif
+
+// 2016-04-06aRagexe, 2016-04-06aRagexeRE, 2016-04-06bRagexe
+#if PACKETVER == 20160406
+ packetKeys(0x568611EA,0x32457D8D,0x2B020477);
+#endif
+
+// 2016-04-14aRagexe, 2016-04-14aRagexeRE, 2016-04-14bRagexe, 2016-04-14bRagexeRE, 2016-04-14cRagexe
+#if PACKETVER == 20160414
+ packetKeys(0x31BD479A,0x40C61398,0x397C1A80);
+#endif
+
+// 2016-04-20aRagexeRE, 2016-04-20cRagexe
+#if PACKETVER == 20160420
+ packetKeys(0x67D2163A,0x3068215B,0x4835474D);
+#endif
+
+// 2016-04-27aRagexeRE
+#if PACKETVER == 20160427
+ packetKeys(0x12DC378E,0x4E3E7EBE,0x0ABE2ABE);
+#endif
+
+// 2016-05-04aRagexe, 2016-05-04aRagexeRE
+#if PACKETVER == 20160504
+ packetKeys(0x09E0544C,0x0231251D,0x2F4E195F);
+#endif
+
+// 2016-05-11aRagexe, 2016-05-11aRagexeRE, 2016-05-11bRagexeRE
+#if PACKETVER == 20160511
+ packetKeys(0x3C666FE2,0x27E84E3E,0x53E11BA5);
+#endif
+
+// 2016-05-18aRagexe, 2016-05-18aRagexeRE
+#if PACKETVER == 20160518
+ packetKeys(0x57DB7CA1,0x1FEA1629,0x26DD244D);
+#endif
+
+// 2016-05-25aRagexe, 2016-05-25aRagexeRE
+#if PACKETVER == 20160525
+ packetKeys(0x485C45B6,0x47DC6192,0x76B34A36);
+#endif
+
+// 2016-05-26aRagexe
+#if PACKETVER == 20160526
+ packetKeys(0x485C45B6,0x47DC6192,0x76B34A36);
+#endif
+
+// 2016-06-01aRagexe, 2016-06-01aRagexeRE
+#if PACKETVER == 20160601
+ packetKeys(0x3DAD32C4,0x59F001BE,0x73F65E56);
+#endif
+
+// 2016-06-08aRagexe, 2016-06-08aRagexeRE, 2016-06-08bRagexe, 2016-06-08bRagexeRE
+#if PACKETVER == 20160608
+ packetKeys(0x11D74609,0x77C43E8A,0x44290F53);
+#endif
+
+// 2016-06-09aRagexe
+#if PACKETVER == 20160609
+ packetKeys(0x11D74609,0x77C43E8A,0x44290F53);
+#endif
+
+// 2016-06-15aRagexe, 2016-06-15aRagexeRE
+#if PACKETVER == 20160615
+ packetKeys(0x062C5C26,0x6CF47E82,0x4DD53480);
+#endif
+
+// 2016-06-22aRagexe, 2016-06-22aRagexeRE
+#if PACKETVER == 20160622
+ packetKeys(0x426548AB,0x5C0F5DD4,0x03022710);
+#endif
+
+// 2016-06-29aRagexe, 2016-06-29aRagexeRE
+#if PACKETVER == 20160629
+ packetKeys(0x0DF31CCC,0x54281606,0x5C4C6855);
+#endif
+
+// 2016-06-30aRagexe, 2016-06-30aRagexeRE
+#if PACKETVER == 20160630
+ packetKeys(0x0DF31CCC,0x54281606,0x5C4C6855);
+#endif
+
+// 2016-07-06bRagexe, 2016-07-06cRagexeRE
+#if PACKETVER == 20160706
+ packetKeys(0x33A766D0,0x743F04F8,0x0FA0276C);
+#endif
+
+// 2016-07-13aRagexe, 2016-07-13aRagexeRE, 2016-07-13bRagexeRE, 2016-07-13cRagexe, 2016-07-13dRagexe
+#if PACKETVER == 20160713
+ packetKeys(0x714F2495,0x7DDC6F32,0x3FD8533D);
+#endif
+
+// 2016-07-20aRagexe, 2016-07-20aRagexeRE, 2016-07-20bRagexe, 2016-07-20bRagexeRE
+#if PACKETVER == 20160720
+ packetKeys(0x4F8A19C0,0x2D8E085C,0x37BB67D6);
+#endif
+
+// 2016-07-27aRagexe, 2016-07-27aRagexeRE, 2016-07-27bRagexe, 2016-07-27bRagexeRE
+#if PACKETVER == 20160727
+ packetKeys(0x3C6952AB,0x26E4077F,0x37E25DF7);
+#endif
+
+// 2016-08-03bRagexe, 2016-08-03bRagexeRE
+#if PACKETVER == 20160803
+ packetKeys(0x67F438C2,0x512A4EB7,0x2D353182);
+#endif
+
+// 2016-08-10aRagexe, 2016-08-10aRagexeRE
+#if PACKETVER == 20160810
+ packetKeys(0x2F252886,0x242234A2,0x48BC5032);
+#endif
+
+// 2016-08-17aRagexe
+#if PACKETVER == 20160817
+ packetKeys(0x675E6900,0x3F8E1D16,0x58D650E5);
+#endif
+
+// 2016-08-31aRagexeRE, 2016-08-31bRagexeRE
+#if PACKETVER == 20160831
+ packetKeys(0x564E13B0,0x7F680549,0x382D273B);
+#endif
+
+// 2016-09-07aRagexe, 2016-09-07aRagexeRE
+#if PACKETVER == 20160907
+ packetKeys(0x32E5237D,0x57BD4DBD,0x5DBD5DBD);
+#endif
+
+// 2016-09-13aRagexe, 2016-09-13aRagexeRE
+#if PACKETVER == 20160913
+ packetKeys(0x7C79748F,0x1AA03B1D,0x6EAC4747);
+#endif
+
+// 2016-09-21bRagexeRE
+#if PACKETVER == 20160921
+ packetKeys(0x11CD15CD,0x15CD15CD,0x15CD15CD);
+#endif
+
+// 2016-09-28cRagexeRE, 2016-09-28dRagexeRE
+#if PACKETVER == 20160928
+ packetKeys(0x2F8C67F5,0x22D42C38,0x57513774);
+#endif
+
+// 2016-10-05aRagexeRE
+#if PACKETVER == 20161005
+ packetKeys(0x5BAE21F8,0x021E2FFC,0x3BEB7C31);
+#endif
+
+// 2016-10-12aRagexeRE
+#if PACKETVER == 20161012
+ packetKeys(0x5E2311F2,0x14FD012C,0x76EB64F6);
+#endif
+
+// 2016-10-19aRagexeRE
+#if PACKETVER == 20161019
+ packetKeys(0x34882F11,0x7C870E70,0x7E61350D);
+#endif
+
+// 2016-10-26bRagexeRE, 2016-10-26cRagexeRE
+#if PACKETVER == 20161026
+ packetKeys(0x2CB86AE6,0x7D12660E,0x1B004DEB);
+#endif
+
+// 2016-11-02aRagexe, 2016-11-02aRagexeRE
+#if PACKETVER == 20161102
+ packetKeys(0x76725C17,0x72FE4EC1,0x07A91BFD);
+#endif
+
+// 2016-11-03aRagexeRE
+#if PACKETVER == 20161103
+ packetKeys(0x76725C17,0x72FE4EC1,0x07A91BFD);
+#endif
+
+// 2016-11-09aRagexe, 2016-11-09bRagexeRE, 2016-11-09cRagexeRE, 2016-11-09dRagexeRE
+#if PACKETVER == 20161109
+ packetKeys(0x0A5277C0,0x2DB17506,0x0E8F26DA);
+#endif
+
+// 2016-11-16aRagexe, 2016-11-16bRagexeRE, 2016-11-16cRagexeRE
+#if PACKETVER == 20161116
+ packetKeys(0x780C5C3F,0x15E92272,0x2BA770C5);
+#endif
+
+// 2016-11-23aRagexe, 2016-11-23aRagexeRE
+#if PACKETVER == 20161123
+ packetKeys(0x66FF559F,0x00D3535B,0x236246F7);
+#endif
+
+// 2016-11-30aRagexeRE, 2016-11-30bRagexeRE
+#if PACKETVER == 20161130
+ packetKeys(0x2ED80296,0x0D837373,0x20266F9A);
+#endif
+
+// 2016-12-07cRagexeRE, 2016-12-07dRagexeRE, 2016-12-07eRagexeRE
+#if PACKETVER == 20161207
+ packetKeys(0x52D267AA,0x4FE42156,0x1292153E);
+#endif
+
+// 2016-12-14bRagexeRE, 2016-12-14cRagexe, 2016-12-14cRagexeRE
+#if PACKETVER == 20161214
+ packetKeys(0x4DDE217B,0x07863AE0,0x5B591656);
+#endif
+
+// 2016-12-21aRagexeRE, 2016-12-21bRagexeRE, 2016-12-21cRagexeRE, 2016-12-21dRagexeRE
+#if PACKETVER == 20161221
+ packetKeys(0x69CB4F56,0x793C165E,0x673A2354);
+#endif
+
+// 2016-12-28aRagexe, 2016-12-28aRagexeRE
+#if PACKETVER == 20161228
+ packetKeys(0x09366971,0x005672F1,0x6F3712AE);
+#endif
+
+// 2017-01-04bRagexeRE
+#if PACKETVER == 20170104
+ packetKeys(0x44416BC3,0x6C8D1817,0x072D75D5);
+#endif
+
+// 2017-01-11aRagexeRE
+#if PACKETVER == 20170111
+ packetKeys(0x19B637F9,0x0E9C378A,0x41673186);
+#endif
+
+// 2017-01-18aRagexe, 2017-01-18aRagexeRE
+#if PACKETVER == 20170118
+ packetKeys(0x456B36EB,0x15EB34B0,0x18C42E43);
+#endif
+
+// 2017-01-25aRagexe, 2017-01-25aRagexeRE
+#if PACKETVER == 20170125
+ packetKeys(0x066E04FE,0x3004224A,0x04FF0458);
+#endif
+
+// 2017-02-01aRagexe, 2017-02-01aRagexeRE
+#if PACKETVER == 20170201
+ packetKeys(0x2011228E,0x00453005,0x628E7F0A);
+#endif
+
+// 2017-02-08aRagexeRE, 2017-02-08bRagexeRE
+#if PACKETVER == 20170208
+ packetKeys(0x6A764E5F,0x0609570D,0x28AE07FA);
+#endif
+
+// 2017-02-15aRagexeRE
+#if PACKETVER == 20170215
+ packetKeys(0x50C01315,0x51012A42,0x679E16C3);
+#endif
+
+// 2017-02-22aRagexe, 2017-02-22aRagexeRE
+#if PACKETVER == 20170222
+ packetKeys(0x5A242F2F,0x6C556187,0x73C022CB);
+#endif
+
+// 2017-02-28aRagexe, 2017-02-28aRagexeRE, 2017-02-28bRagexe
+#if PACKETVER == 20170228
+ packetKeys(0x771D4F2B,0x20EF1F4C,0x0D5135C8);
+#endif
+
+// 2017-03-08bRagexeRE
+#if PACKETVER == 20170308
+ packetKeys(0x653470A9,0x6B316A71,0x5C712C71);
+#endif
+
+// 2017-03-15cRagexe, 2017-03-15cRagexeRE
+#if PACKETVER == 20170315
+ packetKeys(0x399A0856,0x56642A94,0x7F77157D);
+#endif
+
+// 2017-03-22aRagexeRE, 2017-03-22bRagexeRE
+#if PACKETVER == 20170322
+ packetKeys(0x2050167B,0x01731233,0x40337033);
+#endif
+
+// 2017-03-29cRagexe, 2017-03-29cRagexeRE, 2017-03-29dRagexeRE
+#if PACKETVER == 20170329
+ packetKeys(0x18B31A80,0x1B0B1D56,0x16857D6A);
+#endif
+
+// 2017-04-05bRagexe, 2017-04-05bRagexeRE, 2017-04-05cRagexe, 2017-04-05cRagexeRE
+#if PACKETVER == 20170405
+ packetKeys(0x1FDE7DAC,0x2F9F5B63,0x3F2062AF);
+#endif
+
+// 2017-04-12aRagexe, 2017-04-12aRagexeRE
+#if PACKETVER == 20170412
+ packetKeys(0x39223393,0x5C847779,0x10217985);
+#endif
+
+// 2017-04-19bRagexeRE
+#if PACKETVER == 20170419
+ packetKeys(0x1F8F4B3F,0x2E481F03,0x39ED4178);
+#endif
+
+// 2017-04-26dRagexeRE
+#if PACKETVER == 20170426
+ packetKeys(0x167642A7,0x1DEC3D26,0x6D046D4C);
+#endif
+
+// 2017-05-02dRagexeRE
+#if PACKETVER == 20170502
+ packetKeys(0x05224194,0x466D4204,0x31F02EE0);
+#endif
+
+// 2017-05-17aRagexeRE, 2017-05-17bRagexeRE
+#if PACKETVER == 20170517
+ packetKeys(0x2CC4749A,0x1FA954DC,0x72276857);
+#endif
+
+// 2017-05-24aRagexeRE
+#if PACKETVER == 20170524
+ packetKeys(0x0B4E03A6,0x2B93427C,0x583D4477);
+#endif
+
+// 2017-05-31aRagexeRE
+#if PACKETVER == 20170531
+ packetKeys(0x03FA5A97,0x20B802D5,0x339F1977);
+#endif
+
+// 2017-06-07bRagexeRE, 2017-06-07cRagexeRE
+#if PACKETVER == 20170607
+ packetKeys(0x50564ACD,0x79CA4E15,0x405F4894);
+#endif
+
+// 2017-06-14bRagexeRE
+#if PACKETVER == 20170614
+ packetKeys(0x5ED10A48,0x667F4301,0x2E5D761F);
+#endif
+
+// 2017-06-21aRagexeRE
+#if PACKETVER == 20170621
+ packetKeys(0x155F34EC,0x2D943FA9,0x3D9170EB);
+#endif
+
+// 2017-06-28bRagexeRE
+#if PACKETVER == 20170628
+ packetKeys(0x04691C86,0x43C210E2,0x2FE277E2);
+#endif
+
+// 2017-07-05aRagexeRE
+#if PACKETVER == 20170705
+ packetKeys(0x7EB000AE,0x02FB1DBC,0x5CB131E6);
+#endif
+
+// 2017-07-12bRagexeRE
+#if PACKETVER == 20170712
+ packetKeys(0x2C3C202C,0x3F2C2F2C,0x2F2C2F2C);
+#endif
+
+// 2017-07-19aRagexeRE
+#if PACKETVER == 20170719
+ packetKeys(0x46465C88,0x10116F66,0x200866F9);
+#endif
+
+// 2017-07-26cRagexeRE
+#if PACKETVER == 20170726
+ packetKeys(0x102F23DB,0x7E767751,0x3BC172EF);
+#endif
+
+// 2017-08-01aRagexeRE
+#if PACKETVER == 20170801
+ packetKeys(0x26B52A7F,0x5377619D,0x4F580AC4);
+#endif
+
+// 2017-08-16cRagexeRE, 2017-08-16dRagexeRE
+#if PACKETVER == 20170816
+ packetKeys(0x78914673,0x3F8B7634,0x55B814BC);
+#endif
+
+// 2017-08-23aRagexeRE
+#if PACKETVER == 20170823
+ packetKeys(0x22677205,0x393D1002,0x58DC6BB4);
+#endif
+
+// 2017-08-30aRagexeRE, 2017-08-30bRagexeRE
+#if PACKETVER == 20170830
+ packetKeys(0x1D49592B,0x00970C17,0x1E640103);
+#endif
+
+// 2017-09-06cRagexeRE
+#if PACKETVER == 20170906
+ packetKeys(0x7DEF7677,0x351F36E6,0x52303485);
+#endif
+
+// 2017-09-13bRagexeRE
+#if PACKETVER == 20170913
+ packetKeys(0x7A645935,0x1DA05062,0x5A7A4C43);
+#endif
+
+// 2017-09-20bRagexeRE
+#if PACKETVER == 20170920
+ packetKeys(0x53024DA5,0x04EC212D,0x0BF87CD4);
+#endif
+
+// 2017-09-27bRagexeRE, 2017-09-27dRagexeRE
+#if PACKETVER == 20170927
+ packetKeys(0x15624100,0x0CE1463E,0x0E5D6534);
+#endif
+
+// 2017-10-02cRagexeRE
+#if PACKETVER == 20171002
+ packetKeys(0x15E1716C,0x4E765B63,0x357D2370);
+#endif
+
+// 2017-10-11aRagexeRE, 2017-10-11bRagexeRE
+#if PACKETVER == 20171011
+ packetKeys(0x4F121B3E,0x12670E17,0x19896C11);
+#endif
+
+// 2017-10-18aRagexeRE
+#if PACKETVER == 20171018
+ packetKeys(0x2CAA109C,0x158C1EC2,0x7A5E58F3);
+#endif
+
+// 2017-10-25bRagexeRE, 2017-10-25cRagexeRE, 2017-10-25dRagexeRE, 2017-10-25eRagexeRE
+#if PACKETVER == 20171025
+ packetKeys(0x165C565C,0x565C565C,0x565C565C);
+#endif
+
+// 2017-11-01bRagexeRE
+#if PACKETVER == 20171101
+ packetKeys(0x7056317F,0x7EEE0589,0x02672373);
+#endif
+
+
+#if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3)
+ packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3);
+#endif
+
+#endif /* MAP_PACKETS_KEYS_H */
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index 6e0ddf814..03b555e2b 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -318,10 +318,12 @@ enum packet_headers {
rodexadditem = 0x0A05,
rodexremoveitem = 0x0A07,
rodexopenwrite = 0x0A12,
-#if PACKETVER < 20160600
+#if PACKETVER < 20160601
rodexmailList = 0x09F0,
-#else // PACKETVER >= 20160600
+#elif PACKETVER < 20170419
rodexmailList = 0x0A7D,
+#else // PACKETVER >= 20170419
+ rodexmailList = 0x0Ac2,
#endif
#if PACKETVER < 20160316
rodexcheckplayer = 0x0A14,
@@ -632,7 +634,7 @@ struct packet_unit_walking {
#if PACKETVER >= 20091103
int16 PacketLength;
#endif
-#if PACKETVER > 20071106
+#if PACKETVER >= 20071106
uint8 objecttype;
#endif
#if PACKETVER >= 20131223
@@ -1369,11 +1371,16 @@ struct PACKET_ZC_NOTIFY_UNREADMAIL {
} __attribute__((packed));
struct maillistinfo {
+#if PACKETVER >= 20170419
+ uint8 openType;
+#endif
int64 MailID;
int8 Isread;
uint8 type;
char SenderName[24];
+#if PACKETVER < 20170419
int32 regDateTime;
+#endif
int32 expireDateTime;
int16 Titlelength;
char title[];
@@ -1382,8 +1389,10 @@ struct maillistinfo {
struct PACKET_ZC_MAIL_LIST {
int16 PacketType;
int16 PacketLength;
+#if PACKETVER < 20170419
int8 opentype;
int8 cnt;
+#endif
int8 IsEnd;
} __attribute__((packed));
@@ -1395,8 +1404,13 @@ struct PACKET_CZ_REQ_NEXT_MAIL_LIST {
struct PACKET_CZ_REQ_OPEN_MAIL {
int16 PacketType;
+#if PACKETVER >= 20170419
+ int64 Upper_MailID;
+ int8 unknown[16];
+#else
int8 opentype;
int64 Upper_MailID;
+#endif
} __attribute__((packed));
struct PACKET_CZ_REQ_READ_MAIL {
@@ -1429,8 +1443,13 @@ struct PACKET_ZC_ACK_DELETE_MAIL {
struct PACKET_CZ_REQ_REFRESH_MAIL_LIST {
int16 PacketType;
+#if PACKETVER >= 20170419
+ int64 Upper_MailID;
+ int8 unknown[16];
+#else
int8 opentype;
int64 Upper_MailID;
+#endif
} __attribute__((packed));
struct PACKET_CZ_REQ_ZENY_FROM_MAIL {
diff --git a/src/map/party.c b/src/map/party.c
index 26b4bae8b..a4a7e6dca 100644
--- a/src/map/party.c
+++ b/src/map/party.c
@@ -731,6 +731,11 @@ bool party_changeleader(struct map_session_data *sd, struct map_session_data *ts
return false;
}
+ if (battle_config.party_change_leader_same_map && sd->bl.m != tsd->bl.m) {
+ clif->msgtable(sd, MSG_PARTY_LEADER_SAMEMAP); // It is only possible to change the party leader while on the same map.
+ return false;
+ }
+
if( map->list[sd->bl.m].flag.partylock ) {
clif->message(sd->fd, msg_sd(sd,287)); // You cannot change party leaders in this map.
return false;
diff --git a/src/map/pc.c b/src/map/pc.c
index f332feea8..0636ebafa 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -765,9 +765,9 @@ int pc_equippoint(struct map_session_data *sd,int n)
return 0; //Not equippable by players.
ep = sd->inventory_data[n]->equip;
- if (sd->inventory_data[n]->look == W_DAGGER
- || sd->inventory_data[n]->look == W_1HSWORD
- || sd->inventory_data[n]->look == W_1HAXE
+ if (sd->inventory_data[n]->subtype == W_DAGGER
+ || sd->inventory_data[n]->subtype == W_1HSWORD
+ || sd->inventory_data[n]->subtype == W_1HAXE
) {
if (pc->checkskill(sd,AS_LEFT) > 0
|| (sd->job & MAPID_UPPERMASK) == MAPID_ASSASSIN
@@ -794,9 +794,9 @@ int pc_item_equippoint(struct map_session_data *sd, struct item_data* id)
return 0; //Not equippable by players.
ep = id->equip;
- if (id->look == W_DAGGER ||
- id->look == W_1HSWORD ||
- id->look == W_1HAXE) {
+ if (id->subtype == W_DAGGER ||
+ id->subtype == W_1HSWORD ||
+ id->subtype == W_1HAXE) {
if (pc->checkskill(sd, AS_LEFT) > 0 ||
(sd->job & MAPID_UPPERMASK) == MAPID_ASSASSIN ||
(sd->job & MAPID_UPPERMASK) == MAPID_KAGEROUOBORO) {
@@ -829,40 +829,40 @@ int pc_calcweapontype(struct map_session_data *sd)
// single-hand
if(sd->weapontype2 == W_FIST) {
- sd->status.weapon = sd->weapontype1;
+ sd->weapontype = sd->weapontype1;
return 1;
}
if(sd->weapontype1 == W_FIST) {
- sd->status.weapon = sd->weapontype2;
+ sd->weapontype = sd->weapontype2;
return 1;
}
// dual-wield
- sd->status.weapon = 0;
+ sd->weapontype = W_FIST;
switch (sd->weapontype1){
case W_DAGGER:
switch (sd->weapontype2) {
- case W_DAGGER: sd->status.weapon = W_DOUBLE_DD; break;
- case W_1HSWORD: sd->status.weapon = W_DOUBLE_DS; break;
- case W_1HAXE: sd->status.weapon = W_DOUBLE_DA; break;
+ case W_DAGGER: sd->weapontype = W_DOUBLE_DD; break;
+ case W_1HSWORD: sd->weapontype = W_DOUBLE_DS; break;
+ case W_1HAXE: sd->weapontype = W_DOUBLE_DA; break;
}
break;
case W_1HSWORD:
switch (sd->weapontype2) {
- case W_DAGGER: sd->status.weapon = W_DOUBLE_DS; break;
- case W_1HSWORD: sd->status.weapon = W_DOUBLE_SS; break;
- case W_1HAXE: sd->status.weapon = W_DOUBLE_SA; break;
+ case W_DAGGER: sd->weapontype = W_DOUBLE_DS; break;
+ case W_1HSWORD: sd->weapontype = W_DOUBLE_SS; break;
+ case W_1HAXE: sd->weapontype = W_DOUBLE_SA; break;
}
break;
case W_1HAXE:
switch (sd->weapontype2) {
- case W_DAGGER: sd->status.weapon = W_DOUBLE_DA; break;
- case W_1HSWORD: sd->status.weapon = W_DOUBLE_SA; break;
- case W_1HAXE: sd->status.weapon = W_DOUBLE_AA; break;
+ case W_DAGGER: sd->weapontype = W_DOUBLE_DA; break;
+ case W_1HSWORD: sd->weapontype = W_DOUBLE_SA; break;
+ case W_1HAXE: sd->weapontype = W_DOUBLE_AA; break;
}
}
// unknown, default to right hand type
- if (!sd->status.weapon)
- sd->status.weapon = sd->weapontype1;
+ if (sd->weapontype == W_FIST)
+ sd->weapontype = sd->weapontype1;
return 2;
}
@@ -884,20 +884,30 @@ int pc_setequipindex(struct map_session_data *sd)
if(sd->status.inventory[i].equip & pc->equip_pos[j])
sd->equip_index[j] = i;
- if(sd->status.inventory[i].equip & EQP_HAND_R)
- {
- if(sd->inventory_data[i])
- sd->weapontype1 = sd->inventory_data[i]->look;
- else
- sd->weapontype1 = 0;
+ if (sd->status.inventory[i].equip & EQP_HAND_R) {
+ if (sd->inventory_data[i]) {
+ sd->weapontype1 = sd->inventory_data[i]->subtype;
+ sd->status.look.weapon = sd->inventory_data[i]->view_sprite;
+ } else {
+ sd->weapontype1 = W_FIST;
+ sd->status.look.weapon = 0;
+ }
}
- if( sd->status.inventory[i].equip & EQP_HAND_L )
- {
- if( sd->inventory_data[i] && sd->inventory_data[i]->type == IT_WEAPON )
- sd->weapontype2 = sd->inventory_data[i]->look;
- else
- sd->weapontype2 = 0;
+ if (sd->status.inventory[i].equip & EQP_HAND_L) {
+ if (sd->inventory_data[i] != NULL) {
+ if (sd->inventory_data[i]->type == IT_WEAPON)
+ sd->weapontype2 = sd->inventory_data[i]->subtype;
+ else
+ sd->weapontype2 = W_FIST;
+ if (sd->inventory_data[i]->type == IT_ARMOR)
+ sd->has_shield = true;
+ else
+ sd->has_shield = false;
+ } else {
+ sd->weapontype2 = W_FIST;
+ sd->has_shield = false;
+ }
}
}
}
@@ -985,7 +995,7 @@ bool pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2_sd
bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd)
{
int class, joblevel;
- unsigned int jobexp;
+ uint64 jobexp;
if( !pc->can_Adopt(p1_sd, p2_sd, b_sd) )
return false;
@@ -1088,13 +1098,13 @@ int pc_isequip(struct map_session_data *sd,int n)
return 1; //Can equip all helms
if (sd->status.base_level > 96 && item->equip & EQP_ARMS && item->type == IT_WEAPON)
- switch(item->look) { //In weapons, the look determines type of weapon.
- case W_DAGGER: //Level 4 Knives are equippable.. this means all knives, I'd guess?
- case W_1HSWORD: //All 1H swords
- case W_1HAXE: //All 1H Axes
- case W_MACE: //All 1H Maces
- case W_STAFF: //All 1H Staves
- return 1;
+ switch (item->subtype) { //In weapons, the look determines type of weapon.
+ case W_DAGGER: //Level 4 Knives are equippable.. this means all knives, I'd guess?
+ case W_1HSWORD: //All 1H swords
+ case W_1HAXE: //All 1H Axes
+ case W_MACE: //All 1H Maces
+ case W_STAFF: //All 1H Staves
+ return 1;
}
}
}
@@ -2488,7 +2498,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val) {
}
switch (sd->state.lr_flag) {
case 2:
- switch (sd->status.weapon) {
+ switch (sd->weapontype) {
case W_BOW:
case W_REVOLVER:
case W_RIFLE:
@@ -2555,7 +2565,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val) {
case SP_ATTACKRANGE:
switch (sd->state.lr_flag) {
case 2:
- switch (sd->status.weapon) {
+ switch (sd->weapontype) {
case W_BOW:
case W_REVOLVER:
case W_RIFLE:
@@ -5022,7 +5032,7 @@ int pc_isUseitem(struct map_session_data *sd,int n)
break;
}
// Upper third classes
- if ((item->class_upper & ITEMUPPER_THURDUPPER) != 0) {
+ if ((item->class_upper & ITEMUPPER_THIRDUPPER) != 0) {
if ((sd->job & JOBL_THIRD) != 0 && (sd->job & JOBL_UPPER) != 0)
break;
}
@@ -5942,11 +5952,11 @@ int pc_checkallowskill(struct map_session_data *sd)
status_change_end(&sd->bl, scw_list[i], INVALID_TIMER);
}
- if(sd->sc.data[SC_STRUP] && sd->status.weapon)
+ if(sd->sc.data[SC_STRUP] && sd->weapontype != W_FIST)
// Spurt requires bare hands (feet, in fact xD)
status_change_end(&sd->bl, SC_STRUP, INVALID_TIMER);
- if(sd->status.shield <= 0) { // Skills requiring a shield
+ if (!sd->has_shield) { // Skills requiring a shield
for (i = 0; i < ARRAYLENGTH(scs_list); i++)
if(sd->sc.data[scs_list[i]])
status_change_end(&sd->bl, scs_list[i], INVALID_TIMER);
@@ -6688,8 +6698,9 @@ int pc_follow(struct map_session_data *sd,int target_id) {
return 0;
}
-int pc_checkbaselevelup(struct map_session_data *sd) {
- unsigned int next = pc->nextbaseexp(sd);
+int pc_checkbaselevelup(struct map_session_data *sd)
+{
+ uint64 next = pc->nextbaseexp(sd);
nullpo_ret(sd);
if (!next || sd->status.base_exp < next)
@@ -6753,7 +6764,7 @@ void pc_baselevelchanged(struct map_session_data *sd) {
int pc_checkjoblevelup(struct map_session_data *sd)
{
- unsigned int next = pc->nextjobexp(sd);
+ uint64 next = pc->nextjobexp(sd);
nullpo_ret(sd);
if(!next || sd->status.job_exp < next)
@@ -6786,7 +6797,7 @@ int pc_checkjoblevelup(struct map_session_data *sd)
/**
* Alters EXP based on self bonuses that do not get shared with the party
**/
-void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned int *job_exp, struct block_list *src) {
+void pc_calcexp(struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp, struct block_list *src) {
int buff_ratio = 0, buff_job_ratio = 0, race_ratio = 0, pk_ratio = 0;
int64 jexp, bexp;
@@ -6851,8 +6862,8 @@ void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned in
bexp += apply_percentrate64(bexp, buff_ratio, 100);
jexp += apply_percentrate64(jexp, buff_ratio + buff_job_ratio, 100);
- *job_exp = (unsigned int)cap_value(jexp, 1, UINT_MAX);
- *base_exp = (unsigned int)cap_value(bexp, 1, UINT_MAX);
+ *job_exp = cap_value(jexp, 1, UINT64_MAX);
+ *base_exp = cap_value(bexp, 1, UINT64_MAX);
}
/**
@@ -6861,9 +6872,10 @@ void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned in
* @param is_quest Used to let client know that the EXP was from a quest (clif->displayexp) PACKETVER >= 20091027
* @retval true success
**/
-bool pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned int base_exp,unsigned int job_exp,bool is_quest) {
- float nextbp=0, nextjp=0;
- unsigned int nextb=0, nextj=0;
+bool pc_gainexp(struct map_session_data *sd, struct block_list *src, uint64 base_exp, uint64 job_exp, bool is_quest)
+{
+ float nextbp = 0, nextjp = 0;
+ uint64 nextb = 0, nextj = 0;
nullpo_ret(sd);
if (sd->bl.prev == NULL || pc_isdead(sd))
@@ -6879,7 +6891,7 @@ bool pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned in
pc->calcexp(sd, &base_exp, &job_exp, src);
if (sd->status.guild_id > 0)
- base_exp -= guild->payexp(sd,base_exp);
+ base_exp -= guild->payexp(sd, base_exp);
nextb = pc->nextbaseexp(sd);
nextj = pc->nextjobexp(sd);
@@ -6890,16 +6902,16 @@ bool pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned in
if (nextj > 0)
nextjp = (float) job_exp / (float) nextj;
- if(battle_config.max_exp_gain_rate) {
+ if (battle_config.max_exp_gain_rate) {
if (nextbp > battle_config.max_exp_gain_rate/1000.) {
//Note that this value should never be greater than the original
//base_exp, therefore no overflow checks are needed. [Skotlex]
- base_exp = (unsigned int)(battle_config.max_exp_gain_rate/1000.*nextb);
+ base_exp = (uint64)(battle_config.max_exp_gain_rate / 1000. * nextb);
if (sd->state.showexp)
nextbp = (float) base_exp / (float) nextb;
}
if (nextjp > battle_config.max_exp_gain_rate/1000.) {
- job_exp = (unsigned int)(battle_config.max_exp_gain_rate/1000.*nextj);
+ job_exp = (uint64)(battle_config.max_exp_gain_rate / 1000. * nextj);
if (sd->state.showexp)
nextjp = (float) job_exp / (float) nextj;
}
@@ -6909,23 +6921,23 @@ bool pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned in
// Cap exp to the level up requirement of the previous level when you are at max level,
// otherwise cap at UINT_MAX (this is required for some S. Novice bonuses). [Skotlex]
if (base_exp) {
- nextb = nextb?UINT_MAX:pc->thisbaseexp(sd);
- if(sd->status.base_exp > nextb - base_exp)
+ nextb = nextb ? UINT64_MAX : pc->thisbaseexp(sd);
+ if (sd->status.base_exp > nextb - base_exp)
sd->status.base_exp = nextb;
else
sd->status.base_exp += base_exp;
pc->checkbaselevelup(sd);
- clif->updatestatus(sd,SP_BASEEXP);
+ clif->updatestatus(sd, SP_BASEEXP);
}
if (job_exp) {
- nextj = nextj?UINT_MAX:pc->thisjobexp(sd);
- if(sd->status.job_exp > nextj - job_exp)
+ nextj = nextj ? UINT64_MAX : pc->thisjobexp(sd);
+ if (sd->status.job_exp > nextj - job_exp)
sd->status.job_exp = nextj;
else
sd->status.job_exp += job_exp;
pc->checkjoblevelup(sd);
- clif->updatestatus(sd,SP_JOBEXP);
+ clif->updatestatus(sd, SP_JOBEXP);
}
#if PACKETVER >= 20091027
@@ -6938,7 +6950,8 @@ bool pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned in
if(sd->state.showexp) {
char output[256];
sprintf(output,
- "Experience Gained Base:%u (%.2f%%) Job:%u (%.2f%%)",base_exp,nextbp*(float)100,job_exp,nextjp*(float)100);
+ "Experience Gained Base:%"PRIu64" (%.2f%%) Job:%"PRIu64" (%.2f%%)",
+ base_exp, nextbp * (float)100, job_exp, nextjp * (float)100);
clif_disp_onlyself(sd, output);
}
@@ -6963,7 +6976,7 @@ int pc_maxjoblv(const struct map_session_data *sd)
*------------------------------------------*/
//Base exp needed for next level.
-unsigned int pc_nextbaseexp(const struct map_session_data *sd)
+uint64 pc_nextbaseexp(const struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -6974,7 +6987,7 @@ unsigned int pc_nextbaseexp(const struct map_session_data *sd)
}
//Base exp needed for this level.
-unsigned int pc_thisbaseexp(const struct map_session_data *sd)
+uint64 pc_thisbaseexp(const struct map_session_data *sd)
{
if (sd->status.base_level > pc->maxbaselv(sd) || sd->status.base_level <= 1)
return 0;
@@ -6990,7 +7003,7 @@ unsigned int pc_thisbaseexp(const struct map_session_data *sd)
*------------------------------------------*/
//Job exp needed for next level.
-unsigned int pc_nextjobexp(const struct map_session_data *sd)
+uint64 pc_nextjobexp(const struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -7000,7 +7013,7 @@ unsigned int pc_nextjobexp(const struct map_session_data *sd)
}
//Job exp needed for this level.
-unsigned int pc_thisjobexp(const struct map_session_data *sd)
+uint64 pc_thisjobexp(const struct map_session_data *sd)
{
if (sd->status.job_level > pc->maxjoblv(sd) || sd->status.job_level <= 1)
return 0;
@@ -7948,9 +7961,9 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) {
// activate Steel body if a super novice dies at 99+% exp [celest]
if ((sd->job & MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && !sd->state.snovice_dead_flag) {
- unsigned int next = pc->nextbaseexp(sd);
+ uint64 next = pc->nextbaseexp(sd);
if( next == 0 ) next = pc->thisbaseexp(sd);
- if( get_percentage(sd->status.base_exp,next) >= 99 ) {
+ if (get_percentage64(sd->status.base_exp, next) >= 99) {
sd->state.snovice_dead_flag = 1;
pc->setstand(sd);
status_percent_heal(&sd->bl, 100, 100);
@@ -8135,9 +8148,9 @@ void pc_revive(struct map_session_data *sd,unsigned int hp, unsigned int sp) {
/*==========================================
* script reading pc status registry
*------------------------------------------*/
-int pc_readparam(const struct map_session_data *sd, int type)
+int64 pc_readparam(const struct map_session_data *sd, int type)
{
- int val = 0;
+ int64 val = 0;
nullpo_ret(sd);
@@ -8288,7 +8301,7 @@ int pc_readparam(const struct map_session_data *sd, int type)
/*==========================================
* script set pc status registry
*------------------------------------------*/
-int pc_setparam(struct map_session_data *sd,int type,int val)
+int pc_setparam(struct map_session_data *sd, int type, int64 val)
{
int delta;
nullpo_ret(sd);
@@ -8303,7 +8316,7 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
stat += pc->gets_status_point(sd->status.base_level + i);
sd->status.status_point += stat;
}
- sd->status.base_level = val;
+ sd->status.base_level = (int32)val;
sd->status.base_exp = 0;
// clif->updatestatus(sd, SP_BASELEVEL); // Gets updated at the bottom
clif->updatestatus(sd, SP_NEXTBASEEXP);
@@ -8319,10 +8332,10 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
if (val >= sd->status.job_level) {
if (val > pc->maxjoblv(sd))
val = pc->maxjoblv(sd);
- sd->status.skill_point += val - sd->status.job_level;
+ sd->status.skill_point += (int)val - sd->status.job_level;
clif->updatestatus(sd, SP_SKILLPOINT);
}
- sd->status.job_level = val;
+ sd->status.job_level = (int32)val;
sd->status.job_exp = 0;
// clif->updatestatus(sd, SP_JOBLEVEL); // Gets updated at the bottom
clif->updatestatus(sd, SP_NEXTJOBEXP);
@@ -8330,21 +8343,21 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
status_calc_pc(sd, SCO_FORCE);
break;
case SP_SKILLPOINT:
- sd->status.skill_point = val;
+ sd->status.skill_point = (int32)val;
break;
case SP_STATUSPOINT:
- sd->status.status_point = val;
+ sd->status.status_point = (int32)val;
break;
case SP_ZENY:
if( val < 0 )
return 0;// can't set negative zeny
- logs->zeny(sd, LOG_TYPE_SCRIPT, sd, -(sd->status.zeny - cap_value(val, 0, MAX_ZENY)));
- sd->status.zeny = cap_value(val, 0, MAX_ZENY);
+ logs->zeny(sd, LOG_TYPE_SCRIPT, sd, -(sd->status.zeny - cap_value((int32)val, 0, MAX_ZENY)));
+ sd->status.zeny = cap_value((int32)val, 0, MAX_ZENY);
break;
case SP_BANKVAULT:
val = cap_value(val, 0, MAX_BANK_ZENY);
- delta = (val - sd->status.bank_vault);
- sd->status.bank_vault = val;
+ delta = ((int32)val - sd->status.bank_vault);
+ sd->status.bank_vault = (int32)val;
if (map->save_settings & 256) {
chrif->save(sd, 0); // send to char server
}
@@ -8370,16 +8383,16 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
sd->status.sex = val ? SEX_MALE : SEX_FEMALE;
break;
case SP_WEIGHT:
- sd->weight = val;
+ sd->weight = (int32)val;
break;
case SP_MAXWEIGHT:
- sd->max_weight = val;
+ sd->max_weight = (int32)val;
break;
case SP_HP:
- sd->battle_status.hp = cap_value(val, 1, (int)sd->battle_status.max_hp);
+ sd->battle_status.hp = cap_value((int32)val, 1, (int)sd->battle_status.max_hp);
break;
case SP_MAXHP:
- sd->battle_status.max_hp = cap_value(val, 1, battle_config.max_hp);
+ sd->battle_status.max_hp = cap_value((int32)val, 1, battle_config.max_hp);
if( sd->battle_status.max_hp < sd->battle_status.hp )
{
@@ -8388,10 +8401,10 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
}
break;
case SP_SP:
- sd->battle_status.sp = cap_value(val, 0, (int)sd->battle_status.max_sp);
+ sd->battle_status.sp = cap_value((int32)val, 0, (int)sd->battle_status.max_sp);
break;
case SP_MAXSP:
- sd->battle_status.max_sp = cap_value(val, 1, battle_config.max_sp);
+ sd->battle_status.max_sp = cap_value((int32)val, 1, battle_config.max_sp);
if( sd->battle_status.max_sp < sd->battle_status.sp )
{
@@ -8400,28 +8413,28 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
}
break;
case SP_STR:
- sd->status.str = cap_value(val, 1, pc_maxparameter(sd));
+ sd->status.str = cap_value((int)val, 1, pc_maxparameter(sd));
break;
case SP_AGI:
- sd->status.agi = cap_value(val, 1, pc_maxparameter(sd));
+ sd->status.agi = cap_value((int)val, 1, pc_maxparameter(sd));
break;
case SP_VIT:
- sd->status.vit = cap_value(val, 1, pc_maxparameter(sd));
+ sd->status.vit = cap_value((int)val, 1, pc_maxparameter(sd));
break;
case SP_INT:
- sd->status.int_ = cap_value(val, 1, pc_maxparameter(sd));
+ sd->status.int_ = cap_value((int)val, 1, pc_maxparameter(sd));
break;
case SP_DEX:
- sd->status.dex = cap_value(val, 1, pc_maxparameter(sd));
+ sd->status.dex = cap_value((int)val, 1, pc_maxparameter(sd));
break;
case SP_LUK:
- sd->status.luk = cap_value(val, 1, pc_maxparameter(sd));
+ sd->status.luk = cap_value((int)val, 1, pc_maxparameter(sd));
break;
case SP_KARMA:
- sd->status.karma = val;
+ sd->status.karma = (int)val;
break;
case SP_MANNER:
- sd->status.manner = val;
+ sd->status.manner = (int)val;
if( val < 0 )
sc_start(NULL, &sd->bl, SC_NOCHAT, 100, 0, 0);
else {
@@ -8430,28 +8443,28 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
}
return 1; // status_change_start/status_change_end already sends packets warning the client
case SP_FAME:
- sd->status.fame = val;
+ sd->status.fame = (int32)val;
break;
case SP_KILLERRID:
- sd->killerrid = val;
+ sd->killerrid = (int32)val;
return 1;
case SP_KILLEDRID:
- sd->killedrid = val;
+ sd->killedrid = (int32)val;
return 1;
case SP_SLOTCHANGE:
- sd->status.slotchange = val;
+ sd->status.slotchange = (int32)val;
return 1;
case SP_CHARRENAME:
- sd->status.rename = val;
+ sd->status.rename = (int32)val;
return 1;
case SP_MOD_EXP:
- sd->status.mod_exp = val;
+ sd->status.mod_exp = (int32)val;
return 1;
case SP_MOD_DROP:
- sd->status.mod_drop = val;
+ sd->status.mod_drop = (int32)val;
return 1;
case SP_MOD_DEATH:
- sd->status.mod_death = val;
+ sd->status.mod_death = (int32)val;
return 1;
default:
ShowError("pc_setparam: Attempted to set unknown parameter '%d'.\n", type);
@@ -8825,10 +8838,10 @@ int pc_equiplookall(struct map_session_data *sd)
clif->changelook(&sd->bl,LOOK_WEAPON,0);
clif->changelook(&sd->bl,LOOK_SHOES,0);
- clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
- clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
- clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
- clif->changelook(&sd->bl,LOOK_ROBE, sd->status.robe);
+ clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom);
+ clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top);
+ clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid);
+ clif->changelook(&sd->bl, LOOK_ROBE, sd->status.look.robe);
return 0;
}
@@ -8844,7 +8857,7 @@ int pc_changelook(struct map_session_data *sd,int type,int val)
case LOOK_BASE:
status->set_viewdata(&sd->bl, val);
clif->changelook(&sd->bl, LOOK_BASE, sd->vd.class);
- clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon);
+ clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon);
if (sd->vd.cloth_color)
clif->changelook(&sd->bl,LOOK_CLOTHES_COLOR,sd->vd.cloth_color);
if (sd->vd.body_style)
@@ -8863,16 +8876,16 @@ int pc_changelook(struct map_session_data *sd,int type,int val)
}
break;
case LOOK_WEAPON:
- sd->status.weapon=val;
+ sd->status.look.weapon = val;
break;
case LOOK_HEAD_BOTTOM:
- sd->status.head_bottom=val;
+ sd->status.look.head_bottom = val;
break;
case LOOK_HEAD_TOP:
- sd->status.head_top=val;
+ sd->status.look.head_top = val;
break;
case LOOK_HEAD_MID:
- sd->status.head_mid=val;
+ sd->status.look.head_mid = val;
break;
case LOOK_HAIR_COLOR: //Use the battle_config limits! [Skotlex]
val = cap_value(val, MIN_HAIR_COLOR, MAX_HAIR_COLOR);
@@ -8890,12 +8903,12 @@ int pc_changelook(struct map_session_data *sd,int type,int val)
sd->status.clothes_color=val;
break;
case LOOK_SHIELD:
- sd->status.shield=val;
+ sd->status.look.shield = val;
break;
case LOOK_SHOES:
break;
case LOOK_ROBE:
- sd->status.robe = val;
+ sd->status.look.robe = val;
break;
case LOOK_BODY2:
val = cap_value(val, MIN_BODY_STYLE, MAX_BODY_STYLE);
@@ -9757,83 +9770,91 @@ void pc_equipitem_pos(struct map_session_data *sd, struct item_data *id, int n,
nullpo_retv(sd);
if ((!map_no_view(sd->bl.m,EQP_SHADOW_WEAPON) && pos & EQP_SHADOW_WEAPON) ||
(pos & EQP_HAND_R)) {
- if(id)
- sd->weapontype1 = id->look;
- else
- sd->weapontype1 = 0;
+ if (id != NULL) {
+ sd->weapontype1 = id->subtype;
+ sd->status.look.weapon = id->view_sprite;
+ } else {
+ sd->weapontype1 = W_FIST;
+ sd->status.look.weapon = 0;
+ }
pc->calcweapontype(sd);
- clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon);
+ clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon);
}
if ((!map_no_view(sd->bl.m,EQP_SHADOW_SHIELD) && pos & EQP_SHADOW_SHIELD) ||
(pos & EQP_HAND_L)) {
- if (id) {
- if(id->type == IT_WEAPON) {
- sd->status.shield = 0;
- sd->weapontype2 = id->look;
- } else if(id->type == IT_ARMOR) {
- sd->status.shield = id->look;
- sd->weapontype2 = 0;
+ if (id != NULL) {
+ if (id->type == IT_WEAPON) {
+ sd->has_shield = false;
+ sd->status.look.shield = 0;
+ sd->weapontype2 = id->subtype;
+ } else if (id->type == IT_ARMOR) {
+ sd->has_shield = true;
+ sd->status.look.shield = id->view_sprite;
+ sd->weapontype2 = W_FIST;
}
- } else
- sd->status.shield = sd->weapontype2 = 0;
+ } else {
+ sd->has_shield = false;
+ sd->status.look.shield = 0;
+ sd->weapontype2 = W_FIST;
+ }
pc->calcweapontype(sd);
- clif->changelook(&sd->bl,LOOK_SHIELD,sd->status.shield);
+ clif->changelook(&sd->bl, LOOK_SHIELD, sd->status.look.shield);
}
//Added check to prevent sending the same look on multiple slots ->
//causes client to redraw item on top of itself. (suggested by Lupus)
if (!map_no_view(sd->bl.m,EQP_HEAD_LOW) && pos & EQP_HEAD_LOW && pc->checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1) {
if (id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID)))
- sd->status.head_bottom = id->look;
+ sd->status.look.head_bottom = id->view_sprite;
else
- sd->status.head_bottom = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
+ sd->status.look.head_bottom = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom);
}
if (!map_no_view(sd->bl.m,EQP_HEAD_TOP) && pos & EQP_HEAD_TOP && pc->checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1) {
if (id)
- sd->status.head_top = id->look;
+ sd->status.look.head_top = id->view_sprite;
else
- sd->status.head_top = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
+ sd->status.look.head_top = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top);
}
if (!map_no_view(sd->bl.m,EQP_HEAD_MID) && pos & EQP_HEAD_MID && pc->checkequip(sd,EQP_COSTUME_HEAD_MID) == -1) {
if (id && !(pos&EQP_HEAD_TOP))
- sd->status.head_mid = id->look;
+ sd->status.look.head_mid = id->view_sprite;
else
- sd->status.head_mid = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
+ sd->status.look.head_mid = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid);
}
if (!map_no_view(sd->bl.m,EQP_COSTUME_HEAD_TOP) && pos & EQP_COSTUME_HEAD_TOP) {
if (id){
- sd->status.head_top = id->look;
+ sd->status.look.head_top = id->view_sprite;
} else
- sd->status.head_top = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
+ sd->status.look.head_top = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top);
}
if (!map_no_view(sd->bl.m,EQP_COSTUME_HEAD_MID) && pos & EQP_COSTUME_HEAD_MID) {
if(id && !(pos&EQP_HEAD_TOP)){
- sd->status.head_mid = id->look;
+ sd->status.look.head_mid = id->view_sprite;
} else
- sd->status.head_mid = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
+ sd->status.look.head_mid = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid);
}
if (!map_no_view(sd->bl.m,EQP_COSTUME_HEAD_LOW) && pos & EQP_COSTUME_HEAD_LOW) {
if (id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID))){
- sd->status.head_bottom = id->look;
+ sd->status.look.head_bottom = id->view_sprite;
} else
- sd->status.head_bottom = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
+ sd->status.look.head_bottom = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom);
}
if (!map_no_view(sd->bl.m,EQP_SHOES) && pos & EQP_SHOES)
clif->changelook(&sd->bl,LOOK_SHOES,0);
if (!map_no_view(sd->bl.m,EQP_GARMENT) && pos&EQP_GARMENT && pc->checkequip(sd,EQP_COSTUME_GARMENT) == -1) {
- sd->status.robe = id ? id->look : 0;
- clif->changelook(&sd->bl, LOOK_ROBE, sd->status.robe);
+ sd->status.look.robe = id ? id->view_sprite : 0;
+ clif->changelook(&sd->bl, LOOK_ROBE, sd->status.look.robe);
}
if (!map_no_view(sd->bl.m,EQP_COSTUME_GARMENT) && pos & EQP_COSTUME_GARMENT) {
- sd->status.robe = id ? id->look : 0;
- clif->changelook(&sd->bl,LOOK_ROBE,sd->status.robe);
+ sd->status.look.robe = id ? id->view_sprite : 0;
+ clif->changelook(&sd->bl, LOOK_ROBE, sd->status.look.robe);
}
}
@@ -9987,57 +10008,59 @@ void pc_unequipitem_pos(struct map_session_data *sd, int n, int pos)
{
nullpo_retv(sd);
if (pos & EQP_HAND_R) {
- sd->weapontype1 = 0;
- sd->status.weapon = sd->weapontype2;
+ sd->weapontype1 = W_FIST;
pc->calcweapontype(sd);
- clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon);
+ sd->status.look.weapon = 0;
+ clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon);
if (!battle_config.dancing_weaponswitch_fix)
status_change_end(&sd->bl, SC_DANCING, INVALID_TIMER); // Unequipping => stop dancing.
}
if (pos & EQP_HAND_L) {
- sd->status.shield = sd->weapontype2 = 0;
+ sd->has_shield = false;
+ sd->status.look.shield = 0;
+ sd->weapontype2 = W_FIST;
pc->calcweapontype(sd);
- clif->changelook(&sd->bl,LOOK_SHIELD,sd->status.shield);
+ clif->changelook(&sd->bl, LOOK_SHIELD, sd->status.look.shield);
}
if (pos & EQP_HEAD_LOW && pc->checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1) {
- sd->status.head_bottom = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
+ sd->status.look.head_bottom = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom);
}
if (pos & EQP_HEAD_TOP && pc->checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1) {
- sd->status.head_top = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
+ sd->status.look.head_top = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top);
}
if (pos & EQP_HEAD_MID && pc->checkequip(sd,EQP_COSTUME_HEAD_MID) == -1) {
- sd->status.head_mid = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
+ sd->status.look.head_mid = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid);
}
if (pos & EQP_COSTUME_HEAD_TOP) {
- sd->status.head_top = ( pc->checkequip(sd,EQP_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_TOP)]->look : 0;
- clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
+ sd->status.look.head_top = ( pc->checkequip(sd,EQP_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_TOP)]->view_sprite : 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top);
}
if (pos & EQP_COSTUME_HEAD_MID) {
- sd->status.head_mid = ( pc->checkequip(sd,EQP_HEAD_MID) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_MID)]->look : 0;
- clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
+ sd->status.look.head_mid = ( pc->checkequip(sd,EQP_HEAD_MID) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_MID)]->view_sprite : 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid);
}
if (pos & EQP_COSTUME_HEAD_LOW) {
- sd->status.head_bottom = ( pc->checkequip(sd,EQP_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_LOW)]->look : 0;
- clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
+ sd->status.look.head_bottom = ( pc->checkequip(sd,EQP_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_LOW)]->view_sprite : 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom);
}
if (pos & EQP_SHOES)
clif->changelook(&sd->bl,LOOK_SHOES,0);
if (pos & EQP_GARMENT && pc->checkequip(sd,EQP_COSTUME_GARMENT) == -1) {
- sd->status.robe = 0;
+ sd->status.look.robe = 0;
clif->changelook(&sd->bl, LOOK_ROBE, 0);
}
if (pos & EQP_COSTUME_GARMENT) {
- sd->status.robe = ( pc->checkequip(sd,EQP_GARMENT) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_GARMENT)]->look : 0;
- clif->changelook(&sd->bl,LOOK_ROBE,sd->status.robe);
+ sd->status.look.robe = ( pc->checkequip(sd,EQP_GARMENT) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_GARMENT)]->view_sprite : 0;
+ clif->changelook(&sd->bl, LOOK_ROBE, sd->status.look.robe);
}
}
@@ -10091,7 +10114,7 @@ int pc_unequipitem(struct map_session_data *sd,int n,int flag)
clif->unequipitemack(sd, n, pos, UIA_SUCCESS);
if ((pos & EQP_ARMS) &&
- sd->weapontype1 == 0 && sd->weapontype2 == 0 && (sd->sc.data[SC_TK_SEVENWIND] == 0 || sd->sc.data[SC_ASPERSIO])) //Check for seven wind (but not level seven!)
+ sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST && (sd->sc.data[SC_TK_SEVENWIND] == NULL || sd->sc.data[SC_ASPERSIO] != NULL)) //Check for seven wind (but not level seven!)
skill->enchant_elemental_end(&sd->bl, -1);
if (pos & EQP_ARMOR) {
@@ -10968,6 +10991,35 @@ int pc_split_atoui(char* str, unsigned int* val, char sep, int max)
return i;
}
+int pc_split_atoui64(char* str, uint64* val, char sep, int max)
+{
+ static int warning=0;
+ int i,j;
+ nullpo_ret(val);
+ for (i=0; i<max; i++) {
+ double f;
+ if (!str) break;
+ f = atof(str);
+ if (f < 0)
+ val[i] = 0;
+ else if (f > UINT64_MAX) {
+ val[i] = UINT64_MAX;
+ if (!warning) {
+ warning = 1;
+ ShowWarning("pc_readdb (exp.txt): Required exp per level is capped to %"PRIu64"\n", UINT64_MAX);
+ }
+ } else
+ val[i] = (uint64)f;
+ str = strchr(str,sep);
+ if (str)
+ *str++=0;
+ }
+ //Zero up the remaining.
+ for(j=i; j < max; j++)
+ val[j] = 0;
+ return i;
+}
+
/**
* Parses the skill tree config file.
*
@@ -11275,7 +11327,7 @@ int pc_readdb(void) {
count++;
job = jobs[0] = pc->class2idx(job_id);
//We send one less and then one more because the last entry in the exp array should hold 0.
- pc->max_level[job][type] = pc_split_atoui(split[3], pc->exp_table[job][type],',',maxlv-1)+1;
+ pc->max_level[job][type] = pc_split_atoui64(split[3], pc->exp_table[job][type], ',', maxlv - 1) + 1;
//Reverse check in case the array has a bunch of trailing zeros... [Skotlex]
//The reasoning behind the -2 is this... if the max level is 5, then the array
//should look like this:
@@ -11912,7 +11964,7 @@ bool pc_process_chat_message(struct map_session_data *sd, const char *message)
*/
void pc_check_supernovice_call(struct map_session_data *sd, const char *message)
{
- unsigned int next = pc->nextbaseexp(sd);
+ uint64 next = pc->nextbaseexp(sd);
int percent = 0;
nullpo_retv(sd);
diff --git a/src/map/pc.h b/src/map/pc.h
index c94ec6099..50cb1b68e 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -308,7 +308,10 @@ struct map_session_data {
short nameid;
int64 tick;
} item_delay[MAX_ITEMDELAYS]; // [Paradox924X]
- short weapontype1,weapontype2;
+ bool has_shield; ///< Whether the character is wearing a shield.
+ int16 weapontype; ///< Weapon type considering both hands (@see enum weapon_type).
+ int16 weapontype1; ///< Weapon type in the right/primary hand (@see enum weapon_type).
+ int16 weapontype2; ///< Weapon type in the left/secondary hand (@see enum weapon_type).
short disguise; // [Valaris]
struct weapon_data right_weapon, left_weapon;
@@ -685,8 +688,13 @@ END_ZEROED_BLOCK;
#define pc_stop_attack(sd) (unit->stop_attack(&(sd)->bl))
//Weapon check considering dual wielding.
-#define pc_check_weapontype(sd, type) ((type)&((sd)->status.weapon < MAX_SINGLE_WEAPON_TYPE? \
- 1<<(sd)->status.weapon:(1<<(sd)->weapontype1)|(1<<(sd)->weapontype2)|(1<<(sd)->status.weapon)))
+#define pc_check_weapontype(sd, type) ( \
+ (type) & ( \
+ (sd)->weapontype < MAX_SINGLE_WEAPON_TYPE ? \
+ 1 << (sd)->weapontype : \
+ (1 << (sd)->weapontype1) | (1 << (sd)->weapontype2) \
+ ) \
+ )
// clientside display macros (values to the left/right of the "+")
#ifdef RENEWAL
@@ -821,7 +829,7 @@ struct pc_interface {
/* */
BEGIN_ZEROED_BLOCK; /* Everything within this block will be memset to 0 when status_defaults() is executed */
- unsigned int exp_table[CLASS_COUNT][2][MAX_LEVEL];
+ uint64 exp_table[CLASS_COUNT][2][MAX_LEVEL];
int max_level[CLASS_COUNT][2];
unsigned int statp[MAX_LEVEL+1];
unsigned int level_penalty[3][RC_MAX][MAX_LEVEL*2+1];
@@ -941,11 +949,11 @@ END_ZEROED_BLOCK; /* End */
int (*maxjoblv) (const struct map_session_data *sd);
int (*checkbaselevelup) (struct map_session_data *sd);
int (*checkjoblevelup) (struct map_session_data *sd);
- bool (*gainexp) (struct map_session_data *sd, struct block_list *src, unsigned int base_exp, unsigned int job_exp, bool is_quest);
- unsigned int (*nextbaseexp) (const struct map_session_data *sd);
- unsigned int (*thisbaseexp) (const struct map_session_data *sd);
- unsigned int (*nextjobexp) (const struct map_session_data *sd);
- unsigned int (*thisjobexp) (const struct map_session_data *sd);
+ bool (*gainexp) (struct map_session_data *sd, struct block_list *src, uint64 base_exp, uint64 job_exp, bool is_quest);
+ uint64 (*nextbaseexp) (const struct map_session_data *sd);
+ uint64 (*thisbaseexp) (const struct map_session_data *sd);
+ uint64 (*nextjobexp) (const struct map_session_data *sd);
+ uint64 (*thisjobexp) (const struct map_session_data *sd);
int (*gets_status_point) (int level);
int (*need_status_point) (struct map_session_data *sd,int type,int val);
int (*maxparameterincrease) (struct map_session_data* sd, int type);
@@ -986,8 +994,8 @@ END_ZEROED_BLOCK; /* End */
int (*changelook) (struct map_session_data *sd,int type,int val);
int (*equiplookall) (struct map_session_data *sd);
- int (*readparam) (const struct map_session_data *sd, int type);
- int (*setparam) (struct map_session_data *sd,int type,int val);
+ int64 (*readparam) (const struct map_session_data *sd, int type);
+ int (*setparam) (struct map_session_data *sd, int type, int64 val);
int (*readreg) (struct map_session_data *sd, int64 reg);
void (*setreg) (struct map_session_data *sd, int64 reg,int val);
char * (*readregstr) (struct map_session_data *sd, int64 reg);
@@ -1071,7 +1079,7 @@ END_ZEROED_BLOCK; /* End */
int (*bonus_addeff) (struct s_addeffect* effect, int max, enum sc_type id, int16 rate, int16 arrow_rate, uint8 flag, uint16 duration);
int (*bonus_addeff_onskill) (struct s_addeffectonskill* effect, int max, enum sc_type id, short rate, short skill_id, unsigned char target);
int (*bonus_item_drop) (struct s_add_drop *drop, const short max, short id, short group, int race, int rate);
- void (*calcexp) (struct map_session_data *sd, unsigned int *base_exp, unsigned int *job_exp, struct block_list *src);
+ void (*calcexp) (struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp, struct block_list *src);
int (*respawn_timer) (int tid, int64 tick, int id, intptr_t data);
int (*jobchange_killclone) (struct block_list *bl, va_list ap);
int (*getstat) (struct map_session_data* sd, int type);
diff --git a/src/map/rodex.c b/src/map/rodex.c
index c041ecc6b..dcecb6b8f 100644
--- a/src/map/rodex.c
+++ b/src/map/rodex.c
@@ -263,17 +263,38 @@ int rodex_send_mail(struct map_session_data *sd, const char *receiver_name, cons
for (i = 0; i < RODEX_MAX_ITEM; i++) {
int16 idx = sd->rodex.tmp.items[i].idx;
+ int j;
+ struct item *tmpItem = &sd->rodex.tmp.items[i].item;
+ struct item *invItem = &sd->status.inventory[idx];
- if (sd->rodex.tmp.items[i].item.nameid == 0)
+ if (tmpItem->nameid == 0)
continue;
- if (sd->rodex.tmp.items[i].item.nameid != sd->status.inventory[idx].nameid
- || sd->rodex.tmp.items[i].item.unique_id != sd->status.inventory[idx].unique_id
- || sd->rodex.tmp.items[i].item.amount > sd->status.inventory[idx].amount
- || sd->rodex.tmp.items[i].item.amount < 1) {
+ if (tmpItem->nameid != invItem->nameid ||
+ tmpItem->unique_id != invItem->unique_id ||
+ tmpItem->refine != invItem->refine ||
+ tmpItem->attribute != invItem->attribute ||
+ tmpItem->expire_time != invItem->expire_time ||
+ tmpItem->bound != invItem->bound ||
+ tmpItem->amount > invItem->amount ||
+ tmpItem->amount < 1) {
rodex->clean(sd, 1);
return RODEX_SEND_MAIL_ITEM_ERROR;
}
+ for (j = 0; j < MAX_SLOTS; j++) {
+ if (tmpItem->card[j] != invItem->card[j]) {
+ rodex->clean(sd, 1);
+ return RODEX_SEND_MAIL_ITEM_ERROR;
+ }
+ }
+ for (j = 0; j < MAX_ITEM_OPTIONS; j++) {
+ if (tmpItem->option[j].index != invItem->option[j].index ||
+ tmpItem->option[j].value != invItem->option[j].value ||
+ tmpItem->option[j].param != invItem->option[j].param) {
+ rodex->clean(sd, 1);
+ return RODEX_SEND_MAIL_ITEM_ERROR;
+ }
+ }
}
if (total_zeny > 0 && pc->payzeny(sd, (int)total_zeny, LOG_TYPE_MAIL, NULL) != 0) {
@@ -526,13 +547,18 @@ void rodex_clean(struct map_session_data *sd, int8 flag)
/// User request to open rodex, load mails from char-server
/// @param sd : Who's requesting
/// @param open_type : Box Type (see RODEX_OPENTYPE)
-void rodex_open(struct map_session_data *sd, int8 open_type)
+void rodex_open(struct map_session_data *sd, int8 open_type, int64 first_mail_id)
{
+#if PACKETVER >= 20170419
+ const int type = 1;
+#else
+ const int type = 0;
+#endif
nullpo_retv(sd);
if (open_type == RODEX_OPENTYPE_ACCOUNT && battle_config.feature_rodex_use_accountmail == false)
open_type = RODEX_OPENTYPE_MAIL;
- intif->rodex_requestinbox(sd->status.char_id, sd->status.account_id, 0, open_type, 0);
+ intif->rodex_requestinbox(sd->status.char_id, sd->status.account_id, type, open_type, first_mail_id);
}
/// User request to read next page of mails
@@ -547,7 +573,7 @@ void rodex_next_page(struct map_session_data *sd, int8 open_type, int64 last_mai
if (open_type == RODEX_OPENTYPE_ACCOUNT && battle_config.feature_rodex_use_accountmail == false) {
// Should not happen
open_type = RODEX_OPENTYPE_MAIL;
- rodex->open(sd, open_type);
+ rodex->open(sd, open_type, 0);
return;
}
diff --git a/src/map/rodex.h b/src/map/rodex.h
index 18ecd91d6..ddf7cb32b 100644
--- a/src/map/rodex.h
+++ b/src/map/rodex.h
@@ -60,7 +60,7 @@ struct rodex_interface {
void (*final) (void);
bool (*isenabled) (void);
- void (*open) (struct map_session_data *sd, int8 open_type);
+ void (*open) (struct map_session_data *sd, int8 open_type, int64 first_mail_id);
void (*next_page) (struct map_session_data *sd, int8 open_type, int64 last_mail_id);
void (*refresh) (struct map_session_data *sd, int8 open_type, int64 first_mail_id);
void (*add_item) (struct map_session_data *sd, int16 idx, int16 amount);
diff --git a/src/map/script.c b/src/map/script.c
index 8722fcdbe..5773457a7 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -9967,14 +9967,22 @@ BUILDIN(setgroupid) {
/// Returns the group ID of the player.
///
-/// getgroupid() -> <int>
-BUILDIN(getgroupid)
-{
- struct map_session_data *sd = script->rid2sd(st);
- if (sd == NULL)
+/// getgroupid({<account id>}) -> <int>
+BUILDIN(getgroupid) {
+ struct map_session_data *sd = NULL;
+
+ if (script_hasdata(st, 2)) {
+ sd = map->id2sd(script_getnum(st, 2));
+ } else {
+ sd = script->rid2sd(st);
+ }
+
+ if (sd == NULL) {
+ script_pushint(st, -1);
return true; // no player attached, report source
- script_pushint(st, pc_get_group_id(sd));
+ }
+ script_pushint(st, pc_get_group_id(sd));
return true;
}
@@ -12771,6 +12779,76 @@ BUILDIN(setmapflagnosave) {
return true;
}
+enum mapinfo_info {
+ MAPINFO_NAME,
+ MAPINFO_ID,
+ MAPINFO_SIZE_X,
+ MAPINFO_SIZE_Y,
+ MAPINFO_ZONE
+};
+
+BUILDIN(getmapinfo)
+{
+ enum mapinfo_info mode = script_getnum(st, 2);
+ int16 m;
+
+ if (script_hasdata(st, 3)) {
+ if (script_isstringtype(st, 3)) {
+ const char *str = script_getstr(st, 3);
+ m = map->mapname2mapid(str);
+ } else {
+ m = script_getnum(st, 3);
+ }
+ } else {
+ struct block_list *bl = NULL;
+
+ if (st->oid) {
+ bl = map->id2bl(st->oid);
+ } else if (st->rid) {
+ bl = map->id2bl(st->rid);
+ }
+
+ if (bl == NULL) {
+ ShowError("script:getmapinfo: map not supplied and NPC/PC not attached!\n");
+ script_pushint(st, -3);
+ return false;
+ }
+
+ m = bl->m;
+ }
+
+ if (m < 0) {
+ // here we don't throw an error, so the command can be used
+ // to detect whether or not a map exists
+ script_pushint(st, -1);
+ return true;
+ }
+
+ switch (mode) {
+ case MAPINFO_NAME:
+ script_pushconststr(st, map->list[m].name);
+ break;
+ case MAPINFO_ID:
+ script_pushint(st, m);
+ break;
+ case MAPINFO_SIZE_X:
+ script_pushint(st, map->list[m].xs);
+ break;
+ case MAPINFO_SIZE_Y:
+ script_pushint(st, map->list[m].ys);
+ break;
+ case MAPINFO_ZONE:
+ script_pushstrcopy(st, map->list[m].zone->name);
+ break;
+ default:
+ ShowError("script:getmapinfo: unknown option in second argument (%u).\n", mode);
+ script_pushint(st, -2);
+ return false;
+ }
+
+ return true;
+}
+
BUILDIN(getmapflag)
{
int16 m,i;
@@ -12833,6 +12911,7 @@ BUILDIN(getmapflag)
case MF_RESET: script_pushint(st,map->list[m].flag.reset); break;
case MF_NOTOMB: script_pushint(st,map->list[m].flag.notomb); break;
case MF_NOCASHSHOP: script_pushint(st,map->list[m].flag.nocashshop); break;
+ case MF_NOAUTOLOOT: script_pushint(st, map->list[m].flag.noautoloot); break;
case MF_NOVIEWID: script_pushint(st,map->list[m].flag.noviewid); break;
}
}
@@ -12957,6 +13036,7 @@ BUILDIN(setmapflag) {
case MF_RESET: map->list[m].flag.reset = 1; break;
case MF_NOTOMB: map->list[m].flag.notomb = 1; break;
case MF_NOCASHSHOP: map->list[m].flag.nocashshop = 1; break;
+ case MF_NOAUTOLOOT: map->list[m].flag.noautoloot = 1; break;
case MF_NOVIEWID: map->list[m].flag.noviewid = (val <= 0) ? EQP_NONE : val; break;
}
}
@@ -13044,6 +13124,7 @@ BUILDIN(removemapflag) {
case MF_RESET: map->list[m].flag.reset = 0; break;
case MF_NOTOMB: map->list[m].flag.notomb = 0; break;
case MF_NOCASHSHOP: map->list[m].flag.nocashshop = 0; break;
+ case MF_NOAUTOLOOT: map->list[m].flag.noautoloot = 0; break;
case MF_NOVIEWID: map->list[m].flag.noviewid = EQP_NONE; break;
}
}
@@ -13982,43 +14063,70 @@ BUILDIN(getitemslots)
return true;
}
-// TODO: add matk here if needed/once we get rid of RENEWAL
+// TODO: add matk here if needed
/*==========================================
* Returns some values of an item [Lupus]
* Price, Weight, etc...
- * getiteminfo(itemID,n), where n
- * 0 value_buy;
- * 1 value_sell;
- * 2 type;
- * 3 maxchance = Max drop chance of this item e.g. 1 = 0.01% , etc..
- * if = 0, then monsters don't drop it at all (rare or a quest item)
- * if = -1, then this item is sold in NPC shops only
- * 4 sex;
- * 5 equip;
- * 6 weight;
- * 7 atk;
- * 8 def;
- * 9 range;
- * 10 slot;
- * 11 look;
- * 12 elv;
- * 13 wlv;
- * 14 view id
*------------------------------------------*/
BUILDIN(getiteminfo)
{
- int item_id,n;
- struct item_data *i_data;
+ int item_id = script_getnum(st, 2);
+ int n = script_getnum(st, 3);
+ struct item_data *it = itemdb->exists(item_id);
- item_id = script_getnum(st,2);
- n = script_getnum(st,3);
- i_data = itemdb->exists(item_id);
+ if (it == NULL) {
+ script_pushint(st, -1);
+ return true;
+ }
- if (i_data && n>=0 && n<=14) {
- int *item_arr = (int*)&i_data->value_buy;
- script_pushint(st,item_arr[n]);
- } else {
+ switch (n) {
+ case 0:
+ script_pushint(st, it->value_buy);
+ break;
+ case 1:
+ script_pushint(st, it->value_sell);
+ break;
+ case 2:
+ script_pushint(st, it->type);
+ break;
+ case 3:
+ script_pushint(st, it->maxchance);
+ break;
+ case 4:
+ script_pushint(st, it->sex);
+ break;
+ case 5:
+ script_pushint(st, it->equip);
+ break;
+ case 6:
+ script_pushint(st, it->weight);
+ break;
+ case 7:
+ script_pushint(st, it->atk);
+ break;
+ case 8:
+ script_pushint(st, it->def);
+ break;
+ case 9:
+ script_pushint(st, it->range);
+ break;
+ case 10:
+ script_pushint(st, it->slot);
+ break;
+ case 11:
+ script_pushint(st, it->subtype);
+ break;
+ case 12:
+ script_pushint(st, it->elv);
+ break;
+ case 13:
+ script_pushint(st, it->wlv);
+ break;
+ case 14:
+ script_pushint(st, it->view_id);
+ break;
+ default:
script_pushint(st,-1);
}
return true;
@@ -14162,31 +14270,36 @@ BUILDIN(setequipoption)
if (equip_index > 0 && equip_index <= ARRAYLENGTH(script->equip)) {
if ((i = pc->checkequip(sd, script->equip[equip_index - 1])) == -1) {
- ShowError("buildin_setequipoptioninfo: No equipment is equipped in the given index %d.\n", equip_index);
+ ShowError("buildin_setequipoption: No equipment is equipped in the given index %d.\n", equip_index);
script_pushint(st, 0);
return false;
}
} else {
- ShowError("buildin_setequipoptioninfo: Invalid equipment index %d provided.\n", equip_index);
+ ShowError("buildin_setequipoption: Invalid equipment index %d provided.\n", equip_index);
script_pushint(st, 0);
return false;
}
if (sd->status.inventory[i].nameid != 0) {
-
- if ((ito = itemdb->option_exists(opt_index)) == NULL) {
- script_pushint(st, 0);
- ShowError("buildin_setequipotion: Option index %d does not exist!\n", opt_index);
- return false;
- } else if (value < -INT16_MAX || value > INT16_MAX) {
- script_pushint(st, 0);
- ShowError("buildin_setequipotion: Option value %d exceeds maximum limit (%d to %d) for type!\n", value, -INT16_MAX, INT16_MAX);
- return false;
+ if (opt_index == 0) {
+ // Remove the option
+ sd->status.inventory[i].option[slot-1].index = 0;
+ sd->status.inventory[i].option[slot-1].value = 0;
+ } else {
+ if ((ito = itemdb->option_exists(opt_index)) == NULL) {
+ script_pushint(st, 0);
+ ShowError("buildin_setequipotion: Option index %d does not exist!\n", opt_index);
+ return false;
+ } else if (value < -INT16_MAX || value > INT16_MAX) {
+ script_pushint(st, 0);
+ ShowError("buildin_setequipotion: Option value %d exceeds maximum limit (%d to %d) for type!\n", value, -INT16_MAX, INT16_MAX);
+ return false;
+ }
+ /* Add Option Index */
+ sd->status.inventory[i].option[slot-1].index = ito->index;
+ /* Add Option Value */
+ sd->status.inventory[i].option[slot-1].value = value;
}
- /* Add Option Index */
- sd->status.inventory[i].option[slot-1].index = ito->index;
- /* Add Option Value */
- sd->status.inventory[i].option[slot-1].value = value;
/* Unequip and simulate deletion of the item. */
pc->unequipitem(sd, i, PCUNEQUIPITEM_FORCE); // status calc will happen in pc->equipitem() below
@@ -14211,43 +14324,71 @@ BUILDIN(setequipoption)
/*==========================================
* Set some values of an item [Lupus]
* Price, Weight, etc...
- * setiteminfo(itemID,n,Value), where n
- * 0 value_buy;
- * 1 value_sell;
- * 2 type;
- * 3 maxchance = Max drop chance of this item e.g. 1 = 0.01% , etc..
- * if = 0, then monsters don't drop it at all (rare or a quest item)
- * if = -1, then this item is sold in NPC shops only
- * 4 sex;
- * 5 equip;
- * 6 weight;
- * 7 atk;
- * 8 def;
- * 9 range;
- * 10 slot;
- * 11 look;
- * 12 elv;
- * 13 wlv;
- * 14 view id
- * Returns Value or -1 if the wrong field's been set
*------------------------------------------*/
BUILDIN(setiteminfo)
{
- int item_id,n,value;
- struct item_data *i_data;
+ // TODO: Validate data in a similar way as during database load
+ int item_id = script_getnum(st, 2);
+ int n = script_getnum(st, 3);
+ int value = script_getnum(st,4);
+ struct item_data *it = itemdb->exists(item_id);
- item_id = script_getnum(st,2);
- n = script_getnum(st,3);
- value = script_getnum(st,4);
- i_data = itemdb->exists(item_id);
+ if (it == NULL) {
+ script_pushint(st, -1);
+ return true;
+ }
- if (i_data && n>=0 && n<=14) {
- int *item_arr = (int*)&i_data->value_buy;
- item_arr[n] = value;
- script_pushint(st,value);
- } else {
+ switch (n) {
+ case 0:
+ it->value_buy = value;
+ break;
+ case 1:
+ it->value_sell = value;
+ break;
+ case 2:
+ it->type = value;
+ break;
+ case 3:
+ it->maxchance = value;
+ break;
+ case 4:
+ it->sex = value;
+ break;
+ case 5:
+ it->equip = value;
+ break;
+ case 6:
+ it->weight = value;
+ break;
+ case 7:
+ it->atk = value;
+ break;
+ case 8:
+ it->def = value;
+ break;
+ case 9:
+ it->range = value;
+ break;
+ case 10:
+ it->slot = value;
+ break;
+ case 11:
+ it->subtype = value;
+ break;
+ case 12:
+ it->elv = value;
+ break;
+ case 13:
+ it->wlv = value;
+ break;
+ case 14:
+ it->view_id = value;
+ break;
+ default:
script_pushint(st,-1);
+ return true;
}
+ script_pushint(st,value);
return true;
}
@@ -15464,15 +15605,15 @@ BUILDIN(getlook)
type=script_getnum(st,2);
switch(type) {
case LOOK_HAIR: val = sd->status.hair; break; //1
- case LOOK_WEAPON: val = sd->status.weapon; break; //2
- case LOOK_HEAD_BOTTOM: val = sd->status.head_bottom; break; //3
- case LOOK_HEAD_TOP: val = sd->status.head_top; break; //4
- case LOOK_HEAD_MID: val = sd->status.head_mid; break; //5
+ case LOOK_WEAPON: val = sd->status.look.weapon; break; //2
+ case LOOK_HEAD_BOTTOM: val = sd->status.look.head_bottom; break; //3
+ case LOOK_HEAD_TOP: val = sd->status.look.head_top; break; //4
+ case LOOK_HEAD_MID: val = sd->status.look.head_mid; break; //5
case LOOK_HAIR_COLOR: val = sd->status.hair_color; break; //6
case LOOK_CLOTHES_COLOR: val = sd->status.clothes_color; break; //7
- case LOOK_SHIELD: val = sd->status.shield; break; //8
+ case LOOK_SHIELD: val = sd->status.look.shield; break; //8
case LOOK_SHOES: break; //9
- case LOOK_ROBE: val = sd->status.robe; break; //12
+ case LOOK_ROBE: val = sd->status.look.robe; break; //12
case LOOK_BODY2: val=sd->status.body; break; //13
}
@@ -15722,19 +15863,38 @@ BUILDIN(getmapxy)
return true;
}
+enum logmes_type {
+ LOGMES_NPC,
+ LOGMES_ATCOMMAND
+};
+
/*==========================================
- * Allows player to write NPC logs (i.e. Bank NPC, etc) [Lupus]
+ * Allows player to write logs (i.e. Bank NPC, etc) [Lupus]
*------------------------------------------*/
BUILDIN(logmes)
{
- const char *str;
+ const char *str = script_getstr(st, 2);
struct map_session_data *sd = script->rid2sd(st);
+ enum logmes_type type = LOGMES_NPC;
+ nullpo_retr(false, sd);
- if (sd == NULL)
- return true;
+ if (script_hasdata(st, 3)) {
+ type = script_getnum(st, 3);
+ }
+
+ switch (type) {
+ case LOGMES_ATCOMMAND:
+ logs->atcommand(sd, str);
+ break;
+ case LOGMES_NPC:
+ logs->npc(sd, str);
+ break;
+ default:
+ ShowError("script:logmes: Unknown log type!\n");
+ st->state = END;
+ return false;
+ }
- str = script_getstr(st,2);
- logs->npc(sd,str);
return true;
}
@@ -18057,6 +18217,8 @@ BUILDIN(setunitdata)
case UDT_INTIMACY:
case UDT_LIFETIME:
case UDT_MERC_KILLCOUNT:
+ case UDT_ROBE:
+ case UDT_BODY2:
setunitdata_check_min(4, 0);
break;
case UDT_MASTERAID:
@@ -18995,6 +19157,40 @@ BUILDIN(setunitdata)
case UDT_DMOTION:
nd->status.dmotion = (unsigned short) val;
break;
+ case UDT_SEX:
+ nd->vd.sex = (char)val;
+ npc->refresh(nd);
+ break;
+ case UDT_HAIRSTYLE:
+ clif->changelook(bl, LOOK_HAIR, val);
+ break;
+ case UDT_HAIRCOLOR:
+ clif->changelook(bl, LOOK_HAIR_COLOR, val);
+ break;
+ case UDT_HEADBOTTOM:
+ clif->changelook(bl, LOOK_HEAD_BOTTOM, val);
+ break;
+ case UDT_HEADMIDDLE:
+ clif->changelook(bl, LOOK_HEAD_MID, val);
+ break;
+ case UDT_HEADTOP:
+ clif->changelook(bl, LOOK_HEAD_TOP, val);
+ break;
+ case UDT_CLOTHCOLOR:
+ clif->changelook(bl, LOOK_CLOTHES_COLOR, val);
+ break;
+ case UDT_SHIELD:
+ clif->changelook(bl, LOOK_SHIELD, val);
+ break;
+ case UDT_WEAPON:
+ clif->changelook(bl, LOOK_WEAPON, val);
+ break;
+ case UDT_ROBE:
+ clif->changelook(bl, LOOK_ROBE, val);
+ break;
+ case UDT_BODY2:
+ clif->changelook(bl, LOOK_BODY2, val);
+ break;
default:
ShowWarning("buildin_setunitdata: Invalid data type '%s' for NPC unit.\n", udtype);
script_pushint(st, 0);
@@ -19405,6 +19601,18 @@ BUILDIN(getunitdata)
case UDT_AMOTION: script_pushint(st, nd->status.amotion); break;
case UDT_ADELAY: script_pushint(st, nd->status.adelay); break;
case UDT_DMOTION: script_pushint(st, nd->status.dmotion); break;
+ case UDT_SEX: script_pushint(st, nd->vd.sex); break;
+ case UDT_CLASS: script_pushint(st, nd->vd.class); break;
+ case UDT_HAIRSTYLE: script_pushint(st, nd->vd.hair_style); break;
+ case UDT_HAIRCOLOR: script_pushint(st, nd->vd.hair_color); break;
+ case UDT_HEADBOTTOM: script_pushint(st, nd->vd.head_bottom); break;
+ case UDT_HEADMIDDLE: script_pushint(st, nd->vd.head_mid); break;
+ case UDT_HEADTOP: script_pushint(st, nd->vd.head_top); break;
+ case UDT_CLOTHCOLOR: script_pushint(st, nd->vd.cloth_color); break;
+ case UDT_SHIELD: script_pushint(st, nd->vd.shield); break;
+ case UDT_WEAPON: script_pushint(st, nd->vd.weapon); break;
+ case UDT_ROBE: script_pushint(st, nd->vd.robe); break;
+ case UDT_BODY2: script_pushint(st, nd->vd.body_style); break;
default:
ShowWarning("buildin_getunitdata: Invalid data type '%s' for NPC unit.\n", udtype);
script_pushint(st, 0);
@@ -20292,15 +20500,18 @@ BUILDIN(questinfo)
quest_id = script_getnum(st, 2);
icon = script_getnum(st, 3);
- #if PACKETVER >= 20120410
- if(icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
- icon = 9999; // Default to nothing if icon id is invalid.
- #else
- if(icon < 0 || icon > 7)
- icon = 0;
- else
- icon = icon + 1;
- #endif
+#if PACKETVER >= 20170315
+ if (icon < 0 || (icon > 10 && icon != 9999))
+ icon = 9999;
+#elif PACKETVER >= 20120410
+ if (icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
+ icon = 9999; // Default to nothing if icon id is invalid.
+#else
+ if (icon < 0 || icon > 7)
+ icon = 0;
+ else
+ icon = icon + 1;
+#endif
qi.quest_id = quest_id;
qi.icon = (unsigned char)icon;
@@ -20494,15 +20705,18 @@ BUILDIN(showevent)
}
}
- #if PACKETVER >= 20120410
- if(icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
- icon = 9999; // Default to nothing if icon id is invalid.
- #else
- if(icon < 0 || icon > 7)
- icon = 0;
- else
- icon = icon + 1;
- #endif
+#if PACKETVER >= 20170315
+ if (icon < 0 || (icon > 10 && icon != 9999))
+ icon = 9999;
+#elif PACKETVER >= 20120410
+ if (icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
+ icon = 9999; // Default to nothing if icon id is invalid.
+#else
+ if (icon < 0 || icon > 7)
+ icon = 0;
+ else
+ icon = icon + 1;
+#endif
clif->quest_show_event(sd, &nd->bl, icon, color);
return true;
@@ -23321,6 +23535,50 @@ BUILDIN(activatepset);
BUILDIN(deactivatepset);
BUILDIN(deletepset);
+enum dressroom_mode {
+ DRESSROOM_CLOSE = 0,
+ DRESSROOM_OPEN = 1
+};
+
+/**
+ * dressroom({<enum dressroom_mode>});
+ */
+BUILDIN(dressroom)
+{
+#if PACKETVER >= 20150513
+ struct map_session_data *sd = script->rid2sd(st);
+ enum dressroom_mode mode = DRESSROOM_OPEN;
+
+ if (sd == NULL) {
+ return false;
+ }
+
+ if (script_hasdata(st, 2)) {
+ mode = script_getnum(st, 2);
+ }
+
+ switch (mode) {
+ case DRESSROOM_OPEN:
+ clif->dressroom_open(sd, 1);
+ break;
+ case DRESSROOM_CLOSE:
+ clif->dressroom_open(sd, 0);
+ break;
+ default:
+ ShowWarning("script:dressroom: unknown mode (%u).\n", mode);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ script_pushint(st, 1);
+ return true;
+#else
+ ShowError("The dressing room works only with packet version >= 20150513");
+ script_pushint(st, 0);
+ return false;
+#endif
+}
+
BUILDIN(pcre_match)
{
const char *input = script_getstr(st, 2);
@@ -23421,7 +23679,7 @@ BUILDIN(rodex_sendmail)
// Common parameters - sender/message/zeny
if (rodex_sendmail_sub(st, &msg) == false)
return false;
-
+
// Item list
while (i < RODEX_MAX_ITEM && script_hasdata(st, param)) {
struct item_data *idata;
@@ -23450,7 +23708,7 @@ BUILDIN(rodex_sendmail)
msg.items[i].item.nameid = idata->nameid;
msg.items[i].item.amount = script_getnum(st, (param + 1));
msg.items[i].item.identify = 1;
-
+
++i;
param += 2;
}
@@ -23528,7 +23786,7 @@ BUILDIN(rodex_sendmail2)
for (j = 0; j < MAX_SLOTS; ++j) {
msg.items[i].item.card[j] = script_getnum(st, param + 4 + j);
}
-
+
++i;
param += 4 + MAX_SLOTS;
}
@@ -23806,7 +24064,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(basicskillcheck,""),
BUILDIN_DEF(getgmlevel,""),
BUILDIN_DEF(setgroupid, "i?"),
- BUILDIN_DEF(getgroupid,""),
+ BUILDIN_DEF(getgroupid,"?"),
BUILDIN_DEF(end,""),
BUILDIN_DEF(checkoption,"i?"),
BUILDIN_DEF(setoption,"i??"),
@@ -23887,6 +24145,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(isloggedin,"i?"),
BUILDIN_DEF(setmapflagnosave,"ssii"),
BUILDIN_DEF(getmapflag,"si"),
+ BUILDIN_DEF(getmapinfo,"i?"),
BUILDIN_DEF(setmapflag,"si?"),
BUILDIN_DEF(removemapflag,"si"),
BUILDIN_DEF(pvpon,"s"),
@@ -23963,7 +24222,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(checkoption2,"i?"),
BUILDIN_DEF(guildgetexp,"i"),
BUILDIN_DEF(guildchangegm,"is"),
- BUILDIN_DEF(logmes,"s"), //this command actls as MES but rints info into LOG file either SQL/TXT [Lupus]
+ BUILDIN_DEF(logmes,"s?"), //this command actls as MES but rints info into LOG file either SQL/TXT [Lupus]
BUILDIN_DEF(summon,"si??"), // summons a slave monster [Celest]
BUILDIN_DEF(isnight,""), // check whether it is night time [Celest]
BUILDIN_DEF(isequipped,"i*"), // check whether another item/card has been equipped [Celest]
@@ -23976,6 +24235,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(activatepset,"i"), // Activate a pattern set [MouseJstr]
BUILDIN_DEF(deactivatepset,"i"), // Deactive a pattern set [MouseJstr]
BUILDIN_DEF(deletepset,"i"), // Delete a pattern set [MouseJstr]
+ BUILDIN_DEF(dressroom,"?"),
BUILDIN_DEF(pcre_match,"ss"),
BUILDIN_DEF(dispbottom,"s?"), //added from jA [Lupus]
BUILDIN_DEF(getusersname,""),
@@ -24178,7 +24438,7 @@ void script_parse_builtin(void) {
**/
BUILDIN_DEF(bindatcmd, "ss???"),
BUILDIN_DEF(unbindatcmd, "s"),
- BUILDIN_DEF(useatcmd, "s"),
+ BUILDIN_DEF_DEPRECATED(useatcmd, "s"),
BUILDIN_DEF(has_permission, "v?"),
BUILDIN_DEF(can_use_command, "s?"),
BUILDIN_DEF(add_group_command, "siii"),
@@ -24404,6 +24664,15 @@ void script_hardcoded_constants(void)
script->set_constant("EQP_SHADOW_SHOES", EQP_SHADOW_SHOES, false, false);
script->set_constant("EQP_SHADOW_ACC_R", EQP_SHADOW_ACC_R, false, false);
script->set_constant("EQP_SHADOW_ACC_L", EQP_SHADOW_ACC_L, false, false);
+ // Synonyms and combined values
+ script->set_constant("EQP_WEAPON", EQP_WEAPON, false, false);
+ script->set_constant("EQP_SHIELD", EQP_SHIELD, false, false);
+ script->set_constant("EQP_ARMS", EQP_ARMS, false, false);
+ script->set_constant("EQP_HELM", EQP_HELM, false, false);
+ script->set_constant("EQP_ACC", EQP_ACC, false, false);
+ script->set_constant("EQP_COSTUME", EQP_COSTUME, false, false);
+ script->set_constant("EQP_SHADOW_ACC", EQP_SHADOW_ACC, false, false);
+ script->set_constant("EQP_SHADOW_ARMS", EQP_SHADOW_ARMS, false, false);
script->constdb_comment("Item Option Types");
script->set_constant("IT_OPT_INDEX", IT_OPT_INDEX, false, false);
@@ -24480,6 +24749,68 @@ void script_hardcoded_constants(void)
script->set_constant("DATATYPE_VAR", DATATYPE_VAR, false, false);
script->set_constant("DATATYPE_LABEL", DATATYPE_LABEL, false, false);
+ script->constdb_comment("Logmes types");
+ script->set_constant("LOGMES_NPC", LOGMES_NPC, false, false);
+ script->set_constant("LOGMES_ATCOMMAND", LOGMES_ATCOMMAND, false, false);
+
+ script->constdb_comment("Item Subtypes (Weapon types)");
+ script->set_constant("W_FIST", W_FIST, false, false);
+ script->set_constant("W_DAGGER", W_DAGGER, false, false);
+ script->set_constant("W_1HSWORD", W_1HSWORD, false, false);
+ script->set_constant("W_2HSWORD", W_2HSWORD, false, false);
+ script->set_constant("W_1HSPEAR", W_1HSPEAR, false, false);
+ script->set_constant("W_2HSPEAR", W_2HSPEAR, false, false);
+ script->set_constant("W_1HAXE", W_1HAXE, false, false);
+ script->set_constant("W_2HAXE", W_2HAXE, false, false);
+ script->set_constant("W_MACE", W_MACE, false, false);
+ script->set_constant("W_2HMACE", W_2HMACE, false, false);
+ script->set_constant("W_STAFF", W_STAFF, false, false);
+ script->set_constant("W_BOW", W_BOW, false, false);
+ script->set_constant("W_KNUCKLE", W_KNUCKLE, false, false);
+ script->set_constant("W_MUSICAL", W_MUSICAL, false, false);
+ script->set_constant("W_WHIP", W_WHIP, false, false);
+ script->set_constant("W_BOOK", W_BOOK, false, false);
+ script->set_constant("W_KATAR", W_KATAR, false, false);
+ script->set_constant("W_REVOLVER", W_REVOLVER, false, false);
+ script->set_constant("W_RIFLE", W_RIFLE, false, false);
+ script->set_constant("W_GATLING", W_GATLING, false, false);
+ script->set_constant("W_SHOTGUN", W_SHOTGUN, false, false);
+ script->set_constant("W_GRENADE", W_GRENADE, false, false);
+ script->set_constant("W_HUUMA", W_HUUMA, false, false);
+ script->set_constant("W_2HSTAFF", W_2HSTAFF, false, false);
+
+ script->constdb_comment("Item Subtypes (Ammunition types)");
+ script->set_constant("A_ARROW", A_ARROW, false, false);
+ script->set_constant("A_DAGGER", A_DAGGER, false, false);
+ script->set_constant("A_BULLET", A_BULLET, false, false);
+ script->set_constant("A_SHELL", A_SHELL, false, false);
+ script->set_constant("A_GRENADE", A_GRENADE, false, false);
+ script->set_constant("A_SHURIKEN", A_SHURIKEN, false, false);
+ script->set_constant("A_KUNAI", A_KUNAI, false, false);
+ script->set_constant("A_CANNONBALL", A_CANNONBALL, false, false);
+ script->set_constant("A_THROWWEAPON", A_THROWWEAPON, false, false);
+
+ script->constdb_comment("Item Upper Masks");
+ script->set_constant("ITEMUPPER_NONE", ITEMUPPER_NONE, false, false);
+ script->set_constant("ITEMUPPER_NORMAL", ITEMUPPER_NORMAL, false, false);
+ script->set_constant("ITEMUPPER_UPPER", ITEMUPPER_UPPER, false, false);
+ script->set_constant("ITEMUPPER_BABY", ITEMUPPER_BABY, false, false);
+ script->set_constant("ITEMUPPER_THIRD", ITEMUPPER_THIRD, false, false);
+ script->set_constant("ITEMUPPER_THIRDUPPER", ITEMUPPER_THIRDUPPER, false, false);
+ script->set_constant("ITEMUPPER_THIRDBABY", ITEMUPPER_THIRDBABY, false, false);
+ script->set_constant("ITEMUPPER_ALL", ITEMUPPER_ALL, false, false);
+
+ script->constdb_comment("dressroom modes");
+ script->set_constant("DRESSROOM_OPEN", DRESSROOM_OPEN, false, false);
+ script->set_constant("DRESSROOM_CLOSE", DRESSROOM_CLOSE, false, false);
+
+ script->constdb_comment("getmapinfo options");
+ script->set_constant("MAPINFO_NAME", MAPINFO_NAME, false, false);
+ script->set_constant("MAPINFO_ID", MAPINFO_ID, false, false);
+ script->set_constant("MAPINFO_SIZE_X", MAPINFO_SIZE_X, false, false);
+ script->set_constant("MAPINFO_SIZE_Y", MAPINFO_SIZE_Y, false, false);
+ script->set_constant("MAPINFO_ZONE", MAPINFO_ZONE, false, false);
+
script->constdb_comment("Renewal");
#ifdef RENEWAL
script->set_constant("RENEWAL", 1, false, false);
diff --git a/src/map/script.h b/src/map/script.h
index 189122230..b2ab7510c 100644
--- a/src/map/script.h
+++ b/src/map/script.h
@@ -336,6 +336,7 @@ enum {
MF_RESET,
MF_NOTOMB,
MF_NOCASHSHOP,
+ MF_NOAUTOLOOT,
MF_NOVIEWID
};
@@ -422,6 +423,8 @@ enum script_unit_data_types {
UDT_LIFETIME,
UDT_MERC_KILLCOUNT,
UDT_STATPOINT,
+ UDT_ROBE,
+ UDT_BODY2,
UDT_MAX
};
diff --git a/src/map/skill.c b/src/map/skill.c
index e187b7e8b..726deaa9a 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -476,9 +476,9 @@ int can_copy (struct map_session_data *sd, uint16 skill_id, struct block_list* b
return 0;
// Couldn't preserve 3rd Class/Summoner skills except only when using Reproduce skill. [Jobbie]
- if (!(sd->sc.data[SC__REPRODUCE]) &&
- ((skill_id >= RK_ENCHANTBLADE && skill_id <= LG_OVERBRAND_PLUSATK) ||
- (skill_id >= RL_GLITTERING_GREED && skill_id <= OB_AKAITSUKI) ||
+ if (!(sd->sc.data[SC__REPRODUCE]) &&
+ ((skill_id >= RK_ENCHANTBLADE && skill_id <= LG_OVERBRAND_PLUSATK) ||
+ (skill_id >= RL_GLITTERING_GREED && skill_id <= OB_AKAITSUKI) ||
(skill_id >= GC_DARKCROW && skill_id <= SU_FRESHSHRIMP)))
return 0;
// Reproduce will only copy skills according on the list. [Jobbie]
@@ -806,7 +806,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
break; // If a normal attack is a skill, it's splash damage. [Inkfish]
if(sd) {
// Automatic trigger of Blitz Beat
- if (pc_isfalcon(sd) && sd->status.weapon == W_BOW && (temp=pc->checkskill(sd,HT_BLITZBEAT))>0 &&
+ if (pc_isfalcon(sd) && sd->weapontype == W_BOW && (temp=pc->checkskill(sd,HT_BLITZBEAT))>0 &&
rnd()%1000 <= sstatus->luk*3 ) {
rate = sd->status.job_level / 10 + 1;
skill->castend_damage_id(src,bl,HT_BLITZBEAT,(temp<rate)?temp:rate,tick,SD_LEVEL);
@@ -815,7 +815,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
if( pc_iswug(sd) && (temp=pc->checkskill(sd,RA_WUGSTRIKE)) > 0 && rnd()%1000 <= sstatus->luk*3 )
skill->castend_damage_id(src,bl,RA_WUGSTRIKE,temp,tick,0);
// Gank
- if(dstmd && sd->status.weapon != W_BOW &&
+ if(dstmd && sd->weapontype != W_BOW &&
(temp=pc->checkskill(sd,RG_SNATCHER)) > 0 &&
(temp*15 + 55) + pc->checkskill(sd,TF_STEAL)*10 > rnd()%1000) {
if(pc->steal_item(sd,bl,pc->checkskill(sd,TF_STEAL)))
@@ -2012,7 +2012,7 @@ int skill_break_equip (struct block_list *bl, unsigned short where, int rate, in
if (sd->bonus.unbreakable)
rate -= rate*sd->bonus.unbreakable/100;
if (where&EQP_WEAPON) {
- switch (sd->status.weapon) {
+ switch (sd->weapontype) {
case W_FIST: //Bare fists should not break :P
case W_1HAXE:
case W_2HAXE:
@@ -5917,7 +5917,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case SA_LIGHTNINGLOADER:
case SA_SEISMICWEAPON:
if (dstsd) {
- if(dstsd->status.weapon == W_FIST ||
+ if (dstsd->weapontype == W_FIST ||
(dstsd->sc.count && !dstsd->sc.data[type] &&
( //Allow re-enchanting to lengthen time. [Skotlex]
dstsd->sc.data[SC_PROPERTYFIRE] ||
@@ -13391,7 +13391,7 @@ int skill_isammotype (struct map_session_data *sd, int skill_id)
nullpo_ret(sd);
return (
battle_config.arrow_decrement==2 &&
- (sd->status.weapon == W_BOW || (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE)) &&
+ (sd->weapontype == W_BOW || (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE)) &&
skill_id != HT_PHANTASMIC &&
skill->get_type(skill_id) == BF_WEAPON &&
!(skill->get_nk(skill_id)&NK_NO_DAMAGE) &&
@@ -13832,9 +13832,9 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
break;
case PR_REDEMPTIO:
{
- int exp;
- if( ((exp = pc->nextbaseexp(sd)) > 0 && get_percentage(sd->status.base_exp, exp) < 1) ||
- ((exp = pc->nextjobexp(sd)) > 0 && get_percentage(sd->status.job_exp, exp) < 1)) {
+ int64 exp;
+ if (((exp = pc->nextbaseexp(sd)) > 0 && get_percentage64(sd->status.base_exp, exp) < 1) ||
+ ((exp = pc->nextjobexp(sd)) > 0 && get_percentage64(sd->status.job_exp, exp) < 1)) {
clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); //Not enough exp.
return 0;
}
@@ -14245,7 +14245,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
}
break;
case ST_SHIELD:
- if(sd->status.shield <= 0) {
+ if (!sd->has_shield) {
clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
return 0;
}
@@ -14555,7 +14555,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
clif->messagecolor_self(sd->fd, COLOR_RED, e_msg);
return 0;
}
- if (!(require.ammo&1<<sd->inventory_data[i]->look)) { //Ammo type check. Send the "wrong weapon type" message
+ if (!(require.ammo&1<<sd->inventory_data[i]->subtype)) { //Ammo type check. Send the "wrong weapon type" message
//which is the closest we have to wrong ammo type. [Skotlex]
clif->arrow_fail(sd,0); //Haplo suggested we just send the equip-arrows message instead. [Skotlex]
//clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0);
@@ -18984,7 +18984,8 @@ void skill_init_unit_layout (void)
void skill_init_unit_layout_unknown(int skill_idx)
{
- ShowError("unknown unit layout at skill %d\n", skill_idx);
+ Assert_retv(skill_idx >= 0 && skill_idx < MAX_SKILL_DB);
+ ShowError("unknown unit layout at skill %d\n", skill->dbs->db[skill_idx].nameid);
}
int skill_block_check(struct block_list *bl, sc_type type , uint16 skill_id)
@@ -19530,7 +19531,7 @@ void skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_db *
}
}
}
-
+
/**
* Validates "SkillInfo" when reading skill_db.conf
* @param conf struct, pointer to skill configuration
@@ -20442,7 +20443,7 @@ void skill_validate_additional_fields(struct config_setting_t *conf, struct s_sk
bool skill_validate_skilldb(struct s_skill_db *sk, const char *source)
{
int idx;
-
+
nullpo_retr(false, sk);
idx = skill->get_index(sk->nameid);
if (idx == 0) {
@@ -20460,10 +20461,10 @@ bool skill_validate_skilldb(struct s_skill_db *sk, const char *source)
strdb_iput(skill->name2id_db, skill->dbs->db[idx].name, skill->dbs->db[idx].nameid);
/* Set Name to Id script constants */
script->set_constant2(skill->dbs->db[idx].name, (int)skill->dbs->db[idx].nameid, false, false);
-
+
return true;
}
-
+
/**
* Reads skill_db.conf from relative filepath and processes [ Smokexyz/Hercules ]
* entries into the skill database.
@@ -20477,11 +20478,11 @@ bool skill_read_skilldb(const char *filename)
char filepath[256];
int count=0, index=0;
bool duplicate[MAX_SKILL] = {0};
-
+
nullpo_retr(false, filename);
sprintf(filepath,"db/%s",filename);
-
+
if (!libconfig->load_file(&skilldb, filepath)) {
return false; // Libconfig error report.
}
@@ -20503,9 +20504,9 @@ bool skill_read_skilldb(const char *filename)
ShowError("skill_read_skilldb: Skill Id not specified for entry %d in '%s', skipping...\n", index, filepath );
continue;
}
-
+
tmp_db.nameid = skill_id;
-
+
if((idx = skill->get_index(skill_id)) == 0) {
ShowError("skill_read_skilldb: Skill Id %d is out of range, or within a reserved range (for guild, homunculus, mercenary or elemental skills). skipping...\n", idx);
continue;
@@ -20515,7 +20516,7 @@ bool skill_read_skilldb(const char *filename)
ShowWarning("skill_read_skilldb: Duplicate Skill Id %d in entry %d in '%s', skipping...\n", skill_id, index, filepath);
continue;
}
-
+
/* Skill Name Constant */
if (!libconfig->setting_lookup_mutable_string(conf, "Name", tmp_db.name, sizeof(tmp_db.name))) {
ShowError("skill_read_skilldb: Name not specified for skill Id %d in '%s', skipping...\n", skill_id, filepath);
@@ -20705,12 +20706,12 @@ bool skill_read_skilldb(const char *filename)
/* Additional Fields for Plugins */
skill->validate_additional_fields(conf, &tmp_db);
-
+
// Validate the skill entry, add it to the duplicate array and increment count on success.
if ((duplicate[idx] = skill->validate_skilldb(&tmp_db, filepath)))
count++;
}
-
+
libconfig->destroy(&skilldb);
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filepath);
@@ -20742,7 +20743,7 @@ void skill_readdb(bool minimal)
safestrncpy(skill->dbs->db[0].desc, "Unknown Skill", sizeof(skill->dbs->db[0].desc));
itemdb->name_constants(); // refresh ItemDB constants before loading of skills
-
+
#ifdef ENABLE_CASE_CHECK
script->parser_current_file = DBPATH"skill_db.conf";
#endif // ENABLE_CASE_CHECK
@@ -20753,7 +20754,7 @@ void skill_readdb(bool minimal)
if (minimal)
return;
-
+
skill->init_unit_layout();
sv->readdb(map->db_path, "produce_db.txt", ',', 4, 4+2*MAX_PRODUCE_RESOURCE, MAX_SKILL_PRODUCE_DB, skill->parse_row_producedb);
sv->readdb(map->db_path, "create_arrow_db.txt", ',', 1+2, 1+2*MAX_ARROW_RESOURCE, MAX_SKILL_ARROW_DB, skill->parse_row_createarrowdb);
diff --git a/src/map/status.c b/src/map/status.c
index c98857736..ccd1e6b11 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -2651,31 +2651,31 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
}
}
}
-
+
/* parse item options [Smokexyz] */
for (i = 0; i < EQI_MAX; i++) {
status->current_equip_item_index = index = sd->equip_index[i];
status->current_equip_option_index = -1;
-
+
if (i == EQI_HAND_R && sd->equip_index[EQI_HAND_L] == index)
continue;
else if (i == EQI_HEAD_MID && sd->equip_index[EQI_HEAD_LOW] == index)
continue;
else if (i == EQI_HEAD_TOP && (sd->equip_index[EQI_HEAD_MID] == index || sd->equip_index[EQI_HEAD_LOW] == index))
continue;
-
+
if (index >= 0 && sd->inventory_data[index]) {
int j = 0;
for (j = 0; j < MAX_ITEM_OPTIONS; j++) {
int16 option_index = sd->status.inventory[index].option[j].index;
struct item_option *ito = NULL;
-
+
if (option_index == 0 || (ito = itemdb->option_exists(option_index)) == NULL || ito->script == NULL)
continue;
-
+
status->current_equip_option_index = j;
script->run(ito->script, 0, sd->bl.id, 0);
-
+
if (calculating == 0) //Abort, script->run his function. [Skotlex]
return 1;
}
@@ -2713,9 +2713,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
sd->left_weapon.atkmods[1] = status->dbs->atkmods[1][sd->weapontype2];
sd->left_weapon.atkmods[2] = status->dbs->atkmods[2][sd->weapontype2];
- if ((pc_isridingpeco(sd) || pc_isridingdragon(sd))
- && (sd->status.weapon==W_1HSPEAR || sd->status.weapon==W_2HSPEAR)
- ) {
+ if ((pc_isridingpeco(sd) || pc_isridingdragon(sd)) && (sd->weapontype == W_1HSPEAR || sd->weapontype == W_2HSPEAR)) {
//When Riding with spear, damage modifier to mid-class becomes
//same as versus large size.
sd->right_weapon.atkmods[1] = sd->right_weapon.atkmods[2];
@@ -2779,8 +2777,8 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
// Base batk value is set on status->calc_misc
// weapon-type bonus (FIXME: Why is the weapon_atk bonus applied to base attack?)
- if (sd->status.weapon < MAX_SINGLE_WEAPON_TYPE && sd->weapon_atk[sd->status.weapon])
- bstatus->batk += sd->weapon_atk[sd->status.weapon];
+ if (sd->weapontype < MAX_SINGLE_WEAPON_TYPE && sd->weapon_atk[sd->weapontype])
+ bstatus->batk += sd->weapon_atk[sd->weapontype];
// Absolute modifiers from passive skills
#ifndef RENEWAL
if((skill_lv=pc->checkskill(sd,BS_HILTBINDING))>0) // it doesn't work in RE.
@@ -2928,10 +2926,10 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
#ifndef RENEWAL
bstatus->hit += skill_lv;
#endif
- if(sd->status.weapon == W_BOW)
+ if (sd->weapontype == W_BOW)
bstatus->rhw.range += skill_lv;
}
- if(sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE) {
+ if (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE) {
if((skill_lv=pc->checkskill(sd,GS_SINGLEACTION))>0)
bstatus->hit += 2*skill_lv;
if((skill_lv=pc->checkskill(sd,GS_SNAKEEYE))>0) {
@@ -2939,9 +2937,9 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
bstatus->rhw.range += skill_lv;
}
}
- if( (sd->status.weapon == W_1HAXE || sd->status.weapon == W_2HAXE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0 )
+ if ((sd->weapontype == W_1HAXE || sd->weapontype == W_2HAXE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0)
bstatus->hit += 3*skill_lv;
- if((sd->status.weapon == W_MACE || sd->status.weapon == W_2HMACE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0)
+ if ((sd->weapontype == W_MACE || sd->weapontype == W_2HMACE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0)
bstatus->hit += 2*skill_lv;
if (pc->checkskill(sd, SU_POWEROFLIFE) > 0)
bstatus->hit += 20;
@@ -3001,12 +2999,11 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
// Relative modifiers from passive skills
#ifndef RENEWAL_ASPD
- if((skill_lv=pc->checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK)
+ if (sd->weapontype == W_BOOK && (skill_lv=pc->checkskill(sd,SA_ADVANCEDBOOK)) > 0)
bstatus->aspd_rate -= 5*skill_lv;
if((skill_lv = pc->checkskill(sd,SG_DEVIL)) > 0 && !pc->nextjobexp(sd))
bstatus->aspd_rate -= 30*skill_lv;
- if((skill_lv=pc->checkskill(sd,GS_SINGLEACTION))>0 &&
- (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE))
+ if (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE && (skill_lv=pc->checkskill(sd,GS_SINGLEACTION)) > 0)
bstatus->aspd_rate -= ((skill_lv+1)/2) * 10;
if (pc_isridingpeco(sd))
bstatus->aspd_rate += 500-100*pc->checkskill(sd,KN_CAVALIERMASTERY);
@@ -3896,7 +3893,7 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
} else {
st->cri = status->calc_critical(bl, sc, bst->cri + 3*(st->luk - bst->luk), true);
}
- if (battle_config.show_katar_crit_bonus && bl->type == BL_PC && BL_UCAST(BL_PC, bl)->status.weapon == W_KATAR) {
+ if (battle_config.show_katar_crit_bonus && bl->type == BL_PC && BL_UCAST(BL_PC, bl)->weapontype == W_KATAR) {
st->cri *= 2;
}
}
@@ -4327,11 +4324,11 @@ int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st)
nullpo_ret(st);
amotion = status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype1];
- if ( sd->status.weapon > MAX_SINGLE_WEAPON_TYPE)
+ if (sd->weapontype > MAX_SINGLE_WEAPON_TYPE)
amotion += status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype2] / 4;
- if ( sd->status.shield )
+ if (sd->has_shield)
amotion += status->dbs->aspd_base[pc->class2idx(sd->status.class)][MAX_SINGLE_WEAPON_TYPE];
- switch ( sd->status.weapon ) {
+ switch (sd->weapontype) {
case W_BOW:
case W_MUSICAL:
case W_WHIP:
@@ -4346,15 +4343,15 @@ int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st)
temp = st->dex * st->dex / 5.0f + st->agi * st->agi * 0.5f;
}
temp = (float)(sqrt(temp) * 0.25f) + 0xc4;
- if ( (skill_lv = pc->checkskill(sd, SA_ADVANCEDBOOK)) > 0 && sd->status.weapon == W_BOOK )
+ if (sd->weapontype == W_BOOK && (skill_lv = pc->checkskill(sd, SA_ADVANCEDBOOK)) > 0)
val += (skill_lv - 1) / 2 + 1;
if ( (skill_lv = pc->checkskill(sd, GS_SINGLEACTION)) > 0 )
val += ((skill_lv + 1) / 2);
amotion = ((int)(temp + ((float)(status->calc_aspd(&sd->bl, &sd->sc, 1) + val) * st->agi / 200)) - min(amotion, 200));
#else
// base weapon delay
- amotion = (sd->status.weapon < MAX_SINGLE_WEAPON_TYPE)
- ? (status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->status.weapon]) // single weapon
+ amotion = (sd->weapontype < MAX_SINGLE_WEAPON_TYPE)
+ ? (status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype]) // single weapon
: (status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype1] + status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype2]) * 7 / 10; // dual-wield
// percentual delay reduction from stats
@@ -4381,7 +4378,7 @@ unsigned short status_base_atk(const struct block_list *bl, const struct status_
return 0;
if (bl->type == BL_PC) {
- switch (BL_UCCAST(BL_PC, bl)->status.weapon) {
+ switch (BL_UCCAST(BL_PC, bl)->weapontype) {
case W_BOW:
case W_MUSICAL:
case W_WHIP:
@@ -5942,7 +5939,7 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl
if (bl->type != BL_PC) {
bonus = sc->data[SC_ASSNCROS]->val2;
} else {
- switch (BL_UCCAST(BL_PC, bl)->status.weapon) {
+ switch (BL_UCCAST(BL_PC, bl)->weapontype) {
case W_BOW:
case W_REVOLVER:
case W_RIFLE:
@@ -6103,7 +6100,7 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int
if (bl->type != BL_PC) {
max = sc->data[SC_ASSNCROS]->val2;
} else {
- switch (BL_UCCAST(BL_PC, bl)->status.weapon) {
+ switch (BL_UCCAST(BL_PC, bl)->weapontype) {
case W_BOW:
case W_REVOLVER:
case W_RIFLE:
@@ -6812,7 +6809,7 @@ struct view_data *status_get_viewdata(struct block_list *bl)
case BL_PC: return &BL_UCAST(BL_PC, bl)->vd;
case BL_MOB: return BL_UCAST(BL_MOB, bl)->vd;
case BL_PET: return &BL_UCAST(BL_PET, bl)->vd;
- case BL_NPC: return BL_UCAST(BL_NPC, bl)->vd;
+ case BL_NPC: return &BL_UCAST(BL_NPC, bl)->vd;
case BL_HOM: return BL_UCAST(BL_HOM, bl)->vd;
case BL_MER: return BL_UCAST(BL_MER, bl)->vd;
case BL_ELEM: return BL_UCAST(BL_ELEM, bl)->vd;
@@ -6867,13 +6864,13 @@ void status_set_viewdata(struct block_list *bl, int class_)
}
sd->vd.class = class_;
clif->get_weapon_view(sd, &sd->vd.weapon, &sd->vd.shield);
- sd->vd.head_top = sd->status.head_top;
- sd->vd.head_mid = sd->status.head_mid;
- sd->vd.head_bottom = sd->status.head_bottom;
+ sd->vd.head_top = sd->status.look.head_top;
+ sd->vd.head_mid = sd->status.look.head_mid;
+ sd->vd.head_bottom = sd->status.look.head_bottom;
sd->vd.hair_style = cap_value(sd->status.hair,0,battle_config.max_hair_style);
sd->vd.hair_color = cap_value(sd->status.hair_color,0,battle_config.max_hair_color);
sd->vd.cloth_color = cap_value(sd->status.clothes_color,0,battle_config.max_cloth_color);
- sd->vd.robe = sd->status.robe;
+ sd->vd.robe = sd->status.look.robe;
sd->vd.body_style = sd->status.body;
sd->vd.sex = sd->status.sex;
@@ -6930,10 +6927,14 @@ void status_set_viewdata(struct block_list *bl, int class_)
case BL_NPC:
{
struct npc_data *nd = BL_UCAST(BL_NPC, bl);
- if (vd != NULL)
- nd->vd = vd;
- else
+ if (vd != NULL) {
+ memcpy(&nd->vd, vd, sizeof(struct view_data));
+ } else if (pc->db_checkid(class_)) {
+ memset(&nd->vd, 0, sizeof(struct view_data));
+ nd->vd.class = class_;
+ } else {
ShowError("status_set_viewdata (NPC): No view data for class %d (name=%s)\n", class_, nd->name);
+ }
}
break;
case BL_HOM: //[blackhole89]
@@ -10747,7 +10748,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
}
if (begin_spurt && sce->val1 >= 7
&& DIFF_TICK(timer->gettick(), starttick) <= 1000
- && (!sd || (sd->weapontype1 == 0 && sd->weapontype2 == 0))
+ && (!sd || (sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST))
)
sc_start(bl, bl,SC_STRUP,100,sce->val1,skill->get_time2(status->sc2skill(type), sce->val1));
}
@@ -13332,7 +13333,7 @@ int status_readdb_refine_libconfig_sub(struct config_setting_t *r, const char *n
int bonus[MAX_REFINE], rnd_bonus[MAX_REFINE];
int chance[REFINE_CHANCE_TYPE_MAX][MAX_REFINE];
int i, j;
-
+
memset(&duplicate, 0, sizeof(duplicate));
memset(&bonus, 0, sizeof(bonus));
memset(&rnd_bonus, 0, sizeof(rnd_bonus));
diff --git a/src/map/status.h b/src/map/status.h
index eb3cf491b..a104c66ab 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -1927,7 +1927,7 @@ enum e_mode
//who were not on your field of sight when it happened)
//opt1: Non stackable status changes.
-enum {
+enum e_opt1 {
OPT1_STONE = 1, //Petrified
OPT1_FREEZE,
OPT1_STUN,
@@ -1940,7 +1940,7 @@ enum {
};
//opt2: Stackable status changes.
-enum {
+enum e_opt2 {
OPT2_POISON = 0x0001,
OPT2_CURSE = 0x0002,
OPT2_SILENCE = 0x0004,
@@ -1953,7 +1953,7 @@ enum {
};
//opt3: (SHOW_EFST_*)
-enum {
+enum e_opt3 {
OPT3_NORMAL = 0x00000000,
OPT3_QUICKEN = 0x00000001,
OPT3_OVERTHRUST = 0x00000002,
diff --git a/src/map/storage.c b/src/map/storage.c
index 01e7c7c27..716abd623 100644
--- a/src/map/storage.c
+++ b/src/map/storage.c
@@ -201,7 +201,7 @@ int storage_additem(struct map_session_data* sd, struct item* item_data, int amo
clif->storageitemadded(sd, it, i, amount);
sd->storage.save = true; // set a save flag.
-
+
return 0;
}
}
@@ -249,7 +249,7 @@ int storage_delitem(struct map_session_data* sd, int n, int amount)
Assert_retr(1, n >= 0 && n < VECTOR_LENGTH(sd->storage.item));
it = &VECTOR_INDEX(sd->storage.item, n);
-
+
Assert_retr(1, amount <= it->amount);
Assert_retr(1, it->nameid > 0);
diff --git a/src/map/unit.c b/src/map/unit.c
index 00c78054b..0b5b21caf 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -474,7 +474,7 @@ int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
ud->to_x = bl->x;
ud->to_y = bl->y;
- if(battle_config.official_cell_stack_limit && map->count_oncell(bl->m, x, y, BL_CHAR|BL_NPC, 1) > battle_config.official_cell_stack_limit) {
+ if (battle_config.official_cell_stack_limit && map->count_oncell(bl->m, x, y, BL_CHAR|BL_NPC, 0x1 | 0x2) > battle_config.official_cell_stack_limit) {
//Walked on occupied cell, call unit_walktoxy again
if(ud->steptimer != INVALID_TIMER) {
//Execute step timer on next step instead
diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc
index 3ec573b6f..9482e6c15 100644
--- a/src/plugins/HPMHooking/HPMHooking.Defs.inc
+++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc
@@ -1180,8 +1180,8 @@ typedef void (*HPMHOOK_pre_clif_viewequip_ack) (struct map_session_data **sd, st
typedef void (*HPMHOOK_post_clif_viewequip_ack) (struct map_session_data *sd, struct map_session_data *tsd);
typedef void (*HPMHOOK_pre_clif_equpcheckbox) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_equpcheckbox) (struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_clif_displayexp) (struct map_session_data **sd, unsigned int *exp, char *type, bool *is_quest);
-typedef void (*HPMHOOK_post_clif_displayexp) (struct map_session_data *sd, unsigned int exp, char type, bool is_quest);
+typedef void (*HPMHOOK_pre_clif_displayexp) (struct map_session_data **sd, uint64 *exp, char *type, bool *is_quest);
+typedef void (*HPMHOOK_post_clif_displayexp) (struct map_session_data *sd, uint64 exp, char type, bool is_quest);
typedef void (*HPMHOOK_pre_clif_font) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_font) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_progressbar) (struct map_session_data **sd, unsigned int *color, unsigned int *second);
@@ -2260,6 +2260,8 @@ typedef void (*HPMHOOK_pre_clif_rodex_send_maillist) (int *fd, struct map_sessio
typedef void (*HPMHOOK_post_clif_rodex_send_maillist) (int fd, struct map_session_data *sd, int8 open_type, int64 page_start);
typedef void (*HPMHOOK_pre_clif_rodex_send_refresh) (int *fd, struct map_session_data **sd, int8 *open_type, int *count);
typedef void (*HPMHOOK_post_clif_rodex_send_refresh) (int fd, struct map_session_data *sd, int8 open_type, int count);
+typedef void (*HPMHOOK_pre_clif_rodex_send_mails_all) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_rodex_send_mails_all) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pRodexReadMail) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pRodexReadMail) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_rodex_read_mail) (struct map_session_data **sd, int8 *opentype, struct rodex_message **msg);
@@ -2508,8 +2510,8 @@ typedef int (*HPMHOOK_pre_guild_getindex) (const struct guild **g, int *account_
typedef int (*HPMHOOK_post_guild_getindex) (int retVal___, const struct guild *g, int account_id, int char_id);
typedef int (*HPMHOOK_pre_guild_getposition) (struct guild **g, struct map_session_data **sd);
typedef int (*HPMHOOK_post_guild_getposition) (int retVal___, struct guild *g, struct map_session_data *sd);
-typedef unsigned int (*HPMHOOK_pre_guild_payexp) (struct map_session_data **sd, unsigned int *exp);
-typedef unsigned int (*HPMHOOK_post_guild_payexp) (unsigned int retVal___, struct map_session_data *sd, unsigned int exp);
+typedef uint64 (*HPMHOOK_pre_guild_payexp) (struct map_session_data **sd, uint64 *exp);
+typedef uint64 (*HPMHOOK_post_guild_payexp) (uint64 retVal___, struct map_session_data *sd, uint64 exp);
typedef int (*HPMHOOK_pre_guild_getexp) (struct map_session_data **sd, int *exp);
typedef int (*HPMHOOK_post_guild_getexp) (int retVal___, struct map_session_data *sd, int exp);
typedef int (*HPMHOOK_pre_guild_create) (struct map_session_data **sd, const char **name);
@@ -3510,6 +3512,8 @@ typedef bool (*HPMHOOK_pre_itemdb_is_item_usable) (struct item_data **item);
typedef bool (*HPMHOOK_post_itemdb_is_item_usable) (bool retVal___, struct item_data *item);
typedef bool (*HPMHOOK_pre_itemdb_lookup_const) (const struct config_setting_t **it, const char **name, int **value);
typedef bool (*HPMHOOK_post_itemdb_lookup_const) (bool retVal___, const struct config_setting_t *it, const char *name, int *value);
+typedef bool (*HPMHOOK_pre_itemdb_lookup_const_mask) (const struct config_setting_t **it, const char **name, int **value);
+typedef bool (*HPMHOOK_post_itemdb_lookup_const_mask) (bool retVal___, const struct config_setting_t *it, const char *name, int *value);
#endif // MAP_ITEMDB_H
#ifdef LOGIN_LCLIF_H /* lclif */
typedef void (*HPMHOOK_pre_lclif_init) (void);
@@ -3844,6 +3848,32 @@ typedef void (*HPMHOOK_pre_login_config_set_defaults) (void);
typedef void (*HPMHOOK_post_login_config_set_defaults) (void);
typedef bool (*HPMHOOK_pre_login_config_read) (const char **filename, bool *included);
typedef bool (*HPMHOOK_post_login_config_read) (bool retVal___, const char *filename, bool included);
+typedef bool (*HPMHOOK_pre_login_config_read_inter) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_inter) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_console) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_console) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_log) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_log) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_account) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_account) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_permission) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_permission) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_permission_hash) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_permission_hash) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_permission_blacklist) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_permission_blacklist) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_users) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_users) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef void (*HPMHOOK_pre_login_clear_dnsbl_servers) (void);
+typedef void (*HPMHOOK_post_login_clear_dnsbl_servers) (void);
+typedef void (*HPMHOOK_pre_login_config_set_dnsbl_servers) (struct config_setting_t **setting);
+typedef void (*HPMHOOK_post_login_config_set_dnsbl_servers) (struct config_setting_t *setting);
+typedef void (*HPMHOOK_pre_login_clear_client_hash_nodes) (void);
+typedef void (*HPMHOOK_post_login_clear_client_hash_nodes) (void);
+typedef void (*HPMHOOK_pre_login_config_set_md5hash) (struct config_setting_t **setting);
+typedef void (*HPMHOOK_post_login_config_set_md5hash) (struct config_setting_t *setting);
+typedef uint16 (*HPMHOOK_pre_login_convert_users_to_colors) (uint16 *users);
+typedef uint16 (*HPMHOOK_post_login_convert_users_to_colors) (uint16 retVal___, uint16 users);
#endif // LOGIN_LOGIN_H
#ifdef CHAR_LOGINIF_H /* loginif */
typedef void (*HPMHOOK_pre_loginif_init) (void);
@@ -5120,6 +5150,8 @@ typedef void (*HPMHOOK_pre_npc_market_delfromsql_sub) (const char **npcname, uns
typedef void (*HPMHOOK_post_npc_market_delfromsql_sub) (const char *npcname, unsigned short index);
typedef bool (*HPMHOOK_pre_npc_db_checkid) (const int *id);
typedef bool (*HPMHOOK_post_npc_db_checkid) (bool retVal___, const int id);
+typedef void (*HPMHOOK_pre_npc_refresh) (struct npc_data **nd);
+typedef void (*HPMHOOK_post_npc_refresh) (struct npc_data *nd);
typedef int (*HPMHOOK_pre_npc_secure_timeout_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_npc_secure_timeout_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
#endif // MAP_NPC_H
@@ -5416,16 +5448,16 @@ typedef int (*HPMHOOK_pre_pc_checkbaselevelup) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_checkbaselevelup) (int retVal___, struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_checkjoblevelup) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_checkjoblevelup) (int retVal___, struct map_session_data *sd);
-typedef bool (*HPMHOOK_pre_pc_gainexp) (struct map_session_data **sd, struct block_list **src, unsigned int *base_exp, unsigned int *job_exp, bool *is_quest);
-typedef bool (*HPMHOOK_post_pc_gainexp) (bool retVal___, struct map_session_data *sd, struct block_list *src, unsigned int base_exp, unsigned int job_exp, bool is_quest);
-typedef unsigned int (*HPMHOOK_pre_pc_nextbaseexp) (const struct map_session_data **sd);
-typedef unsigned int (*HPMHOOK_post_pc_nextbaseexp) (unsigned int retVal___, const struct map_session_data *sd);
-typedef unsigned int (*HPMHOOK_pre_pc_thisbaseexp) (const struct map_session_data **sd);
-typedef unsigned int (*HPMHOOK_post_pc_thisbaseexp) (unsigned int retVal___, const struct map_session_data *sd);
-typedef unsigned int (*HPMHOOK_pre_pc_nextjobexp) (const struct map_session_data **sd);
-typedef unsigned int (*HPMHOOK_post_pc_nextjobexp) (unsigned int retVal___, const struct map_session_data *sd);
-typedef unsigned int (*HPMHOOK_pre_pc_thisjobexp) (const struct map_session_data **sd);
-typedef unsigned int (*HPMHOOK_post_pc_thisjobexp) (unsigned int retVal___, const struct map_session_data *sd);
+typedef bool (*HPMHOOK_pre_pc_gainexp) (struct map_session_data **sd, struct block_list **src, uint64 *base_exp, uint64 *job_exp, bool *is_quest);
+typedef bool (*HPMHOOK_post_pc_gainexp) (bool retVal___, struct map_session_data *sd, struct block_list *src, uint64 base_exp, uint64 job_exp, bool is_quest);
+typedef uint64 (*HPMHOOK_pre_pc_nextbaseexp) (const struct map_session_data **sd);
+typedef uint64 (*HPMHOOK_post_pc_nextbaseexp) (uint64 retVal___, const struct map_session_data *sd);
+typedef uint64 (*HPMHOOK_pre_pc_thisbaseexp) (const struct map_session_data **sd);
+typedef uint64 (*HPMHOOK_post_pc_thisbaseexp) (uint64 retVal___, const struct map_session_data *sd);
+typedef uint64 (*HPMHOOK_pre_pc_nextjobexp) (const struct map_session_data **sd);
+typedef uint64 (*HPMHOOK_post_pc_nextjobexp) (uint64 retVal___, const struct map_session_data *sd);
+typedef uint64 (*HPMHOOK_pre_pc_thisjobexp) (const struct map_session_data **sd);
+typedef uint64 (*HPMHOOK_post_pc_thisjobexp) (uint64 retVal___, const struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_gets_status_point) (int *level);
typedef int (*HPMHOOK_post_pc_gets_status_point) (int retVal___, int level);
typedef int (*HPMHOOK_pre_pc_need_status_point) (struct map_session_data **sd, int *type, int *val);
@@ -5500,10 +5532,10 @@ typedef int (*HPMHOOK_pre_pc_changelook) (struct map_session_data **sd, int *typ
typedef int (*HPMHOOK_post_pc_changelook) (int retVal___, struct map_session_data *sd, int type, int val);
typedef int (*HPMHOOK_pre_pc_equiplookall) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_equiplookall) (int retVal___, struct map_session_data *sd);
-typedef int (*HPMHOOK_pre_pc_readparam) (const struct map_session_data **sd, int *type);
-typedef int (*HPMHOOK_post_pc_readparam) (int retVal___, const struct map_session_data *sd, int type);
-typedef int (*HPMHOOK_pre_pc_setparam) (struct map_session_data **sd, int *type, int *val);
-typedef int (*HPMHOOK_post_pc_setparam) (int retVal___, struct map_session_data *sd, int type, int val);
+typedef int64 (*HPMHOOK_pre_pc_readparam) (const struct map_session_data **sd, int *type);
+typedef int64 (*HPMHOOK_post_pc_readparam) (int64 retVal___, const struct map_session_data *sd, int type);
+typedef int (*HPMHOOK_pre_pc_setparam) (struct map_session_data **sd, int *type, int64 *val);
+typedef int (*HPMHOOK_post_pc_setparam) (int retVal___, struct map_session_data *sd, int type, int64 val);
typedef int (*HPMHOOK_pre_pc_readreg) (struct map_session_data **sd, int64 *reg);
typedef int (*HPMHOOK_post_pc_readreg) (int retVal___, struct map_session_data *sd, int64 reg);
typedef void (*HPMHOOK_pre_pc_setreg) (struct map_session_data **sd, int64 *reg, int *val);
@@ -5632,8 +5664,8 @@ typedef int (*HPMHOOK_pre_pc_bonus_addeff_onskill) (struct s_addeffectonskill **
typedef int (*HPMHOOK_post_pc_bonus_addeff_onskill) (int retVal___, struct s_addeffectonskill *effect, int max, enum sc_type id, short rate, short skill_id, unsigned char target);
typedef int (*HPMHOOK_pre_pc_bonus_item_drop) (struct s_add_drop **drop, const short *max, short *id, short *group, int *race, int *rate);
typedef int (*HPMHOOK_post_pc_bonus_item_drop) (int retVal___, struct s_add_drop *drop, const short max, short id, short group, int race, int rate);
-typedef void (*HPMHOOK_pre_pc_calcexp) (struct map_session_data **sd, unsigned int **base_exp, unsigned int **job_exp, struct block_list **src);
-typedef void (*HPMHOOK_post_pc_calcexp) (struct map_session_data *sd, unsigned int *base_exp, unsigned int *job_exp, struct block_list *src);
+typedef void (*HPMHOOK_pre_pc_calcexp) (struct map_session_data **sd, uint64 **base_exp, uint64 **job_exp, struct block_list **src);
+typedef void (*HPMHOOK_post_pc_calcexp) (struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp, struct block_list *src);
typedef int (*HPMHOOK_pre_pc_respawn_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_pc_respawn_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef int (*HPMHOOK_pre_pc_jobchange_killclone) (struct block_list **bl, va_list ap);
@@ -5890,8 +5922,8 @@ typedef void (*HPMHOOK_pre_rodex_final) (void);
typedef void (*HPMHOOK_post_rodex_final) (void);
typedef bool (*HPMHOOK_pre_rodex_isenabled) (void);
typedef bool (*HPMHOOK_post_rodex_isenabled) (bool retVal___);
-typedef void (*HPMHOOK_pre_rodex_open) (struct map_session_data **sd, int8 *open_type);
-typedef void (*HPMHOOK_post_rodex_open) (struct map_session_data *sd, int8 open_type);
+typedef void (*HPMHOOK_pre_rodex_open) (struct map_session_data **sd, int8 *open_type, int64 *first_mail_id);
+typedef void (*HPMHOOK_post_rodex_open) (struct map_session_data *sd, int8 open_type, int64 first_mail_id);
typedef void (*HPMHOOK_pre_rodex_next_page) (struct map_session_data **sd, int8 *open_type, int64 *last_mail_id);
typedef void (*HPMHOOK_post_rodex_next_page) (struct map_session_data *sd, int8 open_type, int64 last_mail_id);
typedef void (*HPMHOOK_pre_rodex_refresh) (struct map_session_data **sd, int8 *open_type, int64 *first_mail_id);
diff --git a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
index 57c1e0233..9c38c0c4c 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
@@ -376,6 +376,32 @@ struct {
struct HPMHookPoint *HP_login_config_set_defaults_post;
struct HPMHookPoint *HP_login_config_read_pre;
struct HPMHookPoint *HP_login_config_read_post;
+ struct HPMHookPoint *HP_login_config_read_inter_pre;
+ struct HPMHookPoint *HP_login_config_read_inter_post;
+ struct HPMHookPoint *HP_login_config_read_console_pre;
+ struct HPMHookPoint *HP_login_config_read_console_post;
+ struct HPMHookPoint *HP_login_config_read_log_pre;
+ struct HPMHookPoint *HP_login_config_read_log_post;
+ struct HPMHookPoint *HP_login_config_read_account_pre;
+ struct HPMHookPoint *HP_login_config_read_account_post;
+ struct HPMHookPoint *HP_login_config_read_permission_pre;
+ struct HPMHookPoint *HP_login_config_read_permission_post;
+ struct HPMHookPoint *HP_login_config_read_permission_hash_pre;
+ struct HPMHookPoint *HP_login_config_read_permission_hash_post;
+ struct HPMHookPoint *HP_login_config_read_permission_blacklist_pre;
+ struct HPMHookPoint *HP_login_config_read_permission_blacklist_post;
+ struct HPMHookPoint *HP_login_config_read_users_pre;
+ struct HPMHookPoint *HP_login_config_read_users_post;
+ struct HPMHookPoint *HP_login_clear_dnsbl_servers_pre;
+ struct HPMHookPoint *HP_login_clear_dnsbl_servers_post;
+ struct HPMHookPoint *HP_login_config_set_dnsbl_servers_pre;
+ struct HPMHookPoint *HP_login_config_set_dnsbl_servers_post;
+ struct HPMHookPoint *HP_login_clear_client_hash_nodes_pre;
+ struct HPMHookPoint *HP_login_clear_client_hash_nodes_post;
+ struct HPMHookPoint *HP_login_config_set_md5hash_pre;
+ struct HPMHookPoint *HP_login_config_set_md5hash_post;
+ struct HPMHookPoint *HP_login_convert_users_to_colors_pre;
+ struct HPMHookPoint *HP_login_convert_users_to_colors_post;
struct HPMHookPoint *HP_md5_string_pre;
struct HPMHookPoint *HP_md5_string_post;
struct HPMHookPoint *HP_md5_binary_pre;
@@ -1049,6 +1075,32 @@ struct {
int HP_login_config_set_defaults_post;
int HP_login_config_read_pre;
int HP_login_config_read_post;
+ int HP_login_config_read_inter_pre;
+ int HP_login_config_read_inter_post;
+ int HP_login_config_read_console_pre;
+ int HP_login_config_read_console_post;
+ int HP_login_config_read_log_pre;
+ int HP_login_config_read_log_post;
+ int HP_login_config_read_account_pre;
+ int HP_login_config_read_account_post;
+ int HP_login_config_read_permission_pre;
+ int HP_login_config_read_permission_post;
+ int HP_login_config_read_permission_hash_pre;
+ int HP_login_config_read_permission_hash_post;
+ int HP_login_config_read_permission_blacklist_pre;
+ int HP_login_config_read_permission_blacklist_post;
+ int HP_login_config_read_users_pre;
+ int HP_login_config_read_users_post;
+ int HP_login_clear_dnsbl_servers_pre;
+ int HP_login_clear_dnsbl_servers_post;
+ int HP_login_config_set_dnsbl_servers_pre;
+ int HP_login_config_set_dnsbl_servers_post;
+ int HP_login_clear_client_hash_nodes_pre;
+ int HP_login_clear_client_hash_nodes_post;
+ int HP_login_config_set_md5hash_pre;
+ int HP_login_config_set_md5hash_post;
+ int HP_login_convert_users_to_colors_pre;
+ int HP_login_convert_users_to_colors_post;
int HP_md5_string_pre;
int HP_md5_string_post;
int HP_md5_binary_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
index 125c54a12..ba4b941a9 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
@@ -211,6 +211,19 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(login->parse_request_connection, HP_login_parse_request_connection) },
{ HP_POP(login->config_set_defaults, HP_login_config_set_defaults) },
{ HP_POP(login->config_read, HP_login_config_read) },
+ { HP_POP(login->config_read_inter, HP_login_config_read_inter) },
+ { HP_POP(login->config_read_console, HP_login_config_read_console) },
+ { HP_POP(login->config_read_log, HP_login_config_read_log) },
+ { HP_POP(login->config_read_account, HP_login_config_read_account) },
+ { HP_POP(login->config_read_permission, HP_login_config_read_permission) },
+ { HP_POP(login->config_read_permission_hash, HP_login_config_read_permission_hash) },
+ { HP_POP(login->config_read_permission_blacklist, HP_login_config_read_permission_blacklist) },
+ { HP_POP(login->config_read_users, HP_login_config_read_users) },
+ { HP_POP(login->clear_dnsbl_servers, HP_login_clear_dnsbl_servers) },
+ { HP_POP(login->config_set_dnsbl_servers, HP_login_config_set_dnsbl_servers) },
+ { HP_POP(login->clear_client_hash_nodes, HP_login_clear_client_hash_nodes) },
+ { HP_POP(login->config_set_md5hash, HP_login_config_set_md5hash) },
+ { HP_POP(login->convert_users_to_colors, HP_login_convert_users_to_colors) },
/* md5_interface */
{ HP_POP(md5->string, HP_md5_string) },
{ HP_POP(md5->binary, HP_md5_binary) },
diff --git a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
index 964d46b0a..0dbf2e5ae 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
@@ -4716,6 +4716,353 @@ bool HP_login_config_read(const char *filename, bool included) {
}
return retVal___;
}
+bool HP_login_config_read_inter(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_inter_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_inter_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_inter_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_inter(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_inter_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_inter_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_inter_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_console(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_console_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_console_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_console_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_console(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_console_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_console_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_console_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_log(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_log_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_log_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_log_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_log(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_log_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_log_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_log_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_account(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_account_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_account_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_account_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_account(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_account_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_account_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_account_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_permission(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_permission_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_permission_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_permission(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_permission_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_permission_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_permission_hash(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_permission_hash_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_hash_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_permission_hash_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_permission_hash(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_permission_hash_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_hash_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_permission_hash_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_permission_blacklist(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_permission_blacklist_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_blacklist_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_permission_blacklist_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_permission_blacklist(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_permission_blacklist_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_blacklist_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_permission_blacklist_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_users(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_users_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_users_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_users_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_users(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_users_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_users_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_users_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+void HP_login_clear_dnsbl_servers(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_clear_dnsbl_servers_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_clear_dnsbl_servers_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_clear_dnsbl_servers_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.clear_dnsbl_servers();
+ }
+ if (HPMHooks.count.HP_login_clear_dnsbl_servers_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_clear_dnsbl_servers_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_clear_dnsbl_servers_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_login_config_set_dnsbl_servers(struct config_setting_t *setting) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_config_set_dnsbl_servers_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **setting);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_dnsbl_servers_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_set_dnsbl_servers_pre[hIndex].func;
+ preHookFunc(&setting);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.config_set_dnsbl_servers(setting);
+ }
+ if (HPMHooks.count.HP_login_config_set_dnsbl_servers_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *setting);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_dnsbl_servers_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_set_dnsbl_servers_post[hIndex].func;
+ postHookFunc(setting);
+ }
+ }
+ return;
+}
+void HP_login_clear_client_hash_nodes(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_clear_client_hash_nodes_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_clear_client_hash_nodes_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_clear_client_hash_nodes_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.clear_client_hash_nodes();
+ }
+ if (HPMHooks.count.HP_login_clear_client_hash_nodes_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_clear_client_hash_nodes_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_clear_client_hash_nodes_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_login_config_set_md5hash(struct config_setting_t *setting) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_config_set_md5hash_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **setting);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_md5hash_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_set_md5hash_pre[hIndex].func;
+ preHookFunc(&setting);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.config_set_md5hash(setting);
+ }
+ if (HPMHooks.count.HP_login_config_set_md5hash_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *setting);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_md5hash_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_set_md5hash_post[hIndex].func;
+ postHookFunc(setting);
+ }
+ }
+ return;
+}
+uint16 HP_login_convert_users_to_colors(uint16 users) {
+ int hIndex = 0;
+ uint16 retVal___ = 0;
+ if (HPMHooks.count.HP_login_convert_users_to_colors_pre > 0) {
+ uint16 (*preHookFunc) (uint16 *users);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_convert_users_to_colors_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_convert_users_to_colors_pre[hIndex].func;
+ retVal___ = preHookFunc(&users);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.convert_users_to_colors(users);
+ }
+ if (HPMHooks.count.HP_login_convert_users_to_colors_post > 0) {
+ uint16 (*postHookFunc) (uint16 retVal___, uint16 users);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_convert_users_to_colors_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_convert_users_to_colors_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, users);
+ }
+ }
+ return retVal___;
+}
/* md5_interface */
void HP_md5_string(const char *string, char *output) {
int hIndex = 0;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
index b7b161b6b..c3e6d5529 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
@@ -1896,6 +1896,8 @@ struct {
struct HPMHookPoint *HP_clif_rodex_send_maillist_post;
struct HPMHookPoint *HP_clif_rodex_send_refresh_pre;
struct HPMHookPoint *HP_clif_rodex_send_refresh_post;
+ struct HPMHookPoint *HP_clif_rodex_send_mails_all_pre;
+ struct HPMHookPoint *HP_clif_rodex_send_mails_all_post;
struct HPMHookPoint *HP_clif_pRodexReadMail_pre;
struct HPMHookPoint *HP_clif_pRodexReadMail_post;
struct HPMHookPoint *HP_clif_rodex_read_mail_pre;
@@ -2874,6 +2876,8 @@ struct {
struct HPMHookPoint *HP_itemdb_is_item_usable_post;
struct HPMHookPoint *HP_itemdb_lookup_const_pre;
struct HPMHookPoint *HP_itemdb_lookup_const_post;
+ struct HPMHookPoint *HP_itemdb_lookup_const_mask_pre;
+ struct HPMHookPoint *HP_itemdb_lookup_const_mask_post;
struct HPMHookPoint *HP_libconfig_read_pre;
struct HPMHookPoint *HP_libconfig_read_post;
struct HPMHookPoint *HP_libconfig_write_pre;
@@ -3914,6 +3918,8 @@ struct {
struct HPMHookPoint *HP_npc_market_delfromsql_sub_post;
struct HPMHookPoint *HP_npc_db_checkid_pre;
struct HPMHookPoint *HP_npc_db_checkid_post;
+ struct HPMHookPoint *HP_npc_refresh_pre;
+ struct HPMHookPoint *HP_npc_refresh_post;
struct HPMHookPoint *HP_npc_secure_timeout_timer_pre;
struct HPMHookPoint *HP_npc_secure_timeout_timer_post;
struct HPMHookPoint *HP_nullpo_assert_report_pre;
@@ -8091,6 +8097,8 @@ struct {
int HP_clif_rodex_send_maillist_post;
int HP_clif_rodex_send_refresh_pre;
int HP_clif_rodex_send_refresh_post;
+ int HP_clif_rodex_send_mails_all_pre;
+ int HP_clif_rodex_send_mails_all_post;
int HP_clif_pRodexReadMail_pre;
int HP_clif_pRodexReadMail_post;
int HP_clif_rodex_read_mail_pre;
@@ -9069,6 +9077,8 @@ struct {
int HP_itemdb_is_item_usable_post;
int HP_itemdb_lookup_const_pre;
int HP_itemdb_lookup_const_post;
+ int HP_itemdb_lookup_const_mask_pre;
+ int HP_itemdb_lookup_const_mask_post;
int HP_libconfig_read_pre;
int HP_libconfig_read_post;
int HP_libconfig_write_pre;
@@ -10109,6 +10119,8 @@ struct {
int HP_npc_market_delfromsql_sub_post;
int HP_npc_db_checkid_pre;
int HP_npc_db_checkid_post;
+ int HP_npc_refresh_pre;
+ int HP_npc_refresh_post;
int HP_npc_secure_timeout_timer_pre;
int HP_npc_secure_timeout_timer_post;
int HP_nullpo_assert_report_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
index 37a3efb19..15052b7f1 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
@@ -970,6 +970,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->rodex_send_mail_result, HP_clif_rodex_send_mail_result) },
{ HP_POP(clif->rodex_send_maillist, HP_clif_rodex_send_maillist) },
{ HP_POP(clif->rodex_send_refresh, HP_clif_rodex_send_refresh) },
+ { HP_POP(clif->rodex_send_mails_all, HP_clif_rodex_send_mails_all) },
{ HP_POP(clif->pRodexReadMail, HP_clif_pRodexReadMail) },
{ HP_POP(clif->rodex_read_mail, HP_clif_rodex_read_mail) },
{ HP_POP(clif->pRodexNextMaillist, HP_clif_pRodexNextMaillist) },
@@ -1474,6 +1475,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(itemdb->id2combo, HP_itemdb_id2combo) },
{ HP_POP(itemdb->is_item_usable, HP_itemdb_is_item_usable) },
{ HP_POP(itemdb->lookup_const, HP_itemdb_lookup_const) },
+ { HP_POP(itemdb->lookup_const_mask, HP_itemdb_lookup_const_mask) },
/* libconfig_interface */
{ HP_POP(libconfig->read, HP_libconfig_read) },
{ HP_POP(libconfig->write, HP_libconfig_write) },
@@ -2007,6 +2009,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(npc->market_delfromsql, HP_npc_market_delfromsql) },
{ HP_POP(npc->market_delfromsql_sub, HP_npc_market_delfromsql_sub) },
{ HP_POP(npc->db_checkid, HP_npc_db_checkid) },
+ { HP_POP(npc->refresh, HP_npc_refresh) },
{ HP_POP(npc->secure_timeout_timer, HP_npc_secure_timeout_timer) },
/* nullpo_interface */
{ HP_POP(nullpo->assert_report, HP_nullpo_assert_report) },
diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
index d16268841..69658949c 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
@@ -10602,10 +10602,10 @@ void HP_clif_equpcheckbox(struct map_session_data *sd) {
}
return;
}
-void HP_clif_displayexp(struct map_session_data *sd, unsigned int exp, char type, bool is_quest) {
+void HP_clif_displayexp(struct map_session_data *sd, uint64 exp, char type, bool is_quest) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_displayexp_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned int *exp, char *type, bool *is_quest);
+ void (*preHookFunc) (struct map_session_data **sd, uint64 *exp, char *type, bool *is_quest);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_displayexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_displayexp_pre[hIndex].func;
@@ -10620,7 +10620,7 @@ void HP_clif_displayexp(struct map_session_data *sd, unsigned int exp, char type
HPMHooks.source.clif.displayexp(sd, exp, type, is_quest);
}
if (HPMHooks.count.HP_clif_displayexp_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned int exp, char type, bool is_quest);
+ void (*postHookFunc) (struct map_session_data *sd, uint64 exp, char type, bool is_quest);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_displayexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_displayexp_post[hIndex].func;
postHookFunc(sd, exp, type, is_quest);
@@ -24671,6 +24671,32 @@ void HP_clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_t
}
return;
}
+void HP_clif_rodex_send_mails_all(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_send_mails_all_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_mails_all_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_send_mails_all_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_send_mails_all(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_rodex_send_mails_all_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_mails_all_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_send_mails_all_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
void HP_clif_pRodexReadMail(int fd, struct map_session_data *sd) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_pRodexReadMail_pre > 0) {
@@ -27645,11 +27671,11 @@ int HP_guild_getposition(struct guild *g, struct map_session_data *sd) {
}
return retVal___;
}
-unsigned int HP_guild_payexp(struct map_session_data *sd, unsigned int exp) {
+uint64 HP_guild_payexp(struct map_session_data *sd, uint64 exp) {
int hIndex = 0;
- unsigned int retVal___ = 0;
+ uint64 retVal___ = 0;
if (HPMHooks.count.HP_guild_payexp_pre > 0) {
- unsigned int (*preHookFunc) (struct map_session_data **sd, unsigned int *exp);
+ uint64 (*preHookFunc) (struct map_session_data **sd, uint64 *exp);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_payexp_pre[hIndex].func;
@@ -27664,7 +27690,7 @@ unsigned int HP_guild_payexp(struct map_session_data *sd, unsigned int exp) {
retVal___ = HPMHooks.source.guild.payexp(sd, exp);
}
if (HPMHooks.count.HP_guild_payexp_post > 0) {
- unsigned int (*postHookFunc) (unsigned int retVal___, struct map_session_data *sd, unsigned int exp);
+ uint64 (*postHookFunc) (uint64 retVal___, struct map_session_data *sd, uint64 exp);
for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_payexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, exp);
@@ -37811,6 +37837,33 @@ bool HP_itemdb_lookup_const(const struct config_setting_t *it, const char *name,
}
return retVal___;
}
+bool HP_itemdb_lookup_const_mask(const struct config_setting_t *it, const char *name, int *value) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_itemdb_lookup_const_mask_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **it, const char **name, int **value);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_lookup_const_mask_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_itemdb_lookup_const_mask_pre[hIndex].func;
+ retVal___ = preHookFunc(&it, &name, &value);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.itemdb.lookup_const_mask(it, name, value);
+ }
+ if (HPMHooks.count.HP_itemdb_lookup_const_mask_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *it, const char *name, int *value);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_lookup_const_mask_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_itemdb_lookup_const_mask_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, it, name, value);
+ }
+ }
+ return retVal___;
+}
/* libconfig_interface */
int HP_libconfig_read(struct config_t *config, FILE *stream) {
int hIndex = 0;
@@ -52036,6 +52089,32 @@ bool HP_npc_db_checkid(const int id) {
}
return retVal___;
}
+void HP_npc_refresh(struct npc_data *nd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_npc_refresh_pre > 0) {
+ void (*preHookFunc) (struct npc_data **nd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_refresh_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_refresh_pre[hIndex].func;
+ preHookFunc(&nd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.npc.refresh(nd);
+ }
+ if (HPMHooks.count.HP_npc_refresh_post > 0) {
+ void (*postHookFunc) (struct npc_data *nd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_refresh_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_refresh_post[hIndex].func;
+ postHookFunc(nd);
+ }
+ }
+ return;
+}
int HP_npc_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
@@ -55903,11 +55982,11 @@ int HP_pc_checkjoblevelup(struct map_session_data *sd) {
}
return retVal___;
}
-bool HP_pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned int base_exp, unsigned int job_exp, bool is_quest) {
+bool HP_pc_gainexp(struct map_session_data *sd, struct block_list *src, uint64 base_exp, uint64 job_exp, bool is_quest) {
int hIndex = 0;
bool retVal___ = false;
if (HPMHooks.count.HP_pc_gainexp_pre > 0) {
- bool (*preHookFunc) (struct map_session_data **sd, struct block_list **src, unsigned int *base_exp, unsigned int *job_exp, bool *is_quest);
+ bool (*preHookFunc) (struct map_session_data **sd, struct block_list **src, uint64 *base_exp, uint64 *job_exp, bool *is_quest);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_gainexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_gainexp_pre[hIndex].func;
@@ -55922,7 +56001,7 @@ bool HP_pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned
retVal___ = HPMHooks.source.pc.gainexp(sd, src, base_exp, job_exp, is_quest);
}
if (HPMHooks.count.HP_pc_gainexp_post > 0) {
- bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct block_list *src, unsigned int base_exp, unsigned int job_exp, bool is_quest);
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct block_list *src, uint64 base_exp, uint64 job_exp, bool is_quest);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_gainexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_gainexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, src, base_exp, job_exp, is_quest);
@@ -55930,11 +56009,11 @@ bool HP_pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned
}
return retVal___;
}
-unsigned int HP_pc_nextbaseexp(const struct map_session_data *sd) {
+uint64 HP_pc_nextbaseexp(const struct map_session_data *sd) {
int hIndex = 0;
- unsigned int retVal___ = 0;
+ uint64 retVal___ = 0;
if (HPMHooks.count.HP_pc_nextbaseexp_pre > 0) {
- unsigned int (*preHookFunc) (const struct map_session_data **sd);
+ uint64 (*preHookFunc) (const struct map_session_data **sd);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_nextbaseexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_nextbaseexp_pre[hIndex].func;
@@ -55949,7 +56028,7 @@ unsigned int HP_pc_nextbaseexp(const struct map_session_data *sd) {
retVal___ = HPMHooks.source.pc.nextbaseexp(sd);
}
if (HPMHooks.count.HP_pc_nextbaseexp_post > 0) {
- unsigned int (*postHookFunc) (unsigned int retVal___, const struct map_session_data *sd);
+ uint64 (*postHookFunc) (uint64 retVal___, const struct map_session_data *sd);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_nextbaseexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_nextbaseexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
@@ -55957,11 +56036,11 @@ unsigned int HP_pc_nextbaseexp(const struct map_session_data *sd) {
}
return retVal___;
}
-unsigned int HP_pc_thisbaseexp(const struct map_session_data *sd) {
+uint64 HP_pc_thisbaseexp(const struct map_session_data *sd) {
int hIndex = 0;
- unsigned int retVal___ = 0;
+ uint64 retVal___ = 0;
if (HPMHooks.count.HP_pc_thisbaseexp_pre > 0) {
- unsigned int (*preHookFunc) (const struct map_session_data **sd);
+ uint64 (*preHookFunc) (const struct map_session_data **sd);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_thisbaseexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_thisbaseexp_pre[hIndex].func;
@@ -55976,7 +56055,7 @@ unsigned int HP_pc_thisbaseexp(const struct map_session_data *sd) {
retVal___ = HPMHooks.source.pc.thisbaseexp(sd);
}
if (HPMHooks.count.HP_pc_thisbaseexp_post > 0) {
- unsigned int (*postHookFunc) (unsigned int retVal___, const struct map_session_data *sd);
+ uint64 (*postHookFunc) (uint64 retVal___, const struct map_session_data *sd);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_thisbaseexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_thisbaseexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
@@ -55984,11 +56063,11 @@ unsigned int HP_pc_thisbaseexp(const struct map_session_data *sd) {
}
return retVal___;
}
-unsigned int HP_pc_nextjobexp(const struct map_session_data *sd) {
+uint64 HP_pc_nextjobexp(const struct map_session_data *sd) {
int hIndex = 0;
- unsigned int retVal___ = 0;
+ uint64 retVal___ = 0;
if (HPMHooks.count.HP_pc_nextjobexp_pre > 0) {
- unsigned int (*preHookFunc) (const struct map_session_data **sd);
+ uint64 (*preHookFunc) (const struct map_session_data **sd);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_nextjobexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_nextjobexp_pre[hIndex].func;
@@ -56003,7 +56082,7 @@ unsigned int HP_pc_nextjobexp(const struct map_session_data *sd) {
retVal___ = HPMHooks.source.pc.nextjobexp(sd);
}
if (HPMHooks.count.HP_pc_nextjobexp_post > 0) {
- unsigned int (*postHookFunc) (unsigned int retVal___, const struct map_session_data *sd);
+ uint64 (*postHookFunc) (uint64 retVal___, const struct map_session_data *sd);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_nextjobexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_nextjobexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
@@ -56011,11 +56090,11 @@ unsigned int HP_pc_nextjobexp(const struct map_session_data *sd) {
}
return retVal___;
}
-unsigned int HP_pc_thisjobexp(const struct map_session_data *sd) {
+uint64 HP_pc_thisjobexp(const struct map_session_data *sd) {
int hIndex = 0;
- unsigned int retVal___ = 0;
+ uint64 retVal___ = 0;
if (HPMHooks.count.HP_pc_thisjobexp_pre > 0) {
- unsigned int (*preHookFunc) (const struct map_session_data **sd);
+ uint64 (*preHookFunc) (const struct map_session_data **sd);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_thisjobexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_thisjobexp_pre[hIndex].func;
@@ -56030,7 +56109,7 @@ unsigned int HP_pc_thisjobexp(const struct map_session_data *sd) {
retVal___ = HPMHooks.source.pc.thisjobexp(sd);
}
if (HPMHooks.count.HP_pc_thisjobexp_post > 0) {
- unsigned int (*postHookFunc) (unsigned int retVal___, const struct map_session_data *sd);
+ uint64 (*postHookFunc) (uint64 retVal___, const struct map_session_data *sd);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_thisjobexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_thisjobexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
@@ -57027,11 +57106,11 @@ int HP_pc_equiplookall(struct map_session_data *sd) {
}
return retVal___;
}
-int HP_pc_readparam(const struct map_session_data *sd, int type) {
+int64 HP_pc_readparam(const struct map_session_data *sd, int type) {
int hIndex = 0;
- int retVal___ = 0;
+ int64 retVal___ = 0;
if (HPMHooks.count.HP_pc_readparam_pre > 0) {
- int (*preHookFunc) (const struct map_session_data **sd, int *type);
+ int64 (*preHookFunc) (const struct map_session_data **sd, int *type);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readparam_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_readparam_pre[hIndex].func;
@@ -57046,7 +57125,7 @@ int HP_pc_readparam(const struct map_session_data *sd, int type) {
retVal___ = HPMHooks.source.pc.readparam(sd, type);
}
if (HPMHooks.count.HP_pc_readparam_post > 0) {
- int (*postHookFunc) (int retVal___, const struct map_session_data *sd, int type);
+ int64 (*postHookFunc) (int64 retVal___, const struct map_session_data *sd, int type);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readparam_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_readparam_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type);
@@ -57054,11 +57133,11 @@ int HP_pc_readparam(const struct map_session_data *sd, int type) {
}
return retVal___;
}
-int HP_pc_setparam(struct map_session_data *sd, int type, int val) {
+int HP_pc_setparam(struct map_session_data *sd, int type, int64 val) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_pc_setparam_pre > 0) {
- int (*preHookFunc) (struct map_session_data **sd, int *type, int *val);
+ int (*preHookFunc) (struct map_session_data **sd, int *type, int64 *val);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setparam_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setparam_pre[hIndex].func;
@@ -57073,7 +57152,7 @@ int HP_pc_setparam(struct map_session_data *sd, int type, int val) {
retVal___ = HPMHooks.source.pc.setparam(sd, type, val);
}
if (HPMHooks.count.HP_pc_setparam_post > 0) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int val);
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int64 val);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setparam_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setparam_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, val);
@@ -58799,10 +58878,10 @@ int HP_pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id, sh
}
return retVal___;
}
-void HP_pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned int *job_exp, struct block_list *src) {
+void HP_pc_calcexp(struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp, struct block_list *src) {
int hIndex = 0;
if (HPMHooks.count.HP_pc_calcexp_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned int **base_exp, unsigned int **job_exp, struct block_list **src);
+ void (*preHookFunc) (struct map_session_data **sd, uint64 **base_exp, uint64 **job_exp, struct block_list **src);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calcexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_calcexp_pre[hIndex].func;
@@ -58817,7 +58896,7 @@ void HP_pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned
HPMHooks.source.pc.calcexp(sd, base_exp, job_exp, src);
}
if (HPMHooks.count.HP_pc_calcexp_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned int *base_exp, unsigned int *job_exp, struct block_list *src);
+ void (*postHookFunc) (struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp, struct block_list *src);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calcexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_calcexp_post[hIndex].func;
postHookFunc(sd, base_exp, job_exp, src);
@@ -61866,14 +61945,14 @@ bool HP_rodex_isenabled(void) {
}
return retVal___;
}
-void HP_rodex_open(struct map_session_data *sd, int8 open_type) {
+void HP_rodex_open(struct map_session_data *sd, int8 open_type, int64 first_mail_id) {
int hIndex = 0;
if (HPMHooks.count.HP_rodex_open_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, int8 *open_type);
+ void (*preHookFunc) (struct map_session_data **sd, int8 *open_type, int64 *first_mail_id);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rodex_open_pre[hIndex].func;
- preHookFunc(&sd, &open_type);
+ preHookFunc(&sd, &open_type, &first_mail_id);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -61881,13 +61960,13 @@ void HP_rodex_open(struct map_session_data *sd, int8 open_type) {
}
}
{
- HPMHooks.source.rodex.open(sd, open_type);
+ HPMHooks.source.rodex.open(sd, open_type, first_mail_id);
}
if (HPMHooks.count.HP_rodex_open_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, int8 open_type);
+ void (*postHookFunc) (struct map_session_data *sd, int8 open_type, int64 first_mail_id);
for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rodex_open_post[hIndex].func;
- postHookFunc(sd, open_type);
+ postHookFunc(sd, open_type, first_mail_id);
}
}
return;
diff --git a/src/plugins/db2sql.c b/src/plugins/db2sql.c
index 33a62757a..38e5ead5d 100644
--- a/src/plugins/db2sql.c
+++ b/src/plugins/db2sql.c
@@ -255,6 +255,9 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source)
// type
StrBuf->Printf(&buf, "'%d',", it->flag.delay_consume ? IT_DELAYCONSUME : it->type);
+ // subtype
+ StrBuf->Printf(&buf, "'%d',", it->subtype);
+
// price_buy
StrBuf->Printf(&buf, "'%d',", it->value_buy);
@@ -294,10 +297,11 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source)
StrBuf->Printf(&buf, "'%"PRIu64"',", ui64);
// equip_upper
- if (libconfig->setting_lookup_int(entry, "Upper", &i32) && i32 >= 0)
+ if (itemdb->lookup_const_mask(entry, "Upper", &i32) && i32 >= 0)
ui32 = (uint32)i32;
else
ui32 = ITEMUPPER_ALL;
+
StrBuf->Printf(&buf, "'%u',", ui32);
// equip_genders
@@ -320,12 +324,12 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source)
// refineable
StrBuf->Printf(&buf, "'%d',", it->flag.no_refine?0:1);
-
+
// disable_options
StrBuf->Printf(&buf, "'%d',", it->flag.no_options?1:0);
- // view
- StrBuf->Printf(&buf, "'%d',", it->look);
+ // view_sprite
+ StrBuf->Printf(&buf, "'%d',", it->view_sprite);
// bindonequip
StrBuf->Printf(&buf, "'%d',", it->flag.bindonequip?1:0);
@@ -449,6 +453,7 @@ void itemdb2sql_tableheader(void)
" `name_english` varchar(50) NOT NULL DEFAULT '',\n"
" `name_japanese` varchar(50) NOT NULL DEFAULT '',\n"
" `type` tinyint(2) UNSIGNED NOT NULL DEFAULT '0',\n"
+ " `subtype` tinyint(2) UNSIGNED DEFAULT NULL,\n"
" `price_buy` mediumint(10) DEFAULT NULL,\n"
" `price_sell` mediumint(10) DEFAULT NULL,\n"
" `weight` smallint(5) UNSIGNED DEFAULT NULL,\n"
@@ -466,7 +471,7 @@ void itemdb2sql_tableheader(void)
" `equip_level_max` smallint(5) UNSIGNED DEFAULT NULL,\n"
" `refineable` tinyint(1) UNSIGNED DEFAULT NULL,\n"
" `disable_options` tinyint(1) UNSIGNED DEFAULT NULL,\n"
- " `view` smallint(3) UNSIGNED DEFAULT NULL,\n"
+ " `view_sprite` smallint(3) UNSIGNED DEFAULT NULL,\n"
" `bindonequip` tinyint(1) UNSIGNED DEFAULT NULL,\n"
" `forceserial` tinyint(1) UNSIGNED DEFAULT NULL,\n"
" `buyingstore` tinyint(1) UNSIGNED DEFAULT NULL,\n"