diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/atcommand.c | 73 | ||||
-rw-r--r-- | src/map/battle.c | 4 | ||||
-rw-r--r-- | src/map/battle.h | 4 | ||||
-rw-r--r-- | src/map/channel.c | 10 | ||||
-rw-r--r-- | src/map/channel.h | 3 | ||||
-rw-r--r-- | src/map/clif.c | 40 | ||||
-rw-r--r-- | src/map/itemdb.c | 3 | ||||
-rw-r--r-- | src/map/itemdb.h | 16 | ||||
-rw-r--r-- | src/map/map.h | 1 | ||||
-rw-r--r-- | src/map/mob.c | 29 | ||||
-rw-r--r-- | src/map/packets.h | 1324 | ||||
-rw-r--r-- | src/map/pc.c | 53 | ||||
-rw-r--r-- | src/map/script.c | 145 | ||||
-rw-r--r-- | src/map/status.c | 101 | ||||
-rw-r--r-- | src/map/status.h | 4 |
15 files changed, 1638 insertions, 172 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 4c3d114a5..4d3a82ee2 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -1714,7 +1714,21 @@ ACMD(bodystyle) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!*message || sscanf(message, "%d", &body_style) < 1) { + if ((sd->job & MAPID_THIRDMASK) != MAPID_GUILLOTINE_CROSS + && (sd->job & MAPID_THIRDMASK) != MAPID_GENETIC + && (sd->job & MAPID_THIRDMASK) != MAPID_MECHANIC + && (sd->job & MAPID_THIRDMASK) != MAPID_ROYAL_GUARD + && (sd->job & MAPID_THIRDMASK) != MAPID_ARCH_BISHOP + && (sd->job & MAPID_THIRDMASK) != MAPID_RANGER + && (sd->job & MAPID_THIRDMASK) != MAPID_WARLOCK + && (sd->job & MAPID_THIRDMASK) != MAPID_SHADOW_CHASER + && (sd->job & MAPID_THIRDMASK) != MAPID_MINSTRELWANDERER + ) { + clif->message(fd, msg_fd(fd, 35)); // This job has no alternate body styles. + return false; + } + + if (*message == '\0' || sscanf(message, "%d", &body_style) < 1) { sprintf(atcmd_output, "Please, enter a body style (usage: @bodystyle <body ID: %d-%d>).", MIN_BODY_STYLE, MAX_BODY_STYLE); clif->message(fd, atcmd_output); return false; @@ -1722,9 +1736,9 @@ ACMD(bodystyle) if (body_style >= MIN_BODY_STYLE && body_style <= MAX_BODY_STYLE) { pc->changelook(sd, LOOK_BODY2, body_style); - clif->message(fd, msg_txt(36)); // Appearence changed. + clif->message(fd, msg_fd(fd, 36)); // Appearence changed. } else { - clif->message(fd, msg_txt(37)); // An invalid number was specified. + clif->message(fd, msg_fd(fd, 37)); // An invalid number was specified. return false; } @@ -9263,7 +9277,12 @@ ACMD(searchstore){ searchstore->open(sd, 99, val); return true; } -ACMD(costume){ + +/*========================================== +* @costume +*------------------------------------------*/ +ACMD(costume) +{ const char* names[] = { "Wedding", "Xmas", @@ -9272,6 +9291,9 @@ ACMD(costume){ #if PACKETVER >= 20131218 "Oktoberfest", #endif +#if PACKETVER >= 20141022 + "Summer2", +#endif }; const int name2id[] = { SC_WEDDING, @@ -9281,41 +9303,47 @@ ACMD(costume){ #if PACKETVER >= 20131218 SC_OKTOBERFEST, #endif +#if PACKETVER >= 20141022 + SC_DRESS_UP, +#endif }; unsigned short k = 0, len = ARRAYLENGTH(names); if (!*message) { - for( k = 0; k < len; k++ ) { - if( sd->sc.data[name2id[k]] ) { - safesnprintf(atcmd_output, sizeof(atcmd_output),msg_fd(fd,1473),names[k]);//Costume '%s' removed. - clif->message(sd->fd,atcmd_output); - status_change_end(&sd->bl,name2id[k],INVALID_TIMER); + for (k = 0; k < len; k++) { + if (sd->sc.data[name2id[k]]) { + safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1473), names[k]); // Costume '%s' removed. + clif->message(sd->fd, atcmd_output); + status_change_end(&sd->bl, name2id[k], INVALID_TIMER); return true; } } - clif->message(sd->fd,msg_fd(fd,1472)); - for( k = 0; k < len; k++ ) { - safesnprintf(atcmd_output, sizeof(atcmd_output),msg_fd(fd,1471),names[k]);//-- %s - clif->message(sd->fd,atcmd_output); + + clif->message(sd->fd, msg_fd(fd, 1472)); // - Available Costumes + + for (k = 0; k < len; k++) { + safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1471), names[k]); //-- %s + clif->message(sd->fd, atcmd_output); } return false; } - for( k = 0; k < len; k++ ) { - if( sd->sc.data[name2id[k]] ) { - safesnprintf(atcmd_output, sizeof(atcmd_output),msg_fd(fd,1470),names[k]);// You're already with a '%s' costume, type '@costume' to remove it. - clif->message(sd->fd,atcmd_output); + for (k = 0; k < len; k++) { + if (sd->sc.data[name2id[k]]) { + safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1470), names[k]); // You're already with a '%s' costume, type '@costume' to remove it. + clif->message(sd->fd, atcmd_output); return false; } } - for( k = 0; k < len; k++ ) { - if( strcmpi(message,names[k]) == 0 ) + for (k = 0; k < len; k++) { + if (strcmpi(message,names[k]) == 0) break; } - if( k == len ) { - safesnprintf(atcmd_output, sizeof(atcmd_output),msg_fd(fd,1469),message);// '%s' is not a known costume - clif->message(sd->fd,atcmd_output); + + if (k == len) { + safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1469), message); // '%s' is not a known costume + clif->message(sd->fd, atcmd_output); return false; } @@ -9323,6 +9351,7 @@ ACMD(costume){ return true; } + /* for debugging purposes (so users can easily provide us with debug info) */ /* should be trashed as soon as its no longer necessary */ ACMD(skdebug) diff --git a/src/map/battle.c b/src/map/battle.c index 69dd36fc3..57a74bba4 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -7036,12 +7036,13 @@ static const struct battle_data { { "combo_delay_rate", &battle_config.combo_delay_rate, 100, 0, INT_MAX, }, { "item_check", &battle_config.item_check, 0, 0, 0xF, }, { "item_use_interval", &battle_config.item_use_interval, 100, 0, INT_MAX, }, - { "cashfood_use_interval", &battle_config.cashfood_use_interval, 60000, 0, INT_MAX, }, { "wedding_modifydisplay", &battle_config.wedding_modifydisplay, 0, 0, 1, }, { "wedding_ignorepalette", &battle_config.wedding_ignorepalette, 0, 0, 1, }, { "xmas_ignorepalette", &battle_config.xmas_ignorepalette, 0, 0, 1, }, { "summer_ignorepalette", &battle_config.summer_ignorepalette, 0, 0, 1, }, { "hanbok_ignorepalette", &battle_config.hanbok_ignorepalette, 0, 0, 1, }, + { "oktoberfest_ignorepalette", &battle_config.oktoberfest_ignorepalette, 0, 0, 1, }, + { "summer2_ignorepalette", &battle_config.summer2_ignorepalette, 0, 0, 1, }, { "natural_healhp_interval", &battle_config.natural_healhp_interval, 6000, NATURAL_HEAL_INTERVAL, INT_MAX, }, { "natural_healsp_interval", &battle_config.natural_healsp_interval, 8000, NATURAL_HEAL_INTERVAL, INT_MAX, }, { "natural_heal_skill_interval", &battle_config.natural_heal_skill_interval, 10000, NATURAL_HEAL_INTERVAL, INT_MAX, }, @@ -7210,7 +7211,6 @@ static const struct battle_data { { "mob_npc_event_type", &battle_config.mob_npc_event_type, 1, 0, 1, }, { "character_size", &battle_config.character_size, 1|2, 0, 1|2, }, { "retaliate_to_master", &battle_config.retaliate_to_master, 1, 0, 1, }, - { "rare_drop_announce", &battle_config.rare_drop_announce, 0, 0, 10000, }, { "duel_allow_pvp", &battle_config.duel_allow_pvp, 0, 0, 1, }, { "duel_allow_gvg", &battle_config.duel_allow_gvg, 0, 0, 1, }, { "duel_allow_teleport", &battle_config.duel_allow_teleport, 0, 0, 1, }, diff --git a/src/map/battle.h b/src/map/battle.h index d582f3c92..a73c6dc44 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -240,12 +240,13 @@ struct Battle_Config { int combo_delay_rate; int item_check; int item_use_interval; //[Skotlex] - int cashfood_use_interval; int wedding_modifydisplay; int wedding_ignorepalette; //[Skotlex] int xmas_ignorepalette; // [Valaris] int summer_ignorepalette; // [Zephyrus] int hanbok_ignorepalette; + int oktoberfest_ignorepalette; + int summer2_ignorepalette; int natural_healhp_interval; int natural_healsp_interval; int natural_heal_skill_interval; @@ -407,7 +408,6 @@ struct Battle_Config { int mob_npc_event_type; //Determines on who the npc_event is executed. [Skotlex] int character_size; // if riders have size=2, and baby class riders size=1 [Lupus] - int rare_drop_announce; // chance <= to show rare drops global announces int retaliate_to_master; //Whether when a mob is attacked by another mob, it will retaliate versus the mob or the mob's master. [Skotlex] diff --git a/src/map/channel.c b/src/map/channel.c index ee8242b23..9ec415883 100644 --- a/src/map/channel.c +++ b/src/map/channel.c @@ -26,6 +26,7 @@ #include "map/instance.h" #include "map/irc-bot.h" #include "map/map.h" +#include "map/npc.h" #include "map/pc.h" #include "common/cbasetypes.h" #include "common/conf.h" @@ -278,12 +279,21 @@ void channel_send(struct channel_data *chan, struct map_session_data *sd, const clif->messagecolor_self(sd->fd, COLOR_RED, msg_sd(sd,1455)); return; } else if (sd) { + int i; + safesnprintf(message, 150, "[ #%s ] %s : %s", chan->name, sd->status.name, msg); clif->channel_msg(chan,sd,message); if (chan->type == HCS_TYPE_IRC) ircbot->relay(sd->status.name,msg); if (chan->msg_delay != 0) sd->hchsysch_tick = timer->gettick(); + + for (i = 0; i < MAX_EVENTQUEUE; i++) { + if (chan->handlers[i][0] != '\0') { + pc->setregstr(sd, script->add_str("@channelmes$"), msg); + npc->event(sd, chan->handlers[i], 0); + } + } } else { safesnprintf(message, 150, "[ #%s ] %s", chan->name, msg); clif->channel_msg2(chan, message); diff --git a/src/map/channel.h b/src/map/channel.h index e8696fd90..4ac3c6037 100644 --- a/src/map/channel.h +++ b/src/map/channel.h @@ -23,6 +23,8 @@ #include "common/hercules.h" #include "common/mmo.h" +#include "map/map.h" // EVENT_NAME_LENGTH, MAX_EVENTQUEUE + /** * Declarations **/ @@ -85,6 +87,7 @@ struct channel_data { unsigned char color; struct DBMap *users; struct DBMap *banned; + char handlers[MAX_EVENTQUEUE][EVENT_NAME_LENGTH]; unsigned int options; unsigned int owner; enum channel_types type; diff --git a/src/map/clif.c b/src/map/clif.c index d31cc70e9..524378439 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -3194,31 +3194,31 @@ void clif_changelook(struct block_list *bl,int type,int val) vd->shield = val; break; case LOOK_BASE: - if( !sd ) break; + if (sd == NULL) + break; - if ( val == INVISIBLE_CLASS ) /* nothing to change look */ + if (val == INVISIBLE_CLASS) /* nothing to change look */ return; - if( sd->sc.option&OPTION_COSTUME ) + if (sd->sc.option & OPTION_COSTUME) vd->weapon = vd->shield = 0; - if( !vd->cloth_color ) + if (!vd->cloth_color) break; - if (sd->sc.option&OPTION_WEDDING && battle_config.wedding_ignorepalette) + if ((sd->sc.option & OPTION_WEDDING) != 0 && battle_config.wedding_ignorepalette == true) + vd->cloth_color = 0; + if ((sd->sc.option & OPTION_XMAS) != 0 && battle_config.xmas_ignorepalette == true) vd->cloth_color = 0; - if (sd->sc.option&OPTION_XMAS && battle_config.xmas_ignorepalette) + if ((sd->sc.option & OPTION_SUMMER) != 0 && battle_config.summer_ignorepalette == true) vd->cloth_color = 0; - if (sd->sc.option&OPTION_SUMMER && battle_config.summer_ignorepalette) + if ((sd->sc.option & OPTION_HANBOK) != 0 && battle_config.hanbok_ignorepalette == true) vd->cloth_color = 0; - if (sd->sc.option&OPTION_HANBOK && battle_config.hanbok_ignorepalette) + if ((sd->sc.option & OPTION_OKTOBERFEST) != 0 && battle_config.oktoberfest_ignorepalette == true) vd->cloth_color = 0; - if (sd->sc.option&OPTION_OKTOBERFEST /* TODO: config? */) + if ((sd->sc.option & OPTION_SUMMER2) != 0 && battle_config.summer2_ignorepalette == true) vd->cloth_color = 0; - if (vd->body_style && ( - sd->sc.option&OPTION_WEDDING || sd->sc.option&OPTION_XMAS || - sd->sc.option&OPTION_SUMMER || sd->sc.option&OPTION_HANBOK || - sd->sc.option&OPTION_OKTOBERFEST)) + if (vd->body_style != 0 && (sd->sc.option & OPTION_COSTUME) != 0) vd->body_style = 0; break; case LOOK_HAIR: @@ -3237,16 +3237,18 @@ void clif_changelook(struct block_list *bl,int type,int val) vd->hair_color = val; break; case LOOK_CLOTHES_COLOR: - if( val && sd ) { - if( sd->sc.option&OPTION_WEDDING && battle_config.wedding_ignorepalette ) + if (val && sd != NULL) { + if ((sd->sc.option & OPTION_WEDDING) != 0 && battle_config.wedding_ignorepalette == true) + val = 0; + if ((sd->sc.option & OPTION_XMAS) != 0 && battle_config.xmas_ignorepalette == true) val = 0; - if( sd->sc.option&OPTION_XMAS && battle_config.xmas_ignorepalette ) + if ((sd->sc.option & OPTION_SUMMER) != 0 && battle_config.summer_ignorepalette == true) val = 0; - if( sd->sc.option&OPTION_SUMMER && battle_config.summer_ignorepalette ) + if ((sd->sc.option & OPTION_HANBOK) != 0 && battle_config.hanbok_ignorepalette == true) val = 0; - if( sd->sc.option&OPTION_HANBOK && battle_config.hanbok_ignorepalette ) + if ((sd->sc.option & OPTION_OKTOBERFEST) != 0 && battle_config.oktoberfest_ignorepalette == true) val = 0; - if( sd->sc.option&OPTION_OKTOBERFEST /* TODO: config? */ ) + if ((sd->sc.option & OPTION_SUMMER2) != 0 && battle_config.summer2_ignorepalette == true) val = 0; } vd->cloth_color = val; diff --git a/src/map/itemdb.c b/src/map/itemdb.c index 8b374c2bf..9a43bae14 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -2073,6 +2073,9 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char * if ((t = libconfig->setting_get_member(it, "KeepAfterUse"))) id.flag.keepafteruse = libconfig->setting_get_bool(t) ? 1 : 0; + if ((t = libconfig->setting_get_member(it, "DropAnnounce"))) + id.flag.drop_announce = libconfig->setting_get_bool(t) ? 1 : 0; + if (itemdb->lookup_const(it, "Delay", &i32) && i32 >= 0) id.delay = i32; diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 138a783ae..35cd154cb 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -111,8 +111,6 @@ enum item_itemid { ITEMID_FRAGMENT_OF_CRYSTAL = 7321, ITEMID_SKULL_ = 7420, ITEMID_TOKEN_OF_SIEGFRIED = 7621, - ITEMID_GOLD_KEY77 = 7782, - ITEMID_SILVER_KEY77 = 7783, ITEMID_SPECIAL_ALLOY_TRAP = 7940, ITEMID_CATNIP_FRUIT = 11602, ITEMID_RED_POUCH_OF_SURPRISE = 12024, @@ -268,18 +266,6 @@ enum mercenary_scroll_item_list { }; /** - * Cash Food - */ -enum cash_food_item_list { - ITEMID_STR_DISH10_ = 12202, - ITEMID_AGI_DISH10_, // 12203 - ITEMID_INT_DISH10_, // 12204 - ITEMID_DEX_DISH10_, // 12205 - ITEMID_LUK_DISH10_, // 12206 - ITEMID_VIT_DISH10_, // 12207 -}; - -/** * Geneticist */ enum geneticist_item_list { @@ -510,6 +496,7 @@ struct item_data { unsigned keepafteruse : 1; unsigned force_serial : 1; unsigned no_options: 1; // < disallows use of item options on the item. (non-equippable items are automatically flagged) [Smokexyz] + unsigned drop_announce : 1; // Official Drop Announce [Jedzkie] } flag; struct {// item stacking limitation unsigned short amount; @@ -557,7 +544,6 @@ struct item_data { #define itemdb_is_spellbook(n) ((n) >= ITEMID_MAGIC_BOOK_FB && (n) <= ITEMID_MAGIC_BOOK_DL) #define itemdb_is_poison(n) ((n) >= ITEMID_POISON_PARALYSIS && (n) <= ITEMID_POISON_FATIGUE) #define itemid_isgemstone(n) ((n) >= ITEMID_YELLOW_GEMSTONE && (n) <= ITEMID_BLUE_GEMSTONE) -#define itemdb_iscashfood(n) ((n) >= ITEMID_STR_DISH10_ && (n) <= ITEMID_VIT_DISH10_) #define itemdb_is_GNbomb(n) ((n) >= ITEMID_APPLE_BOMB && (n) <= ITEMID_VERY_HARD_LUMP) #define itemdb_is_GNthrowable(n) ((n) >= ITEMID_MYSTERIOUS_POWDER && (n) <= ITEMID_BLACK_THING_TO_THROW) #define itemid_is_pilebunker(n) ((n) == ITEMID_PILEBUNCKER || (n) == ITEMID_PILEBUNCKER_P || (n) == ITEMID_PILEBUNCKER_S || (n) == ITEMID_PILEBUNCKER_T) diff --git a/src/map/map.h b/src/map/map.h index 8c5372093..d4284b3f7 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -553,6 +553,7 @@ enum status_point_types { //we better clean up this enum and change it name [Hem SP_MOD_EXP=125, SP_MOD_DROP=126, SP_MOD_DEATH=127, + SP_BANKVAULT=128, // Mercenaries SP_MERCFLEE=165, SP_MERCKILLS=189, SP_MERCFAITH=190, diff --git a/src/map/mob.c b/src/map/mob.c index 74d25b805..52705cf4d 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2151,6 +2151,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct map_session_data *tmpsd[DAMAGELOG_SIZE] = { NULL }; struct map_session_data *mvp_sd = sd, *second_sd = NULL, *third_sd = NULL; + struct item_data *id = NULL; struct { struct party_data *p; @@ -2439,23 +2440,13 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) { ditem = mob->setdropitem(md->db->dropitem[i].nameid, 1, it); - //A Rare Drop Global Announce by Lupus - if( mvp_sd && drop_rate <= battle_config.rare_drop_announce ) { - char message[128]; - sprintf (message, msg_txt(541), mvp_sd->status.name, md->name, it->jname, (float)drop_rate/100); - //MSG: "'%s' won %s's %s (chance: %0.02f%%)" - intif->broadcast(message, (int)strlen(message)+1, BC_DEFAULT); + // Official Drop Announce [Jedzkie] + if (mvp_sd != NULL) { + if ((id = itemdb->search(it->nameid)) != NULL && id->flag.drop_announce) { + clif->item_drop_announce(mvp_sd, it->nameid, md->name); + } } - /* heres the thing we got the feature set up however we're still discussing how to best define the ids, - * so while we discuss, for a small period of time, the list is hardcoded (yes officially only those 2 use it, - * thus why we're unsure on how to best place the setting) */ - /* temp, will not be hardcoded for long thudu. */ - // TODO: This should be a field in the item db. - if (mvp_sd != NULL - && (it->nameid == ITEMID_GOLD_KEY77 || it->nameid == ITEMID_SILVER_KEY77)) /* for when not hardcoded: add a check on mvp bonus drop as well */ - clif->item_drop_announce(mvp_sd, it->nameid, md->name); - // Announce first, or else ditem will be freed. [Lance] // By popular demand, use base drop rate for autoloot code. [Skotlex] mob->item_drop(md, dlist, ditem, 0, md->db->dropitem[i].p, homkillonly); @@ -2592,14 +2583,6 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) { clif->mvp_item(mvp_sd, item.nameid); log_mvp[0] = item.nameid; - //A Rare MVP Drop Global Announce by Lupus - if (rate <= battle_config.rare_drop_announce) { - char message[128]; - sprintf(message, msg_txt(541), mvp_sd->status.name, md->name, data->jname, rate/100.); - //MSG: "'%s' won %s's %s (chance: %0.02f%%)" - intif->broadcast(message, (int)strlen(message)+1, BC_DEFAULT); - } - if((temp = pc->additem(mvp_sd,&item,1,LOG_TYPE_PICKDROP_PLAYER)) != 0) { clif->additem(mvp_sd,0,0,temp); map->addflooritem(&md->bl, &item, 1, mvp_sd->bl.m, mvp_sd->bl.x, mvp_sd->bl.y, mvp_sd->status.char_id, (second_sd?second_sd->status.char_id : 0), (third_sd ? third_sd->status.char_id : 0), 1); diff --git a/src/map/packets.h b/src/map/packets.h index cc2312356..d1875f2f0 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -4564,6 +4564,1229 @@ 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 +#endif + +// 2016-01-27bRagexeRE +#if PACKETVER == 20160127 +// 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,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(0x085e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0922,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x095a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0961,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-02-03aRagexeRE +#if PACKETVER == 20160203 +// shuffle packets + packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,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(0x0436,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0437,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + 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,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0835,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + 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,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0872,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0873,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x088c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0918,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x093e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0940,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0947,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0954,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x095a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x095d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-02-17cRagexeRE +#if PACKETVER == 20160217 +// shuffle packets + packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x023b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0362,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0365,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0864,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0870,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0873,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x087a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0888,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x088d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x088f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0899,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a0,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a9,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08ac,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08ad,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x091d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0920,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0926,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x092e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x093b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x093e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0941,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x094a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x095e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0966,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0967,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE +#endif + +// 2016-03-02bRagexeRE +#if PACKETVER == 20160302 +// shuffle packets + packet(0x022d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0367,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0819,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x085b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + 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(0x0868,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0873,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x087a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x087d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0883,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a6,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08a9,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x091a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0927,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x092d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x092f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0945,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x094e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0950,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0957,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x095a,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0960,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0967,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0968,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT +#endif + +// 2016-03-02bRagexeRE +#if PACKETVER >= 20160302 +// new packets + packet(0x0a4e,4); + packet(0x0a4f,-1,clif->pDull/*,XXX*/); + packet(0x0a50,6); + packet(0x0a51,34); +// changed packet sizes +#endif + +// 2016-03-09aRagexeRE +#if PACKETVER == 20160309 +// shuffle packets + packet(0x023b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0281,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0819,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0838,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x083c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x085a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x085f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0866,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x086a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0873,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x087c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x087e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x089b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x089d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a7,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x091d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0920,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0922,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0929,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x092a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x092e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0932,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x094f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0956,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x096a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP +#endif + +// 2016-03-16aRagexeRE +#if PACKETVER >= 20160316 +// new packets + packet(0x0a52,20,clif->pDull/*,XXX*/); + packet(0x0a53,10); + packet(0x0a54,-1); + packet(0x0a55,2); + packet(0x0a56,6,clif->pDull/*,XXX*/); + packet(0x0a57,6); + packet(0x0a58,8); + packet(0x0a59,-1); + packet(0x0a5a,2,clif->pDull/*,XXX*/); + packet(0x0a5b,7); + packet(0x0a5c,18,clif->pDull/*,XXX*/); + packet(0x0a5d,6); +// changed packet sizes +#endif + +// 2016-03-23aRagexeRE +#if PACKETVER >= 20160323 +// new packets + packet(0x0a68,3); + packet(0x0a69,6); + packet(0x0a6a,12); + packet(0x0a6b,-1); +// changed packet sizes +#endif + +// 2016-03-30aRagexeRE +#if PACKETVER == 20160330 +// 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(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,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x086d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0878,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x087f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0889,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x088b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x088d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0918,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0925,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x092a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x092c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0930,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0939,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x093b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-03-30aRagexeRE +#if PACKETVER >= 20160330 +// new packets + packet(0x0a6c,7,clif->pDull/*,XXX*/); + packet(0x0a6d,-1); + packet(0x0a6e,-1); + packet(0x0a6f,-1); +// changed packet sizes +#endif + +// 2016-04-20aRagexeRE +#if PACKETVER == 20160420 +// shuffle packets + packet(0x022d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x035f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + 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,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + 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,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0870,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0872,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0874,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0884,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0888,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a5,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x092f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0935,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x094e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x095c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-04-27aRagexeRE +#if PACKETVER >= 20160427 +// new packets +// changed packet sizes + packet(0x0a50,4); +#endif + +// 2016-05-04aRagexeRE +#if PACKETVER >= 20160504 +// new packets + packet(0x0a70,2,clif->pDull/*,XXX*/); + packet(0x0a71,-1); + packet(0x0a72,61); +// changed packet sizes +#endif + +// 2016-05-11aRagexeRE +#if PACKETVER == 20160511 +// 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(0x085e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0894,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x089b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0918,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0920,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0940,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-05-11aRagexeRE +#if PACKETVER >= 20160511 +// new packets + packet(0x0a73,6); + packet(0x0a74,8); +// changed packet sizes +#endif + +// 2016-05-18aRagexeRE +#if PACKETVER >= 20160518 +// new packets + packet(0x0a76,80); +// changed packet sizes + packet(0x0a73,2); +#endif + +// 2016-05-25aRagexeRE +#if PACKETVER == 20160525 +// 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(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(0x085a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x085e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x086a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0899,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x089c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x091d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x092c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0937,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0945,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x094a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0951,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0956,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-05-25aRagexeRE +#if PACKETVER >= 20160525 +// new packets + packet(0x0a77,15); + packet(0x0a78,15); +// changed packet sizes +#endif + +// 2016-06-01aRagexeRE +#if PACKETVER >= 20160601 +// new packets + packet(0x0a79,-1); + packet(0x0a7b,-1); + packet(0x0a7c,-1); + packet(0x0a7d,-1); +// changed packet sizes +#endif + +// 2016-06-08aRagexeRE +#if PACKETVER == 20160608 +// shuffle packets + packet(0x022d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x035f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + 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(0x0436,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0437,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + 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,6,clif->pTickSend,2); // CZ_REQUEST_TIME + 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(0x085c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0885,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0889,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0899,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x089b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08a6,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x093b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x094d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0958,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x095b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0969,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-06-15aRagexeRE +#if PACKETVER == 20160615 +// shuffle packets + packet(0x0281,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0369,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x083c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0866,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0870,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x087e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x087f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0887,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0888,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088a,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x088d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0891,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0898,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x092f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x093e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0947,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0948,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x094a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x094b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0954,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0957,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0958,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x095c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x095e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0961,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK +#endif + +// 2016-06-15aRagexeRE +#if PACKETVER >= 20160615 +// new packets + packet(0x0a7e,4); + packet(0x0a7f,-1); + packet(0x0a80,2); + packet(0x0a81,3); +// changed packet sizes +#endif + +// 2016-06-22aRagexeRE +#if PACKETVER >= 20160622 +// new packets + packet(0x0a82,46); + packet(0x0a83,46); + packet(0x0a84,94); + packet(0x0a85,82); + packet(0x0a86,-1); + packet(0x0a87,4); + packet(0x0a88,2); +// changed packet sizes +#endif + +// 2016-06-29aRagexeRE +#if PACKETVER >= 20160629 +// new packets + packet(0x0a89,32); + packet(0x0a8a,6); + packet(0x0a8b,2); + packet(0x0a8c,2); + packet(0x0a8d,-1); +// changed packet sizes + packet(0x0a80,6); +#endif + +// 2016-06-30aRagexeRE +#if PACKETVER == 20160630 +// 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-07-06cRagexeRE +#if PACKETVER == 20160706 +// shuffle packets + packet(0x0362,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x085f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0860,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0869,-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(0x0884,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0886,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0889,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0892,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0899,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08a5,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a8,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0918,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x091b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0924,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0926,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0927,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0929,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x092d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0939,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x093d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0944,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0945,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x094c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0952,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0957,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP +#endif + +// 2016-07-06cRagexeRE +#if PACKETVER >= 20160706 +// new packets + packet(0x0a81,3); +// changed packet sizes + packet(0x0a7e,-1); + packet(0x0a89,57); +#endif + +// 2016-07-13bRagexeRE +#if PACKETVER == 20160713 +// shuffle packets + packet(0x022d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0363,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0838,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0860,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0865,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0869,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0877,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x087b,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0883,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x088d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0892,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x089a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x089f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a2,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x091c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x091d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0921,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0922,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x092c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0931,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0939,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0944,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0945,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0947,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0957,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x095b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD +#endif + +// 2016-07-13aRagexeRE +#if PACKETVER >= 20160713 +// new packets +// changed packet sizes + packet(0x0a87,-1); +#endif + +// 2016-07-20aRagexeRE +#if PACKETVER == 20160720 +// shuffle packets + packet(0x0362,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0363,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0365,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x07e4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0838,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x085b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x086a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x086d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x087f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0883,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0887,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0897,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x089c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x089e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a0,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x08aa,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0917,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x091c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x092a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x093b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x093e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0946,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x094d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0953,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x095b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0960,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0969,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ +#endif + +// 2016-07-20aRagexeRE +#if PACKETVER >= 20160720 +// new packets + packet(0x0a8e,2); + packet(0x0a8f,2); + packet(0x0a90,3); +// 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 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x023b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0363,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0436,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x07ec,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0866,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0868,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0869,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0874,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0877,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0883,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0887,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0891,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x089f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a4,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08a7,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x092e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0936,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0941,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0946,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0949,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0951,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x095f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0966,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES +#endif + +// 2016-08-03bRagexeRE +#if PACKETVER >= 20160803 +// new packets + packet(0x0a94,2); +// changed packet sizes + packet(0x0a81,4); +#endif + +// 2016-08-31bRagexeRE +#if PACKETVER == 20160831 +// shuffle packets + packet(0x022d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0366,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0835,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0865,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x086d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0870,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0876,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0878,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x087c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x08a8,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08a9,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0917,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x091b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x092c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0938,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0946,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x094a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x094f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0950,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0954,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0957,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x095e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0960,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0964,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0967,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL +#endif + +// 2016-09-07aRagexeRE +#if PACKETVER == 20160907 +// 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(0x091c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-09-07aRagexeRE +#if PACKETVER >= 20160907 +// new packets + packet(0x0a95,4); +// changed packet sizes +#endif + +// 2016-09-21bRagexeRE +#if PACKETVER == 20160921 +// 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(0x094a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-09-21bRagexeRE +#if PACKETVER >= 20160921 +// new packets + packet(0x0a96,51); +// changed packet sizes + packet(0x0a37,59); // ZC_ITEM_PICKUP_ACK_V7 +#endif + +// 2016-09-28cRagexeRE +#if PACKETVER >= 20160928 +// new packets + packet(0x0a97,8); + packet(0x0a98,12); + packet(0x0a99,8); + packet(0x0a9a,10); + packet(0x0a9b,-1); + packet(0x0a9c,2); + packet(0x0a9d,4); + packet(0x0a9e,2); + packet(0x0a9f,2); +// changed packet sizes +#endif + +// 2016-10-05aRagexeRE +#if PACKETVER >= 20161005 +// new packets + packet(0x0aa0,2,clif->pDull/*,XXX*/); + packet(0x0aa1,4); + packet(0x0aa2,-1); + packet(0x0aa3,7); + packet(0x0aa4,2); +// changed packet sizes +#endif + +// 2016-10-12aRagexeRE +#if PACKETVER == 20161012 +// shuffle packets + packet(0x023b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0365,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0369,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x07ec,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0819,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x085b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x085e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0863,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0868,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x086d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0872,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0875,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0880,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0893,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a0,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x092d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0936,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0937,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0939,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0943,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0944,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0951,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x095c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0962,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0966,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0967,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD +#endif + +// 2016-10-26bRagexeRE +#if PACKETVER == 20161026 +// shuffle packets + packet(0x0363,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x085a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x085f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0861,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0862,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x086a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x086c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x086e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x087a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x087c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0886,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0891,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0894,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0898,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x091a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x091b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0926,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x092c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x092e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x092f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0930,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x094b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0953,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x095c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x095e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0962,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2016-10-26bRagexeRE +#if PACKETVER >= 20161026 +// new packets + packet(0x0aa5,-1); + packet(0x0aa6,36); +// changed packet sizes +#endif + +// 2016-11-09bRagexeRE +#if PACKETVER == 20161109 +// shuffle packets + packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0362,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x085d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x085e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0865,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x086a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x086d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0870,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0876,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0881,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x088e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0891,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0898,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x089a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x089d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x089f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a7,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08ad,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0937,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x093c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x093f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0954,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2016-11-30aRagexeRE +#if PACKETVER >= 20161130 +// new packets + packet(0x0aa7,6); + packet(0x0aa8,5); + packet(0x0aa9,-1); + packet(0x0aaa,-1); + packet(0x0aab,-1); +// changed packet sizes +#endif + +// 2016-12-07eRagexeRE +#if PACKETVER == 20161207 +// shuffle packets + packet(0x023b,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(0x0361,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(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,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0868,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0875,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x087e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0886,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x08a1,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a2,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08ad,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0918,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x091d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0943,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x095d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0965,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-12-07cRagexeRE +#if PACKETVER >= 20161207 +// new packets + packet(0x0aac,67); +// changed packet sizes +#endif + +// 2016-12-14bRagexeRE +#if PACKETVER == 20161214 +// shuffle packets + packet(0x022d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0281,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x02c4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + 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,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0436,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,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + 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(0x085a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0862,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x086d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0887,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0895,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0899,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a6,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x092e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x093d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-12-21aRagexeRE +#if PACKETVER == 20161221 +// shuffle packets + packet(0x035f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0366,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0817,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x085b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0866,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0876,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0881,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0885,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0890,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0899,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x089a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x089b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x08aa,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x091e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0926,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x092e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0930,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0943,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0946,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x094b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x095a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0965,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2016-12-21aRagexeRE +#if PACKETVER >= 20161221 +// new packets + packet(0x0aad,47); + packet(0x0aae,2); + packet(0x0aaf,6); + packet(0x0ab0,6); + packet(0x0ab1,10); +// changed packet sizes +#endif + +// 2016-12-28aRagexeRE +#if PACKETVER >= 20161228 +// new packets +// changed packet sizes + packet(0x0ab1,14); +#endif + +// 2017-01-04bRagexeRE +#if PACKETVER >= 20170104 +// new packets + packet(0x0ab2,7); + packet(0x0ab3,15); +// changed packet sizes +#endif + +// 2017-01-11aRagexeRE +#if PACKETVER >= 20170111 +// new packets + packet(0x0ab4,4); + packet(0x0ab5,2); + packet(0x0ab6,6); + packet(0x0ab7,4); + packet(0x0ab8,2); + packet(0x0ab9,39); +// changed packet sizes +#endif + +// 2017-01-18aRagexeRE +#if PACKETVER >= 20170118 +// new packets + packet(0x0aba,2); + packet(0x0abb,2); +// changed packet sizes + packet(0x0aad,51); + packet(0x0ab3,19); +#endif + +// 2017-02-01aRagexeRE +#if PACKETVER >= 20170201 +// new packets + packet(0x0abc,-1); +// changed packet sizes +#endif + +// 2017-02-15aRagexeRE +#if PACKETVER >= 20170215 +// new packets + packet(0x0abd,10); +// changed packet sizes +#endif + +// 2017-02-22aRagexeRE +#if PACKETVER >= 20170222 +// new packets + packet(0x0abe,116); + packet(0x0abf,114); +// changed packet sizes +#endif + +// 2017-02-28aRagexeRE +#if PACKETVER >= 20170228 +// new packets + packet(0x0ac0,26); + packet(0x0ac1,26); + packet(0x0ac2,-1); + packet(0x0ac3,2); + packet(0x0ac4,-1); + packet(0x0ac5,156,clif->pDull/*,XXX*/); + packet(0x0ac6,156); + packet(0x0ac7,156); +// changed packet sizes + packet(0x0abe,-1); + packet(0x0abf,-1); +#endif + +// 2017-03-08bRagexeRE +#if PACKETVER >= 20170308 +// new packets + packet(0x0ac8,2); + packet(0x0ac9,-1); +// changed packet sizes +#endif + +// 2017-03-22aRagexeRE +#if PACKETVER >= 20170322 +// new packets + packet(0x0aca,3); +// changed packet sizes +#endif + +// 2017-03-29cRagexeRE +#if PACKETVER >= 20170329 +// new packets +// changed packet sizes + packet(0x0aac,69); +#endif + +// 2017-04-05bRagexeRE +#if PACKETVER >= 20170405 +// new packets + packet(0x0acb,12); + packet(0x0acc,18); +// changed packet sizes +#endif + +// 2017-04-19bRagexeRE +#if PACKETVER >= 20170419 +// new packets + packet(0x0acd,23); +// changed packet sizes + packet(0x0a99,4); +#endif + /* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */ #if PACKETVER >= 20110817 packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED); /* Thanks to Shakto */ @@ -4917,6 +6140,107 @@ packet(0x96e,-1,clif->ackmergeitems); 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 */ +#endif + +#if PACKETVER == 20160511 + packetKeys(0x3C666FE2,0x27E84E3E,0x53E11BA5); /* 4144 */ +#endif + +#if PACKETVER == 20160525 + packetKeys(0x485C45B6,0x47DC6192,0x76B34A36); /* 4144 */ +#endif + +#if PACKETVER == 20160608 + packetKeys(0x11D74609,0x77C43E8A,0x44290F53); /* 4144 */ +#endif + +#if PACKETVER == 20160615 + packetKeys(0x062C5C26,0x6CF47E82,0x4DD53480); /* 4144 */ +#endif + +#if PACKETVER == 20160630 + packetKeys(0x0DF31CCC,0x54281606,0x5C4C6855); /* 4144 */ +#endif + +#if PACKETVER == 20160706 + packetKeys(0x33A766D0,0x743F04F8,0x0FA0276C); /* 4144 */ +#endif + +#if PACKETVER == 20160713 + packetKeys(0x714F2495,0x7DDC6F32,0x3FD8533D); /* 4144 */ +#endif + +#if PACKETVER == 20160720 + packetKeys(0x4F8A19C0,0x2D8E085C,0x37BB67D6); /* 4144 */ +#endif + +#if PACKETVER == 20160727 + packetKeys(0x3C6952AB,0x26E4077F,0x37E25DF7); /* 4144 */ +#endif + +#if PACKETVER == 20160831 + packetKeys(0x564E13B0,0x7F680549,0x382D273B); /* 4144 */ +#endif + +#if PACKETVER == 20160907 + packetKeys(0x32E5237D,0x57BD4DBD,0x5DBD5DBD); /* 4144 */ +#endif + +#if PACKETVER == 20160921 + packetKeys(0x11CD15CD,0x15CD15CD,0x15CD15CD); /* 4144 */ +#endif + +#if PACKETVER == 20161012 + packetKeys(0x5E2311F2,0x14FD012C,0x76EB64F6); /* 4144 */ +#endif + +#if PACKETVER == 20161026 + packetKeys(0x2CB86AE6,0x7D12660E,0x1B004DEB); /* 4144 */ +#endif + +#if PACKETVER == 20161109 + packetKeys(0x0A5277C0,0x2DB17506,0x0E8F26DA); /* 4144 */ +#endif + +#if PACKETVER == 20161207 + packetKeys(0x52D267AA,0x4FE42156,0x1292153E); /* 4144 */ +#endif + +#if PACKETVER == 20161214 + packetKeys(0x4DDE217B,0x07863AE0,0x5B591656); /* 4144 */ +#endif + +#if PACKETVER == 20161221 + packetKeys(0x69CB4F56,0x793C165E,0x673A2354); /* 4144 */ +#endif + + #if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3) packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3); #endif diff --git a/src/map/pc.c b/src/map/pc.c index 854913c28..2303a83ca 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4907,25 +4907,6 @@ int pc_isUseitem(struct map_session_data *sd,int n) if( map->list[sd->bl.m].flag.nobranch || map_flag_gvg2(sd->bl.m) ) return 0; break; - case ITEMID_BUBBLE_GUM: - case ITEMID_COMP_BUBBLE_GUM: - if( sd->sc.data[SC_CASH_RECEIVEITEM] ) - return 0; - break; - case ITEMID_BATTLE_MANUAL: - case ITEMID_COMP_BATTLE_MANUAL: - case ITEMID_THICK_MANUAL50: - case ITEMID_NOBLE_NAMEPLATE: - case ITEMID_BATTLE_MANUAL25: - case ITEMID_BATTLE_MANUAL100: - case ITEMID_BATTLE_MANUAL_X3: - if( sd->sc.data[SC_CASH_PLUSEXP] ) - return 0; - break; - case ITEMID_JOB_MANUAL50: - if( sd->sc.data[SC_CASH_PLUSONLYJOBEXP] ) - return 0; - break; // Mercenary Items case ITEMID_MERCENARY_RED_POTION: @@ -5043,7 +5024,7 @@ int pc_useitem(struct map_session_data *sd,int n) { #if PACKETVER >= 20110309 clif->msgtable(sd, MSG_NPC_WORK_IN_PROGRESS); #else - clif->messagecolor_self(fd, COLOR_WHITE, msg_fd(fd, 48)); + clif->messagecolor_self(sd->fd, COLOR_WHITE, msg_sd(sd, 48)); #endif return 0; } @@ -5079,10 +5060,8 @@ int pc_useitem(struct map_session_data *sd,int n) { )) return 0; - //Prevent mass item usage. [Skotlex] - if( DIFF_TICK(sd->canuseitem_tick, tick) > 0 || - (itemdb_iscashfood(nameid) && DIFF_TICK(sd->canusecashfood_tick, tick) > 0) - ) + // Prevent mass item usage. [Skotlex] + if (DIFF_TICK(sd->canuseitem_tick, tick) > 0) return 0; /* Items with delayed consume are not meant to work while in mounts except reins of mount(12622) */ @@ -5175,10 +5154,8 @@ int pc_useitem(struct map_session_data *sd,int n) { script->potion_flag = 3; //Even more effective potions. } - //Update item use time. + // Update item use time. sd->canuseitem_tick = tick + battle_config.item_use_interval; - if( itemdb_iscashfood(nameid) ) - sd->canusecashfood_tick = tick + battle_config.cashfood_use_interval; script->run_use_script(sd, sd->inventory_data[n], npc->fake_nd->bl.id); script->potion_flag = 0; @@ -5495,13 +5472,6 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skil //Logs items, Stolen from mobs [Lupus] logs->pick_mob(md, LOG_TYPE_STEAL, -1, &tmp_item, data); - //A Rare Steal Global Announce by Lupus - if(md->db->dropitem[i].p<=battle_config.rare_drop_announce) { - char message[128]; - sprintf (message, msg_txt(542), sd->status.name, md->db->jname, data->jname, (float)md->db->dropitem[i].p / 100); - //MSG: "'%s' stole %s's %s (chance: %0.02f%%)" - intif->broadcast(message, (int)strlen(message)+1, BC_DEFAULT); - } return 1; } @@ -8145,6 +8115,7 @@ int pc_readparam(const struct map_session_data *sd, int type) case SP_SKILLPOINT: val = sd->status.skill_point; break; case SP_STATUSPOINT: val = sd->status.status_point; break; case SP_ZENY: val = sd->status.zeny; break; + case SP_BANKVAULT: val = sd->status.bank_vault; break; case SP_BASELEVEL: val = sd->status.base_level; break; case SP_JOBLEVEL: val = sd->status.job_level; break; case SP_CLASS: val = sd->status.class; break; @@ -8289,6 +8260,7 @@ int pc_readparam(const struct map_session_data *sd, int type) *------------------------------------------*/ int pc_setparam(struct map_session_data *sd,int type,int val) { + int delta; nullpo_ret(sd); switch(type){ @@ -8339,6 +8311,19 @@ int pc_setparam(struct map_session_data *sd,int type,int val) 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); break; + case SP_BANKVAULT: + val = cap_value(val, 0, MAX_BANK_ZENY); + delta = (val - sd->status.bank_vault); + sd->status.bank_vault = val; + if (map->save_settings & 256) { + chrif->save(sd, 0); // send to char server + } + if (delta > 0) { + clif->bank_deposit(sd, BDA_SUCCESS); + } else if (delta < 0) { + clif->bank_withdraw(sd, BWA_SUCCESS); + } + return 1; // the vault uses a different packet case SP_BASEEXP: if(pc->nextbaseexp(sd) > 0) { sd->status.base_exp = val; diff --git a/src/map/script.c b/src/map/script.c index 7f3b3f9a2..75f747fb6 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -2384,6 +2384,7 @@ void script_load_parameters(void) {"SkillPoint", SP_SKILLPOINT}, {"Class", SP_CLASS}, {"Zeny", SP_ZENY}, + {"BankVault", SP_BANKVAULT}, {"Sex", SP_SEX}, {"NextBaseExp", SP_NEXTBASEEXP}, {"NextJobExp", SP_NEXTJOBEXP}, @@ -21632,6 +21633,67 @@ BUILDIN(useatcmd) return true; } +BUILDIN(has_permission) +{ + struct map_session_data *sd; + enum e_pc_permission perm; + + if (script_hasdata(st, 3)) { + sd = map->id2sd(script_getnum(st, 3)); + } else { + sd = script->rid2sd(st); + } + + if (sd == NULL) { + script_pushint(st, 0); + return false; + } + + if (script_isstringtype(st, 2)) { + // to check for plugin permissions + int i = 0, j = -1; + const char *name = script_getstr(st, 2); + for (; i < pcg->permission_count; ++i) { + if (strcmp(pcg->permissions[i].name, name) == 0) { + j = i; + break; + } + } + if (j < 0) { + ShowError("script:has_permission: unknown permission: %s\n", name); + script_pushint(st, 0); + return false; + } + script_pushint(st, pc_has_permission(sd, pcg->permissions[j].permission)); + return true; + } + + // to ckeck for built-in permission + perm = script_getnum(st, 2); + script_pushint(st, pc_has_permission(sd, perm)); + return true; +} + +BUILDIN(can_use_command) +{ + struct map_session_data *sd; + const char *cmd = script_getstr(st, 2); + + if (script_hasdata(st, 3)) { + sd = map->id2sd(script_getnum(st, 3)); + } else { + sd = script->rid2sd(st); + } + + if (sd == NULL) { + script_pushint(st, 0); + return false; + } + + script_pushint(st, pc->can_use_command(sd, cmd)); + return true; +} + /* getrandgroupitem <container_item_id>,<quantity> */ BUILDIN(getrandgroupitem) { @@ -22871,6 +22933,55 @@ BUILDIN(channelmes) return true; } +BUILDIN(addchannelhandler) +{ + int i; + const char *channelname = script_getstr(st, 2); + const char *eventname = script_getstr(st, 3); + struct channel_data *chan = channel->search(channelname, NULL); + + if (!chan) { + script_pushint(st, 0); + return true; + } + + ARR_FIND(0, MAX_EVENTQUEUE, i, chan->handlers[i][0] == '\0'); + + if (i < MAX_EVENTQUEUE) { + safestrncpy(chan->handlers[i], eventname, EVENT_NAME_LENGTH); //Event enqueued. + script_pushint(st, 1); + return true; + } + + ShowWarning("script:addchannelhandler: too many handlers for channel %s.\n", channelname); + script_pushint(st, 0); + return true; +} + +BUILDIN(removechannelhandler) +{ + int i; + const char *channelname = script_getstr(st, 2); + const char *eventname = script_getstr(st, 3); + struct channel_data *chan = channel->search(channelname, NULL); + + if (!chan) { + script_pushint(st, 0); + return true; + } + + for (i = 0; i < MAX_EVENTQUEUE; i++) { + if (strcmp(chan->handlers[i], eventname) == 0) { + chan->handlers[i][0] = '\0'; + script_pushint(st, 1); + return true; + } + } + + script_pushint(st, 0); + return true; +} + /** By Cydh Display script message showscript "<message>"{,<GID>}; @@ -23606,6 +23717,8 @@ void script_parse_builtin(void) { BUILDIN_DEF(bindatcmd, "ss???"), BUILDIN_DEF(unbindatcmd, "s"), BUILDIN_DEF(useatcmd, "s"), + BUILDIN_DEF(has_permission, "v?"), + BUILDIN_DEF(can_use_command, "s?"), /** * Item bound [Xantara] [Akinari] [Mhalicot/Hercules] @@ -23665,6 +23778,8 @@ void script_parse_builtin(void) { BUILDIN_DEF(navigateto, "s??????"), BUILDIN_DEF(channelmes, "ss"), + BUILDIN_DEF(addchannelhandler, "ss"), + BUILDIN_DEF(removechannelhandler, "ss"), BUILDIN_DEF(showscript, "s?"), BUILDIN_DEF(mergeitem,""), BUILDIN_DEF(_,"s"), @@ -23711,6 +23826,7 @@ void script_hardcoded_constants(void) script->set_constant("MAX_CART",MAX_INVENTORY,false, false); script->set_constant("MAX_INVENTORY",MAX_INVENTORY,false, false); script->set_constant("MAX_ZENY",MAX_ZENY,false, false); + script->set_constant("MAX_BANK_ZENY", MAX_BANK_ZENY, false, false); script->set_constant("MAX_BG_MEMBERS",MAX_BG_MEMBERS,false, false); script->set_constant("MAX_CHAT_USERS",MAX_CHAT_USERS,false, false); script->set_constant("MAX_REFINE",MAX_REFINE,false, false); @@ -23740,6 +23856,7 @@ void script_hardcoded_constants(void) script->set_constant("Option_Dragon5",OPTION_DRAGON5,false, false); script->set_constant("Option_Hanbok",OPTION_HANBOK,false, false); script->set_constant("Option_Oktoberfest",OPTION_OKTOBERFEST,false, false); + script->set_constant("Option_Summer2", OPTION_SUMMER2, false, false); script->constdb_comment("status option compounds"); script->set_constant("Option_Dragon",OPTION_DRAGON,false, false); @@ -23850,6 +23967,34 @@ void script_hardcoded_constants(void) script->set_constant("BL_CHAR",BL_CHAR,false, false); script->set_constant("BL_ALL",BL_ALL,false, false); + script->constdb_comment("Player permissions"); + script->set_constant("PERM_TRADE", PC_PERM_TRADE, false, false); + script->set_constant("PERM_PARTY", PC_PERM_PARTY, false, false); + script->set_constant("PERM_ALL_SKILL", PC_PERM_ALL_SKILL, false, false); + script->set_constant("PERM_USE_ALL_EQUIPMENT", PC_PERM_USE_ALL_EQUIPMENT, false, false); + script->set_constant("PERM_SKILL_UNCONDITIONAL", PC_PERM_SKILL_UNCONDITIONAL, false, false); + script->set_constant("PERM_JOIN_ALL_CHAT", PC_PERM_JOIN_ALL_CHAT, false, false); + script->set_constant("PERM_NO_CHAT_KICK", PC_PERM_NO_CHAT_KICK, false, false); + script->set_constant("PERM_HIDE_SESSION", PC_PERM_HIDE_SESSION, false, false); + script->set_constant("PERM_RECEIVE_HACK_INFO", PC_PERM_RECEIVE_HACK_INFO, false, false); + script->set_constant("PERM_WARP_ANYWHERE", PC_PERM_WARP_ANYWHERE, false, false); + script->set_constant("PERM_VIEW_HPMETER", PC_PERM_VIEW_HPMETER, false, false); + script->set_constant("PERM_VIEW_EQUIPMENT", PC_PERM_VIEW_EQUIPMENT, false, false); + script->set_constant("PERM_USE_CHECK", PC_PERM_USE_CHECK, false, false); + script->set_constant("PERM_USE_CHANGEMAPTYPE", PC_PERM_USE_CHANGEMAPTYPE, false, false); + script->set_constant("PERM_USE_ALL_COMMANDS", PC_PERM_USE_ALL_COMMANDS, false, false); + script->set_constant("PERM_RECEIVE_REQUESTS", PC_PERM_RECEIVE_REQUESTS, false, false); + script->set_constant("PERM_SHOW_BOSS", PC_PERM_SHOW_BOSS, false, false); + script->set_constant("PERM_DISABLE_PVM", PC_PERM_DISABLE_PVM, false, false); + script->set_constant("PERM_DISABLE_PVP", PC_PERM_DISABLE_PVP, false, false); + script->set_constant("PERM_DISABLE_CMD_DEAD", PC_PERM_DISABLE_CMD_DEAD, false, false); + script->set_constant("PERM_HCHSYS_ADMIN", PC_PERM_HCHSYS_ADMIN, false, false); + script->set_constant("PERM_TRADE_BOUND", PC_PERM_TRADE_BOUND, false, false); + script->set_constant("PERM_DISABLE_PICK_UP", PC_PERM_DISABLE_PICK_UP, false, false); + script->set_constant("PERM_DISABLE_STORE", PC_PERM_DISABLE_STORE, false, false); + script->set_constant("PERM_DISABLE_EXP", PC_PERM_DISABLE_EXP, false, false); + script->set_constant("PERM_DISABLE_SKILL_USAGE", PC_PERM_DISABLE_SKILL_USAGE, false, false); + script->constdb_comment("Renewal"); #ifdef RENEWAL script->set_constant("RENEWAL", 1, false, false); diff --git a/src/map/status.c b/src/map/status.c index d8fb9a350..c3e5a3f40 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1000,6 +1000,7 @@ void initChangeTables(void) status->dbs->IconChangeTable[SC_MONSTER_TRANSFORM] = SI_MONSTER_TRANSFORM; // Costumes + status->dbs->IconChangeTable[SC_DRESS_UP] = SI_DRESS_UP; status->dbs->IconChangeTable[SC_MOONSTAR] = SI_MOONSTAR; status->dbs->IconChangeTable[SC_SUPER_STAR] = SI_SUPER_STAR; status->dbs->IconChangeTable[SC_STRANGELIGHTS] = SI_STRANGELIGHTS; @@ -1178,6 +1179,7 @@ void initChangeTables(void) status->dbs->ChangeFlagTable[SC_MVPCARD_ORCLORD] |= SCB_ALL; // Costumes + status->dbs->ChangeFlagTable[SC_DRESS_UP] |= SCB_NONE; status->dbs->ChangeFlagTable[SC_MOONSTAR] |= SCB_NONE; status->dbs->ChangeFlagTable[SC_SUPER_STAR] |= SCB_NONE; status->dbs->ChangeFlagTable[SC_STRANGELIGHTS] |= SCB_NONE; @@ -6873,23 +6875,20 @@ void status_set_viewdata(struct block_list *bl, int class_) sd->vd.sex = sd->status.sex; if (sd->vd.cloth_color) { - if (sd->sc.option&OPTION_WEDDING && battle_config.wedding_ignorepalette) - sd->vd.cloth_color = 0; - if (sd->sc.option&OPTION_XMAS && battle_config.xmas_ignorepalette) - sd->vd.cloth_color = 0; - if (sd->sc.option&OPTION_SUMMER && battle_config.summer_ignorepalette) - sd->vd.cloth_color = 0; - if (sd->sc.option&OPTION_HANBOK && battle_config.hanbok_ignorepalette) - sd->vd.cloth_color = 0; - if (sd->sc.option&OPTION_OKTOBERFEST /* TODO: config? */) + if ((sd->sc.option & OPTION_WEDDING) != 0 && battle_config.wedding_ignorepalette == true) + sd->vd.cloth_color = 0; + if ((sd->sc.option & OPTION_XMAS) != 0 && battle_config.xmas_ignorepalette == true) + sd->vd.cloth_color = 0; + if ((sd->sc.option & OPTION_SUMMER) != 0 && battle_config.summer_ignorepalette == true) + sd->vd.cloth_color = 0; + if ((sd->sc.option & OPTION_HANBOK) != 0 && battle_config.hanbok_ignorepalette == true) + sd->vd.cloth_color = 0; + if ((sd->sc.option & OPTION_OKTOBERFEST) != 0 && battle_config.oktoberfest_ignorepalette == true) + sd->vd.cloth_color = 0; + if ((sd->sc.option & OPTION_SUMMER2) != 0 && battle_config.summer2_ignorepalette == true) sd->vd.cloth_color = 0; } - if (sd->vd.body_style - && (sd->sc.option&OPTION_WEDDING - || sd->sc.option&OPTION_XMAS - || sd->sc.option&OPTION_SUMMER - || sd->sc.option&OPTION_HANBOK - || sd->sc.option&OPTION_OKTOBERFEST)) + if (sd->vd.body_style != 0 && (sd->sc.option & OPTION_COSTUME) != 0) sd->vd.body_style = 0; } else if (vd != NULL) { memcpy(&sd->vd, vd, sizeof(struct view_data)); @@ -7767,30 +7766,6 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t if (sc->data[SC_FOOD_LUK_CASH] && sc->data[SC_FOOD_LUK_CASH]->val1 > val1) return 0; break; - case SC_FOOD_STR_CASH: - if (sc->data[SC_FOOD_STR] && sc->data[SC_FOOD_STR]->val1 > val1) - return 0; - break; - case SC_FOOD_AGI_CASH: - if (sc->data[SC_FOOD_AGI] && sc->data[SC_FOOD_AGI]->val1 > val1) - return 0; - break; - case SC_FOOD_VIT_CASH: - if (sc->data[SC_FOOD_VIT] && sc->data[SC_FOOD_VIT]->val1 > val1) - return 0; - break; - case SC_FOOD_INT_CASH: - if (sc->data[SC_FOOD_INT] && sc->data[SC_FOOD_INT]->val1 > val1) - return 0; - break; - case SC_FOOD_DEX_CASH: - if (sc->data[SC_FOOD_DEX] && sc->data[SC_FOOD_DEX]->val1 > val1) - return 0; - break; - case SC_FOOD_LUK_CASH: - if (sc->data[SC_FOOD_LUK] && sc->data[SC_FOOD_LUK]->val1 > val1) - return 0; - break; case SC_CAMOUFLAGE: if( sd && pc->checkskill(sd, RA_CAMOUFLAGE) < 3 && !skill->check_camouflage(bl,NULL) ) return 0; @@ -8009,40 +7984,46 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t status_change_end(bl, SC_INC_AGI, INVALID_TIMER); break; case SC_FOOD_STR: - status_change_end(bl, SC_FOOD_STR_CASH, INVALID_TIMER); + status_change_end(bl, SC_FOOD_STR, INVALID_TIMER); break; case SC_FOOD_AGI: - status_change_end(bl, SC_FOOD_AGI_CASH, INVALID_TIMER); + status_change_end(bl, SC_FOOD_AGI, INVALID_TIMER); break; case SC_FOOD_VIT: - status_change_end(bl, SC_FOOD_VIT_CASH, INVALID_TIMER); + status_change_end(bl, SC_FOOD_VIT, INVALID_TIMER); break; case SC_FOOD_INT: - status_change_end(bl, SC_FOOD_INT_CASH, INVALID_TIMER); + status_change_end(bl, SC_FOOD_INT, INVALID_TIMER); break; case SC_FOOD_DEX: - status_change_end(bl, SC_FOOD_DEX_CASH, INVALID_TIMER); + status_change_end(bl, SC_FOOD_DEX, INVALID_TIMER); break; case SC_FOOD_LUK: - status_change_end(bl, SC_FOOD_LUK_CASH, INVALID_TIMER); + status_change_end(bl, SC_FOOD_LUK, INVALID_TIMER); break; case SC_FOOD_STR_CASH: status_change_end(bl, SC_FOOD_STR, INVALID_TIMER); + status_change_end(bl, SC_FOOD_STR_CASH, INVALID_TIMER); break; case SC_FOOD_AGI_CASH: status_change_end(bl, SC_FOOD_AGI, INVALID_TIMER); + status_change_end(bl, SC_FOOD_AGI_CASH, INVALID_TIMER); break; case SC_FOOD_VIT_CASH: status_change_end(bl, SC_FOOD_VIT, INVALID_TIMER); + status_change_end(bl, SC_FOOD_VIT_CASH, INVALID_TIMER); break; case SC_FOOD_INT_CASH: status_change_end(bl, SC_FOOD_INT, INVALID_TIMER); + status_change_end(bl, SC_FOOD_INT_CASH, INVALID_TIMER); break; case SC_FOOD_DEX_CASH: status_change_end(bl, SC_FOOD_DEX, INVALID_TIMER); + status_change_end(bl, SC_FOOD_DEX_CASH, INVALID_TIMER); break; case SC_FOOD_LUK_CASH: status_change_end(bl, SC_FOOD_LUK, INVALID_TIMER); + status_change_end(bl, SC_FOOD_LUK_CASH, INVALID_TIMER); break; case SC_GM_BATTLE: status_change_end(bl, SC_GM_BATTLE2, INVALID_TIMER); @@ -8493,8 +8474,10 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t case SC_SUMMER: case SC_HANBOK: case SC_OKTOBERFEST: - if (!vd) return 0; - //Store previous values as they could be removed. + case SC_DRESS_UP: + if (vd == NULL) + return 0; + // Store previous values as they could be removed. unit->stop_attack(bl); break; case SC_NOCHAT: @@ -9889,19 +9872,21 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t return 0; } } - } else { //Special considerations when loading SC data. - switch( type ) { + } else { // Special considerations when loading SC data. + switch (type) { case SC_WEDDING: case SC_XMAS: case SC_SUMMER: case SC_HANBOK: case SC_OKTOBERFEST: - if( !vd ) break; + case SC_DRESS_UP: + if (vd == NULL) + break; clif->changelook(bl, LOOK_BASE, vd->class); - clif->changelook(bl,LOOK_WEAPON,0); - clif->changelook(bl,LOOK_SHIELD,0); - clif->changelook(bl,LOOK_CLOTHES_COLOR,vd->cloth_color); - clif->changelook(bl,LOOK_BODY2,0); + clif->changelook(bl, LOOK_WEAPON, 0); + clif->changelook(bl, LOOK_SHIELD, 0); + clif->changelook(bl, LOOK_CLOTHES_COLOR, vd->cloth_color); + clif->changelook(bl, LOOK_BODY2, 0); break; case SC_KAAHI: val4 = INVALID_TIMER; @@ -10284,6 +10269,10 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t sc->option |= OPTION_OKTOBERFEST; opt_flag |= 0x4; break; + case SC_DRESS_UP: + sc->option |= OPTION_SUMMER2; + opt_flag |= 0x4; + break; case SC__FEINTBOMB_MASTER: sc->option |= OPTION_INVISIBLE; opt_flag |= 0x4; @@ -11092,6 +11081,10 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const sc->option &= ~OPTION_OKTOBERFEST; opt_flag |= 0x4; break; + case SC_DRESS_UP: + sc->option &= ~OPTION_SUMMER2; + opt_flag |= 0x4; + break; case SC__FEINTBOMB_MASTER: sc->option &= ~OPTION_INVISIBLE; opt_flag |= 0x4; diff --git a/src/map/status.h b/src/map/status.h index 06e7e07b8..1496429a8 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -840,6 +840,8 @@ typedef enum sc_type { SC_TUNAPARTY, SC_SHRIMP, // 650 SC_FRESHSHRIMP, + + SC_DRESS_UP, #ifndef SC_MAX SC_MAX, //Automatically updated max, used in for's to check we are within bounds. #endif @@ -1722,7 +1724,7 @@ enum si_type { //SI_SUMMEREVENT04 = 853, //SI_SUMMEREVENT05 = 854, //SI_MINIGAME_ROULETTE_BONUS_ITEM = 855, - //SI_DRESS_UP = 856, + SI_DRESS_UP = 856, SI_MAPLE_FALLS = 857, //SI_ALL_NIFLHEIM_RECALL = 858, //SI_ = 859, |